diff --git a/ChangeLog b/ChangeLog
index 20f7d21..081a7ed 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,11 +1,3092 @@
-=== release 1.8.3 ===
+=== release 1.9.90 ===
 
-2016-08-19  Sebastian Dröge <slomo@coaxion.net>
+2016-09-30  Sebastian Dröge <slomo@coaxion.net>
 
 	* configure.ac:
-	  releasing 1.8.3
+	  releasing 1.9.90
 
-2016-08-19 12:00:56 +0300  Sebastian Dröge <sebastian@centricular.com>
+2016-09-30 11:44:47 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* po/ky.po:
+	* po/sv.po:
+	  po: Update translations
+
+2016-09-29 21:42:24 +0530  Arun Raghavan <arun@osg.samsung.com>
+
+	* ext/wayland/gstwaylandsink.c:
+	  waylandsink: Actually use buffer pool config after setting it up
+	  CID: 1373420
+
+2016-09-29 13:36:11 +0300  Sergey Mamonov <samamonov@gmail.com>
+
+	* ext/lv2/gstlv2filter.c:
+	  fix for https://bugzilla.gnome.org/show_bug.cgi?id=771871
+
+2016-09-29 21:45:50 +0530  Arun Raghavan <arun@osg.samsung.com>
+
+	* sys/bluez/gsta2dpsink.c:
+	  a2dpsink: Drop some dead-code
+	  Left over from the last cleanup.
+	  CID: 1373418
+
+2016-09-29 14:32:15 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* ext/fdkaac/gstfdkaacdec.c:
+	  fdkaacenc: fix accessing freed memory
+	  The buffer data is not always copied in _Fill, and will be
+	  read in _DecodeFrame. We unmap at the end of the function,
+	  whether we get there via failure or early out, and keep a
+	  ref to the buffer to ensure we can use it to unmap the
+	  memory even after _finish_frame is called, as it unrefs
+	  the buffer.
+	  Note that there is an access beyond the allocated buffer,
+	  which is only apparent when playing from souphttpsrc (ie,
+	  not from filesrc). This appears to be a bug in the bit
+	  reading code in libfdkaac AFAICT.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=772186
+
+2016-09-29 14:31:37 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* ext/fdkaac/gstfdkaacdec.c:
+	* ext/fdkaac/gstfdkaacdec.h:
+	  fdkaacdec: avoid memory corruption on decoding error
+	  The buffer size is expected to be in multiples of the sample size,
+	  not in bytes.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=772186
+
+2016-09-29 14:29:46 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* ext/fdkaac/gstfdkaacdec.c:
+	  fdkaacenc: fix buffer leak
+	  https://bugzilla.gnome.org/show_bug.cgi?id=772186
+
+2016-09-28 09:44:58 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* ext/fdkaac/gstfdkaacenc.c:
+	  fdkaacenc: set framed=true on src caps
+	  This fixes muxing in MPEG TS.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=772108
+
+2016-05-05 15:53:57 +0900  Gwang Yoon Hwang <yoon@igalia.com>
+
+	* gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.c:
+	* gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.h:
+	  gl/dispmanx: Implements set_render_rectangle to adjust the position of window
+	  We cannot set the x, y coordinate of the video frame at the dispmanx at
+	  this point. We need to teach dispmanx backend to understand about
+	  set_render_rectangle API to draw a video with other UI.
+	  This patch keeps the current behavior which places video frame at the
+	  center of the display if there is no set_render_rectangle call to the
+	  dispmanx window.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766018
+
+2016-09-28 15:20:25 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglbasefilter.h:
+	* gst-libs/gst/gl/gstglbasememory.h:
+	* gst-libs/gst/gl/gstglbuffer.h:
+	* gst-libs/gst/gl/gstglbufferpool.h:
+	* gst-libs/gst/gl/gstglcolorconvert.h:
+	* gst-libs/gst/gl/gstglcontext.h:
+	* gst-libs/gst/gl/gstgldebug.h:
+	* gst-libs/gst/gl/gstgldisplay.h:
+	* gst-libs/gst/gl/gstglfeature.h:
+	* gst-libs/gst/gl/gstglfilter.h:
+	* gst-libs/gst/gl/gstglframebuffer.h:
+	* gst-libs/gst/gl/gstglmemory.h:
+	* gst-libs/gst/gl/gstglmemorypbo.h:
+	* gst-libs/gst/gl/gstgloverlaycompositor.h:
+	* gst-libs/gst/gl/gstglquery.h:
+	* gst-libs/gst/gl/gstglrenderbuffer.h:
+	* gst-libs/gst/gl/gstglshader.h:
+	* gst-libs/gst/gl/gstglslstage.h:
+	* gst-libs/gst/gl/gstglupload.h:
+	* gst-libs/gst/gl/gstglviewconvert.h:
+	  gl: add necessary padding bytes to all public structs
+
+2016-09-27 16:17:00 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* ext/fdkaac/gstfdkaacenc.c:
+	  fdkaacenc: set transmux on the fdkaac lib
+	  Not doing so will fail to decode in a simple fdkaacenc ! fdkaacdec
+	  pipeline, though would work if this goes through a file.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=772067
+
+2016-09-27 16:15:44 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* ext/fdkaac/gstfdkaacdec.c:
+	  fdkaacdec: do not error out of out of sync return
+	  The docs say we should continue feeding in data and decoding
+	  https://bugzilla.gnome.org/show_bug.cgi?id=772067
+
+2016-09-27 09:08:51 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* ext/fdkaac/gstfdkaacenc.c:
+	  fdkaac: fix error with AOT_MP2_AAC_LC removed from libfdkaac API
+	  AOT_MP2_AAC_LC is a "pseudo AOT" which got removed after 0.1.4,
+	  and maps to AOT_AAC_LC.
+	  Remove mpegversion 2 from th caps to match.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=772067
+
+2016-09-26 16:30:02 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* sys/bluez/meson.build:
+	  meson: bluez: fix build
+
+2016-09-26 16:38:04 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/decklink/linux/DeckLinkAPI.h:
+	* sys/decklink/linux/DeckLinkAPIConfiguration.h:
+	* sys/decklink/linux/DeckLinkAPIDeckControl.h:
+	* sys/decklink/linux/DeckLinkAPIDiscovery.h:
+	* sys/decklink/linux/DeckLinkAPIModes.h:
+	* sys/decklink/linux/DeckLinkAPITypes.h:
+	* sys/decklink/linux/DeckLinkAPIVersion.h:
+	* sys/decklink/osx/DeckLinkAPI.h:
+	* sys/decklink/osx/DeckLinkAPIConfiguration.h:
+	* sys/decklink/osx/DeckLinkAPIDeckControl.h:
+	* sys/decklink/osx/DeckLinkAPIDiscovery.h:
+	* sys/decklink/osx/DeckLinkAPIDispatch.cpp:
+	* sys/decklink/osx/DeckLinkAPIModes.h:
+	* sys/decklink/osx/DeckLinkAPIStreaming.h:
+	* sys/decklink/osx/DeckLinkAPITypes.h:
+	* sys/decklink/osx/DeckLinkAPIVersion.h:
+	  decklink: Update to SDK 10.8
+	  OSX and Linux only, Windows needs someone on Windows to convert the .idl
+	  files to C source code.
+
+2016-09-26 11:41:42 +0100  Olivier Crête <olivier.crete@ocrete.ca>
+
+	* ext/fdkaac/gstfdkaacdec.c:
+	  fdkaac: fix mixup setting interleaved output
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770455
+
+2016-09-26 13:26:36 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/player/gstplayer.c:
+	  player: Only report the initial duration if the query was successful
+
+2016-09-26 11:15:25 +0900  Kyungyong Kim <kyungyong.kim@lge.com>
+
+	* gst/videoparsers/gsth265parse.c:
+	  h265parse: Fix parsing of multiple NALs in the hvcC box
+	  https://bugzilla.gnome.org/show_bug.cgi?id=771970
+
+2016-09-25 17:38:15 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* sys/bluez/Makefile.am:
+	  bluez: dist new header file
+	  Fixes distcheck.
+
+2016-09-24 22:39:38 +0530  Arun Raghavan <arun@arunraghavan.net>
+
+	* sys/bluez/gsta2dpsink.c:
+	* sys/bluez/gstavdtpsink.c:
+	* sys/bluez/gstavdtpsink.h:
+	  a2dpsink: Don't try to set device caps on avdtpsink
+	  We can't actually configure the transport, so we should only be working
+	  with whatever we get.
+
+2016-09-23 16:31:50 +0530  Arun Raghavan <arun@arunraghavan.net>
+
+	* sys/bluez/gstavdtpsink.c:
+	  avdtpsink: Chain event handling up to basesink
+
+2016-09-23 16:04:43 +0530  Arun Raghavan <arun@arunraghavan.net>
+
+	* sys/bluez/gsta2dpsink.c:
+	* sys/bluez/gsta2dpsink.h:
+	  bluez: Clean up and make a2dpsink functional again
+	  Was crashing, and had a lot of cruft (like a capsfilter and a fakesink)
+	  that was no longer required.
+
+2016-09-15 17:49:15 +0530  Arun Raghavan <arun@arunraghavan.net>
+
+	* sys/bluez/Makefile.am:
+	* sys/bluez/gstavdtpsrc.c:
+	* sys/bluez/gstavdtpsrc.h:
+	* sys/bluez/gstavrcputil.c:
+	* sys/bluez/gstavrcputil.h:
+	* sys/bluez/org.bluez.xml:
+	  avdtpsrc: Add support for AVRCP metadata
+	  Metadata from AVRCP is emitted as tags, and the duration from AVRCP is
+	  used in queries by avdtpsrc.
+
+2016-09-24 10:49:10 -0400  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/openjpeg/gstopenjpegdec.c:
+	  openjpegdec: Properly offset and shift for all formats when converting
+	  And while at it, also clean up some code.
+
+2016-09-24 10:05:16 -0400  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/videoparsers/gstjpeg2000parse.c:
+	  jpeg2000parse: Don't pass NULL strings to the colorspace / sampling parsing functions
+	  They assert on NULL.
+
+2016-09-23 15:49:21 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* ext/wayland/gstwaylandsink.c:
+	  waylandsink: Don't leak GValues in getcaps
+
+2016-09-22 18:55:23 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* ext/wayland/gstwaylandsink.c:
+	* ext/wayland/wlwindow.c:
+	* ext/wayland/wlwindow.h:
+	  waylandsink: Update our window size on configure event
+	  This is specific to when the waylandsink is not being embedded. In
+	  this patch we pass the render lock to the window so it can safely
+	  call gst_wl_window_set_render_rectangle() with the new size.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=722343
+
+2016-09-22 18:53:22 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* ext/wayland/gstwaylandsink.c:
+	  waylandsink: Remove atomic operation
+	  We already take the render lock from the wlqueue thread in some other
+	  place which indicates that there is no use of this atomic instead of
+	  a proper locking mechanism.
+
+2016-09-22 15:37:41 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* ext/wayland/gstwaylandsink.c:
+	  waylandsink: Do not pre-configure proposed pool
+	  Upstream must configure the pool before using it. Pre-configuring
+	  the proposed pool could hide bugs in upstream elements.
+
+2016-09-22 15:35:44 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* ext/wayland/wlwindow.c:
+	* ext/wayland/wlwindow.h:
+	  waylandsink: Properly draw black border in absence of viewporter
+	  When we don't have a viewporter (scaling support), we can't use the
+	  1x1 scaleup image trick. Instead, we need to allocate a buffer with
+	  the same size as the area that need to have black background.
+
+2016-09-22 10:55:03 +0200  Florian Zwoch <fzwoch@gmail.com>
+
+	* sys/winscreencap/gstdx9screencapsrc.c:
+	  dx9screencapsrc: throw error for invalid screen index
+	  Currently dx9screencapsrc prints a verbose warning in case the screen
+	  index is out of range for the current number of detected monitors. This
+	  value is then dropped.
+	  However there is no initial indication (beside the console print) if it
+	  worked or not. This may result in capturing an unwanted screen as it
+	  would capture the last set index that was not rejected.
+	  This patch sets the index regardless. Instead, the element throws an
+	  error when it tries to run or getting caps for an invalid index.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=771817
+
+2016-09-22 18:19:36 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstgldisplay.c:
+	  gldisplay: also free the GWeakRef when removing dead contexts
+	  Otherwise we leak GWeakRef's.
+	  Found with make -C tests/check libs/gstglcontext.valgrind
+
+2016-09-21 15:51:52 -0700  Martin Kelly <martin@surround.io>
+
+	* gst-libs/gst/wayland/Makefile.am:
+	  wayland/Makefile.am: add missing libs
+	  libgstwayland is missing a dependency on $(GST_PLUGINS_BASE_LIBS), so add it.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=771794
+
+2016-09-21 15:07:50 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* ext/wayland/wldisplay.c:
+	  waylandsink: Destroy viewporter when done
+	  https://bugzilla.gnome.org/show_bug.cgi?id=738079
+
+2016-09-21 11:33:18 -0700  Martin Kelly <martin@surround.io>
+
+	* tests/check/Makefile.am:
+	  build: add missing $(GST_PLUGINS_BASE_LIBS)
+	  The linker flags for several plugins (dashdemux, mssdemux, hlsdemux) are missing
+	  $(GST_PLUGINS_BASE_LIBS), so add them so they can find -lgsttag and -lgstapp.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=771780
+
+2016-09-19 12:11:59 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* ext/wayland/gstwaylandsink.c:
+	  waylandsink: Port to vmeta and GstVideoFrame
+	  This add support for non-standard strides to be used. Note that
+	  some extra work is needed for multi-plane format which may have
+	  a different GstMemory object per plane. This is not currently a
+	  problem since SHM interface is limited to 1 memory.
+
+2016-09-19 12:08:20 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* ext/wayland/gstwaylandsink.c:
+	  waylandsink: Don't propose multiple time the same buffer pool
+	  The buffer pool API does not allow multiple of owner. This otherwise
+	  lead to error when renegotiation take place. Aso consider the
+	  allocation query "need_pool" boolean.
+
+2016-09-19 12:06:17 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* ext/wayland/gstwaylandsink.c:
+	  waylandsink: Promote debug trace into error trace
+	  Otherwise those error may go unseen making debugging much
+	  harder.
+
+2016-09-19 12:04:52 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* ext/wayland/gstwaylandsink.c:
+	  waylandsink: Factor-out the pool creation
+
+2016-09-16 15:41:11 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* ext/wayland/gstwaylandsink.c:
+	  waylansink: Implement _show_frame()
+	  This fixes the property show-preroll-frame expose by the VideoSink base
+	  class and removes redundant code.
+
+2016-09-21 15:09:26 +0200  Joakim Johansson <joakimj@axis.com>
+
+	* tests/check/elements/rtponviftimestamp.c:
+	  rtponviftimestamp: Update unit tests after changing default value of D-bit
+	  The D bit shall always be set to true for the first buffer.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770221
+
+2016-09-21 09:31:23 -0400  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/decklink/gstdecklink.cpp:
+	* sys/decklink/gstdecklinkaudiosink.cpp:
+	* sys/decklink/gstdecklinkaudiosrc.cpp:
+	* sys/decklink/gstdecklinkvideosink.cpp:
+	* sys/decklink/gstdecklinkvideosrc.cpp:
+	  decklink: Print the Decklink API error return values in debug output in all places
+
+2016-09-20 18:28:29 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/wayland/Makefile.am:
+	  wayland: fix distcheck some more
+
+2016-09-13 11:18:27 +0200  Joakim Johansson <joakimj@axis.com>
+
+	* gst/onvif/gstrtponviftimestamp.c:
+	  rtponviftimestamp: Change default value of D-bit
+	  The default value of D-bit is changed to TRUE so discontinuity
+	  is set for initial request and seek request as well.
+	  Only set the e_bit flag for the CUSTOM_DOWNSTREAM event if
+	  a cached buffer exists.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770221
+
+2016-09-19 10:18:22 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* configure.ac:
+	  configure: fix --disable-external
+	  conditional "USE_VULKAN" was never defined
+
+2016-09-19 16:54:43 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglcolorbalance.c:
+	  glcolorbalance: reconfigure on passthrough changes
+	  Fixes an assertion when moving from passthrough to non-passthrough
+	  Without an explicit reconfigure, glfiter won't have created the GL
+	  resources such as the FBO, GL bufferpool, etc and basetransform will
+	  allocate sysmem buffers instead.
+
+2016-09-16 13:43:50 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/player/gstplayer.c:
+	  player: Remove some leftovers from external GstPlayer
+
+2016-09-17 14:12:44 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/wayland/Makefile.am:
+	  wayland: fix distcheck when wayland-scanner is not installed
+
+2016-09-15 14:10:02 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* ext/wayland/wldisplay.c:
+	* ext/wayland/wlwindow.c:
+	  waylandsink: Make wl_viewporter optional
+	  This makes the viewporter interface optional. The end result is
+	  obviously far from optimal, though it greatly helps testing on older
+	  compostitors or gnome-wayland. We can make it strictly needed later when
+	  this new interface get widely adopted.
+
+2016-06-14 16:34:35 -0700  Scott D Phillips <scott.d.phillips@intel.com>
+
+	* configure.ac:
+	* ext/wayland/Makefile.am:
+	* ext/wayland/scaler.xml:
+	* ext/wayland/wldisplay.c:
+	* ext/wayland/wldisplay.h:
+	* ext/wayland/wlwindow.c:
+	* ext/wayland/wlwindow.h:
+	  wayland: Update from scaler to viewporter protocol
+	  Signed-off-by: Scott D Phillips <scott.d.phillips@intel.com>
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767671
+
+2016-09-15 14:58:35 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/libs/player.c:
+	  player: Fix unit test for minor API change
+
+2016-09-15 13:15:22 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/player/gstplayer.c:
+	* gst-libs/gst/player/gstplayer.h:
+	  player: Remove boolean return from set_subtitle_uri()
+	  It can't fail synchronously and is inconsistent with set_uri().
+
+2016-09-14 18:07:55 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/player/gstplayer.c:
+	  player: Don't change state to PLAYING immediately if a seek is pending
+	  We first have to finish the seek (in PAUSED) and move to PLAYING once
+	  the seek is actually finished (unless a new one is pending then).
+
+2016-09-14 11:30:48 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* configure.ac:
+	  configure: Depend on gstreamer 1.9.2.1
+
+2016-09-08 11:57:52 +0900  Hyunjun Ko <zzoon@igalia.com>
+
+	* gst/dvbsuboverlay/gstdvbsuboverlay.c:
+	  dvbsuboverlay: map with READWRITE for overlay blend
+	  Just as in basetextoverlay [1], the frame to blend with the subtitles overlay
+	  should be mapped with flags GST_MAP_READWRITE, because
+	  gst_video_overlay_composition_blend() does both operations.
+	  1. https://cgit.freedesktop.org/gstreamer/gst-plugins-base/commit/?id=1396f804
+	  Signed-off-by: Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+	  https://bugzilla.gnome.org/show_bug.cgi?id=771382
+
+2016-09-13 20:08:19 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+	* configure.ac:
+	  kmssink: update libdrm dependency to 2.4.55
+	  The latest libdrm feature supported by kmssink is the universal plane, which
+	  was added in 2.4.55. Let's update the dependency to that version.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770146
+
+2016-09-11 00:06:52 +0000  Graham Leggett <minfrin@sharp.fm>
+
+	* gst/mpegtsdemux/mpegtsbase.c:
+	  tsdemux: handle a NULL name in DVB short event descriptor
+	  Resolves the warning:
+	  GStreamer-WARNING **: Trying to set NULL string on field 'title' on taglist.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=771198
+
+2016-09-12 18:38:36 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: Also never have the SINK flag set on adaptivedemux
+
+2016-09-12 12:19:50 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/decklink/gstdecklinkvideosink.cpp:
+	  Revert "decklinkvideosink: Scale down scheduled frame times to milliseconds"
+	  This reverts commit 3b7e0d7de32f0728259d601daa13b9eeec3dd3ce.
+	  It was a bug in the driver and is supposed to be fixed with 10.8 and newer.
+
+2016-09-10 16:41:28 -0300  Thiago Santos <thiagossantos@gmail.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: fix typo in new API
+	  Fixes supressed -> suppressed typo in previous commit
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770627
+
+2016-09-05 10:31:40 +0900  Wonchul Lee <wonchul.lee@collabora.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: prevent to propagate source flag to itself
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770627
+
+2016-09-10 20:51:27 +1000  Jan Schmidt <jan@centricular.com>
+
+	* autogen.sh:
+	* common:
+	  Automatic update of common submodule
+	  From b18d820 to f980fd9
+
+2016-09-10 09:54:09 +1000  Jan Schmidt <jan@centricular.com>
+
+	* autogen.sh:
+	* common:
+	  Automatic update of common submodule
+	  From 2c31690 to b18d820
+
+2016-09-09 23:24:01 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/meson.build:
+	  meson/gl: use separate deps for gl and glx
+	  e.g. passing with_gl_api=gles2 would still build the glx code but not be
+	  linking against the libGL library which is where the glX* functions are
+	  located and would result in a linker error.
+	  Solved by checking for the libGL library if either opengl or glx may be
+	  needed and then disabling the corresponding deps as requested.
+
+2016-09-09 16:55:23 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/meson.build:
+	* ext/vulkan/meson.build:
+	* ext/vulkan/vkconfig.h.meson:
+	  meson: add build files for vulkan
+
+2016-09-09 16:36:03 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/gtk/meson.build:
+	* ext/meson.build:
+	  meson: add build files for the gtk plugin
+
+2016-09-09 11:08:53 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/meson.build:
+	* ext/meson.build:
+	* gst-libs/gst/gl/gstglconfig.h.meson:
+	* gst-libs/gst/gl/meson.build:
+	* gst-libs/gst/meson.build:
+	* meson_options.txt:
+	* pkgconfig/meson.build:
+	  meson: add some starting build files for GL
+	  Currently only works on linux with egl/glx + wayland/x11 but the general
+	  principals have been layed out for adding the other GL platforms/winsys'.
+
+2016-09-08 11:23:57 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/kms/gstkmssink.c:
+	  kmssink: Scale up to the screen dimension
+	  In most display sink, the logic is to use as much as possible
+	  of the given window. In this case, the window is the screen,
+	  hence it's logical to scale up.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767422
+
+2016-09-08 11:21:09 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/kms/gstkmssink.c:
+	  kmssink: Fix selection of source region
+	  The source region was scaled for display before being passed
+	  to drmModeSetPlane, which resulted in a portion of the video
+	  being cropped. While when crop meta was present, the rectangle
+	  was not centered since we where using unscaled width/height.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767422
+
+2016-09-08 08:40:59 +0100  Julien Isorce <j.isorce@samsung.com>
+
+	* gst-libs/gst/player/gstplayer.h:
+	  gstplayer: remove leftover update_interval api
+	  old: gst_player_set_position_update_interval
+	  new: gst_player_config_set_position_update_interval
+	  https://bugzilla.gnome.org/show_bug.cgi?id=769144
+
+2016-09-01 19:46:31 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkupload.c:
+	  vkupload: add video/x-raw to the VulkanBuffer uploader
+	  Allows upstream elements that use our memory to passthrough without copying.
+
+2016-09-01 19:43:59 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkutils.c:
+	  vkutils: set the last element of the layer array to NULL
+	  g_strv* functions require this to not read off the end of the array.
+
+2016-09-07 20:11:55 +0100  Alistair Buxton <a.j.buxton@gmail.com>
+
+	* tests/examples/gl/clutter/Makefile.am:
+	  gl/examples: Really remove references to $(GST_PLUGINS_GL_*).
+	  These seem to have been missed in the previous commit to this file.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=771023
+
+2016-09-07 20:07:26 +0100  Alistair Buxton <a.j.buxton@gmail.com>
+
+	* gst-libs/gst/gl/Makefile.am:
+	  gl: Remove duplicate GL_CFLAGS in Makefile.am.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=771021
+
+2016-08-05 18:17:32 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+	* sys/kms/gstkmsallocator.c:
+	  kmssink: override stride if defined in driver
+	  Some kms drivers demands specific pitches over the ones calculated by
+	  GstVideoInfo. For example, intel driver demands strides round up 64.
+	  This patch queries the driver for the prefered pitch and overwrites it
+	  in the pool's GstVideoInfo structure.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768446
+
+2016-09-06 16:05:53 -0300  Thibault Saunier <thibault.saunier@osg.samsung.com>
+
+	* gst-libs/gst/base/gstaggregator.c:
+	  aggregator: Use the event_full function for GstAggregatorPads
+	  Allowing us to tell GstPad why we are failing an event, which might
+	  be because we are 'flushing' even if the sinkpad is not in flush state
+	  at that point.
+
+2016-09-06 13:13:39 +0800  Haihua Hu <jared.hu@nxp.com>
+
+	* ext/qt/gstqsgtexture.cc:
+	  qmlglsink: check qt_context_ first in GstQSGTexture::bind()
+	  When start qmlglsink app, it will set NULL buffer to GstQSGTexture
+	  in which case that qt_context_ will be a random value and cause
+	  gst_gl_context_activate() fail.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770925
+
+2016-09-06 20:00:07 +1000  Matthew Waters <matthew@centricular.com>
+
+	* configure.ac:
+	  build/vulkan: fix winsys detection based on the previously set variables
+	  The X11/Wayland winsys checks weren't being used to enable the vulkan element.
+	  Use them.
+
+2016-09-06 11:02:06 +0200  Philippe Normand <philn@igalia.com>
+
+	* ext/srtp/gstsrtpenc.c:
+	  srtpenc: prevent deadlock in create_session
+	  Temporarily release the object lock which is needed to post error
+	  messages on the bus.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770933
+
+2016-09-05 22:30:01 -0300  Thibault Saunier <thibault.saunier@osg.samsung.com>
+
+	* meson.build:
+	  meson: Fix building with meson 0.34 when using subprojects
+	  When using subproject meson.source_root() returns the root
+	  directory of the toplevel project which break build.
+	  Upstream meson bug: https://github.com/mesonbuild/meson/issues/722
+
+2016-09-05 12:22:17 -0300  Thibault Saunier <thibault.saunier@osg.samsung.com>
+
+	* meson.build:
+	  meson: Bump version to 1.9.2
+
+2016-09-05 14:44:24 +1000  Alessandro Decina <alessandro.d@gmail.com>
+
+	* ext/gl/gstgluploadelement.c:
+	  glupload: create the GstGLUpload object in ::transform_caps
+	  Previously it was created in the init function and destroyed in ::stop, which
+	  lead to segfaults when reusing the element.
+	  Now the upload object is created in ::transform_caps if it is NULL, which is the
+	  earliest we need it. The other vfuncs already bail out if the upload object is
+	  NULL, which means that negotiation wasn't done.
+
+2016-08-29 11:40:54 +0900  Wonchul Lee <wonchul.lee@collabora.com>
+
+	* gst/mpegtsdemux/gstmpegdefs.h:
+	* gst/mpegtsdemux/tsdemux.c:
+	  tsdemux: Support ATSC EAC3
+	  EAC3 bit streams shall be identified with a stream_type value of 0x87 when
+	  transmitted as PES streams conforming to ATSC-published standards. It is specified
+	  in ATSC Standard A/52.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770528
+
+2016-09-01 14:25:58 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/decklink/gstdecklinkvideosink.cpp:
+	* sys/decklink/gstdecklinkvideosrc.cpp:
+	  decklink: Fix-up last commit that was not meant to be pushed yet
+
+2016-09-01 14:18:33 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/decklink/gstdecklinkaudiosink.cpp:
+	* sys/decklink/gstdecklinkvideosink.cpp:
+	  decklink: Fix indentation
+
+2016-09-01 14:17:48 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/decklink/gstdecklinkvideosink.cpp:
+	* sys/decklink/gstdecklinkvideosrc.cpp:
+	  decklink: Require a clock when going from PAUSED_TO_PLAYING and don't crash if there is none
+	  Also when going from PLAYING_TO_PAUSED, the clock might've been unset in the
+	  meantime, e.g. because the element was removed from its surrounding bin.
+
+2016-09-01 12:28:22 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* configure.ac:
+	  Back to development
+
+=== release 1.9.2 ===
+
+2016-09-01 12:27:59 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ChangeLog:
+	* NEWS:
+	* RELEASE:
+	* configure.ac:
+	* docs/plugins/gst-plugins-bad-plugins.args:
+	* docs/plugins/gst-plugins-bad-plugins.hierarchy:
+	* docs/plugins/gst-plugins-bad-plugins.interfaces:
+	* docs/plugins/inspect/plugin-accurip.xml:
+	* docs/plugins/inspect/plugin-adpcmdec.xml:
+	* docs/plugins/inspect/plugin-adpcmenc.xml:
+	* docs/plugins/inspect/plugin-aiff.xml:
+	* docs/plugins/inspect/plugin-asfmux.xml:
+	* docs/plugins/inspect/plugin-assrender.xml:
+	* docs/plugins/inspect/plugin-audiofxbad.xml:
+	* docs/plugins/inspect/plugin-audiomixer.xml:
+	* docs/plugins/inspect/plugin-audiovisualizers.xml:
+	* docs/plugins/inspect/plugin-autoconvert.xml:
+	* docs/plugins/inspect/plugin-bayer.xml:
+	* docs/plugins/inspect/plugin-bluez.xml:
+	* docs/plugins/inspect/plugin-bs2b.xml:
+	* docs/plugins/inspect/plugin-bz2.xml:
+	* docs/plugins/inspect/plugin-camerabin.xml:
+	* docs/plugins/inspect/plugin-chromaprint.xml:
+	* docs/plugins/inspect/plugin-coloreffects.xml:
+	* docs/plugins/inspect/plugin-compositor.xml:
+	* docs/plugins/inspect/plugin-curl.xml:
+	* docs/plugins/inspect/plugin-dashdemux.xml:
+	* docs/plugins/inspect/plugin-dataurisrc.xml:
+	* docs/plugins/inspect/plugin-debugutilsbad.xml:
+	* docs/plugins/inspect/plugin-decklink.xml:
+	* docs/plugins/inspect/plugin-dtls.xml:
+	* docs/plugins/inspect/plugin-dtsdec.xml:
+	* docs/plugins/inspect/plugin-dvb.xml:
+	* docs/plugins/inspect/plugin-dvbsuboverlay.xml:
+	* docs/plugins/inspect/plugin-dvdspu.xml:
+	* docs/plugins/inspect/plugin-faac.xml:
+	* docs/plugins/inspect/plugin-faad.xml:
+	* docs/plugins/inspect/plugin-fbdevsink.xml:
+	* docs/plugins/inspect/plugin-festival.xml:
+	* docs/plugins/inspect/plugin-fieldanalysis.xml:
+	* docs/plugins/inspect/plugin-flite.xml:
+	* docs/plugins/inspect/plugin-fluidsynthmidi.xml:
+	* docs/plugins/inspect/plugin-freeverb.xml:
+	* docs/plugins/inspect/plugin-frei0r.xml:
+	* docs/plugins/inspect/plugin-gaudieffects.xml:
+	* docs/plugins/inspect/plugin-gdp.xml:
+	* docs/plugins/inspect/plugin-geometrictransform.xml:
+	* docs/plugins/inspect/plugin-gmedec.xml:
+	* docs/plugins/inspect/plugin-gsm.xml:
+	* docs/plugins/inspect/plugin-gstgtk.xml:
+	* docs/plugins/inspect/plugin-gstsiren.xml:
+	* docs/plugins/inspect/plugin-hls.xml:
+	* docs/plugins/inspect/plugin-id3tag.xml:
+	* docs/plugins/inspect/plugin-inter.xml:
+	* docs/plugins/inspect/plugin-interlace.xml:
+	* docs/plugins/inspect/plugin-ivfparse.xml:
+	* docs/plugins/inspect/plugin-ivtc.xml:
+	* docs/plugins/inspect/plugin-jp2kdecimator.xml:
+	* docs/plugins/inspect/plugin-jpegformat.xml:
+	* docs/plugins/inspect/plugin-kate.xml:
+	* docs/plugins/inspect/plugin-ladspa.xml:
+	* docs/plugins/inspect/plugin-midi.xml:
+	* docs/plugins/inspect/plugin-mimic.xml:
+	* docs/plugins/inspect/plugin-mms.xml:
+	* docs/plugins/inspect/plugin-modplug.xml:
+	* docs/plugins/inspect/plugin-mpeg2enc.xml:
+	* docs/plugins/inspect/plugin-mpegpsdemux.xml:
+	* docs/plugins/inspect/plugin-mpegpsmux.xml:
+	* docs/plugins/inspect/plugin-mpegtsdemux.xml:
+	* docs/plugins/inspect/plugin-mpegtsmux.xml:
+	* docs/plugins/inspect/plugin-mplex.xml:
+	* docs/plugins/inspect/plugin-mxf.xml:
+	* docs/plugins/inspect/plugin-netsim.xml:
+	* docs/plugins/inspect/plugin-ofa.xml:
+	* docs/plugins/inspect/plugin-openal.xml:
+	* docs/plugins/inspect/plugin-opencv.xml:
+	* docs/plugins/inspect/plugin-openexr.xml:
+	* docs/plugins/inspect/plugin-opengl.xml:
+	* docs/plugins/inspect/plugin-openjpeg.xml:
+	* docs/plugins/inspect/plugin-opusparse.xml:
+	* docs/plugins/inspect/plugin-pcapparse.xml:
+	* docs/plugins/inspect/plugin-pnm.xml:
+	* docs/plugins/inspect/plugin-qt.xml:
+	* docs/plugins/inspect/plugin-rawparse.xml:
+	* docs/plugins/inspect/plugin-removesilence.xml:
+	* docs/plugins/inspect/plugin-resindvd.xml:
+	* docs/plugins/inspect/plugin-rfbsrc.xml:
+	* docs/plugins/inspect/plugin-rsvg.xml:
+	* docs/plugins/inspect/plugin-rtmp.xml:
+	* docs/plugins/inspect/plugin-rtponvif.xml:
+	* docs/plugins/inspect/plugin-schro.xml:
+	* docs/plugins/inspect/plugin-sdp.xml:
+	* docs/plugins/inspect/plugin-segmentclip.xml:
+	* docs/plugins/inspect/plugin-shm.xml:
+	* docs/plugins/inspect/plugin-smooth.xml:
+	* docs/plugins/inspect/plugin-smoothstreaming.xml:
+	* docs/plugins/inspect/plugin-sndfile.xml:
+	* docs/plugins/inspect/plugin-soundtouch.xml:
+	* docs/plugins/inspect/plugin-spandsp.xml:
+	* docs/plugins/inspect/plugin-speed.xml:
+	* docs/plugins/inspect/plugin-srtp.xml:
+	* docs/plugins/inspect/plugin-stereo.xml:
+	* docs/plugins/inspect/plugin-subenc.xml:
+	* docs/plugins/inspect/plugin-teletext.xml:
+	* docs/plugins/inspect/plugin-uvch264.xml:
+	* docs/plugins/inspect/plugin-vcdsrc.xml:
+	* docs/plugins/inspect/plugin-videofiltersbad.xml:
+	* docs/plugins/inspect/plugin-videoframe_audiolevel.xml:
+	* docs/plugins/inspect/plugin-videoparsersbad.xml:
+	* docs/plugins/inspect/plugin-videosignal.xml:
+	* docs/plugins/inspect/plugin-vmnc.xml:
+	* docs/plugins/inspect/plugin-voaacenc.xml:
+	* docs/plugins/inspect/plugin-voamrwbenc.xml:
+	* docs/plugins/inspect/plugin-waylandsink.xml:
+	* docs/plugins/inspect/plugin-webp.xml:
+	* docs/plugins/inspect/plugin-webrtcdsp.xml:
+	* docs/plugins/inspect/plugin-wildmidi.xml:
+	* docs/plugins/inspect/plugin-x265.xml:
+	* docs/plugins/inspect/plugin-y4mdec.xml:
+	* docs/plugins/inspect/plugin-yadif.xml:
+	* docs/plugins/inspect/plugin-zbar.xml:
+	* gst-plugins-bad.doap:
+	* win32/common/config.h:
+	  Release 1.9.2
+
+2016-09-01 11:24:37 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* po/af.po:
+	* po/az.po:
+	* po/bg.po:
+	* po/ca.po:
+	* po/cs.po:
+	* po/da.po:
+	* po/de.po:
+	* po/el.po:
+	* po/en_GB.po:
+	* po/eo.po:
+	* po/es.po:
+	* po/eu.po:
+	* po/fi.po:
+	* po/fr.po:
+	* po/gl.po:
+	* po/hr.po:
+	* po/hu.po:
+	* po/id.po:
+	* po/it.po:
+	* po/ja.po:
+	* po/ky.po:
+	* po/lt.po:
+	* po/lv.po:
+	* po/mt.po:
+	* po/nb.po:
+	* po/nl.po:
+	* po/or.po:
+	* po/pl.po:
+	* po/pt_BR.po:
+	* po/ro.po:
+	* po/ru.po:
+	* po/sk.po:
+	* po/sl.po:
+	* po/sq.po:
+	* po/sr.po:
+	* po/sv.po:
+	* po/tr.po:
+	* po/uk.po:
+	* po/vi.po:
+	* po/zh_CN.po:
+	  po: Update translations
+
+2016-08-30 16:21:25 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* configure.ac:
+	* sys/applemedia/Makefile.am:
+	* sys/applemedia/plugin.m:
+	  applemedia: Conditionally compile qtkitvideosrc
+	  The API was deprecated in 10.9 and apparently does not exist in the SDK for
+	  macOS Sierra anymore.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770587
+
+2016-08-31 04:26:43 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst-libs/gst/gl/gstglframebuffer.h:
+	  gl: Remove extra duplicate typedef of GstGLFramebuffer
+	  It's triggering a warning building git master on OSX
+
+2016-08-29 16:57:42 +1000  Matthew Waters <matthew@centricular.com>
+
+	* tests/check/libs/gstglupload.c:
+	  tests/glupload: support opengl3 properly instead of spewing GL errors
+
+2016-08-29 16:52:44 +1000  Matthew Waters <matthew@centricular.com>
+
+	* pkgconfig/gstreamer-gl.pc.in:
+	  gl/pkgconfig: add the lib include dir to the list of includes
+	  714d8aa in core removed this include dir from it's pkgconfig file.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770523
+
+2016-08-29 15:43:10 +1000  Alessandro Decina <alessandro.d@gmail.com>
+
+	* gst-libs/gst/gl/gstglupload.c:
+	* tests/check/libs/gstglupload.c:
+	  glupload: fix tests and check for the new RECONFIGURE behaviour
+	  The tests were broken since 91fea30, which changed glupload to return
+	  GST_GL_UPLOAD_RECONFIGURE if the texture target in the input buffers doesn't
+	  match the texture-target configured in the output caps.
+	  This commit fixes that and adds more checks for the new behaviour.
+
+2016-08-19 11:12:10 -0700  Thibault Saunier <thibault.saunier@osg.samsung.com>
+
+	* ext/gme/gstgme.c:
+	* ext/sndfile/gstsfsink.c:
+	* ext/teletextdec/gstteletextdec.c:
+	* ext/timidity/gsttimidity.c:
+	* ext/timidity/gstwildmidi.c:
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	* gst/aiff/aiffparse.c:
+	* gst/midi/midiparse.c:
+	* gst/mpegdemux/gstmpegdemux.c:
+	* gst/mpegtsdemux/mpegtsbase.c:
+	* gst/mxf/mxfdemux.c:
+	* gst/nuvdemux/gstnuvdemux.c:
+	* gst/tta/gstttaparse.c:
+	* sys/androidmedia/gstamcaudiodec.c:
+	* sys/androidmedia/gstamcvideodec.c:
+	* sys/androidmedia/gstamcvideoenc.c:
+	* sys/applemedia/avfassetsrc.m:
+	  Use the new API to post flow ERROR messages on the bus
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770158
+
+2016-08-26 20:12:21 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/elements/dash_mpd.c:
+	  dash: Fix build of unit test
+
+2016-08-25 20:50:11 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	* ext/dash/gstdashdemux.h:
+	* ext/dash/gstmpdparser.c:
+	* ext/dash/gstmpdparser.h:
+	  dashdemux: Add properties to select maximum allowed width/height and framerate
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770408
+
+2016-08-26 16:04:27 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/decklink/gstdecklinkaudiosink.cpp:
+	  decklinkaudiosink: Fix compiler warning on OS X
+	  While gint64 and int64_t are always the same, clang does not agree with that.
+	  /Applications/Xcode.app/Contents/Developer/usr/bin/make -C decklink
+	  CXX      libgstdecklink_la-gstdecklinkaudiosink.lo
+	  gstdecklinkaudiosink.cpp:675:79: error: cannot initialize a parameter of type 'int64_t *' (aka 'long long *') with an rvalue of type 'gint64 *' (aka 'long *')
+	  ret = buf->output->attributes->GetInt (BMDDeckLinkMaximumAudioChannels, &max_channels);
+	  ^~~~~~~~~~~~~
+	  ./linux/DeckLinkAPI.h:692:87: note: passing argument to parameter 'value' here
+	  virtual HRESULT GetInt (/* in */ BMDDeckLinkAttributeID cfgID, /* out */ int64_t *value) = 0;
+	  ^
+
+2016-08-26 22:51:48 +1000  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/corevideomemory.c:
+	  applemedia: fix compiler warning
+
+2016-08-26 15:48:36 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/decklink/gstdecklinkvideosink.cpp:
+	  decklinkvideosink: Scale down scheduled frame times to milliseconds
+	  Scale down to milliseconds, otherwise at least some hardware has problems
+	  scheduling the frames (or schedules them too slow) and we run out of available
+	  frames.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770282
+
+2016-08-26 14:08:11 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/decklink/gstdecklink.cpp:
+	* sys/decklink/gstdecklink.h:
+	* sys/decklink/gstdecklinkaudiosink.cpp:
+	  decklinkaudiosink: Add support for 8 and 16 channels
+
+2016-08-26 17:37:54 +1000  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/Makefile.am:
+	* sys/applemedia/avfassetsrc.m:
+	* sys/applemedia/avfvideosrc.m:
+	* sys/applemedia/coremediabuffer.c:
+	* sys/applemedia/coremediabuffer.h:
+	* sys/applemedia/corevideobuffer.c:
+	* sys/applemedia/corevideobuffer.h:
+	* sys/applemedia/corevideomemory.c:
+	* sys/applemedia/corevideomemory.h:
+	* sys/applemedia/iosglmemory.c:
+	* sys/applemedia/iosglmemory.h:
+	* sys/applemedia/iosurfacememory.c:
+	* sys/applemedia/plugin.m:
+	* sys/applemedia/qtkitvideosrc.m:
+	* sys/applemedia/videotexturecache.h:
+	* sys/applemedia/videotexturecache.m:
+	* sys/applemedia/vtdec.c:
+	* sys/applemedia/vtenc.c:
+	  applemedia: changes to make GL memory mappable on CPU on iOS
+	  This commit introduces IOSGLMemory which is a GLMemory that falls back to
+	  GstAppleCoreVideoMemory for CPU access. This is a temporary solution until
+	  IOSurface gets exposed as a public framework on iOS and so we can use
+	  IOSurfaceMemory on both MacOS and iOS.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=769210
+
+2016-08-22 17:18:27 +1000  Alessandro Decina <alessandro.d@gmail.com>
+
+	* ext/gl/gstgluploadelement.c:
+	* gst-libs/gst/gl/gstglupload.c:
+	* gst-libs/gst/gl/gstglupload.h:
+	  gstglupload: make the GLMemoryUpload method output the correct texture-target
+	  Now when used with video/x-raw as input, the GLMemoryUpload method checks for
+	  ->tex_target in input GLMemory(es) and sets the output texture-target
+	  accordingly.
+	  Fixes video corruption with a pipeline like avfvideosrc ! video/x-raw !
+	  glimagesink where on macos avfvideosrc pushes RECTANGLE textures but glupload
+	  was configuring texture-target=2D as output.
+
+2016-08-24 09:41:08 -0300  Thibault Saunier <tsaunier@gnome.org>
+
+	* gst-libs/gst/mpegts/mpegts_enum.py:
+	* gst/mpegtsdemux/meson.build:
+	* meson.build:
+	  meson: Make mpegts lib build when using subprojects
+	  The headers passed as parametter are relative to the build dir
+	  basically "../subproject/gst-plugins-bad/gst-libs/gst/mpegts/XXX.h"
+	  but that does not match what is needed at build time when building as
+	  subproject, also we always add current dir as include_dir so we are
+	  safe including directly.
+	  And link mpegtsdemux against the 'math' library as it is needed.
+
+2016-08-26 03:46:39 +1000  Jan Schmidt <jan@centricular.com>
+
+	* docs/plugins/gst-plugins-bad-plugins-docs.sgml:
+	  docs: Expose the opengl plugin and element docs
+
+2016-08-26 02:20:11 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst-libs/gst/video/gstvideoaggregator.c:
+	  videoaggregator: Handle if update_caps() returns EMPTY
+	  Don't assume the returned caps from update_caps() is
+	  non-empty.
+
+2016-08-26 02:07:27 +1000  Jan Schmidt <jan@centricular.com>
+
+	* ext/gl/gstglvideomixer.c:
+	  gl: Update glvideomixer doc
+
+2016-08-26 02:06:00 +1000  Jan Schmidt <jan@centricular.com>
+
+	* ext/gl/gstglstereomix.c:
+	* ext/gl/gstglviewconvert.c:
+	  gl: Add/update docs for glviewconvert, glstereomix
+	  Add some example pipelines for glstereomix, and fix up
+	  the example pipelines for glviewconvert
+
+2016-08-26 00:29:34 +1000  Jan Schmidt <jan@centricular.com>
+
+	* ext/gl/gstglstereomix.c:
+	* ext/gl/gstglstereomix.h:
+	  glstereomix: Fix caps negotiation
+	  The videoaggregator negotiation sequence changed some time
+	  back and broke glstereomix. Instead of doing nego incorrectly
+	  in the find_best_format() vfunc, do it directly in the
+	  update_caps() method.
+
+2016-08-25 15:26:49 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst-libs/gst/gl/gstglviewconvert.c:
+	  glviewconvert: Fix texture target fixation
+	  Don't set the chosen texture-target into the wrong structure.
+	  The input caps may not be writable, and in any case - the
+	  intention was to configure the othercaps. Also, remove an
+	  extra unref - the othercaps ref is consumed by
+	  gst_caps_make_writable already.
+
+2016-08-25 19:35:13 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	* ext/hls/gsthlsdemux.c:
+	* ext/smoothstreaming/gstmssdemux.c:
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: Enable bitrate selection for trick mode streaming again
+	  And scale the bitrate with the absolute rate (if it's bigger than 1.0) to get
+	  to the real bitrate due to faster playback.
+	  This allowed in my tests to play a stream with 10x speed without buffering as
+	  the lowest bitrate is chosen, instead of staying/selecting the highest bitrate
+	  and then buffering all the time.
+	  It was previously disabled for not very well specified reasons, which seem to
+	  be not valid anymore nowadays.
+
+2016-08-25 16:33:17 +0200  Josep Torra <n770galaxy@gmail.com>
+
+	* tests/check/elements/.gitignore:
+	  gitignore: add missing dash_isoff file
+
+2016-08-25 12:45:33 +0200  Josep Torra <n770galaxy@gmail.com>
+
+	* tests/check/Makefile.am:
+	  build: fix gst-uninstalled build in osx
+	  Fixes clang: error: argument unused during compilation: '-pthread'
+	  when building the test programs.
+
+2016-08-25 14:35:59 +0200  Josep Torra <n770galaxy@gmail.com>
+
+	* configure.ac:
+	* tests/check/Makefile.am:
+	  build: unconditionally check for video, audio and pbutils modules
+	  Check for modules in configure and use GST_*_LIBS vars to link with
+	  the libraries instead of hardcoding them.
+
+2016-07-26 19:55:13 +0200  Xabier Rodriguez Calvar <calvaris@igalia.com>
+
+	* ext/gl/gstglvideoflip.c:
+	* ext/gl/gstglvideoflip.h:
+	  glvideoflip: implement GstVideoDirection interface
+	  It implements now this interface with its video-direction
+	  property. Values are changed to GstVideoOrientationMethod but they have
+	  the same value than the originals.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768687
+
+2016-08-24 19:43:55 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/fdkaac/gstfdkaacenc.c:
+	  fdkaacenc: Implement some automatic bitrate selection
+	  Based on sample rate and channel count, see
+	  http://wiki.hydrogenaud.io/index.php?title=Fraunhofer_FDK_AAC#Recommended_Sampling_Rate_and_Bitrate_Combinations
+
+2016-08-24 14:15:09 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/player/gstplayer.c:
+	  player: On redirects, remember the redirect URI separately and don't consider this an URI property change
+	  The application does not know anything about the redirect, and changing its
+	  URI internally will cause confusion.
+	  Also don't reset the subtitle URI.
+
+2016-08-24 14:10:41 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/player/gstplayer.c:
+	  player: Don't report spurious STOPPED state changes when doing transient changes there
+
+2016-08-24 13:01:46 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/player/gstplayer.c:
+	  player: Ensure that rate is initialized to 1.0
+
+2016-08-24 10:16:00 +0000  Fredrik Fornwall <fredrik@fornwall.net>
+
+	* sys/opensles/Makefile.am:
+	  opensles: Add opensles.h to noinst_HEADERS
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770326
+
+2016-08-23 14:37:17 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/player/gstplayer.c:
+	  player: De-duplicate rate setting code and always use the property
+
+2016-08-23 14:33:11 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/player/gstplayer.c:
+	  player: Protect setter/getter for the configuration with a mutex
+
+2016-08-23 14:32:24 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/player/gstplayer.c:
+	* gst-libs/gst/player/gstplayer.h:
+	  player: Move subtitle URI setter next to the uri setter
+	  It's confusing to have them a couple of hundred lines apart.
+
+2016-08-17 19:59:17 +0200  Matej Knopp <matej.knopp@gmail.com>
+
+	* sys/applemedia/vtdec.c:
+	  vtdec: fix MPEG-2 video caps
+	  Add systemstream=false to caps, otherwise the decoder
+	  may be picked for MPEG-PS files. Also parsed=true,
+	  as video toolbox expects entire frame in
+	  VTDecompressionSessionDecodeFrame.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770049
+
+2016-08-23 02:13:19 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c.rej:
+	* gst-libs/gst/adaptivedemux/set_state_keep.patch:
+	  adaptivedemux: Fix the previous commit
+	  Remove extra files that were not meant to be added to the commit
+
+2016-08-23 01:57:55 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c.rej:
+	* gst-libs/gst/adaptivedemux/set_state_keep.patch:
+	  adaptivedemux: Fix broken updates loop on live streams
+	  Prevent the manifest update loop from looping endlessly
+	  after a seek event, by clearing the variable that tells
+	  the task function not to immediately exit.
+
+2016-08-18 10:06:27 +0200  Michael Olbrich <m.olbrich@pengutronix.de>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: fix stream exposure condition
+	  The new streams should not be exposed until all streams are done with the
+	  current fragment. The old code is incorrect and actually only checked the
+	  current stream. Fix this by properly checking all streams.
+	  Also, ignore the current stream. The code is only reached when the current
+	  stream finished downloading and since
+	  07f49f15b1196cc9fa0d45af91149a35fce123b9 ("adaptivedemux: On EOS, handle it
+	  before waking download loop") download_finished is set after
+	  gst_adaptive_demux_stream_advance_fragment_unlocked() is called.
+	  Without this HLS playback with multiple streams is broken, because the new
+	  streams are never exposed.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770075
+
+2016-08-21 16:21:07 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/mpg123/meson.build:
+	  meson: remove unused mpg123 build file
+	  mpg123 was moved to ugly.
+
+2016-08-12 21:21:45 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* .gitignore:
+	* config.h.meson:
+	* ext/assrender/meson.build:
+	* ext/bz2/meson.build:
+	* ext/chromaprint/meson.build:
+	* ext/curl/meson.build:
+	* ext/dash/meson.build:
+	* ext/directfb/meson.build:
+	* ext/dtls/meson.build:
+	* ext/dts/meson.build:
+	* ext/faac/meson.build:
+	* ext/faad/meson.build:
+	* ext/flite/meson.build:
+	* ext/fluidsynth/meson.build:
+	* ext/hls/meson.build:
+	* ext/kate/meson.build:
+	* ext/libde265/meson.build:
+	* ext/libmms/meson.build:
+	* ext/meson.build:
+	* ext/mpg123/meson.build:
+	* ext/openh264/meson.build:
+	* ext/openjpeg/meson.build:
+	* ext/opus/meson.build:
+	* ext/resindvd/meson.build:
+	* ext/rsvg/meson.build:
+	* ext/rtmp/meson.build:
+	* ext/sbc/meson.build:
+	* ext/schroedinger/meson.build:
+	* ext/smoothstreaming/meson.build:
+	* ext/soundtouch/meson.build:
+	* ext/spandsp/meson.build:
+	* ext/srtp/meson.build:
+	* ext/srtp/srtp_mkenum.py:
+	* ext/voaacenc/meson.build:
+	* ext/webp/meson.build:
+	* ext/x265/meson.build:
+	* ext/zbar/meson.build:
+	* gst-libs/gst/adaptivedemux/meson.build:
+	* gst-libs/gst/audio/meson.build:
+	* gst-libs/gst/base/meson.build:
+	* gst-libs/gst/basecamerabinsrc/meson.build:
+	* gst-libs/gst/codecparsers/meson.build:
+	* gst-libs/gst/gl/gstglconfig.h.meson:
+	* gst-libs/gst/gl/meson.build:
+	* gst-libs/gst/insertbin/meson.build:
+	* gst-libs/gst/interfaces/build_mkenum.py:
+	* gst-libs/gst/interfaces/meson.build:
+	* gst-libs/gst/meson.build:
+	* gst-libs/gst/mpegts/meson.build:
+	* gst-libs/gst/mpegts/mpegts_enum.py:
+	* gst-libs/gst/player/meson.build:
+	* gst-libs/gst/uridownloader/meson.build:
+	* gst-libs/gst/video/meson.build:
+	* gst-libs/meson.build:
+	* gst/accurip/meson.build:
+	* gst/adpcmdec/meson.build:
+	* gst/adpcmenc/meson.build:
+	* gst/aiff/meson.build:
+	* gst/asfmux/meson.build:
+	* gst/audiobuffer/meson.build:
+	* gst/audiofxbad/meson.build:
+	* gst/audiomixer/meson.build:
+	* gst/audiovisualizers/meson.build:
+	* gst/autoconvert/meson.build:
+	* gst/bayer/meson.build:
+	* gst/camerabin2/meson.build:
+	* gst/cdxaparse/meson.build:
+	* gst/coloreffects/meson.build:
+	* gst/compositor/meson.build:
+	* gst/dataurisrc/meson.build:
+	* gst/dccp/meson.build:
+	* gst/debugutils/meson.build:
+	* gst/dvbsuboverlay/meson.build:
+	* gst/dvdspu/meson.build:
+	* gst/faceoverlay/meson.build:
+	* gst/festival/meson.build:
+	* gst/fieldanalysis/meson.build:
+	* gst/freeverb/meson.build:
+	* gst/frei0r/meson.build:
+	* gst/games/meson.build:
+	* gst/gaudieffects/meson.build:
+	* gst/gdp/meson.build:
+	* gst/geometrictransform/meson.build:
+	* gst/hdvparse/meson.build:
+	* gst/id3tag/meson.build:
+	* gst/inter/meson.build:
+	* gst/interlace/meson.build:
+	* gst/ivfparse/meson.build:
+	* gst/ivtc/meson.build:
+	* gst/jp2kdecimator/meson.build:
+	* gst/jpegformat/meson.build:
+	* gst/librfb/meson.build:
+	* gst/meson.build:
+	* gst/midi/meson.build:
+	* gst/mixmatrix/meson.build:
+	* gst/mpeg1sys/meson.build:
+	* gst/mpegdemux/meson.build:
+	* gst/mpegpsmux/meson.build:
+	* gst/mpegtsdemux/meson.build:
+	* gst/mpegtsmux/meson.build:
+	* gst/mve/meson.build:
+	* gst/mxf/meson.build:
+	* gst/nuvdemux/meson.build:
+	* gst/onvif/meson.build:
+	* gst/overlay/meson.build:
+	* gst/patchdetect/meson.build:
+	* gst/pcapparse/meson.build:
+	* gst/pnm/meson.build:
+	* gst/rawparse/meson.build:
+	* gst/real/meson.build:
+	* gst/removesilence/meson.build:
+	* gst/rtjpeg/meson.build:
+	* gst/sdi/meson.build:
+	* gst/sdp/meson.build:
+	* gst/segmentclip/meson.build:
+	* gst/siren/meson.build:
+	* gst/smooth/meson.build:
+	* gst/speed/meson.build:
+	* gst/stereo/meson.build:
+	* gst/subenc/meson.build:
+	* gst/tta/meson.build:
+	* gst/vbidec/meson.build:
+	* gst/videofilters/meson.build:
+	* gst/videoframe_audiolevel/meson.build:
+	* gst/videomeasure/meson.build:
+	* gst/videoparsers/meson.build:
+	* gst/videosignal/meson.build:
+	* gst/vmnc/meson.build:
+	* gst/y4m/meson.build:
+	* gst/yadif/meson.build:
+	* meson.build:
+	* meson_options.txt:
+	* pkgconfig/meson.build:
+	* sys/bluez/meson.build:
+	* sys/d3dvideosink/meson.build:
+	* sys/directsound/meson.build:
+	* sys/dvb/meson.build:
+	* sys/meson.build:
+	* sys/wasapi/meson.build:
+	* sys/winks/meson.build:
+	* sys/winscreencap/meson.build:
+	  Add support for Meson as alternative/parallel build system
+	  https://github.com/mesonbuild/meson
+	  With contributions from:
+	  Tim-Philipp Müller <tim@centricular.com>
+	  Matej Knopp <matej.knopp@gmail.com>
+	  Jussi Pakkanen <jpakkane@gmail.com> (original port)
+	  Highlights of the features provided are:
+	  * Faster builds on Linux (~40-50% faster)
+	  * The ability to build with MSVC on Windows
+	  * Generate Visual Studio project files
+	  * Generate XCode project files
+	  * Much faster builds on Windows (on-par with Linux)
+	  * Seriously fast configure and building on embedded
+	  ... and many more. For more details see:
+	  http://blog.nirbheek.in/2016/05/gstreamer-and-meson-new-hope.html
+	  http://blog.nirbheek.in/2016/07/building-and-developing-gstreamer-using.html
+	  Building with Meson should work on both Linux and Windows, but may
+	  need a few more tweaks on other operating systems.
+
+2016-08-18 17:46:19 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* ext/dts/gstdtsdec.c:
+	* ext/resindvd/resindvdsrc.h:
+	* gst/bayer/gstbayer2rgb.c:
+	* gst/dccp/gstdccp_common.h:
+	* gst/librfb/d3des.c:
+	* sys/fbdev/gstfbdevsink.c:
+	  plugins: Use stdint.h instead of _stdint.h
+	  _stdint.h is generated by Autotools and we don't really need it. All
+	  supported platforms now ship with stdint.h. The only stickler was MSVC,
+	  and since Visual Studio 2015 it also ships stdint.h now.
+
+2016-08-12 21:51:17 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* win32/common/libgstgl.def:
+	  win32: Update libgstgl.def
+
+2016-03-02 00:53:44 +0530  Nirbheek Chauhan <nirbheek.chauhan@gmail.com>
+
+	* gst-libs/gst/codecparsers/nalutils.c:
+	  codecparsers: Explicitly export functions marked inline
+	  On MSVC, inline functions are not available outside of a file unless
+	  explicitly exported
+
+2016-08-19 12:24:58 +0100  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* gst/rawparse/gstrawvideoparse.c:
+	  rawvideoparse: fix typo in comment
+	  Small typo in the comment explaining the code fixed by the previous commit.
+	  Fixing it.
+
+2016-08-19 14:19:38 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/rawparse/gstrawvideoparse.c:
+	  rawvideoparse: Revert last commit and actually remember the physically last plane
+	  Instead of just always taking the last one as before.
+
+2016-08-19 11:57:33 +0100  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* gst/rawparse/gstrawvideoparse.c:
+	  rawvideoparse: remove unused assignment
+	  Value in last_plane will be overwritten before used, remove unused
+	  asignment.
+	  Fixes commit 91cf5ac69f9c99fe41d60f42b4174915dd135e7b
+	  CID 1371462
+
+2016-08-18 18:55:41 +0200  Philippe Renon <philippe_renon@yahoo.fr>
+
+	* ext/daala/gstdaaladec.c:
+	  daala: fix typo related compilation error
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770102
+
+2016-08-19 11:02:46 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* configure.ac:
+	* sys/Makefile.am:
+	* sys/applemedia-nonpublic/Makefile.am:
+	* sys/applemedia-nonpublic/bufferfactory.h:
+	* sys/applemedia-nonpublic/bufferfactory.m:
+	* sys/applemedia-nonpublic/celapi.c:
+	* sys/applemedia-nonpublic/celapi.h:
+	* sys/applemedia-nonpublic/celvideosrc.c:
+	* sys/applemedia-nonpublic/celvideosrc.h:
+	* sys/applemedia-nonpublic/cmapi.c:
+	* sys/applemedia-nonpublic/cmapi.h:
+	* sys/applemedia-nonpublic/coremediabuffer.c:
+	* sys/applemedia-nonpublic/coremediabuffer.h:
+	* sys/applemedia-nonpublic/coremediactx.c:
+	* sys/applemedia-nonpublic/coremediactx.h:
+	* sys/applemedia-nonpublic/corevideobuffer.c:
+	* sys/applemedia-nonpublic/corevideobuffer.h:
+	* sys/applemedia-nonpublic/cvapi.c:
+	* sys/applemedia-nonpublic/cvapi.h:
+	* sys/applemedia-nonpublic/dynapi-internal.h:
+	* sys/applemedia-nonpublic/dynapi.c:
+	* sys/applemedia-nonpublic/dynapi.h:
+	* sys/applemedia-nonpublic/mioapi.c:
+	* sys/applemedia-nonpublic/mioapi.h:
+	* sys/applemedia-nonpublic/miovideodevice.c:
+	* sys/applemedia-nonpublic/miovideodevice.h:
+	* sys/applemedia-nonpublic/miovideosrc.c:
+	* sys/applemedia-nonpublic/miovideosrc.h:
+	* sys/applemedia-nonpublic/mtapi.c:
+	* sys/applemedia-nonpublic/mtapi.h:
+	* sys/applemedia-nonpublic/plugin.m:
+	  applemedia-nonpublic: remove bitrotten plugin that's no longer needed
+
+2016-08-19 19:46:24 +1000  Florian Zwoch <fzwoch@gmail.com>
+
+	* sys/applemedia/avfvideosrc.m:
+	  avfvideosrc: account for retina displays when capturing screens
+	  Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=770030
+
+2016-08-19 17:11:13 +1000  Matthew Waters <matthew@centricular.com>
+
+	* configure.ac:
+	  build: bump graphene requirement to 1.4
+
+2016-08-19 15:35:49 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstgltransformation.c:
+	* ext/gl/gstgltransformation.h:
+	  gltransformation: rewrite the inverse transformation logic
+	  It now returns the correct values for both orthographic and perspective
+	  projections and takes into account the aspect ratio of the video, handles
+	  the Y-flipping in GL and by us and uses some more helpers from graphene.
+
+2016-07-01 16:18:55 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglwindow.c:
+	  glwindow: marshal gst_gl_window_resize through the window loop
+	  saves having every caller do it themselves.
+
+2016-06-30 23:06:43 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/wayland/wayland_event_source.c:
+	  gl/wayland: use multi-threaded safe event wayland API
+	  Multiple threads may be accessing the wayland fd at the same time which
+	  requires the use of special wayland API to deal with to ensure nobody
+	  will steal reads and cause a stall for anyone else.
+
+2016-07-01 00:15:55 +1000  Matthew Waters <matthew@centricular.com>
+
+	* tests/examples/gl/gtk/fxtest/fxtest.c:
+	  gl/examples/fxtest: fix up for wayland support
+	  - Pass the wayland display to gst
+	  - Redrawing on resize is no longer needed.
+
+2016-08-17 16:21:34 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/parsechannels.c:
+	  dvb/parsechannels: warn on ignored key/value pairs
+	  Otherwise at runtine, users get the misleading
+	  parsing-OK message with no info on, for example,
+	  properties that failed to map because of a typo.
+
+2016-08-16 15:35:39 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/parsechannels.c:
+	  dvb/parsechannels: handle problems parsing dvbv5 config keys
+
+2016-08-18 15:28:33 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/mplex/gstmplex.cc:
+	  mplex: Don't start task (yet/again) on pad release if we're in READY or NULL
+	  Fixes spurious segfault in unit test, where the task was started again during
+	  shutdown when all pads were removed... and was then still running while the
+	  element was finalized.
+
+2016-08-18 13:21:54 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	  dashdemux: In KEY_UNITS trick mode, download all I-frames and not only IDR
+
+2016-08-08 17:54:46 +0200  Carlos Rafael Giani <dv@pseudoterminal.org>
+
+	* tests/check/elements/.gitignore:
+	* tests/check/elements/rawaudioparse.c:
+	* tests/check/elements/rawvideoparse.c:
+	  rawparse: Fix and extend unit tests
+	  * Add caps change test to unit tests
+	  * Cleanup leftover buffers after each unit test
+	  * Add missing rawvideoparse entry in .gitignore
+	  https://bugzilla.gnome.org/show_bug.cgi?id=769637
+
+2016-08-16 09:31:40 +0200  Carlos Rafael Giani <dv@pseudoterminal.org>
+
+	* gst/rawparse/gstrawvideoparse.c:
+	* gst/rawparse/gstrawvideoparse.h:
+	* tests/check/elements/rawvideoparse.c:
+	  rawvideoparse: Compute plane offsets & strides if no custom ones are set
+	  This is useful to ensure that the offsets and strides are computed if
+	  only width, height, format etc. in the property config are set.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=769797
+
+2016-08-16 18:46:49 +0300  Sergei Saveliev <saveliev.sergei@gmail.com>
+
+	* sys/applemedia/avfassetsrc.m:
+	  avfassetsrc: Don't escape the URI another time in another location too
+	  One location was forgotten in a913a0b9679dd58945ad105d240db45595fdaba6
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767492
+
+2016-08-16 20:33:21 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/egl/gstegl.h:
+	  gl/egl: fix inverted typedef
+	  2b6841d had an inverted typedef defining ginptr and EGLAttrib.  Fix that.
+
+2016-08-16 10:37:28 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/timidity/gstwildmidi.c:
+	  wildmidi: Fix compilation with wildmidi 0.4
+	  Old versions used char* for the data, new versions use int8_t*. They're often
+	  not the same and differ in signedness.
+
+2016-08-16 16:51:02 +1000  Matthew Waters <matthew@centricular.com>
+
+	* configure.ac:
+	* gst-libs/gst/gl/egl/gstegl.h:
+	  gl/build: add configure check for possibly missing EGLAttrib
+	  Fixes the build on older android targets.
+
+2016-07-13 17:15:44 +0800  Song Bing <bing.song@nxp.com>
+
+	* gst-libs/gst/gl/egl/gsteglimage.c:
+	* gst-libs/gst/gl/egl/gstglcontext_egl.c:
+	* gst-libs/gst/gl/egl/gstglcontext_egl.h:
+	* gst-libs/gst/gl/egl/gstglmemoryegl.c:
+	  gl/egl/dmabuf: Wrong attribute list type for EGL 1.5
+	  For EGL 1.5 spec, the attribute list type should be EGLAttrib.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768602
+
+2016-08-15 16:14:25 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst-libs/gst/gl/gstglcontext.c:
+	  glcontext: fix race joining thread on finalize
+	  https://bugzilla.gnome.org/show_bug.cgi?id=769939
+
+2016-08-16 00:40:53 +1000  Jan Schmidt <jan@centricular.com>
+
+	* ext/qt/gstqtglutility.cc:
+	  qt: Use wglShareLists() workaround unconditionally.
+	  Sometimes wglCreateContextAttribsARB() exists, but
+	  isn't functional (some Intel drivers), so it's
+	  easiest to do the workaround unconditionally.
+
+2016-08-15 16:37:44 +1000  Jan Schmidt <jan@centricular.com>
+
+	* sys/winks/gstksvideodevice.c:
+	* sys/winks/gstksvideodevice.h:
+	* sys/winks/gstksvideosrc.c:
+	* sys/winks/ksvideohelpers.c:
+	* sys/winks/ksvideohelpers.h:
+	  winks: Fix RGB frame flipping and postprocessing
+	  Uncompressed RGB frames can be (usually are) bottom-up
+	  layout in DirectShow, and the code to flip them wasn't
+	  properly ported from 0.10. Fix it.
+	  Fix post-processing of RGB buffers. We need a writable
+	  buffer, but the requests pool is holding an extra ref.
+	  This could use more fixing to use a buffer pool
+
+2016-08-12 22:17:25 +1000  Jan Schmidt <jan@centricular.com>
+
+	* sys/winks/gstksvideosrc.c:
+	  winks: Give the ksvideosrc PRIMARY rank
+	  It's the primary video source on Windows, so give it a
+	  rank for autoplugging by camerabin and friends
+
+2016-08-12 22:16:33 +1000  Jan Schmidt <jan@centricular.com>
+
+	* sys/winks/ksvideohelpers.c:
+	  winks: Fix swapped RGBx/RGB caps mapping, and endianness.
+	  The RGBx and RGB format mappings were reversed.
+	  What Windows calls RGB are laid out as BGR in our parlance, so
+	  switch that too
+
+2016-08-08 13:41:14 +1000  Jan Schmidt <jan@centricular.com>
+
+	* ext/qt/gstqtglutility.cc:
+	  qt: Move debug statement to after the category init
+	  Don't output debug to an uninitialised debug category.
+
+2016-08-11 12:19:59 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/Makefile.am:
+	  dashdemux: Disable unit test for the time being
+	  It uses random data streams but dashdemux nowadays actually looks into the
+	  streams and doesn't like randomness very much. The tests should probably just
+	  become validate tests on real streams.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=769553
+
+2016-08-11 12:11:22 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	  Revert "Revert "dashdemux: When doing SIDX seeking, return instead of overriding the timestamp with 0 from the MPD seeking method""
+	  This reverts commit aea2c13fc1672a7260679d706d0a084a34ba7531.
+
+2016-08-04 14:47:41 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	  dashdemux: When doing chunked downloading on SIDX, clip requests on the SIDX entry boundaries
+	  https://bugzilla.gnome.org/show_bug.cgi?id=741104
+
+2016-08-02 08:47:55 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	* ext/dash/gstdashdemux.h:
+	  dashdemux: Collect average moof and first sync sample sizes
+	  And always request those in the beginning so that ideally we get the moof and
+	  the first sync sample all together with the first HTTP request.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=741104
+
+2016-08-02 08:35:26 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	* ext/dash/gstdashdemux.h:
+	  dashdemux: Download any sync-sample following the moof directly in key-units only mode
+	  We don't have to do yet another additional request but can just download the
+	  data directly.
+	  Also unify the key-unit only mode buffer pushing and extract it into its own
+	  function now that it became more complicated.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=741104
+
+2016-07-29 12:50:58 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	  dashdemux: If a fragment contains no sync samples, disable key-unit mode
+	  https://bugzilla.gnome.org/show_bug.cgi?id=741104
+
+2016-07-29 12:32:50 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	* ext/dash/gstdashdemux.h:
+	  dashdemux: Remember if for a stream we could do key-units only mode
+	  This makes sure we don't even try going into that mode if we previously saw
+	  that the stream does not have the suitable metadata.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=741104
+
+2016-07-29 11:54:21 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	  dashdemux: Also allow key-unit only mode if (some) sample flags are given by trex but we can still find sync frames
+	  https://bugzilla.gnome.org/show_bug.cgi?id=741104
+
+2016-07-12 20:09:52 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	  dashdemux: Use chunked downloading for the moof in KEY_UNITS mode
+	  Allows us to reuse the HTTP connection and reduce latencies a lot.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=741104
+
+2016-07-12 10:22:43 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.h:
+	  adaptivedemux: Add API for allowing subclasses to download URLs in chunks
+	  This allows to gradually download part of a fragment when the final size is
+	  not known and only a part of it should be downloaded. For example when only
+	  the moof should be parsed and/or a single keyframe should be downloaded.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=741104
+
+2016-06-01 14:02:11 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	  dashdemux: Mark every first buffer of moov, sidx, moof and mdat as DISCONT in keyframe-only mode
+	  We need to mark every first buffer of a key unit as discont, and also every
+	  first buffer of a moov and moof. This ensures that qtdemux takes note of our
+	  buffer offsets for each of those buffers instead of keeping track of them
+	  itself from the first buffer. We need offsets to be consistent between moof
+	  and mdat
+	  https://bugzilla.gnome.org/show_bug.cgi?id=741104
+
+2016-07-28 10:53:49 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	  dashdemux: Only enable key-unit trick mode for video streams
+	  https://bugzilla.gnome.org/show_bug.cgi?id=741104
+
+2016-05-31 15:12:49 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	  dashdemux: Only do keyframe-only playback if the corresponding seek flag is given
+	  https://bugzilla.gnome.org/show_bug.cgi?id=741104
+
+2016-05-30 12:09:34 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	* ext/dash/gstdashdemux.h:
+	  dashdemux: Implement downloading of only sync samples
+	  https://bugzilla.gnome.org/show_bug.cgi?id=741104
+
+2016-05-30 11:15:03 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	* ext/dash/gstdashdemux.h:
+	  dashdemux: Store parsed moof and extract offsets of sync samples in it
+	  https://bugzilla.gnome.org/show_bug.cgi?id=741104
+
+2016-05-02 17:11:31 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/Makefile.am:
+	* tests/check/elements/dash_isoff.c:
+	* tests/check/elements/dash_isoff.h:
+	  dash: Add test for parsing a moof box
+	  https://bugzilla.gnome.org/show_bug.cgi?id=741104
+
+2016-05-02 16:03:56 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/Makefile.am:
+	* tests/check/elements/dash_isoff.c:
+	  dash: Add unit test for ISOBFF box header parsing
+	  https://bugzilla.gnome.org/show_bug.cgi?id=741104
+
+2016-04-07 21:33:51 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	* ext/dash/gstisoff.c:
+	* ext/dash/gstisoff.h:
+	  dashdemux: Implement parsing of moof box
+	  https://bugzilla.gnome.org/show_bug.cgi?id=741104
+
+2016-04-07 13:34:57 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstisoff.c:
+	  dashdemux: Move code around to keep all sidx related functions together
+	  https://bugzilla.gnome.org/show_bug.cgi?id=741104
+
+2016-04-07 12:57:13 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	* ext/dash/gstisoff.c:
+	* ext/dash/gstisoff.h:
+	  dashdemux: Store box fourccs in the header at a central place
+	  https://bugzilla.gnome.org/show_bug.cgi?id=741104
+
+2016-03-28 13:45:36 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	* ext/dash/gstdashdemux.h:
+	  dashdemux: Implement parsing of ISOBMFF boxes
+	  https://bugzilla.gnome.org/show_bug.cgi?id=741104
+
+2016-03-16 13:48:09 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstisoff.c:
+	* ext/dash/gstisoff.h:
+	  dash: Add helper for parsing box headers
+	  https://bugzilla.gnome.org/show_bug.cgi?id=741104
+
+2016-08-10 22:50:12 +0000  xlazom00 <xlazom00@gmail.com>
+
+	* ext/x265/gstx265enc.c:
+	  x265enc: Enable aspect ratio
+	  x265 encoder need aspectRatioIdc == X265_EXTENDED_SAR if we want to use
+	  sarWidth/sarHeight
+	  https://bugzilla.gnome.org/show_bug.cgi?id=769716
+
+2016-08-08 13:10:12 +0200  Josep Torra <n770galaxy@gmail.com>
+
+	* ext/openjpeg/gstopenjpegenc.c:
+	  openjpegenc: use the corrent enumeration
+	  Fixes the following error when building in osx.
+	  error: implicit conversion from enumeration type
+	  'GstJPEG2000Colorspace' to different enumeration type
+	  'GstJPEG2000Sampling'
+
+2016-08-08 11:28:44 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/androidmedia/gstamc.c:
+	  amc: Fix call to realloc() to allocate the correct size of items
+
+2016-08-07 20:53:30 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* configure.ac:
+	* ext/Makefile.am:
+	  fdkaac: actually build and dist
+
+2016-08-06 23:31:23 +0000  xlazom00 <xlazom00@gmail.com>
+
+	* ext/hls/Makefile.am:
+	* gst/timecode/Makefile.am:
+	  hls, timecode: fix linking
+	  https://bugzilla.gnome.org//show_bug.cgi?id=769587
+
+2016-08-07 12:20:16 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/fdkaac/Makefile.am:
+	* ext/fdkaac/gstfdkaacdec.c:
+	* ext/fdkaac/gstfdkaacdec.h:
+	* ext/fdkaac/plugin.c:
+	  fdkaac: Add FDK AAC based decoder element
+	  Missing is support for error concealment, etc.
+
+2016-08-07 11:39:07 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/fdkaac/Makefile.am:
+	* ext/fdkaac/gstfdkaacenc.c:
+	* ext/fdkaac/gstfdkaacenc.h:
+	* ext/fdkaac/plugin.c:
+	  fdkaac: Add FDK AAC based encoder element
+	  This currently only handles LC profile and exposes a bitrate property, but
+	  handles up to 7.1 channels. See TODO list for missing features.
+
+2016-08-07 08:51:06 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* configure.ac:
+	* ext/fdkaac/Makefile.am:
+	* ext/fdkaac/plugin.c:
+	  fdkaac: Initial plugin skeleton
+
+2016-08-01 11:45:30 +0200  Bernhard Miller <bernhard.miller@streamunlimited.com>
+
+	* gst/aiff/aiffparse.c:
+	  aiffparse: keep end_offset when seeking
+	  After seeking in aiff files the information about the data end offset is
+	  discarded, leading to audio artifacts with metadata chunks at the end of
+	  a file.
+	  This patch retains the end offset information after a seek event.
+	  https://bugzilla.gnome.org//show_bug.cgi?id=769376
+
+2016-08-06 16:15:33 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/dvdspu/gstdvdspu.c:
+	  dvdspu: don't crash if video frame could not be mapped
+	  As might happen with e.g. vaapi and the test file from
+	  https://bugzilla.gnome.org/show_bug.cgi?id=736227
+
+2016-08-05 09:16:58 +0200  Edward Hervey <bilboed@bilboed.com>
+
+	* ext/dash/gstdashdemux.c:
+	  Revert "dashdemux: When doing SIDX seeking, return instead of overriding the timestamp with 0 from the MPD seeking method"
+	  This reverts commit 947656cfd22b75f914d5abe0af82396787f67564.
+	  This makes all dash seeking tests fail. Needs more testing to fully understand
+	  what's going wrong. Revert ok'd by Sebastian
+
+2016-05-31 19:21:17 +0300  Vivia Nikolaidou <vivia@toolsonair.com>
+
+	* gst/timecode/Makefile.am:
+	* gst/timecode/gsttimecodewait.c:
+	* gst/timecode/gsttimecodewait.h:
+	* gst/timecode/plugin.c:
+	  timecodewait: New element to wait for a specific timecode
+	  timecodewait receives a timecode as an argument (either as string or as
+	  GstVideoTimeCode - one is gst-launch-friendly and the other is code-friendly),
+	  and it will drop all audio and video buffers until that timecode has been
+	  reached.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766419
+
+2016-05-20 18:17:52 +0300  Vivia Nikolaidou <vivia@toolsonair.com>
+
+	* configure.ac:
+	* gst/timecode/Makefile.am:
+	* gst/timecode/gsttimecodestamper.c:
+	* gst/timecode/gsttimecodestamper.h:
+	* gst/timecode/plugin.c:
+	  timecodestamper: New element to attach SMPTE timecode to buffers
+	  The timecodestamper element attaches a SMPTE timecode to each video buffer.
+	  This timecode corresponds to the current stream time.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766419
+
+2016-05-15 17:25:44 +0300  Vivia Nikolaidou <vivia@toolsonair.com>
+
+	* sys/decklink/gstdecklinkvideosink.cpp:
+	* sys/decklink/gstdecklinkvideosink.h:
+	  decklinkvideosink: Add support for GstVideoTimeCode
+	  The timecode will be fetched from the video buffer and outputted on the
+	  decklink video sink.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766419
+
+2016-05-15 16:04:14 +0300  Vivia Nikolaidou <vivia@toolsonair.com>
+
+	* sys/decklink/gstdecklink.cpp:
+	* sys/decklink/gstdecklink.h:
+	* sys/decklink/gstdecklinkvideosrc.cpp:
+	* sys/decklink/gstdecklinkvideosrc.h:
+	  decklinkvideosrc: Add support for GstVideoTimeCode
+	  The timecode will be fetched from the decklink source and attached to the
+	  video buffer.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766419
+
+2016-08-04 23:14:41 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglcolorconvert.c:
+	  glcolorconvert: add missing rgb16 and bgr16 video formats in switch
+	  Fixes an assertion that code should not be reached
+	  https://bugzilla.gnome.org/show_bug.cgi?id=769462
+
+2016-08-04 22:28:13 +1000  Jan Schmidt <jan@centricular.com>
+
+	* ext/hls/gsthlsdemux.c:
+	  hls: Avoid potential NULL pointer dereference.
+	  Fixes CID 1364753
+
+2016-08-04 22:21:16 +1000  Jan Schmidt <jan@centricular.com>
+
+	* ext/hls/m3u8.c:
+	  hls: Avoid coverity warning about access off the end of an array.
+	  Fixes CID 1364755
+
+2016-08-04 14:42:34 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	  dashdemux: When doing SIDX seeking, return instead of overriding the timestamp with 0 from the MPD seeking method
+	  We don't need to call the latter at all as we're definitely in this period and
+	  the segment is selected via the SIDX.
+	  This is especially important when doing SNAP seeks, as otherwise we would
+	  always start from the beginning of the period (usually 0) again.
+
+2016-08-04 11:08:30 +0100  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* ext/hls/m3u8.c:
+	  hls: m3u8: remove impossible condition
+	  After the check in line 1,111,  media->uri can't be NULL. So the two checks
+	  for GST_HLS_MEDIA_TYPE_CLOSED_CAPTIONS are the same, removing the redundant
+	  one which goes to cc_unsupported.
+	  CID 1364752
+
+2016-08-04 04:53:50 +1000  Jan Schmidt <jan@centricular.com>
+
+	* ext/hls/gsthlsdemux.c:
+	  hlsdemux: Don't output pending data after error
+	  If the last_ret status is not OK, skip output
+	  of any pending PCR scan buffer, similarly to how
+	  the pending decryption buffer is handled above.
+
+2016-08-04 04:29:38 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: On EOS, handle it before waking download loop
+	  Otherwise, if the download loop wakes too quickly, it
+	  might miss the last_ret value update from the processing
+	  thread and loop again.
+
+2016-08-04 01:51:37 +1000  Jan Schmidt <jan@centricular.com>
+
+	* ext/hls/gsthlsdemux-util.c:
+	  hlsdemux: Include config.h and add header in utils
+	  In gsthlsdemux-util.c, include config.h before any
+	  other headers, and add a copyright / license header.
+
+2016-07-13 11:02:23 +0200  Edward Hervey <edward@centricular.com>
+
+	* gst/mpegtsdemux/tsdemux.c:
+	  tsdemux: Fix draining on wrong programs
+	  When draining a program, we might send a newsegment event on the pads
+	  that are going to be removed (and then the pending data).
+	  In order to do that, calculate_and_push_newsegment() needs to know
+	  what list of streams it should take into account (instead of blindly
+	  using the current one).
+	  All callers to calculate_and_push_newsegment() and push_pending_data()
+	  can now specify the program on which to act (or NULL for the default
+	  one).
+
+2016-07-12 15:58:40 +0200  Edward Hervey <edward@centricular.com>
+
+	* gst/mpegtsdemux/tsdemux.c:
+	  tsdemux: Fix GAP synchronization without a valid PCR PID
+	  For streams that don't have a valid PCR PID, we just use the latest
+	  PTS from any given stream.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=608148
+
+2016-05-31 13:09:43 +0200  Michael Olbrich <m.olbrich@pengutronix.de>
+
+	* gst/mpegtsdemux/mpegtspacketizer.c:
+	  tsdemux: handle pcr_pid == 0x1fff
+	  Streams without PCR make senses in HLS, where the playlist timestamps
+	  can be used to seek or calculate the duration.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=608148
+
+2015-05-10 20:10:49 +0200  Arnaud Vrac <avrac@freebox.fr>
+
+	* gst/mpegtsdemux/mpegtsbase.c:
+	  mpegtsdemux: do not abort playback when no PCR were found during initial scan
+	  Seeking will not be possible in those streams but at least the can be
+	  played. Note scanning is only done when tsdemux is configured in pull mode.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=608148
+
+2015-05-09 15:52:22 +0200  Arnaud Vrac <avrac@freebox.fr>
+
+	* gst/mpegtsdemux/tsdemux.c:
+	  mpegtsdemux: only wait for PCR when PCR pid is set
+	  Streams without PCR make senses in HLS, where the playlist timestamps
+	  can be used to seek or calculate the duration.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=608148
+
+2016-08-03 04:18:18 +1000  Jan Schmidt <jan@centricular.com>
+
+	* ext/hls/gsthlsdemux.c:
+	  hls: Fix compiler warning for possibly uninit variable
+
+2016-07-28 14:22:02 +0200  Michael Olbrich <m.olbrich@pengutronix.de>
+
+	* ext/hls/gsthlsdemux.c:
+	  hlsdemux: seek all streams
+
+2016-05-25 11:23:59 +0200  Michael Olbrich <m.olbrich@pengutronix.de>
+
+	* ext/hls/gsthlsdemux.c:
+	  hlsdemux: simplify gst_hls_demux_seek()
+	  Don't initialize current_sequence. It is always overwritten in the walk
+	  loop.
+
+2016-05-24 15:23:12 +0200  Michael Olbrich <m.olbrich@pengutronix.de>
+
+	* ext/hls/gsthlsdemux.c:
+	  hlsdemux: don't download the last fragment when seeking beyond the end of the track
+	  It's not used anyways.
+
+2016-07-12 23:05:55 +1000  Jan Schmidt <jan@centricular.com>
+
+	* ext/hls/gsthlsdemux-util.c:
+	* ext/hls/gsthlsdemux.c:
+	* ext/hls/gsthlsdemux.h:
+	  hlsdemux: Add support for ID3 tag parsing
+	  Parse start PTS out of the ID3 tags in
+	  audio fragments. Informational only for now.
+
+2016-02-24 16:57:16 +1100  Jan Schmidt <jan@centricular.com>
+
+	* ext/hls/Makefile.am:
+	* ext/hls/gsthlsdemux-util.c:
+	* ext/hls/gsthlsdemux.c:
+	* ext/hls/gsthlsdemux.h:
+	  hlsdemux: Do some reading and dumping of PCRs
+	  Read PCRs out of the MPEG-TS stream in a basic way
+	  and (for now) just log them
+
+2016-03-05 03:08:55 +1100  Jan Schmidt <jan@centricular.com>
+
+	* ext/hls/gsthlsdemux.c:
+	* ext/hls/gsthlsdemux.h:
+	  hlsdemux: Only use the primary stream for bitrate selection.
+	  When playing alternate rendition auxilliary streams, ignore
+	  them in bitrate measurement (for now).
+
+2016-07-15 16:24:17 +1000  Jan Schmidt <jan@centricular.com>
+
+	* ext/hls/gsthlsdemux.c:
+	  hlsdemux: Only select video and audio streams by default
+	  Ignore subtitle streams for now, because the
+	  different fragment duration causes problems
+	  switching bitrates w/ decodebin2 group draining.
+
+2016-02-25 01:58:25 +1100  Jan Schmidt <jan@centricular.com>
+
+	* ext/hls/gsthlsdemux.c:
+	* ext/hls/gsthlsdemux.h:
+	  hlsdemux: Publish all media for alternate renditions.
+	  Create an output stream for each media when alternate renditions
+	  are present. Update the manifests for all those streams, and
+	  make sure that typefinding is still done for files smaller than 2KB
+	  such as small WebVTT files.
+
+2016-03-08 01:24:20 +1100  Jan Schmidt <jan@centricular.com>
+
+	* ext/hls/gsthlsdemux.c:
+	  hlsdemux: Adjust downstream buffer offsets
+	  When fetching a byte-region from a server resource,
+	  adjust the downstream buffer offsets so that downstream
+	  doesn't know. This is because id3demux insists on the
+	  first offset being 0. Later we might strip ID3 headers
+	  entirely and this will be unneeded.
+
+2016-03-09 03:07:22 +1100  Jan Schmidt <jan@centricular.com>
+
+	* ext/hls/gsthlsdemux.c:
+	* ext/hls/m3u8.c:
+	* ext/hls/m3u8.h:
+	  hlsdemux: Choose the default variant and track it when updating
+	  Modify playlist updating to track information across updates
+	  better, although still hackish.
+	  When connection_speed == 0, choose the default variant
+	  not the first one in the (now sorted) variant list, as that
+	  will have the lowest bitrate.
+
+2015-12-05 11:12:33 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/hls/gsthlsdemux.c:
+	* ext/hls/gsthlsdemux.h:
+	* ext/hls/m3u8.c:
+	* ext/hls/m3u8.h:
+	* tests/check/elements/hlsdemux_m3u8.c:
+	  hlsdemux: move variant list handling over to new master playlist code
+	  Adapt hlsdemux for the m3u8 playlist changes.
+
+2015-11-27 19:26:02 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/hls/gsthlsdemux.c:
+	* ext/hls/gsthlsdemux.h:
+	* ext/hls/m3u8.c:
+	* ext/hls/m3u8.h:
+	  hls: m3u8: Rework m3u8 parsing and storage.
+	  Make M3U8 and GstM3U8MediaFile refcounted. The contents
+	  of it and GstM3U8MediaFile are pretty much immutable
+	  already, but if we make it refcounted we can just
+	  return a ref to the media file from _get_next_fragment()
+	  instead of copying over all fields one-by-one, and then
+	  copying them all into the adaptive stream structure fields again.
+	  Move state from client into m3u8 structure.  This will
+	  be useful later when we'll have multiple media playlists
+	  being streamed at the same time, as will be the case with
+	  alternative renditions.
+	  This has the downside that we need to copy over some
+	  state when we switch between variant streams.
+	  The GstM3U8Client structure is gone, and main/current
+	  lists are not directly in hlsdemux. hlsdemux had as
+	  many CLIENT_LOCK/UNLOCK as the m3u8 code anyway...
+
+2016-07-27 09:28:23 +0800  Haihua Hu <jared.hu@nxp.com>
+
+	* tests/examples/qt/qmlsink/.gitignore:
+	* tests/examples/qt/qmlsink/main.cpp:
+	* tests/examples/qt/qmlsink/main.qml:
+	* tests/examples/qt/qmlsink/play.pro:
+	* tests/examples/qt/qmlsink/qml.qrc:
+	* tests/examples/qt/qmlsrc/.gitignore:
+	* tests/examples/qt/qmlsrc/grabqml.pro:
+	* tests/examples/qt/qmlsrc/main.cpp:
+	* tests/examples/qt/qmlsrc/main.qml:
+	* tests/examples/qt/qmlsrc/qml.qrc:
+	  qmlglsrc: Add qmlglsrc unit test example
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768160
+
+2016-07-27 08:16:47 +0800  Haihua Hu <jared.hu@nxp.com>
+
+	* ext/qt/Makefile.am:
+	* ext/qt/gstplugin.cc:
+	* ext/qt/gstqtglutility.cc:
+	* ext/qt/gstqtglutility.h:
+	* ext/qt/gstqtsrc.cc:
+	* ext/qt/gstqtsrc.h:
+	* ext/qt/qtitem.cc:
+	* ext/qt/qtwindow.cc:
+	* ext/qt/qtwindow.h:
+	  qt: implement qmlglsrc for qml view grab
+	  [Matthew Waters]: gst-indent sources
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768160
+
+2016-07-27 10:55:01 +0800  Haihua Hu <jared.hu@nxp.com>
+
+	* gst-libs/gst/gl/x11/gstglwindow_x11.c:
+	  glwindow: Fix glimagesink cannot show frame when connect to qmlglsrc
+	  When connect to qmlglsrc, x11 event loop will be replace by qt event loop
+	  which will cause the window cannot receive event from xserver, such as resize
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768160
+
+2016-08-02 17:21:20 +0900  Hyunjun Ko <zzoon@igalia.com>
+
+	* gst-libs/gst/gl/gstglupload.c:
+	  glupload: Use bufferpool to allocate new buffer in GLTextureUploadMeta
+	  To improve performace of upload with GLTextureUploadMeta,
+	  use bufferpool instead of allocating new buffer every time.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=769293
+
+2016-07-27 14:48:50 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglwindow.c:
+	  glwindow: move unsetting queue_resize to _resize() instead of _draw()
+	  Makes infinitely more sense and implementation were expecting that behaviour
+	  anyway and would enter a resize, draw, resize, draw, ... cycle instead of only
+	  resizing once.
+
+2016-08-03 09:14:07 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: Never ever hold the manifest lock while changing the source element state
+	  Otherwise we will deadlock in various situations that take the manifest lock
+	  from the streaming thread or when shutting down or ...
+
+2016-08-02 17:07:37 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/elements/aiffparse.c:
+	  aiffparse: In PUSH mode we will never get the ID3 tags as they are at the end of the file
+	  This previously did not fail as before we didn't get any tags at all in PUSH
+	  mode, now we get the bitrates.
+
+2016-08-02 13:48:43 +0200  Carlos Rafael Giani <dv@pseudoterminal.org>
+
+	* gst/aiff/Makefile.am:
+	* gst/aiff/aiffparse.c:
+	  aiffparse: Add tags for container format and bitrate
+	  The bitrate is added to help downstream elements (like uridecodebin)
+	  figure out a proper network buffer size
+	  https://bugzilla.gnome.org/show_bug.cgi?id=769389
+
+2016-01-20 16:42:24 +0000  Alex Ashley <bugzilla@ashley-family.net>
+
+	* tests/check/elements/dash_mpd.c:
+	  tests: dashdemux: add test for gst_mpd_client_get_maximum_segment_duration
+	  Add a test of the gst_mpd_client_get_maximum_segment_duration() function
+	  to check that it first checks the MPD@maxSegmentDuration and then falls
+	  back to checking all of the segment durations.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=753751
+
+2016-02-24 15:54:54 +0000  Alex Ashley <bugzilla@ashley-family.net>
+
+	* ext/dash/gstdashdemux.c:
+	* ext/dash/gstmpdparser.c:
+	* ext/dash/gstmpdparser.h:
+	  dashdemux: include segment duration when calculating seek range
+	  The gst_dash_demux_get_live_seek_range () function returns a stop value
+	  that is beyond the available range. The functions
+	  gst_mpd_client_check_time_position() and
+	  gst_mpd_client_get_next_segment_availability_end_time() in
+	  gstmpdparser.c include the segment duration when checking if a segment
+	  is available. The gst_dash_demux_get_live_seek_range() function
+	  in gstdashdemux.c ignores the segment duration.
+	  According to the DASH specification, if maxSegmentDuration is not present,
+	  then the maximum Segment duration is the maximum duration of any Segment
+	  documented in the MPD.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=753751
+
+2016-02-24 15:52:41 +0000  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.h:
+	  adaptivedemux: retry once on 4xx/5xx in certain conditions
+	  This helps catch those 404 server errors in live streams when
+	  seeking to the very beginning, as the server will handle a
+	  request with some delay, which can cause it to drop the fragment
+	  before sending it.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=753751
+
+2016-02-24 15:47:09 +0000  Alex Ashley <bugzilla@ashley-family.net>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: expose HTTP status
+	  To allow adaptivedemux to make retry decisions, it needs to know what
+	  sort of HTTP error has occurred. For example, the retry logic for a
+	  410 error is different from a 504 error.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=753751
+
+2016-03-07 17:04:33 +0000  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: allow seeking before start in live streams
+	  Some derived classes (at least dashdemux) expose a seeking range
+	  based on wall clock. This means that a subsequent seek to the start
+	  of this range will be before the allowed range.
+	  To solve this, seeks without the ACCURATE flag are allowed to seek
+	  before the start for live streams, in which case the segment is
+	  shifted to start at the start of the new seek range. If there is
+	  an end position, is is shifted too, to keep the duration constant.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=753751
+
+2016-08-01 14:12:35 +0800  Haihua Hu <jared.hu@nxp.com>
+
+	* ext/gl/gstglimagesink.c:
+	  glimagesink: Fix horizontal/vertical flip matrizes
+	  They were swapped.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=769371
+
+2016-07-29 16:32:22 +0300  Sreerenj Balachandran <sreerenj.balachandran@intel.com>
+
+	* gst/videoparsers/gsth264parse.c:
+	  videoparsers: h264: Add more scalable profiles to the profile list
+	  Adding Scalable Constrained High (G.10.1.2.1) and
+	  Scalable High Intra(G.10.1.3) profiles to the profile list
+	  https://bugzilla.gnome.org/show_bug.cgi?id=769303
+
+2016-08-01 10:30:29 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/androidmedia/gst-android-hardware-camera.c:
+	* sys/androidmedia/gst-android-hardware-sensor.c:
+	* sys/androidmedia/gstahssrc.c:
+	  androidmedia: Run gst-indent over everything once again
+
+2016-08-01 10:28:26 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/androidmedia/gstamc.c:
+	  amc: If we find multiple codecs with the same name, just merge them
+	  On the ODroid C1+ the H265 and H264 have the same name but are listed as two
+	  different codecs. We have to handle them as the same one that supports both,
+	  as otherwise we will register the same GType name twice which fails and we
+	  then only have H265 support and not H264 support.
+
+2016-08-01 10:15:04 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/androidmedia/gstamc.c:
+	  amc: Use a GQueue for O(1) append instead of a GList
+
+2016-07-29 12:31:38 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: Also call reset() in READY->PAUSED
+	  This allows subclasses to have initialization code in a single place.
+
+2016-07-29 10:49:26 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/rawparse/gstrawaudioparse.c:
+	  rawaudioparse: Use G_GINT64_MODIFIER for portability
+	  https://bugzilla.gnome.org/show_bug.cgi?id=769295
+
+2016-07-29 10:07:23 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/rawparse/gstunalignedaudioparse.c:
+	  unalignedaudioparse: Fix element factory name of inner parser
+
+2016-07-29 08:54:00 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/androidmedia/gstamc.c:
+	  amc: Print generated raw/encoded caps in debug logs
+
+2016-07-28 11:27:29 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	* ext/dash/gstdashdemux.h:
+	  dashdemux: Skip audio streams if TRICKMODE_NO_AUDIO is given in the seek event
+	  We just don't expose pads for audio streams, or even download them.
+
+2016-07-28 11:16:24 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	  dashdemux: Reset number of subtitle streams counter on reset() too
+	  Otherwise we will continue increasing forever the number of subtitle streams
+	  when reusing the element for another DASH manifest.
+
+2016-07-26 17:01:55 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* tests/check/pipelines/simple-launch-lines.c:
+	  tests: fix simple-launch-lines when jpeg lib isn't present
+	  JPEG detection in configure.ac defines HAVE_JPEG to 0 if the
+	  jpeg lib isn't found, rather then not defining it.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=769197
+
+2016-07-25 17:55:24 +0200  Carlos Rafael Giani <dv@pseudoterminal.org>
+
+	* docs/plugins/gst-plugins-bad-plugins-docs.sgml:
+	* docs/plugins/gst-plugins-bad-plugins-sections.txt:
+	* docs/plugins/inspect/plugin-rawparse.xml:
+	  docs: Update rawparser documentation
+	  Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org>
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767011
+
+2016-07-25 17:54:09 +0200  Carlos Rafael Giani <dv@pseudoterminal.org>
+
+	* gst/rawparse/Makefile.am:
+	* gst/rawparse/gstaudioparse.c:
+	* gst/rawparse/gstaudioparse.h:
+	* gst/rawparse/gstrawparse.c:
+	* gst/rawparse/gstrawparse.h:
+	* gst/rawparse/gstvideoparse.c:
+	* gst/rawparse/gstvideoparse.h:
+	  rawparse: Remove old parser code and wrap new parsers in old elements
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767011
+
+2016-07-25 13:45:40 +0200  Carlos Rafael Giani <dv@pseudoterminal.org>
+
+	* gst/rawparse/Makefile.am:
+	* gst/rawparse/gstrawaudioparse.c:
+	* gst/rawparse/gstrawaudioparse.h:
+	* gst/rawparse/gstrawbaseparse.c:
+	* gst/rawparse/gstrawbaseparse.h:
+	* gst/rawparse/gstrawvideoparse.c:
+	* gst/rawparse/gstrawvideoparse.h:
+	* gst/rawparse/gstunalignedaudioparse.c:
+	* gst/rawparse/gstunalignedvideoparse.c:
+	* gst/rawparse/gstunalignedvideoparse.h:
+	* gst/rawparse/plugin.c:
+	* gst/rawparse/unalignedvideo.h:
+	* tests/check/Makefile.am:
+	* tests/check/elements/.gitignore:
+	* tests/check/elements/rawaudioparse.c:
+	* tests/check/elements/rawvideoparse.c:
+	  rawparse: Add new raw audio and video parser elements
+	  The new rawaudioparse and rawvideoparse elements are based on GstBaseParse
+	  and completely replace audioparse and videoparse
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767011
+
+2016-07-26 16:01:19 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/caopengllayersink.h:
+	* ext/gl/caopengllayersink.m:
+	  caopengllayersink: remove unused to_quit variable
+	  It was always 0 and never set to anything meaningful.
+
+2016-07-26 15:57:54 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglframebuffer.c:
+	  glframebuffer: add compatibility definition for GL_DEPTH_STENCIL_ATTACHMENT
+	  GLES2 doesn't have it defined...
+
+2016-07-15 13:39:54 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/effects/gstgleffectblur.c:
+	* ext/gl/effects/gstgleffectbulge.c:
+	* ext/gl/effects/gstgleffectfisheye.c:
+	* ext/gl/effects/gstgleffectglow.c:
+	* ext/gl/effects/gstgleffectidentity.c:
+	* ext/gl/effects/gstgleffectlaplacian.c:
+	* ext/gl/effects/gstgleffectlumatocurve.c:
+	* ext/gl/effects/gstgleffectlumatocurve.h:
+	* ext/gl/effects/gstgleffectmirror.c:
+	* ext/gl/effects/gstgleffectrgbtocurve.c:
+	* ext/gl/effects/gstgleffectsin.c:
+	* ext/gl/effects/gstgleffectsobel.c:
+	* ext/gl/effects/gstgleffectsquare.c:
+	* ext/gl/effects/gstgleffectsqueeze.c:
+	* ext/gl/effects/gstgleffectstretch.c:
+	* ext/gl/effects/gstgleffecttunnel.c:
+	* ext/gl/effects/gstgleffecttwirl.c:
+	* ext/gl/effects/gstgleffectxray.c:
+	* ext/gl/gstglcolorbalance.c:
+	* ext/gl/gstglcolorscale.c:
+	* ext/gl/gstgldeinterlace.c:
+	* ext/gl/gstgldeinterlace.h:
+	* ext/gl/gstgldifferencematte.c:
+	* ext/gl/gstglfilterapp.c:
+	* ext/gl/gstglfiltershader.c:
+	* ext/gl/gstgloverlay.c:
+	* gst-libs/gst/gl/gstglfilter.c:
+	* gst-libs/gst/gl/gstglfilter.h:
+	* gst-libs/gst/gl/gstglpixelformat.c:
+	* gst-libs/gst/gl/gstglutils.h:
+	  glfilter: rewrite subclasses for filter_texture() occuring on GL thread
+	  There's no need for the jump to an extra thread in most cases, especially
+	  when relying solely on a shader to render.  We can use the provided
+	  render_to_target() functions to simplify filter writing.
+
+2016-07-12 15:34:24 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglutils.h:
+	  glutils: remove unused GstGLDisplayProjection
+
+2016-07-12 15:29:29 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglimagesink.c:
+	* gst-libs/gst/gl/gstglcolorconvert.c:
+	* gst-libs/gst/gl/gstglmemorypbo.c:
+	* gst-libs/gst/gl/gstglutils.c:
+	* gst-libs/gst/gl/gstglutils.h:
+	* gst-libs/gst/gl/gstglviewconvert.c:
+	* tests/check/libs/gstglmemory.c:
+	* tests/check/libs/gstglupload.c:
+	  glcontext: remove not thread-safe get/set_error()
+	  Use GError's instead if necessary.
+
+2016-07-12 12:59:57 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglfilterapp.c:
+	* ext/gl/gstglfilterapp.h:
+	* ext/gl/gstglfiltercube.c:
+	* ext/gl/gstglfilterglass.c:
+	* ext/gl/gstglmixer.c:
+	* ext/gl/gstglmixer.h:
+	* ext/gl/gstglmosaic.c:
+	* ext/gl/gstgltestsrc.c:
+	* ext/gl/gstgltestsrc.h:
+	* ext/gl/gstgltransformation.c:
+	* ext/gl/gstglvideomixer.c:
+	* ext/gl/gstglvideomixer.h:
+	* gst-libs/gst/gl/gstgl_fwd.h:
+	* gst-libs/gst/gl/gstglcolorconvert.c:
+	* gst-libs/gst/gl/gstglcolorconvert.h:
+	* gst-libs/gst/gl/gstglfilter.c:
+	* gst-libs/gst/gl/gstglfilter.h:
+	* gst-libs/gst/gl/gstglframebuffer.c:
+	* gst-libs/gst/gl/gstglframebuffer.h:
+	* gst-libs/gst/gl/gstglutils.c:
+	* gst-libs/gst/gl/gstglutils.h:
+	* gst-libs/gst/gl/gstglviewconvert.c:
+	* gst-libs/gst/gl/gstglviewconvert.h:
+	* tests/check/libs/gstglcontext.c:
+	  glframebuffer: rewrite for a more consistent API
+	  Facilities are given to create fbo's and attach GL memory (renderbuffers
+	  or textures).  It also keeps track of the renderable size for use with
+	  effective use with glViewport().
+
+2016-07-12 00:30:22 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglcolorbalance.c:
+	* ext/gl/gstglcolorscale.c:
+	* ext/gl/gstgldeinterlace.c:
+	* ext/gl/gstgldifferencematte.c:
+	* ext/gl/gstgldifferencematte.h:
+	* ext/gl/gstgleffects.c:
+	* ext/gl/gstgleffects.h:
+	* ext/gl/gstglfilterapp.c:
+	* ext/gl/gstglfiltercube.c:
+	* ext/gl/gstglfiltercube.h:
+	* ext/gl/gstglfilterglass.c:
+	* ext/gl/gstglfilterglass.h:
+	* ext/gl/gstglfiltershader.c:
+	* ext/gl/gstglmixer.c:
+	* ext/gl/gstglmixer.h:
+	* ext/gl/gstglmosaic.c:
+	* ext/gl/gstglmosaic.h:
+	* ext/gl/gstgloverlay.c:
+	* ext/gl/gstgltransformation.c:
+	* ext/gl/gstgltransformation.h:
+	* ext/gl/gstglvideomixer.c:
+	* gst-libs/gst/gl/gstglfilter.c:
+	* gst-libs/gst/gl/gstglfilter.h:
+	  gl: use GLMemory for accessing textures everywhere
+	  This simplifies and consolidates a lot of duplicated code creating
+	  and modifying textures.
+
+2016-07-11 22:44:16 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/effects/gstgleffectblur.c:
+	* ext/gl/effects/gstgleffectbulge.c:
+	* ext/gl/effects/gstgleffectfisheye.c:
+	* ext/gl/effects/gstgleffectglow.c:
+	* ext/gl/effects/gstgleffectidentity.c:
+	* ext/gl/effects/gstgleffectlaplacian.c:
+	* ext/gl/effects/gstgleffectlumatocurve.c:
+	* ext/gl/effects/gstgleffectmirror.c:
+	* ext/gl/effects/gstgleffectrgbtocurve.c:
+	* ext/gl/effects/gstgleffectsin.c:
+	* ext/gl/effects/gstgleffectsobel.c:
+	* ext/gl/effects/gstgleffectsquare.c:
+	* ext/gl/effects/gstgleffectsqueeze.c:
+	* ext/gl/effects/gstgleffectstretch.c:
+	* ext/gl/effects/gstgleffecttunnel.c:
+	* ext/gl/effects/gstgleffecttwirl.c:
+	* ext/gl/effects/gstgleffectxray.c:
+	* ext/gl/gstglcolorbalance.c:
+	* ext/gl/gstgldeinterlace.c:
+	* ext/gl/gstgldifferencematte.c:
+	* ext/gl/gstglfiltershader.c:
+	* gst-libs/gst/gl/gstglfilter.c:
+	* gst-libs/gst/gl/gstglfilter.h:
+	  glfilter: rename draw_texture to draw_fullscreen_quad
+	  And remove unused arguments.
+
+2016-07-11 22:31:04 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/Makefile.am:
+	* gst-libs/gst/gl/gl.h:
+	* gst-libs/gst/gl/gstgl_fwd.h:
+	* gst-libs/gst/gl/gstgldisplay.c:
+	* gst-libs/gst/gl/gstglrenderbuffer.c:
+	* gst-libs/gst/gl/gstglrenderbuffer.h:
+	  gl: add memory type for renderbuffer's
+	  Soon to be used for framebuffers for e.g. depth buffers or throwaway color
+	  buffers.
+
+2016-07-11 22:28:42 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglformat.c:
+	* gst-libs/gst/gl/gstglformat.h:
+	  glformat: define our own set of formats from the GL defines
+	  also add some depth/stencil formats
+
+2016-07-11 22:24:43 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstgleffects.c:
+	  gleffects: fix xray to use the correct function
+	  Instead of duplicating the sin effect
+
+2016-07-11 21:29:10 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglbasememory.c:
+	* gst-libs/gst/gl/gstglbasememory.h:
+	  glbasememory: assert for a valid allocator instead of segfaulting
+
+2016-04-29 14:42:34 +0200  Michael Olbrich <m.olbrich@pengutronix.de>
+
+	* gst/mpegtsdemux/gstmpegdefs.h:
+	* gst/mpegtsdemux/tsdemux.c:
+	  tsdemux: add support for LPCM with stream_type = 0x83
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765807
+
+2016-07-25 13:06:46 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/player/gstplayer.c:
+	* gst-libs/gst/player/gstplayer.h:
+	  player: Add some 'const' to config getters
+
+2016-07-25 13:06:36 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/player/gstplayer.c:
+	  player: G-I annotation fixes
+
+2016-07-25 10:30:26 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* docs/libs/gst-plugins-bad-libs-sections.txt:
+	* gst-libs/gst/player/gstplayer.c:
+	* gst-libs/gst/player/gstplayer.h:
+	* tests/check/libs/player.c:
+	* win32/common/libgstplayer.def:
+	  player: move 'position-update-interval' setting to the config struct
+	  https://bugzilla.gnome.org/show_bug.cgi?id=769144
+
+2016-07-19 14:36:25 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* docs/libs/gst-plugins-bad-libs-sections.txt:
+	* gst-libs/gst/player/gstplayer.c:
+	* gst-libs/gst/player/gstplayer.h:
+	* tests/check/libs/player.c:
+	* win32/common/libgstplayer.def:
+	  player: add API to change http user agent
+	  Introducing a new 'config' API similar to GstBufferPoolConfig.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765314
+
+2016-07-25 10:54:32 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* common:
+	  Update common submodule
+	  For 'make update-exports' changes
+
+2016-07-22 17:00:14 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/examples/qt/qml/main.cpp:
+	  qml: Don't forget to unref the actual sink element after setting it on glsinkbin
+
+2016-07-22 16:57:45 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/examples/qt/qml/main.cpp:
+	  qml: Use glsinkbin instead of glupload directly
+
+2016-07-18 18:36:42 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/openh264/gstopenh264dec.cpp:
+	* ext/openh264/gstopenh264enc.cpp:
+	* ext/openh264/gstopenh264enc.h:
+	  openh264: fix up for API changes in v1.6.0
+	  Update for API changes in v1.6.0.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768771
+
+2016-07-18 17:43:23 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst-libs/gst/gl/wayland/gstgldisplay_wayland.c:
+	* gst-libs/gst/gl/wayland/gstglwindow_wayland_egl.h:
+	  gl: wayland: improve debug message when connecting to display
+	  And another copy'n'paste-o.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768929
+
+2016-07-19 02:11:54 +1000  Jan Schmidt <jan@centricular.com>
+
+	* ext/hls/gsthlsdemux.c:
+	  hlsdemux: Fix clearing of decryption state
+	  Don't clear decryption state immediately after
+	  initialising it in the start_fragment. Don't clear
+	  the state of all streams when we want to only clear
+	  the current stream.
+	  https://bugzilla.gnome.org//show_bug.cgi?id=768757
+
+2016-07-15 10:31:35 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tests/check/elements/adaptive_demux_common.c:
+	* tests/check/elements/adaptive_demux_engine.c:
+	* tests/check/elements/audiomixer.c:
+	* tests/check/elements/autovideoconvert.c:
+	* tests/check/elements/camerabin.c:
+	  tests: fix bus leak
+	  gst_bus_remove_signal_watch() has to be called to release the ref
+	  taken by gst_bus_add_signal_watch().
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768843
+
+2016-07-15 11:48:25 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst-libs/gst/basecamerabinsrc/gstcamerabinpreview.c:
+	  camerabinpreview: fix bus leak
+	  We were never removing the watch introduced in
+	  gst_camerabin_create_preview_pipeline() so its extra ref on the bus was
+	  never released.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768838
+
+2016-07-13 23:02:10 +1000  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/hls/gsthlsdemux.c:
+	* ext/hls/gsthlsdemux.h:
+	  hlsdemux: make decryption key handling per-stream
+	  Add demuxer instance-wide decryption key cache. The current and
+	  last key url are per-stream, so make a shared cache. Move the
+	  decryption handling into the stream object, and use the shared
+	  cache for the keys.
+
+2016-07-13 23:02:10 +1000  Jan Schmidt <jan@centricular.com>
+
+	* ext/hls/gsthlsdemux.c:
+	* ext/hls/gsthlsdemux.h:
+	  hlsdemux: add hlsdemux-specific AdaptiveDemuxStream subclass
+	  Prepare hlsdemux for more than one single stream. Currently hlsdemux
+	  assumes there'll only ever be one stream and most of the stream-specific
+	  state is actually in the hlsdemux structure. Add a stream subclass
+	  instead and move some stream-specific members there instead.
+
+2016-07-13 23:02:10 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.h:
+	  adaptivedemux: Add more safeguards around state changes.
+	  Make state changes of internal elements more reliable by locking
+	  their state, and ensuring that they aren't blocked pushing data
+	  downstream before trying to set their state.
+	  Add a boolean to avoid starting tasks when the main
+	  thread is busy trying to shut the element down.
+
+2016-07-13 23:02:10 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: Add debug code to change bitrate.
+	  Add some disabled-by-default debugging code that forces
+	  bitrate changes by modulating the measured bitrate every
+	  few fragments
+
+2016-07-13 23:02:10 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: More locking/switching fixes
+	  Try harder to make switching pads work better by
+	  making sure concurrent downloads are finished before exposing
+	  a new set of pads.
+	  Release the manifest lock when signalling no-more-pads, as
+	  that can call back into adaptivedemux again
+
+2016-07-13 23:02:10 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: Don't switch streams and expose pads while downloading.
+	  If other stream fragments are still downloading but new streams
+	  have been scheduled, don't expose them yet - wait until the last
+	  one finishes. Otherwise, we can cancel a partially downloaded
+	  auxilliary stream and cause a gap.
+
+2016-07-13 23:02:10 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: Drop the manifest lock during outbound actions
+	  Drop the manifest lock when performing actions that might
+	  call back into adaptivedemux and trigger deadlocks, such
+	  as adding/removing pads or sending in-band events (EOS).
+	  Unlock the manifest lock when changing the child bin state to
+	  NULL, as it might call back to acquire the manifest lock when
+	  shutting down pads.
+	  Drop the manifest lock while pushing events.
+
+2016-07-12 14:51:47 -0700  Martin Kelly <martin@surround.io>
+
+	* sys/androidmedia/Makefile.am:
+	* sys/androidmedia/gst-android-hardware-sensor.c:
+	* sys/androidmedia/gst-android-hardware-sensor.h:
+	* sys/androidmedia/gstahssrc.c:
+	* sys/androidmedia/gstahssrc.h:
+	* sys/androidmedia/gstamc.c:
+	* sys/androidmedia/gstsensors.h:
+	* sys/androidmedia/org/freedesktop/gstreamer/androidmedia/GstAhsCallback.java:
+	  new plugin: Android hardware sensor source
+	  ahssrc is a new plugin that enables Gstreamer to read from the
+	  android.hardware.Sensor Android sensors. These sensors are treated as
+	  buffers and can be passed through and manipulated by the pipeline.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768110
+
+2016-07-14 19:38:26 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* ext/lv2/gstlv2utils.c:
+	  lv2: make it build with older lilv
+	  Implementing the removal of presets is unfortunately not feasibla with
+	  versions < 0.22.
+	  Fixes #768595
+
+2016-07-13 23:00:51 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* ext/webrtcdsp/gstwebrtcdsp.cpp:
+	* ext/webrtcdsp/gstwebrtcechoprobe.cpp:
+	  webrtcdsp: Add delay-agnostic property
+	  In this mode, we let WebRTC Audio Processing figure-out the delay. This
+	  is useful when the latency reported by the stack cannot be trusted. Note
+	  that in this mode, the leaking of echo during packet lost is much worst.
+	  It is recommanded to use PLC (e.g. spanplc, or opus built-in plc).
+	  In this mode, we don't do any synchronization. Instead, we simply process all
+	  the available reverse stream data as it comes.
+
+2016-07-12 00:02:53 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/videoparsers/gstjpeg2000parse.c:
+	  jpeg2000parse: Use correct enum type
+	  GST_JPEG2000_SAMPLING_RGB instead of GST_JPEG2000_COLORSPACE_RGB
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768696
+
+2016-07-11 21:13:58 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* common:
+	  Automatic update of common submodule
+	  From f363b32 to f49c55e
+
+2016-07-11 11:58:12 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/kms/gstkmsallocator.c:
+	* sys/kms/gstkmsallocator.h:
+	* sys/kms/gstkmssink.c:
+	  kmssink: Fix offsets handling
+	  The calculation of the offset table was done base on a plane size
+	  estimation. This does not always work. Instead, use memory offset the
+	  same we as it's implement in GstVideoMeta map functions.
+
+2016-07-11 19:21:11 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* gst-libs/gst/video/gstvideoaggregator.c:
+	* gst/siren/gstsirendec.c:
+	  Fix various gboolean vs GstFlowReturn problems
+	  Caught by building with MSVC which gave warnings for these
+
+2016-07-08 19:03:06 +1000  Matthew Waters <matthew@centricular.com>
+
+	* configure.ac:
+	  gl/build: fix configure when --enable-cocoa is passed on OS X
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768553
+
+2016-07-10 20:43:17 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* ext/lv2/README:
+	  lv2: planning update
+
+2016-07-10 20:42:42 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* configure.ac:
+	* ext/lv2/gstlv2utils.c:
+	  lv2: keep working with older versions
+	  Provide a fallback impl. for the only new function we were using from 0.22.
+	  Fixes #768595
+
+2016-07-08 14:42:18 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/camerabin2/gstcamerabin2.c:
+	  camerabin: update docs section
+
+2016-07-07 13:22:02 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* configure.ac:
+	  configure.ac: Cleanup unused variable
+	  We only check for a header, no need for overriding LDFLAGS.
+
+2016-07-07 17:24:32 +0100  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* gst/gaudieffects/gstgaussblur.h:
+	  gaudi: fix documentation warning in GstGaussianBlur
+	  Fixing the following warning when generating documentation:
+	  xml/element-gaussianblur.xml:72: element refsect2: validity error :
+	  ID GstGaussianBlur already defined
+	  <refsect2 id="GstGaussianBlur" role="typedef">
+	  ^
+	  Warning: multiple "IDs" for constraint linkend: GstGaussianBlur.
+	  DOC   Fixing cross-references
+
+2016-07-07 17:16:47 +0100  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* gst/gaudieffects/gstchromium.h:
+	  gaudi: fix documentation warning in GstChromium
+	  Fixing the following warning when generating documentation:
+	  xml/element-chromium.xml:74: element refsect2: validity error :
+	  ID GstChromium already defined
+	  <refsect2 id="GstChromium" role="typedef">
+	  ^
+	  Warning: multiple "IDs" for constraint linkend: GstChromium.
+	  DOC   Fixing cross-references
+
+2016-07-07 12:31:20 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* configure.ac:
+	  webrtcdsp: Relax C++11 check
+	  The library does not require any STL C++11 specific headers.
+	  This fixes our OSX build as we target a SDK version that does not
+	  support C++11 STL.
+
+2016-07-07 12:31:03 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* configure.ac:
+	  webrtcdsp: Add Android GNUSTL support
+
+2016-07-07 12:20:45 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* configure.ac:
+	  webrtcdsp: Set USE_WEBRTCDSP when disabled
+
+2016-07-07 17:20:58 +0200  Edward Hervey <edward@centricular.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: Also consider more seek flags as "snap" seeks
+	  In the case of KEY_UNIT and TRICKMODE_KEY_UNITS seeks, we want to
+	  "snap" to the closest fragment.
+	  Without this, we end up pushing out a segment which does not match
+	  the first fragment timestamp being pushed out, resulting in one or
+	  more buffers being eventually dropped because they are out of segment.
+
+2016-07-06 14:29:04 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* configure.ac:
+	  webrtcdsp: Also allow webrtc-audio-processing 0.3
+	  It seems to work and is the version available in Debian.
+
+2016-07-06 12:12:41 +0100  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* ext/musepack/gstmusepackdec.c:
+	  musepackdeck: unsigned can't be less than zero
+	  Less-than-zero comparison of an unsigned value, guint64, is never true
+	  CID 1363334
+
+2016-07-06 13:51:06 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* configure.ac:
+	  Back to development
+
+=== release 1.9.1 ===
+
+2016-07-06 13:07:21 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ChangeLog:
+	* NEWS:
+	* RELEASE:
+	* configure.ac:
+	* docs/plugins/gst-plugins-bad-plugins.args:
+	* docs/plugins/gst-plugins-bad-plugins.hierarchy:
+	* docs/plugins/inspect/plugin-accurip.xml:
+	* docs/plugins/inspect/plugin-adpcmdec.xml:
+	* docs/plugins/inspect/plugin-adpcmenc.xml:
+	* docs/plugins/inspect/plugin-aiff.xml:
+	* docs/plugins/inspect/plugin-asfmux.xml:
+	* docs/plugins/inspect/plugin-assrender.xml:
+	* docs/plugins/inspect/plugin-audiofxbad.xml:
+	* docs/plugins/inspect/plugin-audiomixer.xml:
+	* docs/plugins/inspect/plugin-audiovisualizers.xml:
+	* docs/plugins/inspect/plugin-autoconvert.xml:
+	* docs/plugins/inspect/plugin-bayer.xml:
+	* docs/plugins/inspect/plugin-bluez.xml:
+	* docs/plugins/inspect/plugin-bs2b.xml:
+	* docs/plugins/inspect/plugin-bz2.xml:
+	* docs/plugins/inspect/plugin-camerabin.xml:
+	* docs/plugins/inspect/plugin-chromaprint.xml:
+	* docs/plugins/inspect/plugin-coloreffects.xml:
+	* docs/plugins/inspect/plugin-compositor.xml:
+	* docs/plugins/inspect/plugin-curl.xml:
+	* docs/plugins/inspect/plugin-dashdemux.xml:
+	* docs/plugins/inspect/plugin-dataurisrc.xml:
+	* docs/plugins/inspect/plugin-debugutilsbad.xml:
+	* docs/plugins/inspect/plugin-decklink.xml:
+	* docs/plugins/inspect/plugin-dtls.xml:
+	* docs/plugins/inspect/plugin-dtsdec.xml:
+	* docs/plugins/inspect/plugin-dvb.xml:
+	* docs/plugins/inspect/plugin-dvbsuboverlay.xml:
+	* docs/plugins/inspect/plugin-dvdspu.xml:
+	* docs/plugins/inspect/plugin-faac.xml:
+	* docs/plugins/inspect/plugin-faad.xml:
+	* docs/plugins/inspect/plugin-fbdevsink.xml:
+	* docs/plugins/inspect/plugin-festival.xml:
+	* docs/plugins/inspect/plugin-fieldanalysis.xml:
+	* docs/plugins/inspect/plugin-flite.xml:
+	* docs/plugins/inspect/plugin-fluidsynthmidi.xml:
+	* docs/plugins/inspect/plugin-freeverb.xml:
+	* docs/plugins/inspect/plugin-frei0r.xml:
+	* docs/plugins/inspect/plugin-gaudieffects.xml:
+	* docs/plugins/inspect/plugin-gdp.xml:
+	* docs/plugins/inspect/plugin-geometrictransform.xml:
+	* docs/plugins/inspect/plugin-gmedec.xml:
+	* docs/plugins/inspect/plugin-gsm.xml:
+	* docs/plugins/inspect/plugin-gstgtk.xml:
+	* docs/plugins/inspect/plugin-gstsiren.xml:
+	* docs/plugins/inspect/plugin-hls.xml:
+	* docs/plugins/inspect/plugin-id3tag.xml:
+	* docs/plugins/inspect/plugin-inter.xml:
+	* docs/plugins/inspect/plugin-interlace.xml:
+	* docs/plugins/inspect/plugin-ivfparse.xml:
+	* docs/plugins/inspect/plugin-ivtc.xml:
+	* docs/plugins/inspect/plugin-jp2kdecimator.xml:
+	* docs/plugins/inspect/plugin-jpegformat.xml:
+	* docs/plugins/inspect/plugin-kate.xml:
+	* docs/plugins/inspect/plugin-ladspa.xml:
+	* docs/plugins/inspect/plugin-midi.xml:
+	* docs/plugins/inspect/plugin-mimic.xml:
+	* docs/plugins/inspect/plugin-mms.xml:
+	* docs/plugins/inspect/plugin-modplug.xml:
+	* docs/plugins/inspect/plugin-mpeg2enc.xml:
+	* docs/plugins/inspect/plugin-mpegpsdemux.xml:
+	* docs/plugins/inspect/plugin-mpegpsmux.xml:
+	* docs/plugins/inspect/plugin-mpegtsdemux.xml:
+	* docs/plugins/inspect/plugin-mpegtsmux.xml:
+	* docs/plugins/inspect/plugin-mplex.xml:
+	* docs/plugins/inspect/plugin-mxf.xml:
+	* docs/plugins/inspect/plugin-netsim.xml:
+	* docs/plugins/inspect/plugin-ofa.xml:
+	* docs/plugins/inspect/plugin-openal.xml:
+	* docs/plugins/inspect/plugin-opencv.xml:
+	* docs/plugins/inspect/plugin-openexr.xml:
+	* docs/plugins/inspect/plugin-opengl.xml:
+	* docs/plugins/inspect/plugin-openjpeg.xml:
+	* docs/plugins/inspect/plugin-opusparse.xml:
+	* docs/plugins/inspect/plugin-pcapparse.xml:
+	* docs/plugins/inspect/plugin-pnm.xml:
+	* docs/plugins/inspect/plugin-qt.xml:
+	* docs/plugins/inspect/plugin-rawparse.xml:
+	* docs/plugins/inspect/plugin-removesilence.xml:
+	* docs/plugins/inspect/plugin-resindvd.xml:
+	* docs/plugins/inspect/plugin-rfbsrc.xml:
+	* docs/plugins/inspect/plugin-rsvg.xml:
+	* docs/plugins/inspect/plugin-rtmp.xml:
+	* docs/plugins/inspect/plugin-rtponvif.xml:
+	* docs/plugins/inspect/plugin-schro.xml:
+	* docs/plugins/inspect/plugin-sdp.xml:
+	* docs/plugins/inspect/plugin-segmentclip.xml:
+	* docs/plugins/inspect/plugin-shm.xml:
+	* docs/plugins/inspect/plugin-smooth.xml:
+	* docs/plugins/inspect/plugin-smoothstreaming.xml:
+	* docs/plugins/inspect/plugin-sndfile.xml:
+	* docs/plugins/inspect/plugin-soundtouch.xml:
+	* docs/plugins/inspect/plugin-spandsp.xml:
+	* docs/plugins/inspect/plugin-speed.xml:
+	* docs/plugins/inspect/plugin-srtp.xml:
+	* docs/plugins/inspect/plugin-stereo.xml:
+	* docs/plugins/inspect/plugin-subenc.xml:
+	* docs/plugins/inspect/plugin-teletext.xml:
+	* docs/plugins/inspect/plugin-uvch264.xml:
+	* docs/plugins/inspect/plugin-vcdsrc.xml:
+	* docs/plugins/inspect/plugin-videofiltersbad.xml:
+	* docs/plugins/inspect/plugin-videoframe_audiolevel.xml:
+	* docs/plugins/inspect/plugin-videoparsersbad.xml:
+	* docs/plugins/inspect/plugin-videosignal.xml:
+	* docs/plugins/inspect/plugin-vmnc.xml:
+	* docs/plugins/inspect/plugin-voaacenc.xml:
+	* docs/plugins/inspect/plugin-voamrwbenc.xml:
+	* docs/plugins/inspect/plugin-waylandsink.xml:
+	* docs/plugins/inspect/plugin-webp.xml:
+	* docs/plugins/inspect/plugin-wildmidi.xml:
+	* docs/plugins/inspect/plugin-x265.xml:
+	* docs/plugins/inspect/plugin-y4mdec.xml:
+	* docs/plugins/inspect/plugin-yadif.xml:
+	* docs/plugins/inspect/plugin-zbar.xml:
+	* gst-plugins-bad.doap:
+	* win32/common/config.h:
+	  Release 1.9.1
+
+2016-07-06 11:52:11 +0300  Sebastian Dröge <sebastian@centricular.com>
 
 	* po/af.po:
 	* po/az.po:
@@ -49,98 +3130,111 @@
 	* po/zh_CN.po:
 	  Update .po files
 
-2016-08-16 18:46:49 +0300  Sergei Saveliev <saveliev.sergei@gmail.com>
+2016-07-06 10:19:24 +0300  Sebastian Dröge <sebastian@centricular.com>
 
-	* sys/applemedia/avfassetsrc.m:
-	  avfassetsrc: Don't escape the URI another time in another location too
-	  One location was forgotten in a913a0b9679dd58945ad105d240db45595fdaba6
-	  https://bugzilla.gnome.org/show_bug.cgi?id=767492
+	* po/af.po:
+	* po/az.po:
+	* po/bg.po:
+	* po/ca.po:
+	* po/cs.po:
+	* po/da.po:
+	* po/de.po:
+	* po/el.po:
+	* po/en_GB.po:
+	* po/eo.po:
+	* po/es.po:
+	* po/eu.po:
+	* po/fi.po:
+	* po/fr.po:
+	* po/gl.po:
+	* po/hr.po:
+	* po/hu.po:
+	* po/id.po:
+	* po/it.po:
+	* po/ja.po:
+	* po/ky.po:
+	* po/lt.po:
+	* po/lv.po:
+	* po/mt.po:
+	* po/nb.po:
+	* po/nl.po:
+	* po/or.po:
+	* po/pl.po:
+	* po/pt_BR.po:
+	* po/ro.po:
+	* po/ru.po:
+	* po/sk.po:
+	* po/sl.po:
+	* po/sq.po:
+	* po/sr.po:
+	* po/sv.po:
+	* po/tr.po:
+	* po/uk.po:
+	* po/vi.po:
+	* po/zh_CN.po:
+	  po: Update translations
 
-2016-08-01 11:45:30 +0200  Bernhard Miller <bernhard.miller@streamunlimited.com>
+2016-07-05 09:21:58 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
 
-	* gst/aiff/aiffparse.c:
-	  aiffparse: keep end_offset when seeking
-	  After seeking in aiff files the information about the data end offset is
-	  discarded, leading to audio artifacts with metadata chunks at the end of
-	  a file.
-	  This patch retains the end offset information after a seek event.
-	  https://bugzilla.gnome.org//show_bug.cgi?id=769376
+	* ext/webrtcdsp/gstwebrtcdsp.cpp:
+	  webrtcdsp: Workaround GCC/MingW 4.7 limitations
+	  It refuses to initialize a classes using brackets notation. This is
+	  to allow building using our mingw version.
 
-2016-08-06 16:15:33 +0100  Tim-Philipp Müller <tim@centricular.com>
+2016-07-04 14:57:11 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
 
-	* gst/dvdspu/gstdvdspu.c:
-	  dvdspu: don't crash if video frame could not be mapped
-	  As might happen with e.g. vaapi and the test file from
-	  https://bugzilla.gnome.org/show_bug.cgi?id=736227
+	* configure.ac:
+	  configure.ac: Add missing double quotes
+	  That affectation was ignored. This worked on recent GCC as C++11 is
+	  enabled by default now.
 
-2016-08-08 11:28:44 +0200  Sebastian Dröge <sebastian@centricular.com>
+2016-07-02 10:24:51 +0200  Stefan Sauer <ensonic@users.sf.net>
 
-	* sys/androidmedia/gstamc.c:
-	  amc: Fix call to realloc() to allocate the correct size of items
+	* ext/lv2/gstlv2filter.c:
+	* ext/lv2/gstlv2source.c:
+	* ext/lv2/gstlv2utils.c:
+	* ext/lv2/gstlv2utils.h:
+	  lv2: add support for saving presets
+	  Plugns supporting the state interface can now save their presets under '.lv2'.
 
-2016-08-01 10:28:26 +0300  Sebastian Dröge <sebastian@centricular.com>
+2016-06-15 22:22:58 +0200  Stefan Sauer <ensonic@users.sf.net>
 
-	* sys/androidmedia/gstamc.c:
-	  amc: If we find multiple codecs with the same name, just merge them
-	  On the ODroid C1+ the H265 and H264 have the same name but are listed as two
-	  different codecs. We have to handle them as the same one that supports both,
-	  as otherwise we will register the same GType name twice which fails and we
-	  then only have H265 support and not H264 support.
+	* ext/lv2/README:
+	* ext/lv2/gstlv2.c:
+	* ext/lv2/gstlv2.h:
+	* ext/lv2/gstlv2filter.c:
+	* ext/lv2/gstlv2source.c:
+	* ext/lv2/gstlv2utils.c:
+	* ext/lv2/gstlv2utils.h:
+	  lv2: support for loading presets
+	  Detect if plugins can do presets. Lazily read a list of presets and add support
+	  for loading.
 
-2016-08-01 10:15:04 +0300  Sebastian Dröge <sebastian@centricular.com>
+2016-07-04 16:54:53 +0200  Wim Taymans <wtaymans@redhat.com>
 
-	* sys/androidmedia/gstamc.c:
-	  amc: Use a GQueue for O(1) append instead of a GList
+	* configure.ac:
+	* ext/musepack/gstmusepackdec.c:
+	* ext/musepack/gstmusepackreader.c:
+	  musepackdec: port to 1.0
 
-2016-07-29 08:54:00 +0300  Sebastian Dröge <sebastian@centricular.com>
+2016-07-04 12:19:36 +0200  Marcin Lewandowski <marcin@radiokit.org>
 
-	* sys/androidmedia/gstamc.c:
-	  amc: Print generated raw/encoded caps in debug logs
+	* sys/shm/gstshmsrc.c:
+	  shmsrc: Do not call gst_poll_remove_fd upon stop if reading was never started
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768365
 
-2016-06-21 18:28:46 +1000  Matthew Waters <matthew@centricular.com>
+2016-07-01 14:50:27 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
 
-	* gst-libs/gst/gl/gstglcontext.c:
-	  glcontext: fix get_current_gl_api() on win32
-	  Another case of incorrect calling conventions.
-	  Using this function on win32 would corrupt the stack pointer and end in
-	  massive hilarity.
+	* sys/dvb/parsechannels.c:
+	  dvb/parsechannels: improve parsing-success message
+	  * Fix typo
+	  * Give information on what was actually parsed
 
-2016-08-16 02:46:42 +1000  Jan Schmidt <jan@centricular.com>
+2016-07-01 14:37:37 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
 
-	* ext/qt/Makefile.am:
-	* ext/qt/gstplugin.cc:
-	  qt: Disable qmlglsrc element in 1.8
-	  It relies on GstGL features and GstVideoAffineTransformationMeta
-	  that are only available in git master.
-
-2016-08-16 00:40:53 +1000  Jan Schmidt <jan@centricular.com>
-
-	* ext/qt/gstqtglutility.cc:
-	  qt: Use wglShareLists() workaround unconditionally.
-	  Sometimes wglCreateContextAttribsARB() exists, but
-	  isn't functional (some Intel drivers), so it's
-	  easiest to do the workaround unconditionally.
-
-2016-08-08 13:41:14 +1000  Jan Schmidt <jan@centricular.com>
-
-	* ext/qt/gstqtglutility.cc:
-	  qt: Move debug statement to after the category init
-	  Don't output debug to an uninitialised debug category.
-
-2016-07-27 08:16:47 +0800  Haihua Hu <jared.hu@nxp.com>
-
-	* ext/qt/Makefile.am:
-	* ext/qt/gstplugin.cc:
-	* ext/qt/gstqtglutility.cc:
-	* ext/qt/gstqtglutility.h:
-	* ext/qt/gstqtsrc.cc:
-	* ext/qt/gstqtsrc.h:
-	* ext/qt/qtitem.cc:
-	* ext/qt/qtwindow.cc:
-	* ext/qt/qtwindow.h:
-	  qt: implement qmlglsrc for qml view grab
-	  [Matthew Waters]: gst-indent sources
-	  https://bugzilla.gnome.org/show_bug.cgi?id=768160
+	* sys/dvb/parsechannels.c:
+	  dvb/parsechannels: don't use default conf filename for messages
+	  The file name can be user-defined.
 
 2016-07-01 19:22:32 +0100  Tim-Philipp Müller <tim@centricular.com>
 
@@ -152,6 +3246,316 @@
 	  (and if it didn't we'd have just an empty -I argument).
 	  https://bugzilla.gnome.org/show_bug.cgi?id=767553
 
+2016-07-01 14:05:49 +0100  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* gst/videoparsers/gstjpeg2000parse.c:
+	  gstjpeg2000parse: no need for else after a goto
+	  else clause is redundant when the end of the if statement is a jump.
+	  If we haven't gone to the beach, we are in the false branch.
+
+2016-06-30 07:47:50 -0400  Aaron Boxer <boxerab@gmail.com>
+
+	* gst/videoparsers/gstjpeg2000parse.c:
+	  gstjpeg2000parse: improved parsing of jpc magic and j2c box
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767512
+
+2016-05-25 16:01:24 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.h:
+	  adaptivedemux: Add custom flow return for allowing subclasses to specify when a fragment is finished
+	  If it is finished before upstream going EOS.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767365
+
+2016-05-27 16:08:09 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	* ext/dash/gstdashdemux.h:
+	  dashdemux: Implement SIDX tracking based on buffer offset
+	  This simplifies the code but also removes a bug with tracking of the remaining
+	  size for the initial subfragment: we were not considering the size between the
+	  index and the start of the first moof here.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764684
+
+2016-03-31 13:39:59 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	* ext/dash/gstdashdemux.h:
+	  dashdemux: Properly keep track of current offset
+	  GstAdapter does not guarantee to pass through all the offsets, we have to keep
+	  track of it ourselves.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764684
+
+2016-03-31 13:39:59 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/hls/gsthlsdemux.c:
+	* ext/hls/gsthlsdemux.h:
+	  hlsdemux: Properly keep track of current offset
+	  GstAdapter does not guarantee to pass through all the offsets, we have to keep
+	  track of it ourselves.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764684
+
+2016-03-31 13:01:00 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/hls/gsthlsdemux.c:
+	  hlsdemux: Clear pending data when needed
+	  When switching fragments we don't want to keep any data around from the last
+	  one, and also forget about all data when doing flushing seeks or selecting new
+	  bitrates.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764684
+
+2016-03-28 13:45:36 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/dash/gstdashdemux.c:
+	* ext/dash/gstdashdemux.h:
+	* ext/hls/gsthlsdemux.c:
+	* ext/hls/gsthlsdemux.h:
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.h:
+	  adaptivedemux: Get rid of internal stream adapter and let subclasses handle this directly
+	  This allows subclasses to have more control and especially ensure that they
+	  push data downstream with the correct offsets.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764684
+
+2016-07-01 12:20:14 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst-libs/gst/codecparsers/gstjpeg2000sampling.c:
+	  codecparsers: jpeg2000: don't allow 0 value for array access with i-1
+
+2016-07-01 12:15:28 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst-libs/gst/codecparsers/gstjpeg2000sampling.c:
+	  codecparsers: jpeg2000: fix possible out-of-bounds array access
+	  sizeof(array) != G_N_ELEMENTS(array).
+	  CID 1362900
+
+2016-06-30 23:38:26 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/openh264/gstopenh264enc.cpp:
+	  openh264enc: Set frame timestamps before sending to the encoder
+
+2016-06-30 23:35:33 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/openh264/gstopenh264enc.cpp:
+	  openh264enc: Fix initial time-per-frame calculation
+
+2016-06-30 23:33:38 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/openh264/gstopenh264enc.cpp:
+	* ext/openh264/gstopenh264enc.h:
+	  openh264enc: Remove meaningless drop bitrate handling
+	  This doesn't even have a property.
+
+2016-06-30 23:29:13 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/openh264/gstopenh264enc.cpp:
+	* ext/openh264/gstopenh264enc.h:
+	  openh264enc: Expose maximum bitrate setting
+
+2016-06-30 23:19:26 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/openh264/gstopenh264enc.cpp:
+	  openh264enc: Actually hook up the rate-control property
+
+2016-06-30 23:06:29 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/openh264/gstopenh264enc.cpp:
+	  openh264enc: Use a constant SPS/PPS ID no matter if openh264 older or newer than 1.4 is used
+
+2016-06-30 23:02:49 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/openh264/gstopenh264enc.cpp:
+	  openh264enc: Make slice settings more explicit and don't set any number if not a fixed number of slices is selected
+
+2016-06-29 15:56:47 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* ext/webrtcdsp/gstwebrtcdsp.cpp:
+	* ext/webrtcdsp/gstwebrtcechoprobe.cpp:
+	* ext/webrtcdsp/gstwebrtcechoprobe.h:
+	  webrtcdsp: Rewrite echo data synchronization
+	  The previous code would run out of sync if there was packet lost
+	  or clock skews. When that happened, the echo cancellation feature would
+	  completely stop working. As this is crucial for audio calls, this patch
+	  re-implement synchronization completely.
+	  Instead of letting it drift until next discont, we now synchronize
+	  against the record data at every iteration. This way we simply never
+	  let the stream drift for longer then 10ms period. We also shorter the
+	  delay by using the latency up the probe (basically excluding the sink
+	  latency. This is a decent delay to avoid starving in the probe queue.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768009
+
+2016-06-29 15:55:19 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* ext/webrtcdsp/gstwebrtcdsp.cpp:
+	  webrtcdsp: We now fail if there is no echo probe
+	  When echo cancel is enabled, we now fail the pipeline if there is
+	  not echo probe. For this reason there is no need to check if probe
+	  pointer is set anymore.
+
+2016-06-30 21:50:12 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglviewconvert.c:
+	  glviewconvert: fix transformation matrix usage
+	  Calling glUniformMatrix before the shader is bound is invalid and
+	  would result in errors like:
+	  GL_INVALID_OPERATION in glUniformMatrix(program not linked)
+	  Move glUniformMatrix() to after the gst_gl_shader_use() call.
+
+2016-06-28 16:07:43 -0400  Javier Martinez Canillas <javier@osg.samsung.com>
+
+	* sys/kms/gstkmssink.c:
+	  kmssink: fallback to universal planes if no overlay plane is found
+	  Without setting the DRM_CLIENT_CAP_UNIVERSAL_PLANES capability bit, only
+	  overlay planes are made available for compatibility with legacy clients.
+	  But if a CRTC doesn't have an overlay plane associated, then kmssink is
+	  not able to find a plane for the CRTC and the pipeline will fail, i.e:
+	  ERROR                kmssink gstkmssink.c:482:gst_kms_sink_start:<kmssink0> Could not find a plane for crtc
+	  If no overlay planes were found for a given CRTC, fallback to universal
+	  planes so DRM will also return primary planes that can be used instead.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768183
+	  Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
+
+2016-06-28 20:51:56 -0400  Javier Martinez Canillas <javier@osg.samsung.com>
+
+	* docs/plugins/gst-plugins-bad-plugins.args:
+	* sys/kms/gstkmssink.c:
+	  kmssink: add a plane-id property
+	  Without setting the DRM_CLIENT_CAP_UNIVERSAL_PLANES capability bit, only
+	  overlay planes are made available for compatibility with legacy clients.
+	  But if a CRTC doesn't have an overlay plane associated, then kmssink is
+	  not able to find a plane for the CRTC and the pipeline will fail, i.e:
+	  ERROR                kmssink gstkmssink.c:482:gst_kms_sink_start:<kmssink0> Could not find a plane for crtc
+	  This patch adds a plane-id property to the kmssink element so a specific
+	  plane can be used in case that a CRTC has only a primary plane associated.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768183
+
+2016-06-30 10:33:30 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/openh264/gstopenh264enc.cpp:
+	  openh264enc: Remove broken byte-stream to avc conversion and just output byte-stream as generated by the encoder
+	  The byte-stream to avc conversion did not consider NAL sizes bigger than 2^16,
+	  multiple layers, multiple NALs per layer, and various other things. This
+	  caused corrupted streams in higher bitrates and other circumstances.
+	  Let's just forward byte-stream as generated by the encoder and let h264parse
+	  handle conversion to avc if needed. That way we only have to keep around one
+	  version of the conversion and don't have to fix it in multiple places.
+
+2016-06-29 18:36:56 +0200  Edward Hervey <edward@centricular.com>
+
+	* gst/videoparsers/gsth264parse.c:
+	  h264parse: Drop filler data
+	  When skipping data, check if they are filler bytes. If so, drop the
+	  data instead of skipping. We don't want to output filler bytes, but they
+	  shouldn't cause a discontinuity.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768125
+
+2016-06-30 08:31:20 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/dvb/dvbbasebin.c:
+	  dvbbasebin: Use a non-timer GstPoll
+	  set_flushing() causes inconsistent states on timer polls and also signals a
+	  g_critical() nowadays because of that.
+
+2016-06-30 14:04:36 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglupload.c:
+	  glupload: fix raw data uploader with addition of GstVideoGLTextureType
+	  Fixes regression from 989200820d43c78fb179d7984827800d83787390
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768217
+
+2016-06-29 23:55:18 -0400  Olivier Crête <olivier.crete@collabora.com>
+
+	* gst-libs/gst/gl/gstglcolorconvert.c:
+	  glvideoconvert: RG/LA is available in OpenGL ES 3, so let that through
+
+2016-06-29 18:35:17 +1000  Matthew Waters <matthew@centricular.com>
+
+	* sys/applemedia/videotexturecache.m:
+	  vtdec: use L/LA textures on GLES2 as well
+
+2016-06-24 13:41:11 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/eagl/gstglcontext_eagl.m:
+	  Revert "Revert "gl/eagl: try getting a gles3 context""
+	  This reverts commit eb142736318463e6e553c21707ba0d716f85a46f.
+	  vtdec now successfully outputs textures that can be converted by
+	  glcolorconvert in GLES3 contexts.
+
+2016-06-25 00:05:37 +1000  Matthew Waters <matthew@centricular.com>
+
+	* sys/applemedia/videotexturecache.m:
+	  vtdec: add support for zerocopy decoding with GLES 3.x
+	  It seems that Red/RG textures aren't supported anymore for zerocopy decoding
+	  with GLES 3.x.  Instead use Luminance/Luminance Alpha textures which are.
+
+2016-06-28 13:51:22 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstgloverlay.c:
+	* gst-libs/gst/gl/egl/gstglmemoryegl.c:
+	* gst-libs/gst/gl/gstglbufferpool.c:
+	* gst-libs/gst/gl/gstglcolorconvert.c:
+	* gst-libs/gst/gl/gstglmemory.c:
+	* gst-libs/gst/gl/gstglmemory.h:
+	* gst-libs/gst/gl/gstglmemorypbo.c:
+	* gst-libs/gst/gl/gstgloverlaycompositor.c:
+	* gst-libs/gst/gl/gstglupload.c:
+	* gst-libs/gst/gl/gstglviewconvert.c:
+	* sys/androidmedia/gstamcvideodec.c:
+	* sys/applemedia/iosurfacememory.c:
+	* sys/applemedia/iosurfacememory.h:
+	* sys/applemedia/videotexturecache.m:
+	* tests/check/libs/gstglcolorconvert.c:
+	* tests/check/libs/gstglcontext.c:
+	* tests/check/libs/gstglmemory.c:
+	* tests/check/libs/gstglupload.c:
+	  glmemory: add the texture type to allocate to parameters
+	  Rather than assuming something.  e.g. zerocopy on iOS with GLES3 requires
+	  the use of Luminance/Luminance Alpha formats and does not work with
+	  Red/RG textures.
+
+2016-06-28 13:09:51 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglcolorconvert.c:
+	  glcolorconvert: don't assume Red/RG textures will be used
+	  Take the used texture type from the memory instead.
+	  Fixes conversion from multi-planar YUV formats with two components per plane
+	  (NV12, NV21, YUY2, UYVY, GRAY16_*, etc) with Luminance Alpha input textures.
+	  This is also needed for zerocopy decoding on iOS with GLES 3.x.
+
+2016-06-28 13:02:32 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglcontext.c:
+	  glcontext: correct precondition for get_gl_version
+	  The intention was to assert if both maj and min were NULL (as there would be no
+	  point calling the function).  Instead if either maj or min were NULL, the assert
+	  would occur.
+	  Fix that.
+
+2016-06-28 19:26:29 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/d3dvideosink/d3dhelpers.c:
+	* sys/d3dvideosink/d3dvideosink.c:
+	  d3dvideosink: Replace some more gst_caps_to_string() with GST_PTR_FORMAT
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768146
+
+2016-06-28 11:50:59 -0400  Jonathan Roy <jroy@adetelgroup.com>
+
+	* sys/d3dvideosink/d3dvideosink.c:
+	  d3dvideosink: leak on caps string
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768146
+
+2016-06-28 11:08:22 +0100  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* gst-libs/gst/codecparsers/gstjpeg2000sampling.c:
+	  jpeg2000parse: fix typo in sampling check
+	  Fixing small typo that changes the value of the return.
+
+2016-06-27 21:36:50 -0400  Olivier Crête <olivier.crete@collabora.com>
+
+	* tests/check/Makefile.am:
+	  tests: Ignore kmssink for state change test
+	  It can only be put to READY if the DRM stuff is available.
+
 2016-06-27 18:15:08 +0800  Haihua Hu <jared.hu@nxp.com>
 
 	* configure.ac:
@@ -161,6 +3565,158 @@
 	  in the necessary #ifdef to avoid build error.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=767553
 
+2016-06-24 18:14:06 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/dvbbasebin.c:
+	  dvbbasebin: make sure we have an error in case of parsing failure
+	  Drop a redundant comment and rellocate another one while at it.
+
+2016-06-22 16:14:33 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/parsechannels.c:
+	  dvb/parsechannels: implement channels.conf format autodetection
+	  Simple autodetection avoids having to call the parsers
+	  one after the other.
+
+2016-06-21 16:08:57 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/parsechannels.c:
+	  dvb/parsechannels: rename v5/zap parsers for congruency
+	  Add function prototypes while at it.
+
+2016-04-12 21:04:25 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/parsechannels.c:
+	  dvb/parsechannels: fix modulation names
+	  Some names were incorrect. Authoritative source for
+	  the dvbv5 format taken from v4l-utils' lib/libdvbv5/dvb-v5.c
+	  Aditionally, add the missing setter mapping for the
+	  modulation param.
+	  This change makes ATSC work.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764957
+
+2016-02-24 21:44:40 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* sys/dvb/parsechannels.c:
+	  dvbbasebin: also accept DVBv5 channels.conf format
+	  Confirmed working with ISDB-T & ATSC conf files.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764957
+
+2016-06-21 11:48:36 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: fix ISDB-T property descriptions
+	  Drop some stale trailing whitespace while at it.
+
+2016-06-21 11:32:07 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: fix misplaced space on doc block
+
+2016-05-10 03:32:59 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst/videoparsers/gsth264parse.c:
+	* gst/videoparsers/gsth264parse.h:
+	  h264parse: When input alignment=AU, always drain each packet.
+	  If the input alignment claims AU alignment, each received
+	  buffer should contain a complete video frame, so never hold over parts
+	  of buffers for later processing. Also reduces latency, as packets
+	  are parsed/converted and output immediately instead of 1 buffer
+	  later.
+	  Fixes a problem where an (arguably disallowed) padding byte on the
+	  end of a buffer is detected as an extra byte in the following
+	  start code, and messes up the timestamping that should apply to
+	  that start code.
+
+2016-06-24 13:05:24 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* win32/common/libgstcodecparsers.def:
+	  win32: update codecparsers .def file for new symbols
+
+2016-06-24 09:41:18 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/openjpeg/Makefile.am:
+	* ext/openjpeg/gstopenjpegdec.h:
+	* ext/openjpeg/gstopenjpegenc.c:
+	  openjpeg: fix more broken includes
+
+2016-06-24 09:39:00 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/videoparsers/gstjpeg2000parse.h:
+	  videoparsers: fix broken include
+
+2016-06-21 12:41:46 -0400  Aaron Boxer <boxerab@gmail.com>
+
+	* ext/openjpeg/Makefile.am:
+	* ext/openjpeg/gstopenjpegdec.c:
+	* ext/openjpeg/gstopenjpegdec.h:
+	* ext/openjpeg/gstopenjpegenc.c:
+	* gst-libs/gst/codecparsers/Makefile.am:
+	* gst-libs/gst/codecparsers/gstjpeg2000sampling.c:
+	* gst-libs/gst/codecparsers/gstjpeg2000sampling.h:
+	* gst/videoparsers/Makefile.am:
+	* gst/videoparsers/gstjpeg2000parse.c:
+	* gst/videoparsers/gstjpeg2000parse.h:
+	* gst/videoparsers/gstjpeg2000sampling.h:
+	  jpeg2000parse: use enums for colorspace and sampling, rather than strings
+	  Also, move gstjpeg2000sampling to codecparsers project
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767908
+
+2016-06-24 01:57:13 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* configure.ac:
+	  configure: Need to add -DGST_STATIC_COMPILATION when building only statically
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767463
+
+2016-06-23 15:57:58 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/gl/egl/gsteglimage.c:
+	  eglimage: Only register debug category if dmabuf support is enabled
+	  It's not used otherwise currently and causes compiler warnings.
+
+2016-06-22 22:28:03 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* ext/webrtcdsp/gstwebrtcdsp.cpp:
+	  webrtcdsp: Offset timestamp with duration
+	  The saved timestamp is used to compute the delay of the probe data.
+	  As it's used at the following incoming buffer, it needs to be offset
+	  with the duration of the buffer to represent the end position. Also,
+	  properly initialize the saved timestamp and protect against TIME_NONE.
+
+2016-06-22 21:54:13 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* ext/webrtcdsp/gstwebrtcdsp.cpp:
+	  webrtcdsp: Synchronize with delays
+	  Until now, we were synchronizing both DSP and Probe adapter by
+	  waiting and clipping the probe adapter data. This increases the CPU
+	  usage, can cause copies if the audio is not 10ms aligned and the worst
+	  is that it prevents the processing from compensating for inaccurate
+	  latency. This is also a step forward toward supporting playback
+	  filters.
+
+2016-06-22 21:45:08 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* ext/webrtcdsp/gstwebrtcdsp.cpp:
+	  webrtdsp: Remove restriction on channels number
+	  Unlike 0.1, in 0.2 the reverse stream can have different number of
+	  channels. Remove the check that restrict it.
+
+2016-06-22 21:44:35 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* ext/webrtcdsp/gstwebrtcdsp.cpp:
+	  webrtcdsp: Style fix
+
+2016-06-16 14:18:18 +1000  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/vtdec.c:
+	  vtdec: minimize renegotiation to make hw decoding more reliable
+	  The hardware decoder can become (temporarily) unavailable across
+	  VTDecompressionSessionCreate/Destroy calls. During negotiation if the currently
+	  configured caps are still accepted by downstream we keep using them so we don't
+	  have to destroy and recreate the decoding session.
+	  This indirectly fixes https://bugzilla.gnome.org/show_bug.cgi?id=767429, by
+	  making vtdec stick to GLMemory.
+
 2016-06-16 15:13:02 +1000  Matthew Waters <matthew@centricular.com>
 
 	* ext/qt/qtitem.cc:
@@ -178,6 +3734,336 @@
 	  cp debug/libgstqtsink.dll /path/to/prefix/lib/gstreamer-1.0/libgstqtsink.cll
 	  https://bugzilla.gnome.org/show_bug.cgi?id=761260
 
+2016-06-21 11:40:22 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* .gitignore:
+	  Add missing file to gitignore
+
+2016-06-20 18:52:00 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* docs/plugins/Makefile.am:
+	* docs/plugins/gst-plugins-bad-plugins-docs.sgml:
+	* docs/plugins/gst-plugins-bad-plugins-sections.txt:
+	* docs/plugins/gst-plugins-bad-plugins.args:
+	* docs/plugins/gst-plugins-bad-plugins.hierarchy:
+	* docs/plugins/gst-plugins-bad-plugins.interfaces:
+	* docs/plugins/inspect/plugin-androidcamera.xml:
+	* docs/plugins/inspect/plugin-assrender.xml:
+	* docs/plugins/inspect/plugin-audiofxbad.xml:
+	* docs/plugins/inspect/plugin-bluez.xml:
+	* docs/plugins/inspect/plugin-bs2b.xml:
+	* docs/plugins/inspect/plugin-compositor.xml:
+	* docs/plugins/inspect/plugin-dashdemux.xml:
+	* docs/plugins/inspect/plugin-decklink.xml:
+	* docs/plugins/inspect/plugin-dtls.xml:
+	* docs/plugins/inspect/plugin-dvbsuboverlay.xml:
+	* docs/plugins/inspect/plugin-fbdevsink.xml:
+	* docs/plugins/inspect/plugin-fluidsynthmidi.xml:
+	* docs/plugins/inspect/plugin-freeverb.xml:
+	* docs/plugins/inspect/plugin-frei0r.xml:
+	* docs/plugins/inspect/plugin-gstgtk.xml:
+	* docs/plugins/inspect/plugin-inter.xml:
+	* docs/plugins/inspect/plugin-ivfparse.xml:
+	* docs/plugins/inspect/plugin-ivtc.xml:
+	* docs/plugins/inspect/plugin-jp2kdecimator.xml:
+	* docs/plugins/inspect/plugin-kate.xml:
+	* docs/plugins/inspect/plugin-kms.xml:
+	* docs/plugins/inspect/plugin-ladspa.xml:
+	* docs/plugins/inspect/plugin-midi.xml:
+	* docs/plugins/inspect/plugin-mpegtsdemux.xml:
+	* docs/plugins/inspect/plugin-mxf.xml:
+	* docs/plugins/inspect/plugin-netsim.xml:
+	* docs/plugins/inspect/plugin-openexr.xml:
+	* docs/plugins/inspect/plugin-opengl.xml:
+	* docs/plugins/inspect/plugin-openjpeg.xml:
+	* docs/plugins/inspect/plugin-opusparse.xml:
+	* docs/plugins/inspect/plugin-pnm.xml:
+	* docs/plugins/inspect/plugin-qt.xml:
+	* docs/plugins/inspect/plugin-rawparse.xml:
+	* docs/plugins/inspect/plugin-resindvd.xml:
+	* docs/plugins/inspect/plugin-rsvg.xml:
+	* docs/plugins/inspect/plugin-rtponvif.xml:
+	* docs/plugins/inspect/plugin-smoothstreaming.xml:
+	* docs/plugins/inspect/plugin-sndfile.xml:
+	* docs/plugins/inspect/plugin-srtp.xml:
+	* docs/plugins/inspect/plugin-stereo.xml:
+	* docs/plugins/inspect/plugin-teletext.xml:
+	* docs/plugins/inspect/plugin-uvch264.xml:
+	* docs/plugins/inspect/plugin-vcdsrc.xml:
+	* docs/plugins/inspect/plugin-vdpau.xml:
+	* docs/plugins/inspect/plugin-videofiltersbad.xml:
+	* docs/plugins/inspect/plugin-videoframe_audiolevel.xml:
+	* docs/plugins/inspect/plugin-videoparsersbad.xml:
+	* docs/plugins/inspect/plugin-videosignal.xml:
+	* docs/plugins/inspect/plugin-vmnc.xml:
+	* docs/plugins/inspect/plugin-webp.xml:
+	* docs/plugins/inspect/plugin-webrtcdsp.xml:
+	* docs/plugins/inspect/plugin-wildmidi.xml:
+	* docs/plugins/inspect/plugin-x265.xml:
+	* docs/plugins/inspect/plugin-yadif.xml:
+	* docs/plugins/inspect/plugin-zbar.xml:
+	* gst/pnm/gstpnmenc.c:
+	  doc: Automatic update
+	  This is an automatic update with manual merges of running
+	  "make update" in the doc/plugins directory. This should help
+	  later maintenance of the plugins doc. A lot of plugin are
+	  not referenced yet in the doc. Will come later.
+
+2016-06-20 16:30:19 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* docs/plugins/Makefile.am:
+	  doc: Add .cpp files to doc parser
+	  Also, complete the list of directory that need to be visited.
+
+2016-06-06 15:10:05 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* configure.ac:
+	* ext/Makefile.am:
+	* ext/webrtcdsp/Makefile.am:
+	* ext/webrtcdsp/gstwebrtcdsp.cpp:
+	* ext/webrtcdsp/gstwebrtcdsp.h:
+	* ext/webrtcdsp/gstwebrtcechoprobe.cpp:
+	* ext/webrtcdsp/gstwebrtcechoprobe.h:
+	  webrtcdsp: Add WebRTC Audio Processing support
+	  This DSP library can be used to enhance voice signal for real time
+	  communication call. In implements multiple filters like noise reduction,
+	  high pass filter, echo cancellation, automatic gain control, etc.
+	  The webrtcdsp element can be used along, or with the help of the
+	  webrtcechoprobe if echo cancellation is enabled. The echo probe should
+	  be placed as close as possible to the audio sink, while the DSP is
+	  generally place close to the audio capture. For local testing, one can
+	  use an echo loop pipeline like the following:
+	  autoaudiosrc ! webrtcdsp ! webrtcechoprobe ! autoaudiosink
+	  This pipeline should produce a single echo rather then repeated echo.
+	  Those elements works if they are placed in the same top level pipeline.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767800
+
+2016-06-21 11:46:44 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* common:
+	  Automatic update of common submodule
+	  From ac2f647 to f363b32
+
+2016-03-22 16:51:53 +0800  Wang Xin-yu (王昕宇) <comicfans44@gmail.com>
+
+	* gst-libs/gst/gl/win32/gstglcontext_wgl.c:
+	  glcontext/wgl: try wglCreateContextAttribsARB even not gl3 core profile
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764018
+
+2016-06-21 18:28:46 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglcontext.c:
+	  glcontext: fix get_current_gl_api() on win32
+	  Another case of incorrect calling conventions.
+	  Using this function on win32 would corrupt the stack pointer and end in
+	  massive hilarity.
+
+2016-06-15 12:47:05 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglcolorconvert.c:
+	* gst-libs/gst/gl/gstglsl.c:
+	* gst-libs/gst/gl/gstglsl_private.h:
+	* gst-libs/gst/gl/gstglviewconvert.c:
+	  glsl: fixup external-oes shaders by mangling the required extension
+	  Newer devices require using a different GLSL extension for accessing
+	  external-oes textures in a shader using the texture() functions.
+	  While the GL_OES_EGL_image_external_essl3 should supposedly be supported
+	  on a any GLES3 android device, the extension was defined after a lot of the
+	  older drivers were built so they will not know about it.  Thus there are two
+	  possible interpretations of which of texture[2D]() should be supported for
+	  external-oes textures.  Strict adherence to the GL_OES_EGL_image_external
+	  extension spec which uses texture2D() or following GLES3's pattern, also
+	  allowing texture() as a function for accessing external-oes textures
+	  This adds another mangling pass to convert
+	  #extension GL_OES_EGL_image_external : ...
+	  into
+	  #extension GL_OES_EGL_image_external_essl3 : ...
+	  on GLES3 and when the GL_OES_EGL_image_external_essl3 extension is supported.
+	  Only uses texture() when the GLES3 and the GL_OES_EGL_image_external_essl3
+	  extension is supported for external-oes textures.
+	  Uses GLES2 + texture2D() + GL_OES_EGL_image_external in all other external-oes
+	  cases.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766993
+
+2016-05-24 16:26:24 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* sys/winks/ksdeviceprovider.c:
+	* sys/winks/kshelpers.c:
+	* sys/winks/kshelpers.h:
+	  winks: Port to MSVC and pretend to be Windows XP
+	  strcasecmp is not defined on MSVC, so just use the glib wrapper. Also pretend to
+	  be Windows XP explicitly since the API we use was deprecated and removed
+	  (ifdef-ed) from the SDK after this version of Windows. This will be especially
+	  relevant once we stop supporting Windows XP soon:
+	  https://bugzilla.gnome.org/show_bug.cgi?id=756866
+
+2016-03-02 02:17:54 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* win32/common/libgstadaptivedemux.def:
+	* win32/common/libgstbadaudio.def:
+	* win32/common/libgstbadbase.def:
+	* win32/common/libgstbadvideo.def:
+	* win32/common/libgstbasecamerabinsrc.def:
+	* win32/common/libgstinsertbin.def:
+	* win32/common/libgstmpegts.def:
+	* win32/common/libgsturidownloader.def:
+	  win32: Add missing def files for libraries
+
+2016-03-02 00:55:15 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* gst/audiovisualizers/gstspacescope.c:
+	* gst/audiovisualizers/gstspectrascope.c:
+	* gst/audiovisualizers/gstsynaescope.c:
+	* gst/audiovisualizers/gstwavescope.c:
+	  build: Factor out endian-order RGB formats
+	  MSVC seems to ignore preprocessor conditionals inside static pad templates
+
+2016-06-13 22:29:39 -0400  Aaron Boxer <boxerab@gmail.com>
+
+	* ext/openjpeg/gstopenjpegdec.c:
+	* ext/openjpeg/gstopenjpegdec.h:
+	  openjpegdec: use sampling field to determine RGB channel
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767402
+
+2016-06-02 13:53:38 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tests/check/elements/templatematch.c:
+	  templatematch: fix buffer leak in test
+	  Need to call gst_check_drop_buffers() to unref the buffers exchanged
+	  during the test.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767159
+
+2016-05-19 13:31:56 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tests/check/elements/glimagesink.c:
+	  glimagesink: fix query leak in test
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766663
+
+2016-05-19 13:29:15 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tests/check/elements/glimagesink.c:
+	  glimagesink: properly setup/teardown tests
+	  tcase_add_checked_fixture() is suppose to call the setup and teardown
+	  functions so the tests don't have to do it manually.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766663
+
+2016-05-19 13:09:41 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tests/check/libs/gstglupload.c:
+	  glupload: fix shader leak in test
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766663
+
+2016-05-19 12:51:17 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tests/check/elements/uvch264demux.c:
+	  uvch264demux: fix buffer leaks in test
+	  The mock chain functions aren't unreffing the buffers so the caller
+	  should do it.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766663
+
+2016-05-19 12:36:42 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tests/check/elements/camerabin.c:
+	  camerabin: fix element leak in test
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766663
+
+2016-05-19 11:19:57 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tests/check/elements/autoconvert.c:
+	  fix buffer leaks in tests
+	  gst_check_drop_buffers() release the buffers exchanged during the test.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766663
+
+2016-05-19 11:19:20 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tests/check/elements/audiomixer.c:
+	* tests/check/elements/compositor.c:
+	  fix event leaks in tests
+	  The events are supposed to be unreffed when finishing the test, not
+	  reffed.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766663
+
+2016-05-19 11:19:01 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tests/check/elements/audiointerleave.c:
+	  audiointerleave: fix message leaks by flushing the bus
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766663
+
+2016-05-19 11:16:37 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst-libs/gst/audio/gstaudioaggregator.c:
+	  audioaggregator: fix buffer leak
+	  If the pad was still owning a buffer when being destroyed it was leaked.
+	  Fix a leak with the test_flush_start_flush_stop test.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766663
+
+2016-05-18 16:58:44 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tests/check/elements/autoconvert.c:
+	  autoconvert: fix factories leak in test
+	  The factories returned by gst_registry_find_feature() have to be
+	  unreffed.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766663
+
+2016-06-17 14:58:44 +0200  Michael Olbrich <m.olbrich@pengutronix.de>
+
+	* gst-libs/gst/codecparsers/gsth264parser.c:
+	  h264parse: fix default time_offset_length
+	  The default value for time_offset_length should be 24, see
+	  section E2.2 of the H264 spec.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767792
+
+2016-06-17 14:31:42 +0200  Joan Pau Beltran <joanpau.beltran@socib.cat>
+
+	* ext/dc1394/gstdc1394src.c:
+	  dc1394src: check for disabled transmission in _stop_cam
+	  For symetry with _start_cam, check that the transmission
+	  is effectively disabled in _stop_cam.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763026
+
+2016-06-17 15:32:08 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: do not rely on temp var for fail detection
+	  Use errno instead as local var might be overwritten
+	  before the check.
+
+2016-06-14 15:29:08 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: rework set_pids()
+	  - Reflow to avoid unneeded nesting
+	  - Free aux pids array earlier
+	  - Adjust debug output to deliver more meaningful information
+
+2016-06-14 14:24:35 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: drop pointless debug msg
+
+2016-06-09 16:05:39 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* gst-libs/gst/codecparsers/gsth264parser.h:
+	* gst-libs/gst/codecparsers/gsth265parser.h:
+	* gst-libs/gst/codecparsers/gstmpeg4parser.c:
+	* gst-libs/gst/codecparsers/gstmpegvideoparser.c:
+	* gst-libs/gst/codecparsers/gstmpegvideoparser.h:
+	* gst-libs/gst/codecparsers/gstvc1parser.c:
+	  codecparsers: drop all otherwizes
+
+2016-06-12 13:53:18 -0400  Aaron Boxer <boxerab@gmail.com>
+
+	* gst/videoparsers/gstjpeg2000parse.c:
+	* gst/videoparsers/gstjpeg2000parse.h:
+	  jpeg2000parse: support j2c format
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767512
+
+2016-06-16 01:54:16 +1000  Matthew Waters <matthew@centricular.com>
+
+	* tests/check/Makefile.am:
+	  tests/glcontext: link against gstvideo for gst_video_info_*
+	  fixes make distcheck complaining about it.
+
 2016-04-14 18:14:32 +0300  Sergey Borovkov <sergey.borovkov@wireload.net>
 
 	* configure.ac:
@@ -208,182 +4094,91 @@
 	  to get wayland display for QT.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=767553
 
-2016-03-04 15:50:26 +0900  Vineeth TM <vineeth.tm@samsung.com>
+2016-06-16 00:46:57 +1000  Matthew Waters <matthew@centricular.com>
 
-	* ext/qt/gstqtsink.cc:
-	  bad: use new gst_element_class_add_static_pad_template()
-	  https://bugzilla.gnome.org/show_bug.cgi?id=763081
+	* tests/check/libs/gstglcontext.c:
+	  tests/glcontext: update test for gen,del_texture removal
 
-2016-08-15 16:37:44 +1000  Jan Schmidt <jan@centricular.com>
+2016-06-14 22:12:18 +0200  Stefan Sauer <ensonic@users.sf.net>
 
-	* sys/winks/gstksvideodevice.c:
-	* sys/winks/gstksvideodevice.h:
-	* sys/winks/gstksvideosrc.c:
-	* sys/winks/ksvideohelpers.c:
-	* sys/winks/ksvideohelpers.h:
-	  winks: Fix RGB frame flipping and postprocessing
-	  Uncompressed RGB frames can be (usually are) bottom-up
-	  layout in DirectShow, and the code to flip them wasn't
-	  properly ported from 0.10. Fix it.
-	  Fix post-processing of RGB buffers. We need a writable
-	  buffer, but the requests pool is holding an extra ref.
-	  This could use more fixing to use a buffer pool
+	* ext/ladspa/gstladspa.c:
+	  ladspa: simplify registry cache structure creation
+	  Create and fill structure in one go.
 
-2016-08-12 22:17:25 +1000  Jan Schmidt <jan@centricular.com>
+2016-06-14 13:48:09 +0800  Haihua Hu <jared.hu@nxp.com>
 
-	* sys/winks/gstksvideosrc.c:
-	  winks: Give the ksvideosrc PRIMARY rank
-	  It's the primary video source on Windows, so give it a
-	  rank for autoplugging by camerabin and friends
+	* ext/gl/effects/gstgleffectssources.c:
+	  gleffects: fix little rectangle that appears at the center of squeeze and tunnel effects
+	  These two shader will calculate the vector length and use it as denominator.
+	  But length could be zero which will cause undefine behaviour. Add protection for
+	  this condition
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767635
 
-2016-08-12 22:16:33 +1000  Jan Schmidt <jan@centricular.com>
+2016-06-15 18:10:59 +1000  Matthew Waters <matthew@centricular.com>
 
-	* sys/winks/ksvideohelpers.c:
-	  winks: Fix swapped RGBx/RGB caps mapping, and endianness.
-	  The RGBx and RGB format mappings were reversed.
-	  What Windows calls RGB are laid out as BGR in our parlance, so
-	  switch that too
+	* gst-libs/gst/gl/gstglsl.c:
+	  glsl: add some debugging
 
-2016-05-24 16:26:24 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+2016-06-15 16:08:57 +1000  Matthew Waters <matthew@centricular.com>
 
-	* sys/winks/ksdeviceprovider.c:
-	* sys/winks/kshelpers.c:
-	* sys/winks/kshelpers.h:
-	  winks: Port to MSVC and pretend to be Windows XP
-	  strcasecmp is not defined on MSVC, so just use the glib wrapper. Also pretend to
-	  be Windows XP explicitly since the API we use was deprecated and removed
-	  (ifdef-ed) from the SDK after this version of Windows. This will be especially
-	  relevant once we stop supporting Windows XP soon:
-	  https://bugzilla.gnome.org/show_bug.cgi?id=756866
+	* gst-libs/gst/gl/gstglutils.c:
+	* gst-libs/gst/gl/gstglutils.h:
+	  glutils: remove unused functions for texture creation/deletion
+	  Everyone uses GstGLMemory now and any future code should as well.
 
-2016-07-18 18:36:42 +0100  Tim-Philipp Müller <tim@centricular.com>
+2016-06-15 15:47:47 +1000  Matthew Waters <matthew@centricular.com>
 
-	* ext/openh264/gstopenh264dec.cpp:
-	* ext/openh264/gstopenh264enc.cpp:
-	* ext/openh264/gstopenh264enc.h:
-	  openh264: fix up for API changes in v1.6.0
-	  Update for API changes in v1.6.0.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=768771
+	* gst-libs/gst/gl/gstglfilter.h:
+	  glfilter: remove unused class fields in/out_tex_id
+	  The functionality is not used by any subclass nor are the values set anywhere.
 
-2016-05-24 00:55:11 +0100  Tim-Philipp Müller <tim@centricular.com>
+2016-06-15 15:08:39 +1000  Matthew Waters <matthew@centricular.com>
 
-	* gst-libs/gst/gl/Makefile.am:
-	* gst-libs/gst/insertbin/Makefile.am:
-	* gst-libs/gst/mpegts/Makefile.am:
-	* gst-libs/gst/player/Makefile.am:
-	  g-i: pass compiler env to g-ir-scanner
-	  It's what introspection.mak does as well. Should
-	  fix spurious build failures on gnome-continuous.
+	* ext/gl/gstgldeinterlace.c:
+	  gldeinterlace: remove dead code accessing filter->in_tex_id
+	  It's not set by anyone or anything and gldeinterlace is the only user of it now.
 
-2016-04-22 15:02:01 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+2016-06-15 14:40:40 +1000  Matthew Waters <matthew@centricular.com>
 
-	* tests/check/elements/adaptive_demux_common.c:
-	* tests/check/elements/adaptive_demux_common.h:
-	  tests: adaptivedemux: only check for data length after seek
-	  When the test involves doing a seek, only check for data size after
-	  the seek. The final segment range after seek might be different/smaller
-	  than the threshold for doing the seek and doing the check before
-	  seeking would fail.
+	* gst-libs/gst/gl/gstglupload.c:
+	  gl/upload/meta: remove unneeded texture deletion
+	  The textures are managed by the GstGLMemory inside the output buffer.  Freeing
+	  them prematurely may result in a use-after-free.
 
-2016-07-13 23:02:10 +1000  Jan Schmidt <jan@centricular.com>
+2016-05-30 14:10:23 +0200  Aleix Conchillo Flaqué <aleix@oblong.com>
 
-	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
-	* gst-libs/gst/adaptivedemux/gstadaptivedemux.h:
-	  adaptivedemux: Add more safeguards around state changes.
-	  Make state changes of internal elements more reliable by locking
-	  their state, and ensuring that they aren't blocked pushing data
-	  downstream before trying to set their state.
-	  Add a boolean to avoid starting tasks when the main
-	  thread is busy trying to shut the element down.
+	* ext/srtp/gstsrtpenc.c:
+	* ext/srtp/gstsrtpenc.h:
+	  srtpenc: remove get-rollover-counter signal and add stats property
+	  We remove get-rollover-counter signal in favor of the "stats"
+	  property. The "stats" property is a GstStructure with caps
+	  application/x-srtp-encoder-stats that contains an array of
+	  structures with caps application/x-srtp-stream.
+	  Each stream structure contains "ssrc" and "roc" fields.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=733265
 
-2016-07-13 23:02:10 +1000  Jan Schmidt <jan@centricular.com>
+2016-05-25 12:55:36 +0200  Mats Lindestam <matslm@axis.com>
 
-	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
-	  adaptivedemux: More locking/switching fixes
-	  Release the manifest lock when signalling no-more-pads, as
-	  that can call back into adaptivedemux again
-	  Partial cherry-pick of 03f96d
+	* gst/videoparsers/gsth264parse.c:
+	  h264parse: support for handling of config-interval = -1
+	  Added support for handling of config-interval = -1.
+	  config-inteval = -1 represents resending SPS and PPS for each
+	  I-/IDR-frame.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766803
 
-2016-07-26 01:17:11 +1000  Jan Schmidt <jan@centricular.com>
+2016-05-25 12:45:17 +0200  Mats Lindestam <matslm@axis.com>
 
-	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
-	  adaptivedemux: Drop the manifest lock during outbound actions
-	  Drop the manifest lock when performing actions that might
-	  call back into adaptivedemux and trigger deadlocks, such
-	  as adding/removing pads or sending in-band events (EOS).
-	  Unlock the manifest lock when changing the child bin state to
-	  NULL, as it might call back to acquire the manifest lock when
-	  shutting down pads.
-	  Drop the manifest lock while pushing events.
+	* gst/videoparsers/gsth264parse.c:
+	  h264parse: refactored handling of SPS/PPS when pushing frames
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766803
 
-2016-05-18 16:55:38 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+2016-05-25 11:54:55 +0200  Mats Lindestam <matslm@axis.com>
 
-	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
-	  adaptivedemux: fix pending tags leak
-	  https://bugzilla.gnome.org/show_bug.cgi?id=766662
-
-2016-05-09 12:50:47 +0300  Sebastian Dröge <sebastian@centricular.com>
-
-	* sys/applemedia/Makefile.am:
-	  applemedia: Ship all headers in tarballs
-	  Some were missing from noinst_HEADERS.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=766163
-
-2016-06-30 23:06:29 +0200  Sebastian Dröge <sebastian@centricular.com>
-
-	* ext/openh264/gstopenh264enc.cpp:
-	  openh264enc: Use a constant SPS/PPS ID no matter if openh264 older or newer than 1.4 is used
-
-2016-06-30 23:35:33 +0200  Sebastian Dröge <sebastian@centricular.com>
-
-	* ext/openh264/gstopenh264enc.cpp:
-	  openh264enc: Fix initial time-per-frame calculation
-
-2016-06-30 10:33:30 +0200  Sebastian Dröge <sebastian@centricular.com>
-
-	* ext/openh264/gstopenh264enc.cpp:
-	  openh264enc: Remove broken byte-stream to avc conversion and just output byte-stream as generated by the encoder
-	  The byte-stream to avc conversion did not consider NAL sizes bigger than 2^16,
-	  multiple layers, multiple NALs per layer, and various other things. This
-	  caused corrupted streams in higher bitrates and other circumstances.
-	  Let's just forward byte-stream as generated by the encoder and let h264parse
-	  handle conversion to avc if needed. That way we only have to keep around one
-	  version of the conversion and don't have to fix it in multiple places.
-
-2016-06-28 19:26:29 +0300  Sebastian Dröge <sebastian@centricular.com>
-
-	* sys/d3dvideosink/d3dhelpers.c:
-	* sys/d3dvideosink/d3dvideosink.c:
-	  d3dvideosink: Replace some more gst_caps_to_string() with GST_PTR_FORMAT
-	  https://bugzilla.gnome.org/show_bug.cgi?id=768146
-
-2016-06-28 11:50:59 -0400  Jonathan Roy <jroy@adetelgroup.com>
-
-	* sys/d3dvideosink/d3dvideosink.c:
-	  d3dvideosink: leak on caps string
-	  https://bugzilla.gnome.org/show_bug.cgi?id=768146
-
-2016-05-19 11:16:37 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
-
-	* gst-libs/gst/audio/gstaudioaggregator.c:
-	  audioaggregator: fix buffer leak
-	  If the pad was still owning a buffer when being destroyed it was leaked.
-	  Fix a leak with the test_flush_start_flush_stop test.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=766663
-
-2016-06-17 14:58:44 +0200  Michael Olbrich <m.olbrich@pengutronix.de>
-
-	* gst-libs/gst/codecparsers/gsth264parser.c:
-	  h264parse: fix default time_offset_length
-	  The default value for time_offset_length should be 24, see
-	  section E2.2 of the H264 spec.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=767792
-
-2016-06-13 09:20:02 +0300  Sebastian Dröge <sebastian@centricular.com>
-
-	* sys/applemedia/iosassetsrc.m:
-	  iosassetsrc: Print the correct URI if it was rejected
-	  We were printing the previously set URI instead of the new one.
+	* gst/videoparsers/gsth264parse.c:
+	* gst/videoparsers/gsth264parse.h:
+	  h264parse: change "config-interval" property type from uint to int
+	  So we can use -1 as special value like in rtph264pay.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766803
 
 2016-06-13 09:20:22 +0300  Sebastian Dröge <sebastian@centricular.com>
 
@@ -397,24 +4192,1120 @@
 	  ipod-library://item/item.m4a%3Fid%3D3143338395173862951
 	  https://bugzilla.gnome.org/show_bug.cgi?id=767492
 
-2016-06-14 13:48:09 +0800  Haihua Hu <jared.hu@nxp.com>
+2016-06-13 09:20:02 +0300  Sebastian Dröge <sebastian@centricular.com>
 
-	* ext/gl/effects/gstgleffectssources.c:
-	  gleffects: fix little rectangle that appears at the center of squeeze and tunnel effects
-	  These two shader will calculate the vector length and use it as denominator.
-	  But length could be zero which will cause undefine behaviour. Add protection for
-	  this condition
-	  https://bugzilla.gnome.org/show_bug.cgi?id=767635
+	* sys/applemedia/iosassetsrc.m:
+	  iosassetsrc: Print the correct URI if it was rejected
+	  We were printing the previously set URI instead of the new one.
 
-=== release 1.8.2 ===
+2016-06-09 01:20:36 +0200  Sebastian Rasmussen <sebrn@axis.com>
 
-2016-06-09 11:51:42 +0300  Sebastian Dröge <sebastian@centricular.com>
+	* ext/curl/gstcurlsmtpsink.c:
+	  curlsmtpsink: Lock and don't send final boundary upon error
+	  Previously GstCurlSmtpSink could cause the pipeline thread to end up
+	  waiting for a stopped thread to perform work.
+	  The scenario was that the sink could be rendering a buffer and waiting
+	  for the curl transfer thread to have sent the data. As soon as the
+	  transfer thread has copied all data to curl's data buffer in
+	  gst_curl_base_sink_transfer_read_cb() then the render call would stop
+	  waiting and return GST_FLOW_OK. While this takes place the transfer
+	  thread may suffer from an error e.g. due gst_poll_wait() timing out.
+	  This causes the transfer thread to record the error, claim (it is not
+	  really true since there was an error) that the data has been sent and
+	  that a response has been received by trying to signal the pipeline
+	  thread (but this has already stopped waiting). Finally the transfer
+	  thread stops itself. A short while later the pipeline thread may attempt
+	  to push an EOS event into GstCurlSmtpSink. Since there is no check in
+	  gst_curl_smtp_sink_event() to check if the sink has suffered from any
+	  error it may attempt to add a final boundary and ask the, now deceased,
+	  transfer thread to transfer the new data. Next the sink element would
+	  have waited for the transfer to complete (using a different mechanism
+	  than normal transfers through GstCurlBaseSink). In this case there was
+	  an error check to avoid waiting if an error had already been seen.
+	  Finally GstCurlSmtpSink would chain up to GstCurlBaseSink which would
+	  then block waiting for a response (normally this would be prevented by
+	  the transfer thread suffering the error claiming that it had been
+	  received, but GstCurlSmtpSink clobbered this flag after the fact).
+	  Now GstCurlSmtpSink avoids this by locking over the entire event handing
+	  (preventing simultaneous changes to flags by the two threads) and also
+	  by avoiding to initiate transfer of final boundary if an error has
+	  already been seen.
+	  Also add GST_FIXME() for remaining similar issue where the pipeline
+	  thread may block indefinitely waiting for transfer thread to transfer
+	  data but the transfer thread errors out and fails to notify the pipeline
+	  thread that the transfer failed.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767501
 
-	* ChangeLog:
-	* NEWS:
-	* RELEASE:
+2016-06-08 11:32:28 -0400  Aaron Boxer <boxerab@gmail.com>
+
+	* gst/videoparsers/gstjpeg2000parse.c:
+	* gst/videoparsers/gstjpeg2000parse.h:
+	* gst/videoparsers/gstjpeg2000sampling.h:
+	  jpeg2000parse: Require either colorspace or sampling field in sink caps
+	  And always set the sampling field on the src caps, if necessary guessing a
+	  correct value for it from the colorspace field.
+	  Also, did some cleanup: removed sampling enum - redundant.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766236
+
+2016-06-10 11:32:46 +0300  Heinrich Fink <hfink@toolsonair.com>
+
+	* ext/opencv/gstfacedetect.cpp:
+	  facedetect: Fix compiler warning with clang 3.8
+	  Use namespace only after it was actually defined by a header.
+	  gstfacedetect.cpp:79:17: error: using directive refers to implicitly-defined namespace 'std' [-Werror]
+	  using namespace std;
+	  ^
+
+2016-06-06 16:35:15 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: unify exit paths on _start()
+
+2016-06-06 15:31:31 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: use proper acronym for PID (Packet Identifier)
+	  Drop formatting tab from message while at it.
+
+2016-06-06 12:25:22 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: set common PES filter params once and reuse
+	  Avoid setting the same harcoded values over and over again.
+
+2016-06-09 22:01:45 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/dc1394/gstdc1394src.c:
+	  dc1394src: minor clean-up
+	  We always call _parse_caps() with non-NULL out vars.
+
+2016-06-09 22:01:13 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/dc1394/gstdc1394src.c:
+	  dc1394src: fix some more c99-isms
+
+2016-06-09 21:47:05 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* docs/plugins/Makefile.am:
+	  docs: fix for renamed dc1394 source file
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763026
+
+2016-06-07 15:50:50 +0200  Joan Pau Beltran <joanpau.beltran@socib.cat>
+
+	* ext/dc1394/Makefile.am:
+	* ext/dc1394/gstdc1394src.c:
+	* ext/dc1394/gstdc1394src.h:
+	  dc1394src: prefix and file names according to Gstreamer conventions
+	  Replace the type and function prefix to follow the conventions:
+	  - Use `GST_TYPE_DC1394_SRC` instead of `GST_TYPE_DC1394`.
+	  - Use `GstDC1394Src` and `GstDC1394SrcClass` instead of
+	  `GstDc1394` and `GstDc1394Class`.
+	  - Use `gst_dc1394_src` instead of `gst_dc1394`.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763026
+
+2016-05-10 18:30:35 +0200  Joan Pau Beltran <joanpau.beltran@socib.cat>
+
 	* configure.ac:
+	* ext/dc1394/Makefile.am:
+	* ext/dc1394/gstdc1394.c:
+	* ext/dc1394/gstdc1394.h:
+	  dc1394src: port to 1.X
+	  The dc1394src is a PushSrc element for IIDC cameras based on libdc1394.
+	  The implementation from the 0.x series is deffective:
+	  caps negotiation does not work, and some video formats
+	  provided by the camera are not supported.
+	  Refactor the code to port it to 1.X and enhance the support
+	  for the full set of video options of IIDC cameras:
+	  - The IIDC specification includes a set of camera video modes
+	  (video format, frame size, and frame rates).
+	  They do not map perfectly to Gstreamer formats, but those that
+	  do not match are very rare (if used at all by any camera).
+	  In addition, although the specification includes a raw format,
+	  some cameras use mono video formats to capture in Bayer format.
+	  Map corresponding video modes to Gstreamer formats in capabilities,
+	  allowing both gray raw and Bayer video formats for mono video modes.
+	  - The specification includes scalable video modes (Format7),
+	  where the frame size and rate can be set to arbitrary values
+	  (within the limits of the camera and the bus transport).
+	  Allow the use of such mode, using the frame size and rate
+	  from the negotiatied caps, and set the camera frame rate
+	  adjusting the packet size as in:
+	  <http://damien.douxchamps.net/ieee1394/libdc1394/faq/#How_do_I_set_the_frame_rate>
+	  The scalable modes also allow for a custom ROI offset.
+	  Support for it can be easily added later using properties.
+	  - Camera operation using libdc1394 is as follows:
+	  1. Enumerate cameras on the system and open the camera
+	  identified the enumeration index or by a GUID (64bit hex code).
+	  2. Query the video formats supported by the camera.
+	  3. Configure the camera for the desired video format.
+	  4. Setup the capture resources for the configured video format
+	  and start the camera transmission.
+	  5. Capture frames from the camera and release them when not used.
+	  6. Stop the camera transmission and clear the capture resources.
+	  7. Close the camera freeing its resources.
+	  Do steps 2 and 3 when getting and setting the caps respectively.
+	  Ideally 4 and 6 would be done when going from PAUSED to PLAYING
+	  and viceversa, but since caps might not be set yet, the video mode
+	  is not properly configured leaving the camera in a broken state.
+	  Hence, setup capture and start transmission in the set caps method,
+	  and consequently clear the capture and stop the transmission
+	  when going from PAUSED to READY (instead of PLAYING to PAUSED).
+	  Symmetrycally, open the camera when going from READY to PAUSED,
+	  allowing to probe the camera caps in the negotiation stage.
+	  Implement that using the `start` and `stop` methods of `GstBaseSrc`,
+	  instead of the `change-state` method of `GstElement`.
+	  Stop the camera before setting new caps and restarting it again
+	  to handle caps reconfiguration while in PLAYING (it has no effect
+	  if the camera is not started).
+	  - Create buffers copying the bytes of the captured frames.
+	  Alternatively, the buffers could just wrap the bytes of the frames,
+	  releasing the frame in the buffer's destroy notify function,
+	  if all buffers were destroyed before going from PLAYING to PAUSED.
+	  - No timestamp nor offset is set when creating buffers.
+	  Timestamping is delegated to the parent class BaseSrc,
+	  setting `gst_base_src_set_live` TRUE, `gst_base_src_set_format`
+	  with GST_FORMAT_TIME and `gst_base_src_set_do_timestamp`.
+	  Captured frames have a timestamp field with the system time
+	  at the completion of the transmission of the frame,
+	  but it is not sure that this comes from a monotonic clock,
+	  and it seems to be left NULL in Windows.
+	  - Use GUID and unit properties to select the camera to operate on.
+	  The camera number used in version 0.X does not uniquely identify
+	  the device (it depends on the set of cameras currently detected).
+	  Since the GUID is 64bit identifier (same as MAC address),
+	  handle it with a string property with its hexadecimal representation.
+	  For practicality, operate on the first camera available if the GUID
+	  is null (default) and match any camera unit number if unit is -1.
+	  Alternatively, the GUID could be handed with an unsigned 64 bit
+	  integer type property, using `0xffffffffffffffff` as default value
+	  to select the first camera available (it is not a valid GUID value).
+	  - Keep name `GstDc1394` and prefix `gst_dc1394` as in version 0.X,
+	  although `GstDC1394Src` and `gst_dc1394_src` are more descriptive.
+	  - Adjust build files to reenable the compilation of the plugin.
+	  Remove dc1394 from the list of unported plugins in configure.ac.
+	  Add the missing flags and libraries to Makefile.
+	  Use `$()` for variable substitution, as many plugins do,
+	  although other plugins use `@@` instead.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763026
+
+2016-06-08 18:02:32 +0200  Edward Hervey <edward@centricular.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: Move SEEK handling to a separate function
+	  Just for code readability. Doesn't change behaviour
+
+2016-06-07 21:10:04 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* ext/webp/gstwebpdec.c:
+	  webpdec: Wait for segment event before checking it
+	  The heuristic to choose between packetise or not was changed to use the
+	  segment format. The problem is that this change is reading the segment
+	  during the caps event handling. The segment event will only be sent
+	  after. That prevented the decoder to go in packetize mode, and avoid
+	  useless parsing.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=736252
+
+2016-06-07 21:04:21 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst/vmnc/vmncdec.c:
+	  vmncdec: Wait for segment event before checking it
+	  The heuristic to choose between packetise or not was changed to use the
+	  segment format. The problem is that this change is reading the segment
+	  during the caps event handling. The segment event will only be sent
+	  after. That prevented the decoder to go in packetize mode, and avoid
+	  useless parsing.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=736252
+
+2016-06-07 14:15:41 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/openjpeg/gstopenjpegenc.c:
+	  openjpeg: fix builddir != srcdir build, and distcheck
+
+2016-06-01 19:02:33 -0400  Aaron Boxer <boxerab@gmail.com>
+
 	* docs/plugins/gst-plugins-bad-plugins.hierarchy:
+	* docs/plugins/inspect/plugin-videoparsersbad.xml:
+	* gst/videoparsers/Makefile.am:
+	* gst/videoparsers/gstjpeg2000parse.c:
+	* gst/videoparsers/gstjpeg2000parse.h:
+	* gst/videoparsers/gstjpeg2000sampling.h:
+	* gst/videoparsers/plugin.c:
+	  jpeg2000parse: Add JPEG2000 parser element
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766236
+
+2016-06-01 19:01:44 -0400  Aaron Boxer <boxerab@gmail.com>
+
+	* ext/openjpeg/gstopenjpegenc.c:
+	* gst/videoparsers/Makefile.am:
+	* gst/videoparsers/gstjpeg2000sampling.h:
+	  openjpeg: set sampling in the caps
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766236
+
+2016-05-02 17:38:50 +0200  Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+
+	* gst/mpegtsmux/mpegtsmux.c:
+	  mpegtsmux: Set PTS on aligned buffers
+	  This was broken in 09c05df (make "alignment" property more useful for
+	  packetisation).
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765926
+
+2016-06-07 17:22:01 +1000  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/vtdec.c:
+	  vtdec: always drain in ::negotiate
+	  Move calling gst_vtdec_push_frames_if_needed from ::set_format to ::negotiate so
+	  that we always drain even when renegotiation is triggered by downstream.
+
+2016-06-07 16:00:01 +1000  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/vtdec.c:
+	  vtdec: try to preserve downstream caps order
+	  vtdec specifies sysmem; GLMemory as template caps. When negotiating, we used to
+	  call gst_pad_peer_query_caps (..., filter) with our template caps as filter. The
+	  query does gst_caps_intersect (filter, peercaps) internally which gives
+	  precedence to the order of the filter caps. While we want to output sysmem by
+	  default, when negotiating with glimagesink which returns GLMemory; sysmem; we
+	  do want to do GL, so we now query using a NULL filter and intersect the result
+	  with our template caps giving precedence to downstream's caps.
+	  tl;dr: make sure we end up negotiating GLMemory with glimagesink
+
+2016-06-06 14:08:43 -0400  Xavier Claessens <xavier.claessens@collabora.com>
+
+	* sys/androidmedia/gstahcsrc.c:
+	  ahcsrc: Avoid a div by 0 warning
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767302
+
+2016-06-06 12:38:45 -0400  Xavier Claessens <xavier.claessens@collabora.com>
+
+	* sys/androidmedia/gstamcvideoenc.c:
+	  amcvideoenc: Do not call gst_object_unref on GstCaps
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767298
+
+2016-05-19 11:16:50 +0200  Edward Hervey <edward@centricular.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: Set DISCONT on startup, resume and after seeks
+	  Initial buffers after STREAM_START and seeks should always have the
+	  DISCONT flag set.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766650
+
+2015-09-23 02:51:57 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst/mpegtsdemux/tsdemux.c:
+	* gst/mpegtsdemux/tsdemux.h:
+	  tsdemux: Change the pad naming scheme to include a generation ID
+	  A simple fix for the problem of creating new pads with duplicate
+	  names when switching program, easier than the alternative of
+	  trying to work out which pads might persist and manage that.
+	  See https://bugzilla.gnome.org/show_bug.cgi?id=758454
+
+2016-06-06 11:13:00 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/player/gstplayer.c:
+	  player: pause() should not inhibit signals but work exactly like play()
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766607#c23
+
+2016-06-03 15:58:52 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: improve description of PIDs property
+
+2016-06-03 07:11:33 +0200  Edward Hervey <bilboed@bilboed.com>
+
+	* sys/applemedia/Makefile.am:
+	  applemedia: Only use the OpenGL framework on OSX
+	  It's not available on ios (uses OpenGLES already)
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766973
+
+2016-05-17 17:14:49 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst-libs/gst/gl/egl/gstglmemoryegl.c:
+	* gst-libs/gst/gl/gstglbuffer.c:
+	* gst-libs/gst/gl/gstglmemorypbo.c:
+	* gst-libs/gst/video/gstvideoaggregator.c:
+	  gst-libs: gl, video: use MAY_BE_LEAKED flag
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767162
+
+2016-05-18 12:48:48 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* sys/bluez/gsta2dpsink.c:
+	  a2dpsink: unref avdtpsink if state transition failed
+	  If for some reason the avdtpsink element can't go READY then the
+	  gsta2dpsink can't either and so should release the ressources it
+	  allocates when trying to do so.
+	  Fix a leak with the generic/states test.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767161
+
+2016-05-28 21:34:52 +0200  Havard Graff <havard.graff@gmail.com>
+
+	* sys/applemedia/Makefile.am:
+	  applemedia: CGLTexImageIOSurface2D needs the OpenGL framework on OSX
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766973
+
+2016-05-28 21:39:00 +0200  Havard Graff <havard.graff@gmail.com>
+
+	* sys/applemedia/avsamplevideosink.m:
+	  avsamplevideosink: check we are compiling for 10.1 up to 10.4
+	  This API was deprecated in 10.4, so don't use it for 10.5 and onwards.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766973
+
+2016-06-01 13:43:32 +0200  Heinrich Fink <hfink@toolsonair.com>
+
+	* sys/applemedia/vtenc.c:
+	* sys/applemedia/vtenc.h:
+	  applemedia: vtenc: Register a hardware-only vtenc_h264_hw element on OSX
+	  Similar to vtdec_hw, this commit adds a vtenc_h264_hw element that fails
+	  caps negotiation unless a hardware encoder could actually be acquired.
+	  This is useful in situations where a fallback to a software encoder
+	  other than the vtenc_h264 software encoder is desired (e.g. to x264enc).
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767104
+
+2016-06-02 16:30:02 +1000  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/vtdec.c:
+	  vtdec: make vtdec_hw fallback to software on renegotiation
+	  When renegotiating mid stream - for example with variable bitrate
+	  streams - and therefore destroying and recreating VTSessions, the
+	  hw decoder might become temporarily unavailable.
+	  To deal with this and avoid erroring out on bitrate changes,
+	  vtdec_hw now falls back to using the software decoder if the hw
+	  one was available at some point but isn't anymore. At
+	  renegotiation/bitrate change time, it will still retry to open
+	  the hardware one.
+
+2016-06-02 13:10:51 +1000  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/vtdec.c:
+	  vtdec: fix switching from GLMemory to Sysmem
+	  When renegotiating from GLMemory to Sysmem do teardown the texture_cache.
+	  Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=766190
+
+2016-06-02 11:36:57 +1000  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/vtdec.c:
+	  vtdec: optimize renegotiation
+	  ::negotiate can be called several times before the CAPS event is sent downstream
+	  so use the currently configured output state caps instead of the pad current
+	  caps when deciding whether to recreate the VTSession or not.
+	  This leads to creating/destroying less VTSessions which makes renegotiation more
+	  reliable especially when using hw decoding.
+
+2016-06-01 13:52:10 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: remove comment on self-explanatory code
+
+2016-06-01 13:18:21 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: avoid out-bound write on PID filter array
+	  There's no need for an end-of-list marker in the filter
+	  PIDs array if full, as the absolute maximum number of
+	  elements (MAX_FILTERS) is known.
+	  CID #1362441
+
+2016-05-31 20:41:14 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* sys/androidmedia/gstahcsrc.c:
+	  androidmedia: fix error debug message when camera doesn't exist
+	  Makes no sense to include the system error here since errno
+	  will likely not be set and then it says 'system error: success'
+	  which is confusing.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767087
+
+2016-05-31 18:58:43 +0900  Justin Kim <justin.kim@collabora.com>
+
+	* sys/androidmedia/gstahcsrc.c:
+	  ahcsrc: release resources in 'finalize' function
+	  In general, 'dispose' function is used for dropping all references
+	  and 'finalize' is called for releasing instances.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763309
+
+2016-05-25 15:01:31 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst-libs/gst/player/gstplayer.c:
+	* tests/check/libs/player.c:
+	  player: inhibit signals after gst_player_stop() has been called
+	  Also wait for the state change to STOP to have been announced before
+	  destroying the player so it won't appear as leaked by leak detector
+	  tools.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766607
+
+2016-05-25 12:48:13 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tests/check/libs/player.c:
+	  player: handle uri-loaded in test
+	  Had to adapt the existing tests because of this new callback.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766607
+
+2016-05-25 16:57:49 -0700  Scott D Phillips <scott.d.phillips@intel.com>
+
+	* gst/videoparsers/gsth265parse.c:
+	  h265parse: Don't assume contiguous id's in make_codec_data
+	  vps/sps/pps id's are not required to be used contiguously.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766891
+
+2016-05-28 01:22:32 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: add sample ATSC launch line
+
+2016-05-28 21:36:04 +0200  Havard Graff <havard.graff@gmail.com>
+
+	* gst-libs/gst/gl/gstglquery.c:
+	  gl: glquery: cast to silence compiler warning
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766973
+
+2016-05-28 21:35:37 +0200  Havard Graff <havard.graff@gmail.com>
+
+	* ext/gl/gstgltestsrc.h:
+	  gltestsrc: gltestsrc.h already defines GstGLTestSrc
+	  And redefinition is not allowed.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766973
+
+2016-05-27 23:24:54 +0200  Havard Graff <havard.graff@gmail.com>
+
+	* gst-libs/gst/player/gstplayer.c:
+	  player: use correct _NONE enum
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766973
+
+2016-05-28 10:44:04 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst-libs/gst/codecparsers/gsth264parser.c:
+	* gst-libs/gst/codecparsers/gsth264parser.h:
+	  h264parser: maintain minimal ABI compat
+	  Because we can.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=723352
+
+2014-05-22 16:12:01 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/codecparsers/gsth264parser.c:
+	* gst-libs/gst/codecparsers/gsth264parser.h:
+	  h264parser: Remove unused fps_num/fps_den fields
+	  Instead the newly added function should be used to calculate
+	  the framerate properly.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=723352
+
+2016-05-25 10:59:00 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/smoothstreaming/gstmssmanifest.c:
+	  smoothstreaming: update fps calculation for h264 codec parser API changes
+	  Use new gst_h264_video_calculate_framerate() API instead of fps_n/fps_d
+	  fields in SPS struct which are to be removed.
+	  Apparently H264 content in MSS is always non-interlaced/progressive,
+	  so we can just pass 0 for field_pic_flag and don't need to parse any
+	  slice headers first if there's no external signalling. But even if
+	  that's not the case the new code is not worse than the existing code.
+	  https://msdn.microsoft.com/en-us/library/cc189080%28VS.95%29.aspx
+	  https://bugzilla.gnome.org/show_bug.cgi?id=723352
+
+2016-05-26 10:28:14 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: use single marker at end of filtering PID list
+	  Avoids at least ~100 unneeded assignment operations at runtime
+
+2016-05-23 16:31:05 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: simplify reporting of set polarity
+
+2016-05-23 14:41:40 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: fix bandwidth-hz property description
+	  Bandwidth Hz is no longer a DVBT-only property
+
+2016-05-23 14:02:10 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: fix usage of PES & DVR acronyms everywhere
+	  Additionally, improve message on gst_poll_new() failure
+
+2016-05-26 20:16:07 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstgldisplay.c:
+	  gldisplay: always unref the context on a collision
+	  Otherwise we will leak GstGLContext's when adding the same context more than
+	  once.
+	  Fixes a regression caused by 5f9d10f6036068502ad23e1ec86a73e341801ae1 in the
+	  gstglcontext unit test that failed with:
+	  Assertion 'tmp == NULL' failed
+
+2016-05-25 13:38:47 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst-libs/gst/base/gstaggregator.c:
+	  Revert "aggregator: Start the task when linked"
+	  This reverts commit 302580c3815136d29479c3a8cae611d6e2ff3709.
+
+2016-05-20 14:34:37 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* ext/gl/caopengllayersink.h:
+	* ext/gl/caopengllayersink.m:
+	  caopengllayersink: Don't cache buffer pool
+	  Pools cannot be used by the two elements at the same time.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766611
+
+2016-04-13 16:30:28 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst-libs/gst/base/gstaggregator.c:
+	  aggregator: Start the task when linked
+	  Until now we would start the task when the pad is activated. Part of the
+	  activiation concist of testing if the pipeline is live or not.
+	  Unfortunatly, this is often too soon, as it's likely that the pad get
+	  activated before it is fully linked in dynamic pipeline.
+	  Instead, start the task when the first serialized event arrive. This is
+	  a safe moment as we know that the upstream chain is complete and just
+	  like the pad activation, the pads are locked, hence cannot change.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=757548
+
+2016-05-25 09:09:01 -0400  Xavier Claessens <xavier.claessens@collabora.com>
+
+	* gst-libs/gst/gl/win32/gstglcontext_wgl.c:
+	  gl: win32: Add debug category in gstglcontext_wgl.c
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766867
+
+2016-05-16 20:02:28 +0800  Haihua Hu <jared.hu@nxp.com>
+
+	* ext/gl/gstglimagesink.c:
+	* ext/gl/gstglimagesink.h:
+	* gst-libs/gst/gl/gstglutils.c:
+	* gst-libs/gst/gl/gstglutils.h:
+	  glimagesink: support video rotation using transform matrix
+	  Add "rotate-method" to glimagesink and apply transform matrix
+	  to vertex coordinate to control rotation.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765795
+
+2016-05-24 23:39:27 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglbasemixer.c:
+	  glvideomixer: fix race retrieving the GL context from the display
+	  _get_gl_context() can be called concurrently from either propose_allocation() or
+	  decide_allocation().  If it so happens that this happens at the same time,
+	  the check for whether we already had a GL context was outside the lock.  Inside
+	  the lock and loop, the first thing that happens is that we unref the current GL
+	  context (if valid) as if there was a conflict adding it to the display.  If the
+	  timing was unlucky, subsequent use of the GL context would be referencing an
+	  already unreffed GL context object resulting in a critical:
+	  g_object_ref: assertion 'object->ref_count > 0' failed
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766703
+
+2016-05-24 23:38:22 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstgldisplay.c:
+	  gldisplay: add some debugging about retrieving GL contexts
+
+2016-05-25 10:01:38 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/gl/egl/gsteglimage.c:
+	  eglimage: Re-add accidentially removed GST_DEFINE_MINI_OBJECT_TYPE()
+
+2016-05-23 15:24:53 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst-libs/gst/player/gstplayer.c:
+	  player: fix suburi getter debug message
+	  The property is a string, not a boolean.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766607
+
+2016-05-25 09:53:15 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/player/gstplayer.c:
+	  player: Don't set subtitle URI directly but dispatch to the player thread
+	  Otherwise we do state changes and everything in the application thread, which
+	  might block and more important can cause reentrant signals.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766607
+
+2016-05-23 20:11:17 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/gl/egl/gsteglimage.c:
+	  eglimage: Ensure that the debug category is always initalized
+	  Before the initializer was only run if dmabuf support was used.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766794
+
+2016-05-24 23:30:09 +1000  Arjen Veenhuizen <arjen.veenhuizen@tno.nl>
+
+	* ext/gl/gstgltransformation.c:
+	  gltransformation: make the pivot-z property READWRITE
+	  Instead of just being READABLE.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766818
+
+2016-05-23 10:40:58 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* ext/gl/gstgltestsrc.c:
+	  gltestsrc: fix src_impl leak
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766661
+
+2016-05-24 00:55:11 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst-libs/gst/gl/Makefile.am:
+	* gst-libs/gst/insertbin/Makefile.am:
+	* gst-libs/gst/mpegts/Makefile.am:
+	* gst-libs/gst/player/Makefile.am:
+	  g-i: pass compiler env to g-ir-scanner
+	  It's what introspection.mak does as well. Should
+	  fix spurious build failures on gnome-continuous.
+
+2016-05-24 07:17:22 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst/pnm/gstpnmdec.c:
+	* gst/pnm/gstpnmdec.h:
+	  pnmdec: Fix ASCII parsing
+	  Parse gray16 properly in ascii mode, and fix
+	  some bugs around reading data in chunks when
+	  ascii values cross chunk boundaries
+
+2016-05-19 01:28:04 +1000  Jan Schmidt <jan@centricular.com>
+
+	* tests/check/Makefile.am:
+	* tests/check/elements/pnm.c:
+	  pnm: Add a basic unit test
+	  Test that we can run an encode / decode cycle in various
+	  formats without errors
+
+2016-05-19 01:04:36 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst/pnm/gstpnmenc.c:
+	  pnmenc: Make output caps match the srcpad template
+	  Don't output 'image/pnm', which isn't even in the template
+	  caps. Instead, output a mime-type consistent with what we
+	  are encoding.
+
+2016-05-18 17:19:40 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst/pnm/gstpnmenc.c:
+	  pnmenc: Tidy up code, support BE/LE GRAY16 properly
+	  Remove code that dealt with odd strides separately - there's
+	  not really any overhead to just using 1 codepath for both matched
+	  and unmatched stride output.
+	  Add separate codepaths for BE vs LE GRAY16 input so they're
+	  handled properly
+
+2016-05-16 21:22:57 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst/pnm/gstpnmdec.c:
+	* gst/pnm/gstpnmdec.h:
+	  pnmdec: Actually output LE or BE GRAY16 as negotiated
+	  Add codepaths to output GRAY16 in little or big endian
+	  as negotiated.
+	  Move all output format negotiation into a central
+	  function and clean it up
+
+2015-10-22 17:06:01 +0200  Dimitrios Katsaros <patcherwork@gmail.com>
+
+	* gst/pnm/gstpnmdec.c:
+	* gst/pnm/gstpnmdec.h:
+	* gst/pnm/gstpnmutils.c:
+	  pnmdec: Implementation of GRAY16 handling
+	  https://bugzilla.gnome.org/show_bug.cgi?id=757022
+
+2015-10-19 17:15:30 +0200  Dimitrios Katsaros <patcherwork@gmail.com>
+
+	* gst/pnm/gstpnmenc.c:
+	  pnmenc: Implementation of GRAY16 handling
+	  https://bugzilla.gnome.org/show_bug.cgi?id=757022
+
+2016-05-20 19:25:57 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+	* sys/kms/gstkmsbufferpool.c:
+	  kmsbufferpool: error only if no allocator
+	  Do not expect an allocator from the configuration, but expect to have already
+	  one set.
+
+2016-05-15 11:52:55 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+	* sys/kms/gstkmssink.c:
+	  kmssink: frame copy log in performance category
+	  Log the message when the frame is going to be copy (worse case) under the
+	  performance log category.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766466
+
+2016-05-15 11:51:22 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+	* sys/kms/gstkmssink.c:
+	  kmssink: use trace level for buffer render log
+	  Instead of using debug level for logging each buffer rendered, use trace
+	  level.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766466
+
+2016-05-23 17:00:22 +0530  Arun Raghavan <arun@arunraghavan.net>
+
+	* gst-libs/gst/player/gstplayer-media-info.c:
+	  player: Fix documentation for gst_player_video_info_get_framerate()
+	  Document out parameters and fix function name.
+
+2016-05-18 16:00:47 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tests/check/libs/player.c:
+	  player: use gst_check_init() in test
+	  Calling GST_DEBUG() in test rely on the default category to be defined,
+	  which is done in gst_check_init().
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766607
+
+2016-05-20 17:28:52 -0400  Aaron Boxer <boxerab@gmail.com>
+
+	* ext/openjpeg/gstopenjpegenc.c:
+	  openjpegenc: enable MCT for RGB video
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766732
+
+2016-05-20 14:08:03 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: group DVB-T2 substream-id check with its corresponding set_prop()
+
+2016-05-20 13:57:45 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: add DVB-S2 sub-stream ID check
+	  Disable if invalid (> 255) instead of blindy setting this
+	  property regardless of its actual value.
+
+2016-05-20 13:47:06 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: clarify consequence of passing a wrong ID to the substream filter
+
+2016-05-19 17:05:33 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* ext/gl/gltestsrc.c:
+	  gltestsrc: fix shaders ref counting
+	  The gltestsrc element uses two shaders: color_shader and snow_shader.
+	  Those are alternatively assigned to the SrcShader->shader pointer and
+	  their reference was transferred to it. Only the SrcShader->shader was
+	  unreffed (in _src_shader_deinit()) so only one shader was properly
+	  freed, the other one was leaked.
+	  Fixed this by giving an extra ref to SrcShader->shader and unreffing the
+	  2 shaders in _src_smpte_free().
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766661
+
+2016-05-19 16:55:31 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* ext/gl/gstglmosaic.c:
+	  glmosaic: fix shader leak
+	  gst_gl_mosaic_init_shader() is called twice with test_glmosaic so the
+	  first shader was leaked.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766661
+
+2016-05-16 17:11:53 -0400  Xavier Claessens <xavier.claessens@collabora.com>
+
+	* gst-libs/gst/gl/win32/gstglwindow_win32.c:
+	  gl: win32: Unparent internal window before destroying it
+	  For some reason DestroyWindow() deadlock if it's called from
+	  parent window's KeyPress event.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766533
+
+2016-05-16 15:26:53 -0400  Xavier Claessens <xavier.claessens@collabora.com>
+
+	* gst-libs/gst/gl/win32/gstglwindow_win32.c:
+	  gl: win32: Don't steal parent focus when creating internal window
+	  This fix regression introduced by 0acc18c60f6f962cc6553f6047fdb64891bab544.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766520
+
+2016-05-14 11:56:59 +0200  Olivier Crête <olivier.crete@collabora.com>
+
+	* gst-libs/gst/video/gstvideoaggregator.c:
+	  videoaggregator: Don't wait if input buffer is after output
+	  If the input buffer is after the end of the output buffer, then waiting
+	  for more data won't help. We will never get an input buffer for this point.
+	  This fixes compositing of streams from rtspsrc.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766422
+
+2016-05-19 09:25:57 -0700  Martin Kelly <martin@surround.io>
+
+	* sys/androidmedia/gst-android-hardware-camera.c:
+	  ahc: fix potential NULL deref
+	  This bug was found via cppcheck static analysis.
+	  If android.hardware.Camera.getParameters returns NULL, then object will
+	  be NULL, and we won't allocate params. This means that the GST_DEBUG
+	  statement referencing params->object will be invalid. Fix this by
+	  exiting early if android.hardware.Camera.getParameters returns NULL.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766638
+
+2016-05-19 11:33:52 -0700  Martin Kelly <martin@surround.io>
+
+	* sys/androidmedia/gstahcsrc.c:
+	  ahc: fix typo in doc blurb
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766679
+
+2016-05-18 16:55:38 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: fix pending tags leak
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766662
+
+2016-05-18 12:30:05 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* sys/kms/gstkmssink.c:
+	  kmssink: chain up finalize method
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766597
+
+2016-05-18 12:33:51 -0700  Martin Kelly <martin@surround.io>
+
+	* tests/examples/opencv/gstfacedetect_test.c:
+	* tests/examples/opencv/gsthanddetect_test.c:
+	  examples: opencv: typo fix
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766639
+
+2016-05-18 21:29:15 -0700  Stefan Sauer <ensonic@users.sf.net>
+
+	* ext/lv2/README:
+	* ext/lv2/gstlv2.c:
+	* ext/lv2/gstlv2.h:
+	* ext/lv2/gstlv2filter.c:
+	* ext/lv2/gstlv2source.c:
+	* ext/lv2/gstlv2utils.c:
+	* ext/lv2/gstlv2utils.h:
+	  lv2: support CVPorts
+	  CVPorts are ports that take a buffer. For now we just fill the buffers with
+	  the control value.
+
+2016-05-18 21:26:50 -0700  Stefan Sauer <ensonic@users.sf.net>
+
+	* ext/lv2/gstlv2filter.c:
+	* ext/lv2/gstlv2source.c:
+	  lv2: use _OBJECT log variants and lower log level when processing
+
+2016-05-17 14:33:04 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: move ISDB-T bandwidth check to _is_valid_bandwidth()
+	  Allows test to be used for delivery system auto-detection.
+	  Additionally, add 0 (auto) as valid value.
+
+2016-05-17 14:19:30 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: add '0' as a valid value for bandwidth
+	  Underlying API considers this the BANDWIDTH_HZ equivalent
+	  to the old BANDWIDTH_AUTO for BANDWIDTH.
+
+2016-05-17 13:53:54 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: factor out and reuse DVB-T/T2 bandwidth checks
+	  Use new utility function as an additional check for delivery
+	  system auto-detection.
+
+2016-05-17 12:06:45 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/parsechannels.c:
+	  dvb/parsechannels: recognize additional bandwidths at zap parsing
+	  Previously ignored 1.712, 5 and 10 MHz values are also valid
+
+2016-05-16 12:27:50 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* docs/libs/gst-plugins-bad-libs-sections.txt:
+	* gst-libs/gst/video/gstvideoaggregator.c:
+	* gst-libs/gst/video/gstvideoaggregator.h:
+	* gst-libs/gst/video/gstvideoaggregatorpad.h:
+	  videoaggregator: canonicalise function names
+	  Had to be done at some point:
+	  gst_videoaggregator_* -> gst_video_aggregator_*
+	  Also fix up some function names with typos.
+
+2016-05-15 23:31:33 -0700  Stefan Sauer <ensonic@users.sf.net>
+
+	* ext/lv2/gstlv2.c:
+	* ext/lv2/gstlv2.h:
+	  lv2: cleanup the predicates
+	  Use the defines from the headers and get rid of our own namespace defines.
+	  Replace the 'role' prop with 'designation'.
+
+2016-05-15 23:27:22 -0700  Stefan Sauer <ensonic@users.sf.net>
+
+	* ext/lv2/gstlv2utils.c:
+	  lv2: tweak enum logging
+	  Log more details when we find a bad scalepoint and downgrade the logging of the
+	  good enum valzes.
+
+2016-05-15 22:05:43 -0700  Stefan Sauer <ensonic@users.sf.net>
+
+	* ext/lv2/README:
+	* ext/lv2/gstlv2utils.c:
+	  lv2: generate enums from scalepoints
+	  Plugins can provide a set of named values for a control port. Ideally only those
+	  values are set for the property. Check if all scalepoints are integers and if so
+	  generate an enum type.
+
+2016-05-15 19:45:26 -0700  Stefan Sauer <ensonic@users.sf.net>
+
+	* ext/lv2/gstlv2utils.c:
+	  lv2: reduce log spam for property bounds
+	  Only complain about bad bounds, if the plugin actually set those. Otherwise
+	  silently adjust our defaults.
+
+2016-05-15 17:58:51 -0700  Stefan Sauer <ensonic@users.sf.net>
+
+	* ext/lv2/gstlv2.c:
+	* ext/lv2/gstlv2.h:
+	  lv2: remove lv2_symbol_pred
+	  We're not actually using it.
+
+2016-05-15 17:54:06 -0700  Stefan Sauer <ensonic@users.sf.net>
+
+	* ext/lv2/gstlv2source.c:
+	  lv2: remove leftover FIME
+
+2016-05-15 00:41:12 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: special case detection when DVB-T and T2 seem valid
+	  There is no way to tell one over the other when parameters
+	  seem valid for DVB-T and DVB-T2 and the adapter supports
+	  both. Reason to go with the former here is that, from
+	  experience, most DVB-T2 channels out there seem to use
+	  parameters that are not valid for DVB-T, like QAM_256
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765731
+
+2016-05-14 23:32:49 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: add transmission mode check for DTMB
+
+2016-05-13 01:54:56 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/parsechannels.c:
+	  dvb/parsechannels: use proper fe_spectral_inversion enum identifiers
+
+2016-05-13 01:25:08 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: explicitly disable stream filter for invalid ids
+
+2016-05-13 00:50:45 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/parsechannels.c:
+	  dvb/parsechannels: do not assume DVB-T from zap file alone
+	  DVB-T/T2 have the same number of fields so we were
+	  wrongly assuming DVB-T for DVB-T2 broadcasts. Not
+	  setting the delivery system here allows for dvbsrc
+	  to make an informed guess based on the channel
+	  parameters.
+
+2016-05-13 00:12:33 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: consider transmission mode for delsys autodetection
+
+2016-05-13 00:04:08 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: factor out transmission mode check against delsys
+
+2016-05-12 16:43:09 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: improve delivery system autodetection
+
+2016-05-12 14:12:09 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: add modulation checks for DVB-T and T2
+
+2016-05-15 14:46:40 -0700  Stefan Sauer <ensonic@users.sf.net>
+
+	* ext/ladspa/gstladspa.c:
+	  ladspa: use _OBJECT log variants for plugin_init
+	  Also trim leading whitespae.
+
+2016-05-15 14:45:15 -0700  Stefan Sauer <ensonic@users.sf.net>
+
+	* ext/lv2/README:
+	* ext/lv2/gstlv2.c:
+	* ext/lv2/gstlv2.h:
+	* ext/lv2/gstlv2filter.c:
+	* ext/lv2/gstlv2source.c:
+	* ext/lv2/gstlv2utils.c:
+	* ext/lv2/gstlv2utils.h:
+	  lv2: add registry caching
+	  Use the plugin_cache extra data to avoid introspecting over and over again.
+
+2016-05-14 12:35:15 -0700  Stefan Sauer <ensonic@users.sf.net>
+
+	* ext/lv2/README:
+	* ext/lv2/gstlv2utils.c:
+	  lv2: implemnt the map-extension
+	  This is the most used one and at the same time easy to implement sing QGQuark.
+
+2016-05-14 12:34:10 -0700  Stefan Sauer <ensonic@users.sf.net>
+
+	* ext/lv2/gstlv2.c:
+	* ext/lv2/gstlv2utils.c:
+	* ext/lv2/gstlv2utils.h:
+	  lvs: add require_feature checks
+	  Plugins can report what host features they need. Since we start to implement host feature
+	  check which plugins we can no suuport.
+
+2016-05-15 14:34:33 +0200  Edward Hervey <bilboed@bilboed.com>
+
+	* gst/compositor/compositor.c:
+	  compositor: Check if we get a valid display ratio
+	  As is done everywhere else, and avoids setting bogus values
+	  And remove useless *<val> checks (we always provide valid values and
+	  it's an internal function).
+	  CID #1320700
+
+2016-05-15 14:16:55 +0200  Edward Hervey <bilboed@bilboed.com>
+
+	* ext/rtmp/gstrtmpsrc.c:
+	  rtmpsrc: Remove dead assignments
+	  * read is only used within the while loop
+	  * todo and bsize only need to be assigned once
+
+2016-05-15 15:11:10 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/player/gstplayer.c:
+	  player: Add uri-loaded signal that is fired whenever a new URI is actually loaded
+	  This allows knowing the "boundary" from which on all following signals are for
+	  the new URI.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766062
+
+2016-05-14 17:05:45 +0100  Matthew Waters <matthew@centricular.com>
+
+	* ext/opencv/gstfacedetect.cpp:
+	  opencv/facedetect: fix the build with opencv 3.1.0
+	  - add using namespace std; for std::vector
+	  - use the cpp header imgproc.hpp file for the cv::ellipse function instead of
+	  the C header
+	  - Mat no longer takes IplImage in it's constructors, use the cvarrtomat()
+	  function instead.
+	  Fixes a couple of build errors:
+	  gstfacedetect.cpp:140:30: error: ‘vector’ does not name a type
+	  structure_and_message (const vector < Rect > &rectangles, const gchar * name,
+	  ^~~~~~
+	  gstfacedetect.cpp:140:37: error: expected ‘,’ or ‘...’ before ‘<’ token
+	  structure_and_message (const vector < Rect > &rectangles, const gchar * name,
+	  ^
+	  gstfacedetect.cpp: In function ‘void structure_and_message(int)’:
+	  gstfacedetect.cpp:143:13: error: ‘rectangles’ was not declared in this scope
+	  Rect sr = rectangles[0];
+	  [...]
+	  gstfacedetect.cpp: In function ‘void
+	  gst_face_detect_run_detector(GstFaceDetect*, cv::CascadeClassifier*, gint, gint,
+	  cv::Rect, std::vector<cv::Rect_<int> >&)’:
+	  gstfacedetect.cpp:562:31: error: no matching function for call to
+	  ‘cv::Mat::Mat(IplImage*&, cv::Rect&)’
+	  Mat roi (filter->cvGray, r);
+	  [...]
+	  gstfacedetect.cpp: In function ‘GstFlowReturn
+	  gst_face_detect_transform_ip(GstOpencvVideoFilter*, GstBuffer*, IplImage*)’:
+	  gstfacedetect.cpp:594:44: error: no matching function for call to
+	  ‘cv::Mat::Mat(cv::Mat, bool)’
+	  Mat mtxOrg (cv::cvarrToMat (img), false);
+	  [...]
+	  gstfacedetect.cpp:734:79: error: ‘ellipse’ was not declared in this scope
+	  ellipse (mtxOrg, center, axes, 0, 0, 360, Scalar (cr, cg, cb), 3, 8,
+	  0);
+
+2016-05-15 11:20:21 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* Makefile.am:
+	  build: add removed example dir to CRUFT_DIRS
+
+2016-05-15 13:33:53 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* docs/plugins/gst-plugins-bad-plugins.args:
+	* docs/plugins/gst-plugins-bad-plugins.hierarchy:
+	* docs/plugins/gst-plugins-bad-plugins.interfaces:
 	* docs/plugins/inspect/plugin-accurip.xml:
 	* docs/plugins/inspect/plugin-adpcmdec.xml:
 	* docs/plugins/inspect/plugin-adpcmenc.xml:
@@ -462,8 +5353,10 @@
 	* docs/plugins/inspect/plugin-mpegtsdemux.xml:
 	* docs/plugins/inspect/plugin-mpegtsmux.xml:
 	* docs/plugins/inspect/plugin-mplex.xml:
+	* docs/plugins/inspect/plugin-neon.xml:
 	* docs/plugins/inspect/plugin-ofa.xml:
 	* docs/plugins/inspect/plugin-openal.xml:
+	* docs/plugins/inspect/plugin-opencv.xml:
 	* docs/plugins/inspect/plugin-pcapparse.xml:
 	* docs/plugins/inspect/plugin-pnm.xml:
 	* docs/plugins/inspect/plugin-rawparse.xml:
@@ -485,239 +5378,65 @@
 	* docs/plugins/inspect/plugin-voamrwbenc.xml:
 	* docs/plugins/inspect/plugin-waylandsink.xml:
 	* docs/plugins/inspect/plugin-y4mdec.xml:
-	* docs/plugins/inspect/plugin-zbar.xml:
-	* gst-plugins-bad.doap:
-	* win32/common/config.h:
-	  Release 1.8.2
+	  docs: Update for git master
 
-2016-06-09 11:22:49 +0300  Sebastian Dröge <sebastian@centricular.com>
+2016-03-04 22:10:47 +0100  Carlos Rafael Giani <dv@pseudoterminal.org>
 
-	* po/af.po:
-	* po/az.po:
-	* po/bg.po:
-	* po/ca.po:
-	* po/cs.po:
-	* po/da.po:
-	* po/de.po:
-	* po/el.po:
-	* po/en_GB.po:
-	* po/eo.po:
-	* po/es.po:
-	* po/eu.po:
-	* po/fi.po:
-	* po/fr.po:
-	* po/gl.po:
-	* po/hr.po:
-	* po/hu.po:
-	* po/id.po:
-	* po/it.po:
-	* po/ja.po:
-	* po/ky.po:
-	* po/lt.po:
-	* po/lv.po:
-	* po/mt.po:
-	* po/nb.po:
-	* po/nl.po:
-	* po/or.po:
-	* po/pl.po:
-	* po/pt_BR.po:
-	* po/ro.po:
-	* po/ru.po:
-	* po/sk.po:
-	* po/sl.po:
-	* po/sq.po:
-	* po/sr.po:
-	* po/sv.po:
-	* po/tr.po:
-	* po/uk.po:
-	* po/vi.po:
-	* po/zh_CN.po:
-	  Update .po files
+	* gst/rawparse/Makefile.am:
+	* gst/rawparse/gstaudioparse.c:
+	* gst/rawparse/gstunalignedaudioparse.c:
+	* gst/rawparse/gstunalignedaudioparse.h:
+	* gst/rawparse/plugin.c:
+	* gst/rawparse/unalignedaudio.h:
+	  rawparse: Add unaligned raw audio parsing to audioparse and add new element
+	  This helps in cases where raw audio data is being delivered, but the
+	  buffers do not come in sample aligned sizes. The new unalignedaudioparse
+	  bin can be autoplugged and configures an internal audioparse element to
+	  align the data. audioparse itself gets support for audio/x-unaligned-raw
+	  input caps; the output caps then contain the same information, except that
+	  the name is changed to audio/x-raw (since audioparse aligns the data).
+	  This ensures that souphttpsrc ! audioparse still works.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=689460
 
-2016-06-09 10:06:02 +0300  Sebastian Dröge <sebastian@centricular.com>
+2016-05-15 13:14:41 +0300  Matthew Waters <matthew@centricular.com>
 
-	* po/hr.po:
-	* po/pt_BR.po:
-	* po/sk.po:
-	  po: Update translations
+	* gst-libs/gst/gl/gstgldisplay.c:
+	  gldisplay: demote no platform display debug to info
+	  Avoids confusing everyone with a warning that's not always fatal.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=746933
 
-2016-06-07 21:10:04 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+2016-05-15 12:31:38 +0300  Matthew Waters <matthew@centricular.com>
 
-	* ext/webp/gstwebpdec.c:
-	  webpdec: Wait for segment event before checking it
-	  The heuristic to choose between packetise or not was changed to use the
-	  segment format. The problem is that this change is reading the segment
-	  during the caps event handling. The segment event will only be sent
-	  after. That prevented the decoder to go in packetize mode, and avoid
-	  useless parsing.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=736252
+	* .gitignore:
+	  .gitignore: remove non-existent directory
+	  Partially reverts cdf91c455d4057a9d234766510bd2e8a44e1ed05
 
-2016-06-07 21:04:21 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+2016-05-15 19:05:48 +1000  Jan Schmidt <jan@centricular.com>
 
-	* gst/vmnc/vmncdec.c:
-	  vmncdec: Wait for segment event before checking it
-	  The heuristic to choose between packetise or not was changed to use the
-	  segment format. The problem is that this change is reading the segment
-	  during the caps event handling. The segment event will only be sent
-	  after. That prevented the decoder to go in packetize mode, and avoid
-	  useless parsing.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=736252
+	* gst/mpegdemux/gstmpegdemux.c:
+	  mpegdemux: Handle system header when scanning for timestamps.
+	  When scanning for SCR / PTS / DTS, handle the case where
+	  the pack header is followed by the optional system header,
+	  so we can correctly collect timestamps in such cases.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=623860
 
-2016-05-02 17:38:50 +0200  Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+2016-05-15 19:04:20 +1000  Jan Schmidt <jan@centricular.com>
 
-	* gst/mpegtsmux/mpegtsmux.c:
-	  mpegtsmux: Set PTS on aligned buffers
-	  This was broken in 09c05df (make "alignment" property more useful for
-	  packetisation).
-	  https://bugzilla.gnome.org/show_bug.cgi?id=765926
+	* gst/mpegdemux/gstmpegdemux.c:
+	  mpegdemux: Fix backward timestamp scan on small files.
+	  When the file size is smaller than the configured 4MB scan
+	  limit for timestamps, don't underflow the guard variable
+	  when checking if it's time to stop.
+	  Limit the backward SCR scan to the same 4MB as the PTS scan.
+	  Add some comments.
 
-2016-05-20 14:34:37 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+2016-05-13 13:27:37 +0100  Tim-Philipp Müller <tim@centricular.com>
 
-	* ext/gl/caopengllayersink.h:
-	* ext/gl/caopengllayersink.m:
-	  caopengllayersink: Don't cache buffer pool
-	  Pools cannot be used by the two elements at the same time.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=766611
-
-2016-06-07 17:22:01 +1000  Alessandro Decina <alessandro.d@gmail.com>
-
-	* sys/applemedia/vtdec.c:
-	  vtdec: always drain in ::negotiate
-	  Move calling gst_vtdec_push_frames_if_needed from ::set_format to ::negotiate so
-	  that we always drain even when renegotiation is triggered by downstream.
-
-2016-06-07 16:00:01 +1000  Alessandro Decina <alessandro.d@gmail.com>
-
-	* sys/applemedia/vtdec.c:
-	  vtdec: try to preserve downstream caps order
-	  vtdec specifies sysmem; GLMemory as template caps. When negotiating, we used to
-	  call gst_pad_peer_query_caps (..., filter) with our template caps as filter. The
-	  query does gst_caps_intersect (filter, peercaps) internally which gives
-	  precedence to the order of the filter caps. While we want to output sysmem by
-	  default, when negotiating with glimagesink which returns GLMemory; sysmem; we
-	  do want to do GL, so we now query using a NULL filter and intersect the result
-	  with our template caps giving precedence to downstream's caps.
-	  tl;dr: make sure we end up negotiating GLMemory with glimagesink
-
-2016-06-06 12:38:45 -0400  Xavier Claessens <xavier.claessens@collabora.com>
-
-	* sys/androidmedia/gstamcvideoenc.c:
-	  amcvideoenc: Do not call gst_object_unref on GstCaps
-	  https://bugzilla.gnome.org/show_bug.cgi?id=767298
-
-2016-06-06 14:08:43 -0400  Xavier Claessens <xavier.claessens@collabora.com>
-
-	* sys/androidmedia/gstahcsrc.c:
-	  ahcsrc: Avoid a div by 0 warning
-	  https://bugzilla.gnome.org/show_bug.cgi?id=767302
-
-2016-06-02 16:30:02 +1000  Alessandro Decina <alessandro.d@gmail.com>
-
-	* sys/applemedia/vtdec.c:
-	  vtdec: make vtdec_hw fallback to software on renegotiation
-	  When renegotiating mid stream - for example with variable bitrate
-	  streams - and therefore destroying and recreating VTSessions, the
-	  hw decoder might become temporarily unavailable.
-	  To deal with this and avoid erroring out on bitrate changes,
-	  vtdec_hw now falls back to using the software decoder if the hw
-	  one was available at some point but isn't anymore. At
-	  renegotiation/bitrate change time, it will still retry to open
-	  the hardware one.
-
-2016-06-02 13:10:51 +1000  Alessandro Decina <alessandro.d@gmail.com>
-
-	* sys/applemedia/vtdec.c:
-	  vtdec: fix switching from GLMemory to Sysmem
-	  When renegotiating from GLMemory to Sysmem do teardown the texture_cache.
-	  Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=766190
-
-2016-06-02 11:36:57 +1000  Alessandro Decina <alessandro.d@gmail.com>
-
-	* sys/applemedia/vtdec.c:
-	  vtdec: optimize renegotiation
-	  ::negotiate can be called several times before the CAPS event is sent downstream
-	  so use the currently configured output state caps instead of the pad current
-	  caps when deciding whether to recreate the VTSession or not.
-	  This leads to creating/destroying less VTSessions which makes renegotiation more
-	  reliable especially when using hw decoding.
-
-2016-05-23 15:24:53 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
-
-	* gst-libs/gst/player/gstplayer.c:
-	  player: fix suburi getter debug message
-	  The property is a string, not a boolean.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=766607
-
-2016-05-25 09:53:15 +0300  Sebastian Dröge <sebastian@centricular.com>
-
-	* gst-libs/gst/player/gstplayer.c:
-	  player: Don't set subtitle URI directly but dispatch to the player thread
-	  Otherwise we do state changes and everything in the application thread, which
-	  might block and more important can cause reentrant signals.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=766607
-
-2016-05-23 17:00:22 +0530  Arun Raghavan <arun@arunraghavan.net>
-
-	* gst-libs/gst/player/gstplayer-media-info.c:
-	  player: Fix documentation for gst_player_video_info_get_framerate()
-	  Document out parameters and fix function name.
-
-2016-05-18 16:00:47 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
-
-	* tests/check/libs/player.c:
-	  player: use gst_check_init() in test
-	  Calling GST_DEBUG() in test rely on the default category to be defined,
-	  which is done in gst_check_init().
-	  https://bugzilla.gnome.org/show_bug.cgi?id=766607
-
-2016-05-20 17:28:52 -0400  Aaron Boxer <boxerab@gmail.com>
-
-	* ext/openjpeg/gstopenjpegenc.c:
-	  openjpegenc: enable MCT for RGB video
-	  https://bugzilla.gnome.org/show_bug.cgi?id=766732
-
-2016-05-19 09:25:57 -0700  Martin Kelly <martin@surround.io>
-
-	* sys/androidmedia/gst-android-hardware-camera.c:
-	  ahc: fix potential NULL deref
-	  This bug was found via cppcheck static analysis.
-	  If android.hardware.Camera.getParameters returns NULL, then object will
-	  be NULL, and we won't allocate params. This means that the GST_DEBUG
-	  statement referencing params->object will be invalid. Fix this by
-	  exiting early if android.hardware.Camera.getParameters returns NULL.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=766638
-
-2016-05-19 16:55:31 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
-
-	* ext/gl/gstglmosaic.c:
-	  glmosaic: fix shader leak
-	  gst_gl_mosaic_init_shader() is called twice with test_glmosaic so the
-	  first shader was leaked.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=766661
-
-2016-05-16 17:11:53 -0400  Xavier Claessens <xavier.claessens@collabora.com>
-
-	* gst-libs/gst/gl/win32/gstglwindow_win32.c:
-	  gl: win32: Unparent internal window before destroying it
-	  For some reason DestroyWindow() deadlock if it's called from
-	  parent window's KeyPress event.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=766533
-
-2016-05-16 15:26:53 -0400  Xavier Claessens <xavier.claessens@collabora.com>
-
-	* gst-libs/gst/gl/win32/gstglwindow_win32.c:
-	  gl: win32: Don't steal parent focus when creating internal window
-	  This fix regression introduced by 0acc18c60f6f962cc6553f6047fdb64891bab544.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=766520
-
-2016-05-14 11:56:59 +0200  Olivier Crête <olivier.crete@collabora.com>
-
-	* gst-libs/gst/video/gstvideoaggregator.c:
-	  videoaggregator: Don't wait if input buffer is after output
-	  If the input buffer is after the end of the output buffer, then waiting
-	  for more data won't help. We will never get an input buffer for this point.
-	  This fixes compositing of streams from rtspsrc.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=766422
+	* gst/mpegdemux/gstmpegdemux.c:
+	  mpegdemux: don't do bogus adjustments on seek if we have no first_pts
+	  Fixes bogus segment and gap events with start=GST_CLOCK_TIME_NONE if
+	  we failed to find a first_pts.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=623860
 
 2016-05-14 16:59:14 +0300  Alex-P. Natsios <drakevr@2f30.org>
 
@@ -728,6 +5447,83 @@
 	  customarily find there.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=766441
 
+2016-05-14 16:32:06 +0300  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstgltransformation.c:
+	* ext/gl/gstgltransformation.h:
+	  gltransformation: use the affine transformation meta if available downstream
+	  We can avoid a render pass if downstream supports the affine transformation meta
+	  and increase the performance of some pipelines involving gltransformation.
+	  Implemented by checking for the affine transformation in the allocation query
+	  from downstream and combining our matrix with that of upstream's (or creating
+	  our own).
+
+2016-05-14 16:27:26 +0300  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglimagesink.c:
+	* ext/gl/gstglvideomixer.c:
+	* gst-libs/gst/gl/gstglshaderstrings.c:
+	* gst-libs/gst/gl/gstglshaderstrings.h:
+	* gst-libs/gst/gl/gstglutils.c:
+	* gst-libs/gst/gl/gstglutils.h:
+	* gst-libs/gst/gl/gstglviewconvert.c:
+	  gl: take the affine transformation in NDC
+	  Provide a function to get the affine matrix in the meta in terms of NDC
+	  coordinates and use as a standard opengl matrix.
+	  Also advertise support for the affine transformation meta in the allocation
+	  query.
+
+2016-05-14 15:50:57 +0300  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglbasemixer.c:
+	* ext/gl/gstglbasemixer.h:
+	  glbasemixer: actually attempt to propose an allocation upstream
+	  We were always failing the allocation query as a flag was never being set to
+	  signal a successful negotiation.  Fix by setting the required flag on a
+	  successful caps event from upstream.
+
+2016-05-12 10:52:06 -0700  Stefan Sauer <ensonic@users.sf.net>
+
+	* ext/lv2/Makefile.am:
+	* ext/lv2/README:
+	* ext/lv2/gstlv2.c:
+	* ext/lv2/gstlv2.h:
+	* ext/lv2/gstlv2source.c:
+	  lv2: add a source plugin
+	  Update the readme with a working example and list what feature are supported.
+
+2016-05-11 23:12:07 -0700  Stefan Sauer <ensonic@users.sf.net>
+
+	* ext/lv2/gstlv2utils.c:
+	  lv2: add support for host features
+	  Implement a log handler as the first one.
+
+2016-05-13 15:24:35 +0300  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkswapper.c:
+	  vkswapper: check the error of the presentation for out of date
+	  allows us to resize the swapchain correctly.
+
+2016-05-12 19:44:26 +0100  Damian Ziobro <damian@xmementoit.com>
+
+	* gst/mpegtsdemux/mpegtsbase.h:
+	  mpegtsbase: remove unused variables: upstream_live and queried_latency
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766343
+
+2016-05-11 15:45:47 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: improve debug output from _open_frontend()
+	  * Clarify message on delsys info gathering
+	  * Combine redundant INFO/DEBUG pair
+
+2016-05-11 15:26:24 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: fix invalid dereference of delsys data
+	  Use GPOINTER_TO_INT to read GINT_TO_POINTER stored
+	  data.
+
 2016-05-11 23:48:21 +0300  Sebastian Dröge <sebastian@centricular.com>
 
 	* sys/androidmedia/gstamc.c:
@@ -736,6 +5532,59 @@
 	  srcpad caps, and thus fail.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=766289
 
+2016-05-11 16:42:35 +0200  Edward Hervey <edward@centricular.com>
+
+	* sys/decklink/gstdecklinkvideosrc.cpp:
+	  decklinkvideosrc: Fix previous commit
+	  The frames queue might return nothing (be empty) if we're flushing.
+	  Move the assertion to after the flushing check
+
+2016-05-10 22:04:48 -0700  Stefan Sauer <ensonic@users.sf.net>
+
+	* ext/lv2/gstlv2.c:
+	  lv2: skip plugins that need host features
+	  We haven't implemented this yet and those plugin would fail when we instantiate
+	  them.
+
+2016-05-10 21:11:41 -0700  Stefan Sauer <ensonic@users.sf.net>
+
+	* ext/lv2/gstlv2utils.c:
+	  lv2: add classification from metadata
+	  This helps apps to structure the element collection.
+
+2016-04-08 07:53:44 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* ext/lv2/Makefile.am:
+	* ext/lv2/gstlv2filter.c:
+	* ext/lv2/gstlv2utils.c:
+	* ext/lv2/gstlv2utils.h:
+	  lv2: extract helper code into lv2utils
+	  This is a preparaton for adding lv2-sources and -sinks.
+
+2016-05-10 12:24:03 -0700  Stefan Sauer <ensonic@users.sf.net>
+
+	* ext/ladspa/gstladspasource.c:
+	* ext/ladspa/gstladspautils.c:
+	  ladspa: code cleanup
+	  Whitespace cleanup and unify codeing style.
+
+2016-05-10 12:22:04 -0700  Stefan Sauer <ensonic@users.sf.net>
+
+	* ext/ladspa/gstladspautils.c:
+	  ladspa: simplify the code
+	  Remove a local var and just use the parameter value.
+
+2016-05-10 18:14:36 +0200  Philippe Normand <philn@igalia.com>
+
+	* sys/applemedia/corevideobuffer.c:
+	  applemedia: fix core_video_meta init registration
+
+2016-05-10 16:46:43 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* .gitignore:
+	  .gitignore: Ignore tests/examples/gl/gtk generated files
+	  And another test binary.
+
 2016-05-10 16:24:08 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
 
 	* configure.ac:
@@ -749,16 +5598,106 @@
 	  distros should be shipping it by now.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=766213
 
-2016-05-04 11:30:11 +1000  Alessandro Decina <alessandro.d@gmail.com>
+2016-05-10 09:40:38 +0100  Tim-Philipp Müller <tim@centricular.com>
 
-	* sys/applemedia/vtdec.c:
-	  applemedia: vtdec: output sysmem by default
+	* sys/decklink/gstdecklinkvideosrc.cpp:
+	  decklinkvideosrc: fix use-after-free in error code path
 
-2016-05-05 18:00:25 +1000  Matthew Waters <matthew@centricular.com>
+2016-05-10 09:38:28 +0100  Tim-Philipp Müller <tim@centricular.com>
 
-	* ext/vulkan/vkswapper.c:
-	  vkswapper: use gst_video_sink_center_rect for positioning the video
-	  Don't try to reimplement it badly.
+	* sys/decklink/gstdecklinkvideosrc.cpp:
+	  decklinkvideosrc: remove unnecessary checks for non-NULL frame
+	  We can't get a NULL frame here.
+	  CID 1359923
+
+2016-05-09 15:23:32 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: abort at open frontend failure
+
+2016-05-09 12:50:47 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/applemedia/Makefile.am:
+	  applemedia: Ship all headers in tarballs
+	  Some were missing from noinst_HEADERS.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766163
+
+2016-05-04 16:32:19 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	* sys/dvb/gstdvbsrc.h:
+	  dvbsrc: smarten-up delsys autodetection logic
+	  When there's no explicit delivery system information
+	  for a channel in the channel configuration file and
+	  the user hasn't selected one via setting the delsys
+	  property, we *guessed* it by selecting the last
+	  supported delsys reported by the driver. This change
+	  provides the basis for smarter delsys auto detection
+	  and implements a rule for DVB-T2. Rules for other
+	  delivery systems can be added in _guess_delsys() in
+	  a similar way.
+	  Additionally: Store list of adapter-supported
+	  delivery systems instead of querying the driver each
+	  time this information is needed.
+	  Related to:
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765731
+
+2016-05-03 15:00:55 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: remove remaining polling logic from _tune_fe()
+	  No need to do any polling here.
+
+2016-05-06 10:51:39 +0200  Carlos Garcia Campos <cgarcia@igalia.com>
+
+	* gst-libs/gst/uridownloader/gsturidownloader.c:
+	  uridownloader: Take the ownership of the src element
+	  The URI downloader is creating the source element with
+	  gst_element_factory_make() that returns a floating reference that nobody
+	  is consuming. This is causing problems in WebKit, where the smart
+	  pointers used to take references of the source elment get confused and
+	  end up consuming the floating reference and then releasing the element,
+	  which usually crashes because the URI downloader still tries to use its
+	  src element. See https://bugs.webkit.org/show_bug.cgi?id=144040.
+	  This commit adds two helper functions to ensure and destroy the source
+	  element, to make the code simpler and less error prone. The ensure
+	  method takes care of checking if we can reuse the existing one or we
+	  need to create a new one, taking always its ownership. The destroy
+	  method simply avoids duplicated code to set the source to NULL state and
+	  then unref it.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766053
+
+2016-04-29 12:31:01 +0100  Alex Ashley <bugzilla@ashley-family.net>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: fix threading issues in gst_adaptive_demux_wait_until function
+	  The gst_adaptive_demux_wait_until() function can be woken up either
+	  by its end_time being reached, or from other threads that want to
+	  interrupt the waiting thread.
+	  If the thread is interrupted, it needs to cancel its async clock callback
+	  by unscheduling the clock callback. However, the callback task might already
+	  have been activated, but is waiting for the mutex to become available. In this
+	  case, the call to unschedule does not stop the callback from executing.
+	  The solution to this second issue is to use a reference counted object that
+	  is decremented by both the gst_adaptive_demux_wait_until() function and the
+	  call to gst_clock_id_wait_async (). In this way, the GstAdaptiveDemuxTimer
+	  object is only deleted when both the gst_adaptive_demux_wait_until() function
+	  and the async callback are finished with the object.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765728
+
+2016-03-03 15:50:49 +0900  Justin Kim <justin.kim@collabora.com>
+
+	* sys/androidmedia/Makefile.am:
+	* sys/androidmedia/gst-android-graphics-surfacetexture.c:
+	* sys/androidmedia/gst-android-graphics-surfacetexture.h:
+	* sys/androidmedia/gst-android-hardware-camera.c:
+	* sys/androidmedia/gst-android-hardware-camera.h:
+	* sys/androidmedia/gstahcsrc.c:
+	* sys/androidmedia/gstahcsrc.h:
+	* sys/androidmedia/gstamc.c:
+	  androidmeida: replace with new surfacetexture for ahcsrc
+	  GstAmcSurfaceTexture is more clear and simple than GstAGSurfaceTexture.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763099
 
 2016-05-05 23:53:05 +1000  Matthew Waters <matthew@centricular.com>
 
@@ -767,17 +5706,111 @@
 	  Fixes out of tree builds from tarballs.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=764758
 
-2016-04-08 18:09:53 +1000  Matthew Waters <matthew@centricular.com>
+2016-05-05 23:18:11 +1000  Matthew Waters <matthew@centricular.com>
 
-	* ext/vulkan/vkimagememory.c:
-	  vulkan: silence a validation warning filling out the image barrier
+	* ext/vulkan/vkswapper.c:
+	  vkswapper: fix up display synchronization
+	  Use the semaphores in the correct place, before and after the submission for
+	  acquiring and presenting the swapchain buffer.
+	  Waiting on the fence that only signals the command buffer completion rather than
+	  the completion of the presentation is racy with the destruction of the vulkan
+	  buffers associated with that image.  Wait on the device to be idle instead after
+	  presenting.
 
-2016-04-08 18:09:06 +1000  Matthew Waters <matthew@centricular.com>
+2016-05-05 18:00:25 +1000  Matthew Waters <matthew@centricular.com>
 
-	* ext/vulkan/vkdevice.c:
-	* ext/vulkan/vkinstance.c:
-	  vulkan: use the correct validation layer name
-	  The threading validation layer has changed names.
+	* ext/vulkan/vkswapper.c:
+	  vkswapper: use gst_video_sink_center_rect for positioning the video
+	  Don't try to reimplement it badly.
+
+2016-05-05 10:44:22 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/mpegdemux/gstmpegdemux.c:
+	  mpegdemux: fix description
+
+2016-05-05 10:41:53 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/videofilters/gstvideodiff.c:
+	  videodiff: fix supported formats in template caps
+
+2016-05-05 10:40:37 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/videofilters/gstvideodiff.c:
+	* gst/videofilters/gstvideodiff.h:
+	  videodiff: fill in FIXME metadata and docs with description
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765989
+
+2016-05-04 12:17:59 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglimagesink.c:
+	* ext/gl/gstglmixer.c:
+	* ext/gl/gstglstereosplit.c:
+	* gst-libs/gst/gl/egl/Makefile.am:
+	* gst-libs/gst/gl/egl/gsteglimage.c:
+	* gst-libs/gst/gl/egl/gsteglimage.h:
+	* gst-libs/gst/gl/egl/gsteglimagememory.c:
+	* gst-libs/gst/gl/egl/gsteglimagememory.h:
+	* gst-libs/gst/gl/egl/gstgldisplay_egl.c:
+	* gst-libs/gst/gl/egl/gstglmemoryegl.c:
+	* gst-libs/gst/gl/egl/gstglmemoryegl.h:
+	* gst-libs/gst/gl/gstglbufferpool.c:
+	* gst-libs/gst/gl/gstglbufferpool.h:
+	* gst-libs/gst/gl/gstgldisplay.c:
+	* gst-libs/gst/gl/gstglfilter.c:
+	* gst-libs/gst/gl/gstglupload.c:
+	  gl/egl: replace gsteglimagememory with an EGLImage wrapper
+	  That can be passed to GstGLMemoryEGL.
+	  This also ports the dmabuf uploader to GstEGLImage and GstGLMemoryEGL.
+
+2016-01-21 22:18:17 +0900  Gwang Yoon Hwang <yoon@igalia.com>
+
+	* gst-libs/gst/gl/egl/Makefile.am:
+	* gst-libs/gst/gl/egl/gstgldisplay_egl.c:
+	* gst-libs/gst/gl/egl/gstglmemoryegl.c:
+	* gst-libs/gst/gl/egl/gstglmemoryegl.h:
+	* gst-libs/gst/gl/gstgl_fwd.h:
+	* gst-libs/gst/gl/gstgldisplay.c:
+	* gst-libs/gst/gl/gstglupload.c:
+	  gl: implement GstGLMemoryEGL
+	  Because current GstEGLImageMemory does not inherit GstGLMemory, GLUpload
+	  allocates additional GLMemory and upload the decoded contents from the decoder
+	  which uses EGLImage (e.g. gst-omx in RPi).
+	  This work adds GstGLMemoryEGL to avoid this overhead. Decoders allocate
+	  GstGLMemoryEGL and decode its contents to the EGLImage of GstGLMemoryEGL.  And
+	  GLUpload uses this memory without allocation of additional textures and blit
+	  operations.
+	  [Matthew Waters]: gst-indent the sources and fix a critical retreiving the egl
+	  display from the memory.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760916
+
+2016-05-04 01:16:51 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglbufferpool.c:
+	* gst-libs/gst/gl/gstglmemory.c:
+	* gst-libs/gst/gl/gstglmemory.h:
+	* gst-libs/gst/gl/gstglupload.c:
+	* gst-libs/gst/gl/gstglviewconvert.c:
+	  glmemory: add wrapped data pointers to setup_buffer
+	  Allows creating wrapped memories with GstGLAllocationParams.
+	  The wrapped pointers will be set in the parameters before being passed
+	  to the memory allocation function.
+
+2016-05-04 00:19:44 +1000  Matthew Waters <matthew@centricular.com>
+
+	* docs/libs/gst-plugins-bad-libs-sections.txt:
+	* gst-libs/gst/gl/gstglbasememory.c:
+	* gst-libs/gst/gl/gstglbasememory.h:
+	* gst-libs/gst/gl/gstglmemory.c:
+	* gst-libs/gst/gl/gstglmemory.h:
+	* gst-libs/gst/gl/gstglmemorypbo.c:
+	  glbasememory: take a pointer as the wrapped gpu handle
+	  Allows passing arbitrary data to wrap the the specific memory implementation
+	  which is required for some memory implementations.
+
+2016-05-04 11:30:11 +1000  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/vtdec.c:
+	  applemedia: vtdec: output sysmem by default
 
 2016-05-02 11:30:43 +0300  Sebastian Dröge <sebastian@centricular.com>
 
@@ -795,12 +5828,170 @@
 	  former is always called when srcpads caps are decided.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=765324
 
-2016-04-25 16:50:18 +0300  Sebastian Dröge <sebastian@centricular.com>
+2016-04-20 15:11:44 +0300  Vivia Nikolaidou <vivia@ahiru.eu>
 
-	* gst/videoparsers/gsth264parse.c:
-	  h264parse: H264 level idc 0 is not valid
-	  Don't put level=0 into the caps, it confuses other elements.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=765538
+	* sys/decklink/gstdecklink.cpp:
+	  decklink: Fix swapped name and nick in GEnumValues
+	  https://bugzilla.gnome.org/show_bug.cgi?id=742878
+
+2016-04-14 18:26:33 +0300  Vivia Nikolaidou <vivia@ahiru.eu>
+
+	* sys/decklink/gstdecklink.cpp:
+	* sys/decklink/gstdecklink.h:
+	* sys/decklink/gstdecklinkvideosink.cpp:
+	* sys/decklink/gstdecklinkvideosink.h:
+	* sys/decklink/gstdecklinkvideosrc.cpp:
+	* sys/decklink/gstdecklinkvideosrc.h:
+	  decklink: Add initial 10bit support for YUV modes
+	  https://bugzilla.gnome.org/show_bug.cgi?id=742878
+
+2016-05-03 15:52:38 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/decklink/gstdecklink.cpp:
+	* sys/decklink/gstdecklinkaudiosrc.cpp:
+	  decklink: Fix indentation
+
+2016-05-03 19:58:00 +1000  Matthew Waters <matthew@centricular.com>
+
+	* configure.ac:
+	* gst-libs/gst/gl/gstglapi.h:
+	  gl: fix gles3 header usage for older platforms
+	  Some platforms provide an old version of GLES2/gl2.h and GLES2/gl2ext.h that
+	  will fail when including GLES3/gl3.h due to missing typedef's.
+	  Seen on the RPi.
+
+2016-04-29 23:32:03 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: avoid possible race on _output_frontend_stats()
+	  Make sure we send out our info message before we give up ownership
+	  of the structure.
+
+2016-04-29 14:53:06 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: var rename in _output_frontend_params()
+	  Now it matches the rest of its status peers. Underscore
+	  was a leftover from previous times.
+
+2016-04-29 14:45:22 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: always output known frontend status params
+	  The only mandatory frontend information for our use case
+	  is its status. Make sure we output what we know instead
+	  of choking at the first error getting SNR, BER or any of
+	  the other informational parameters.
+
+2016-04-29 12:06:52 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: refactor signal locking loop
+	  Get rid of preliminar frontend status check.
+
+2016-04-29 11:18:53 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: drop unneeded polling step on _tune_fe()
+	  Additional waiting was not needed. Specially considering
+	  it came after a successful READ_STATUS ioctl and was
+	  followed by an EINTR-resilent retry.
+
+2016-04-29 17:19:19 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* gst/mpegtsmux/tsmux/tsmuxstream.c:
+	  mpegtsmux: effectively check if there is a language
+	  'language' is an array and not a pointer.
+	  CID 1358835
+
+2016-04-29 13:54:01 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/player/Makefile.am:
+	  player: Add required paths via pkg-config for gstreamer-base-1.0 and gstreamer-video-1.0 for gobject-introspection
+	  The GstBase-1.0.gir and GstVideo-1.0.gir files are required by GstPlayer.
+	  Uninstalled builds fail if these files cannot be found.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765804
+
+2016-04-08 16:47:15 +0800  Haihua Hu <jared.hu@nxp.com>
+
+	* ext/gl/Makefile.am:
+	* ext/gl/gstgldeinterlace.c:
+	* ext/gl/gstgldeinterlace.h:
+	* ext/gl/gstopengl.c:
+	  gl: enable gldeinterlace on OpenGL ES
+	  1.Porting the exist deinterlace shader and OpenGL callback
+	  to be compatible with OpenGL ES.
+	  2.Add a our blur vertical shader to gldeinterlace.
+	  3.Add a property named “method” to let user choose which
+	  deinterlace function to use. Default to choose blur vertical
+	  method for better performance.
+	  [Matthew Waters]: fix name of greedyh in method property (was greedhy) and port
+	  to git master.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764873
+
+2016-04-28 15:19:17 +0530  Barun Kumar Singh <barun.singh@samsung.com>
+
+	* docs/libs/gst-plugins-bad-libs-sections.txt:
+	* gst-libs/gst/player/gstplayer.c:
+	* gst-libs/gst/player/gstplayer.h:
+	* win32/common/libgstplayer.def:
+	  player: Add audio-video-offset property and setter/getter API
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765315
+
+2016-04-19 19:43:03 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/gl/gstglcolorconvert.c:
+	* gst-libs/gst/gl/gstglsl.c:
+	* gst-libs/gst/gl/gstglsl_private.h:
+	* gst-libs/gst/gl/gstglviewconvert.c:
+	  glviewconvert: Port more things to GLES/GL 3 compatibility
+	  And move the shader mangling code into a single place instead of having a copy
+	  in glcolorconvert and glviewconvert.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765266
+
+2016-04-19 19:27:33 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/gl/gstglcolorconvert.c:
+	  glcolorconvert: GLES3 deprecates texture2D() and it does not work at all in newer versions than 3.3
+	  Use the newer texture() function instead. This fixes glimagesink and other
+	  things on various Android devices.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765266
+
+2016-04-19 10:27:43 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* gst-libs/gst/mpegts/gstmpegtsdescriptor.c:
+	* gst-libs/gst/mpegts/gstmpegtsdescriptor.h:
+	* gst/mpegtsmux/tsmux/tsmuxstream.c:
+	* gst/mpegtsmux/tsmux/tsmuxstream.h:
+	  mpegtsmux: write language descriptor when language is available
+	  Adds a new function to mpegts lib to create a iso639 language
+	  descriptor from a language and use it in mpegtsmux to add
+	  a language descriptor to audio streams that have a language set.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763647
+
+2016-04-26 16:48:58 +0800  Song Bing <bing.song@nxp.com>
+
+	* sys/pvr2d/gstpvrbufferpool.c:
+	  pvrbufferpool: fix gst_meta_register() parameters
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765581
+
+2016-04-22 10:15:39 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst-libs/gst/base/gstaggregator.c:
+	  aggregator: Check all pads for data when live
+	  When live, we still need to inspect all pads queue in order to determin
+	  if we have received the first buffer or not.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765431
+
+2016-04-15 16:51:17 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst-libs/gst/base/gstaggregator.c:
+	  aggregator: Fix locking when using the clock
+	  This fixes a race where we check if there is a clock, then it get
+	  removed and we endup calling gst_clock_new_single_shot_id() with a NULL
+	  pointer instead of a valid clock and also calling gst_object_unref()
+	  with a NULL pointer later.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=757548
 
 2016-04-25 16:50:55 +0300  Sebastian Dröge <sebastian@centricular.com>
 
@@ -809,146 +6000,293 @@
 	  Don't put level=0 into the caps, it confuses other elements.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=765538
 
-=== release 1.8.1 ===
+2016-04-25 16:50:18 +0300  Sebastian Dröge <sebastian@centricular.com>
 
-2016-04-20 18:22:13 +0300  Sebastian Dröge <sebastian@centricular.com>
+	* gst/videoparsers/gsth264parse.c:
+	  h264parse: H264 level idc 0 is not valid
+	  Don't put level=0 into the caps, it confuses other elements.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765538
 
-	* ChangeLog:
-	* NEWS:
-	* RELEASE:
-	* configure.ac:
-	* docs/plugins/inspect/plugin-accurip.xml:
-	* docs/plugins/inspect/plugin-adpcmdec.xml:
-	* docs/plugins/inspect/plugin-adpcmenc.xml:
-	* docs/plugins/inspect/plugin-aiff.xml:
-	* docs/plugins/inspect/plugin-asfmux.xml:
-	* docs/plugins/inspect/plugin-assrender.xml:
-	* docs/plugins/inspect/plugin-audiomixer.xml:
-	* docs/plugins/inspect/plugin-audiovisualizers.xml:
-	* docs/plugins/inspect/plugin-autoconvert.xml:
-	* docs/plugins/inspect/plugin-bayer.xml:
-	* docs/plugins/inspect/plugin-bz2.xml:
-	* docs/plugins/inspect/plugin-camerabin.xml:
-	* docs/plugins/inspect/plugin-chromaprint.xml:
-	* docs/plugins/inspect/plugin-coloreffects.xml:
-	* docs/plugins/inspect/plugin-curl.xml:
-	* docs/plugins/inspect/plugin-dataurisrc.xml:
-	* docs/plugins/inspect/plugin-debugutilsbad.xml:
-	* docs/plugins/inspect/plugin-dtsdec.xml:
-	* docs/plugins/inspect/plugin-dvb.xml:
-	* docs/plugins/inspect/plugin-dvbsuboverlay.xml:
-	* docs/plugins/inspect/plugin-dvdspu.xml:
-	* docs/plugins/inspect/plugin-faad.xml:
-	* docs/plugins/inspect/plugin-festival.xml:
-	* docs/plugins/inspect/plugin-fieldanalysis.xml:
-	* docs/plugins/inspect/plugin-flite.xml:
-	* docs/plugins/inspect/plugin-frei0r.xml:
-	* docs/plugins/inspect/plugin-gaudieffects.xml:
-	* docs/plugins/inspect/plugin-gdp.xml:
-	* docs/plugins/inspect/plugin-geometrictransform.xml:
-	* docs/plugins/inspect/plugin-gmedec.xml:
-	* docs/plugins/inspect/plugin-gsm.xml:
-	* docs/plugins/inspect/plugin-gstsiren.xml:
-	* docs/plugins/inspect/plugin-hls.xml:
-	* docs/plugins/inspect/plugin-id3tag.xml:
-	* docs/plugins/inspect/plugin-inter.xml:
-	* docs/plugins/inspect/plugin-interlace.xml:
-	* docs/plugins/inspect/plugin-jpegformat.xml:
-	* docs/plugins/inspect/plugin-mimic.xml:
-	* docs/plugins/inspect/plugin-mms.xml:
-	* docs/plugins/inspect/plugin-modplug.xml:
-	* docs/plugins/inspect/plugin-mpeg2enc.xml:
-	* docs/plugins/inspect/plugin-mpegpsdemux.xml:
-	* docs/plugins/inspect/plugin-mpegpsmux.xml:
-	* docs/plugins/inspect/plugin-mpegtsdemux.xml:
-	* docs/plugins/inspect/plugin-mpegtsmux.xml:
-	* docs/plugins/inspect/plugin-mplex.xml:
-	* docs/plugins/inspect/plugin-ofa.xml:
-	* docs/plugins/inspect/plugin-openal.xml:
-	* docs/plugins/inspect/plugin-pcapparse.xml:
-	* docs/plugins/inspect/plugin-pnm.xml:
-	* docs/plugins/inspect/plugin-rawparse.xml:
-	* docs/plugins/inspect/plugin-removesilence.xml:
-	* docs/plugins/inspect/plugin-resindvd.xml:
-	* docs/plugins/inspect/plugin-rfbsrc.xml:
-	* docs/plugins/inspect/plugin-rtmp.xml:
-	* docs/plugins/inspect/plugin-schro.xml:
-	* docs/plugins/inspect/plugin-sdp.xml:
-	* docs/plugins/inspect/plugin-segmentclip.xml:
-	* docs/plugins/inspect/plugin-shm.xml:
-	* docs/plugins/inspect/plugin-smooth.xml:
-	* docs/plugins/inspect/plugin-soundtouch.xml:
-	* docs/plugins/inspect/plugin-spandsp.xml:
-	* docs/plugins/inspect/plugin-speed.xml:
-	* docs/plugins/inspect/plugin-subenc.xml:
-	* docs/plugins/inspect/plugin-videoparsersbad.xml:
-	* docs/plugins/inspect/plugin-voaacenc.xml:
-	* docs/plugins/inspect/plugin-voamrwbenc.xml:
-	* docs/plugins/inspect/plugin-waylandsink.xml:
-	* docs/plugins/inspect/plugin-y4mdec.xml:
-	* docs/plugins/inspect/plugin-zbar.xml:
-	* gst-plugins-bad.doap:
-	* win32/common/config.h:
-	  Release 1.8.1
+2016-04-22 14:51:31 +0200  Jerome Laheurte <jlaheurte@quividi.com>
 
-2016-04-20 18:10:11 +0300  Sebastian Dröge <sebastian@centricular.com>
+	* sys/dshowsrcwrapper/gstdshowfakesink.cpp:
+	* sys/dshowsrcwrapper/gstdshowvideosrc.cpp:
+	  dshowsrcwrapper: fix DirectShow caps negotiation and set capture pin caps
+	  Some cameras (IDS) have broken DirectShow drivers which incorrectly fill some
+	  fields in the VIDEOINFOHEADER structure; comparison between suggested and
+	  supported media types in CBaseRenderer should ignore deprecated and/or not
+	  essential fields; additionaly explicitely setting the mediatype for the capture
+	  pin before trying to connect it works around another IDS driver bug, and
+	  should have been already done anyway.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765428
 
-	* po/af.po:
-	* po/az.po:
-	* po/bg.po:
-	* po/ca.po:
-	* po/cs.po:
-	* po/da.po:
-	* po/de.po:
-	* po/el.po:
-	* po/en_GB.po:
-	* po/eo.po:
-	* po/es.po:
-	* po/eu.po:
-	* po/fi.po:
-	* po/fr.po:
-	* po/gl.po:
-	* po/hr.po:
-	* po/hu.po:
-	* po/id.po:
-	* po/it.po:
-	* po/ja.po:
-	* po/ky.po:
-	* po/lt.po:
-	* po/lv.po:
-	* po/mt.po:
-	* po/nb.po:
-	* po/nl.po:
-	* po/or.po:
-	* po/pl.po:
-	* po/pt_BR.po:
-	* po/ro.po:
-	* po/ru.po:
-	* po/sk.po:
-	* po/sl.po:
-	* po/sq.po:
-	* po/sr.po:
-	* po/sv.po:
-	* po/tr.po:
-	* po/uk.po:
-	* po/vi.po:
-	* po/zh_CN.po:
-	  Update .po files
+2016-04-22 14:48:41 +0200  Jerome Laheurte <jlaheurte@quividi.com>
 
-2016-04-14 22:32:05 -0700  Aleix Conchillo Flaqué <aconchillo@gmail.com>
+	* sys/dshowsrcwrapper/gstdshow.cpp:
+	  dshowsrcwrapper: add support for RGB32, RGB555, RGB565 and RGB8 color spaces
+	  Some cameras (IDS) only support those.
+	  https://bugzilla.gnome.org//show_bug.cgi?id=765427
 
-	* ext/srtp/gstsrtpdec.c:
-	  srtpdec: also check for "roc" in caps
-	  Currently, gst_srtp_dec_sink_setcaps is happy if the "roc" field is not
-	  provided in the caps. If it is not provided the stream will be properly
-	  inserted in the hash table with a default "roc". Then, when the first
-	  buffer arrives validate_buffer will find an existing stream in the hash
-	  table and will not signal request-key, not allowing the user to provide
-	  a "roc".
-	  This patch expects "roc" in gst_srtp_dec_sink_setcaps, if not found a
-	  request-key will be signaled and the user will be able to provide all
-	  the srtp fields, including "roc".
-	  https://bugzilla.gnome.org/show_bug.cgi?id=765079
+2016-04-22 14:44:57 +0200  Jerome Laheurte <jlaheurte@quividi.com>
+
+	* sys/dshowsrcwrapper/CMakeLists.txt:
+	  dshowsrcwrapper: fix include path and link error
+	  Add include path so that the cmake-generated project
+	  is able to find gstconfig.h
+	  Add /SAFESEH:NO to MSVC linker options so it can link with
+	  gstreamer libraries on Windows.
+	  https://bugzilla.gnome.org//show_bug.cgi?id=765426
+
+2016-04-22 15:02:01 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* tests/check/elements/adaptive_demux_common.c:
+	* tests/check/elements/adaptive_demux_common.h:
+	  tests: adaptivedemux: only check for data length after seek
+	  When the test involves doing a seek, only check for data size after
+	  the seek. The final segment range after seek might be different/smaller
+	  than the threshold for doing the seek and doing the check before
+	  seeking would fail.
+
+2016-02-16 14:26:55 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* tests/check/elements/test_http_src.c:
+	* tests/check/elements/test_http_src.h:
+	  adaptivedemux: tests: use macro to define names of request and response structs
+	  Following the Don't Repeat Yourself principle, define macros
+	  for the structures that contain the request and response headers,
+	  so that the name is not repeated in multiple places in multiple files.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=762144
+
+2016-02-16 14:26:42 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* tests/check/elements/adaptive_demux_common.c:
+	* tests/check/elements/hls_demux.c:
+	  adaptivedemux: tests: improved checks for expected data
+	  Check the size of received data for each buffer received by AppSink
+	  https://bugzilla.gnome.org/show_bug.cgi?id=762144
+
+2016-02-16 11:37:44 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* tests/check/elements/adaptive_demux_engine.c:
+	* tests/check/elements/adaptive_demux_engine.h:
+	* tests/check/elements/dash_demux.c:
+	  dashdemux: tests: added content protection test
+	  Test content protection
+	  Configure 3 content protection sources:
+	  - a uuid scheme/value pair
+	  - a non uuid scheme/value pair (dash recognises only uuid schemes)
+	  - a complex uuid scheme, with trailing spaces and capital letters in scheme uri
+	  Only the uuid scheme should be recognised. We expect to receive 2 content protection events
+	  https://bugzilla.gnome.org/show_bug.cgi?id=758064
+
+2016-04-22 17:04:57 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* ext/dash/gstmpdparser.c:
+	  dash: strip lead/trailing whitespace from descriptortype attributes
+	  The spec says it is xs:anyURI and leading and trailing whitespace
+	  are to be ignored
+	  https://bugzilla.gnome.org/show_bug.cgi?id=758064
+
+2016-02-16 14:26:05 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* tests/check/elements/dash_demux.c:
+	  dashdemux: tests: added test for media download error for in stream fragment
+	  Tested download error for a fragment that is not the last media fragment
+	  in the stream.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=762144
+
+2016-02-16 14:25:45 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* tests/check/elements/dash_demux.c:
+	  dashdemux: tests: added test for download errors during header download
+	  Test header download error.
+	  Let the adaptive demux download a few bytes, then instruct the
+	  GstTestHTTPSrc element to generate an error while the fragment header
+	  is still being downloaded.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=762144
+
+2016-02-16 14:25:32 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* tests/check/elements/adaptive_demux_common.c:
+	* tests/check/elements/adaptive_demux_common.h:
+	* tests/check/elements/dash_demux.c:
+	  dashdemux: tests: refactor testFragmentDownloadError
+	  Renamed testFragmentDownloadError to testMediaDownloadErrorLastFragment.
+	  Added gst_adaptive_demux_test_unexpected_eos function.
+	  Remove unneeded testFragmentDownloadErrorCheckSizeOfDataReceived.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=762144
+
+2016-02-16 14:25:04 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* tests/check/elements/dash_demux.c:
+	  dashdemux: tests: tested latency query
+	  Updated query test to also check if dash responds correctly to a latency
+	  query.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=762144
+
+2016-02-16 14:24:49 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* tests/check/elements/dash_demux.c:
+	  dashdemux: tests: moved testQuery after testFragmentDownloadError
+	  Moved testQuery after testFragmentDownloadError so that testDownloadError
+	  and testFragmentDownloadError are grouped together.
+	  The commit just moved the testQueryCheckDataReceived and
+	  GST_START_TEST (testQuery) functions but git gets confused in matching the
+	  lines and reports a lot of changes in the patch.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=762144
+
+2016-02-16 14:24:26 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* tests/check/elements/adaptive_demux_common.c:
+	* tests/check/elements/adaptive_demux_common.h:
+	* tests/check/elements/dash_demux.c:
+	  adaptivedemux: tests: create a GstDashDemuxTestCase class
+	  Create a GstDashDemuxTestCase class that extends from GstAdaptiveDemuxTestCase.
+	  This new class will contain all the DASH specific fields.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=762144
+
+2016-02-16 14:24:09 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* tests/check/elements/dash_demux.c:
+	  dashdemux: tests: added support to pass various parameters to http src callbacks
+	  Added support to pass various parameters to http src callbacks using GstStructure.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=762144
+
+2016-03-01 14:54:01 -0800  Scott D Phillips <scott.d.phillips@intel.com>
+
+	* gst/debugutils/gstchecksumsink.c:
+	* gst/debugutils/gstchecksumsink.h:
+	  checksumsink: add "hash" property and allow more checksum types
+	  Now any GChecksumType can be used by GstChecksumSink, adding
+	  support for MD5, SHA-256 and SHA-512 in addition to SHA-1.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763006
+
+2016-04-22 08:20:14 +0200  Edward Hervey <bilboed@bilboed.com>
+
+	* tests/check/Makefile.am:
+	  check: Fix LDADD/CFLAGS for player unit test
+	  It now requires libgstvideo
+
+2016-02-16 14:44:39 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* tests/check/elements/adaptive_demux_engine.c:
+	* tests/check/elements/adaptive_demux_engine.h:
+	  adaptivedemux: tests: use a GstTestClock as the system clock
+	  To allow the adaptivedemux live stream tests to run in non-realtime, use a
+	  GstTestClock as the system clock. This allows the unit tests to complete
+	  more quickly than if they had to complete in real time.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=762147
+
+2016-02-16 14:44:27 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: use realtime_clock for waiting for a condition
+	  There are several places in adaptivedemux where it waits for
+	  time to pass, for example to wait until it should next download
+	  a fragment. The problem with this approach is that it means that
+	  unit tests are forced to execute in realtime.
+	  This commit replaces the use of g_cond_wait_until() with single
+	  shot GstClockID that signals the condition variable. Under normal
+	  usage, this behaves exactly as before. A unit test can replace the
+	  system clock with a GstTestClock, allowing the test to control the
+	  timing in adaptivedemux.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=762147
+
+2016-02-16 14:44:10 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* ext/dash/gstdashdemux.c:
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.h:
+	  adaptivedemux: use GstSystemClock to all real-time calculations
+	  A realtime clock is used in many places, such as deciding which
+	  fragment to select at start up and deciding how long to sleep
+	  before a fragment becomes available. For example dashdemux needs
+	  sample the client's estimate of UTC when selecting where to start
+	  in a live DASH stream.
+	  The problem with dashdemux calculating the client's idea of UTC is
+	  that it makes it difficult to create unit tests, because the passage
+	  of time is a factor in the test.
+	  This commit changes dashdemux and adaptivedemux to use the
+	  GstSystemClock, so that a unit test can replace the system clock when
+	  it needs to be able to control the clock.
+	  This commit makes no change to the behaviour under normal usage, as
+	  GstSystemClock is based upon the system time.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=762147
+
+2016-04-21 14:58:45 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* win32/common/libgstplayer.def:
+	  win32: Add new API to .def file
+
+2016-04-19 10:59:46 +0530  Barun Kumar Singh <barun.singh@samsung.com>
+
+	* docs/libs/gst-plugins-bad-libs-sections.txt:
+	* gst-libs/gst/player/Makefile.am:
+	* gst-libs/gst/player/gstplayer.c:
+	* gst-libs/gst/player/gstplayer.h:
+	* pkgconfig/gstreamer-player-uninstalled.pc.in:
+	* pkgconfig/gstreamer-player.pc.in:
+	  player: Add support for multiview settings
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765302
+
+2016-04-21 10:06:40 +0900  Hyunjun Ko <zzoon@igalia.com>
+
+	* sys/applemedia/vtenc.c:
+	  applemedia: vtenc: fix build break on iOS
+	  Fix 'conflicting types' error
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765292
+
+2016-04-20 15:34:55 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: add test for invalid DVB-T2 bandwidth
+
+2016-04-20 14:47:22 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: warn on wrong DVB-T2 stream ID value
+	  Stream ID, used for DVB-T2/S2 and ISDB-S can
+	  not exceed 255 for the former. Change makes this
+	  explicit.
+
+2016-04-20 21:07:28 +0900  Hyunjun Ko <zzoon@igalia.com>
+
+	* sys/applemedia/vtenc.c:
+	  applemedia: vtenc: Fix a warning by weak-link symbol
+	  Fix this warning
+	  address of function 'VTCompressionSessionPrepareToEncodeFrames' will always evaluate to 'true' [-Wpointer-bool-conversion]
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765292
+
+2016-04-20 16:19:55 +0900  Hyunjun Ko <zzoon@igalia.com>
+
+	* ext/gl/caopengllayersink.m:
+	  gl: caopengllayersink: fix a minor warning
+	  Fix "unused variable" warning
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765292
+
+2016-04-20 16:00:36 +0900  Hyunjun Ko <zzoon@igalia.com>
+
+	* gst-libs/gst/gl/cocoa/gstglcaopengllayer.m:
+	  gl/cocoa: Fix incompatible type warning
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765292
+
+2016-04-19 14:57:22 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* sys/d3dvideosink/d3dhelpers.h:
+	  d3dvideosink: Don't include deprecated and unavailable d3dx9tex.h
+	  It's not needed, not on native Windows nor with mingw, and
+	  we don't use anything from it anyway
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765250
+
+2016-04-14 12:46:58 +0200  Philipp Zabel <p.zabel@pengutronix.de>
+
+	* sys/kms/gstkmssink.c:
+	* sys/kms/gstkmssink.h:
+	  kmssink: add sync support for secondary pipes
+	  The vblank event request must specify the crtc for which to request
+	  the event. This fixes kmssink synchronisation for crtcs other than
+	  the first.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765064
 
 2016-04-19 09:30:39 +0300  Sebastian Dröge <sebastian@centricular.com>
 
@@ -966,6 +6304,29 @@
 	  create by application.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=765241
 
+2016-04-18 13:46:55 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* gst-libs/gst/video/gstvideoaggregator.c:
+	  videoaggregator: plug caps leak
+	  It was losing ref of the original 'ret' caps that would be returned
+	  or returning it with 2 references to it.
+
+2016-03-28 15:44:27 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* gst-libs/gst/video/gstvideoaggregator.c:
+	* tests/check/elements/compositor.c:
+	  videoaggregator: properly handle interlace-mode restrictions
+	  videoaggregator can't handle interlace-mode changes so it must
+	  always restrict itself to the first interlacing mode it receives.
+	  Tests included
+	  https://bugzilla.gnome.org/show_bug.cgi?id=754495
+
+2016-01-22 16:49:57 +0000  Raffaele Rossi <rarossi@cisco.com>
+
+	* ext/dtls/README:
+	  dtsl: add some documentation
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760994
+
 2016-04-17 15:45:41 +0100  Heinrich Fink <hfink@toolsonair.com>
 
 	* ext/gl/caopengllayersink.m:
@@ -980,22 +6341,143 @@
 	  Fixes blurry content on HiDPI screens
 	  https://bugzilla.gnome.org/show_bug.cgi?id=765194
 
+2016-04-16 22:33:48 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst/mpegtsmux/mpegtsmux.c:
+	  mpegtsmux: Remove an unnecessary check for NULL before g_free
+
+2016-04-15 13:22:51 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* gst-libs/gst/player/gstplayer-video-overlay-video-renderer.c:
+	* gst/compositor/compositor.c:
+	  Drop usage of 'overlayed' to mean 'overlaid'
+
+2016-04-15 13:10:41 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: show invalid delsys/mod combination if found
+
+2016-04-15 11:29:48 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: add modulation check for ATSC
+
+2016-04-11 23:45:22 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: do not autodetect delsys twice
+	  The process is dealt with the first time the adapter is
+	  opened, there is no need to do this again.
+
+2016-04-14 22:32:05 -0700  Aleix Conchillo Flaqué <aconchillo@gmail.com>
+
+	* ext/srtp/gstsrtpdec.c:
+	  srtpdec: also check for "roc" in caps
+	  Currently, gst_srtp_dec_sink_setcaps is happy if the "roc" field is not
+	  provided in the caps. If it is not provided the stream will be properly
+	  inserted in the hash table with a default "roc". Then, when the first
+	  buffer arrives validate_buffer will find an existing stream in the hash
+	  table and will not signal request-key, not allowing the user to provide
+	  a "roc".
+	  This patch expects "roc" in gst_srtp_dec_sink_setcaps, if not found a
+	  request-key will be signaled and the user will be able to provide all
+	  the srtp fields, including "roc".
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765079
+
+2014-07-28 12:14:02 +0300  Sreerenj Balachandran <sreerenj.balachandran@intel.com>
+
+	* gst-libs/gst/codecparsers/gstmpegvideoparser.c:
+	* gst-libs/gst/codecparsers/gstmpegvideoparser.h:
+	  codecparsers: mpegvideo: Parse more slice header fields
+	  https://bugzilla.gnome.org/show_bug.cgi?id=733872
+
+2014-07-28 11:17:05 +0300  Sreerenj Balachandran <sreerenj.balachandran@intel.com>
+
+	* gst-libs/gst/codecparsers/gstmpegvideoparser.c:
+	* gst-libs/gst/codecparsers/gstmpegvideoparser.h:
+	  codecparsers: mpegvideo: Add vbv_delay field to PictureHeader
+	  https://bugzilla.gnome.org/show_bug.cgi?id=733872
+
+2014-07-28 11:14:22 +0300  Sreerenj Balachandran <sreerenj.balachandran@intel.com>
+
+	* gst-libs/gst/codecparsers/gstmpegvideoparser.c:
+	* gst-libs/gst/codecparsers/gstmpegvideoparser.h:
+	  codecparsers: mpegvideo: Add more fields to the GstMpegVideoSequenceHdr
+	  Added the fields load_non_intra_quantiser_matrix and
+	  load_chroma_intra_quantiser_matrix to the sequence header structure.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=733872
+
+2016-04-14 10:02:32 +0100  Julien Isorce <j.isorce@samsung.com>
+
+	* README:
+	* common:
+	  Automatic update of common submodule
+	  From 6f2d209 to ac2f647
+
 2016-04-13 18:12:25 +0100  Damian Ziobro <damian@xmementoit.com>
 
 	* gst/mpegtsmux/mpegtsmux.c:
 	  mpegtsmux: free pad_data->language before g_strdup in order to avoid memory leak
 	  https://bugzilla.gnome.org/show_bug.cgi?id=765005
 
-2015-09-08 14:37:57 +0200  Patricia Muscalu <patricia@axis.com>
+2016-04-13 13:10:12 +0300  Sebastian Dröge <sebastian@centricular.com>
 
-	* ext/curl/gstcurlbasesink.c:
-	  curlsink: catch an unknown error
-	  In this case the socket callback has not been called
-	  by libcurl and the curlsink has not been notified about any
-	  connection problems by libcurl.
-	  This indicates that it's a bug in libcurl so catch it as
-	  an unknown error.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=754432
+	* sys/applemedia/corevideobuffer.c:
+	  applemedia: GstCoreVideoMeta in the plugin using only public API has no ctx member
+
+2016-04-13 13:09:05 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/applemedia/coremediabuffer.c:
+	  applemedia: GstCoreMediaMeta in the plugin using only public API has no ctx member
+
+2016-04-13 10:25:32 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/directfb/dfbvideosink.c:
+	* sys/pvr2d/gstpvrbufferpool.c:
+	  meta: Initialize all remaining metas in their init function
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764902
+
+2016-04-13 10:17:24 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/codecparsers/gstmpegvideometa.c:
+	* sys/applemedia-nonpublic/coremediabuffer.c:
+	* sys/applemedia-nonpublic/corevideobuffer.c:
+	* sys/applemedia/coremediabuffer.c:
+	* sys/applemedia/corevideobuffer.c:
+	  meta: Initialize all GstMeta fields
+	  During allocation they are not initialized to all zeroes.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764902
+
+2016-04-11 22:08:03 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: avoid redundant delsys querying
+	  There is no need to query the frontend for the list
+	  of supported delivery systems if we are selecting
+	  one from the list of autodetected ones.
+
+2016-04-10 18:58:33 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/dvb/parsechannels.c:
+	  dvb/parsechannels: add information to file not found error
+	  Adds useful failure info (like filename) comming from
+	  g_file_get_contents() as done for every other error in
+	  this block.
+
+2016-04-13 00:43:18 +1000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m:
+	* gst-libs/gst/gl/eagl/gstglwindow_eagl.m:
+	  gl/cocoa/eagl: don't leak GThread's when dispatching messages
+	  gst_gl_context_get_thread() returns a refed pointer, we need to unref it.
+
+2016-04-12 11:14:22 +0100  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* ext/gl/gstgltestsrc.c:
+	  gltestsrc: don't dereference null pointer
+	  funcs can be NULL, it is one of the two conditions of the OR statement
+	  above, so confirm it isn't before dereferencing with funcs->free.
+	  CID 1358388
 
 2016-04-12 04:16:55 +1000  Jan Schmidt <jan@centricular.com>
 
@@ -1007,6 +6489,200 @@
 	  the new program back out of it. Instead, add the new program to
 	  the hash table after handling removal of the old one.
 
+2016-04-06 04:15:40 +0000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglupload.c:
+	  glupload: keep the parent buffer around when converting EGLImage to 2D textures
+	  e.g. receiving and releasing a buffer from OMX too early will potentially
+	  cause textures to be overwritten while/before they are displayed.
+
+2016-04-11 16:43:45 +0000  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglbasemixer.c:
+	  glbasemixer: chain up to the parent implementation
+
+2016-04-11 18:06:25 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkdevice.c:
+	  vulkan: prettify the various versions in the debug output
+	  output human readable numbers.
+
+2016-04-11 20:23:45 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/openh264/gstopenh264dec.cpp:
+	  openh264dec: minor clean-ups
+	  Remove unused property getters, setters; outdated comment.
+
+2016-04-11 20:11:53 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/openh264/gstopenh264dec.cpp:
+	* ext/openh264/gstopenh264dec.h:
+	* ext/openh264/gstopenh264enc.cpp:
+	* ext/openh264/gstopenh264enc.h:
+	  openh264: remove unnecessary instance private structures
+	  Element instance structures are not public API, so no need
+	  for the extra indirection to hide the data.
+
+2016-04-11 20:04:00 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/openh264/gstopenh264dec.cpp:
+	* ext/openh264/gstopenh264enc.cpp:
+	  openh264: fix indentation
+
+2016-02-12 14:21:27 +0100  Philipp Zabel <p.zabel@pengutronix.de>
+
+	* sys/kms/gstkmsutils.c:
+	  kmssink: enable UYVY, YUY2, and YVYU (interleaved YUV 4:2:2) formats
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761059
+
+2016-02-12 14:17:32 +0100  Philipp Zabel <p.zabel@pengutronix.de>
+
+	* sys/kms/gstkmsutils.c:
+	  kmssink: enable NV16 (chroma-interleaved YUV 4:2:2) format
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761059
+
+2016-02-12 14:17:13 +0100  Philipp Zabel <p.zabel@pengutronix.de>
+
+	* sys/kms/gstkmsutils.c:
+	  kmssink: enable Y42B (planar YUV 4:2:2) format
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761059
+
+2016-03-04 16:53:58 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+	* sys/kms/gstkmssink.c:
+	* sys/kms/gstkmssink.h:
+	  kmssink: keep last rendered buffer in memory
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761059
+
+2016-02-20 23:13:54 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+	* sys/kms/gstkmssink.c:
+	* sys/kms/gstkmssink.h:
+	  kmssink: wait for page flip or vblank
+	  This patch requests for drmModePageFlip() for the used CRTC, if the kernel
+	  module suppports async page flip. If it does not, the element requests for a
+	  vblank event. A GstPoll waits for the event to happen.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761059
+
+2016-02-10 20:43:47 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+	* configure.ac:
+	* sys/kms/Makefile.am:
+	* sys/kms/gstkmsallocator.c:
+	* sys/kms/gstkmsallocator.h:
+	* sys/kms/gstkmssink.c:
+	* sys/kms/gstkmssink.h:
+	  kmssink: add dmabuf support
+	  This patch will enable the import of dmabufs into a KMS buffer using
+	  the PRIME kernel interface.
+	  If the driver does not support prime import, the method is skipped.
+	  It has been tested with a Freescale I.MX6 board.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761059
+
+2016-01-31 13:12:34 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+	* sys/kms/gstkmssink.c:
+	* sys/kms/gstkmsutils.c:
+	* sys/kms/gstkmsutils.h:
+	  kmssink: calculate display ratio
+	  Get the aspect ratio given the information provided by libdrm, and with it
+	  calculate the display ratio.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761059
+
+2016-01-20 12:00:51 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+	* configure.ac:
+	* sys/Makefile.am:
+	* sys/kms/Makefile.am:
+	* sys/kms/gstkmsallocator.c:
+	* sys/kms/gstkmsallocator.h:
+	* sys/kms/gstkmsbufferpool.c:
+	* sys/kms/gstkmsbufferpool.h:
+	* sys/kms/gstkmssink.c:
+	* sys/kms/gstkmssink.h:
+	* sys/kms/gstkmsutils.c:
+	* sys/kms/gstkmsutils.h:
+	  kmssink: add plugin and sink element
+	  This is simple video sink that use libdrm/libkms API to render frames.
+	  The element uses planes to render through drmModeSetPlane().
+	  It has been tested in an Exynos4412 board and in a Freescale I.MX6 board.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761059
+
+2016-04-10 17:46:15 +1000  Matthew Waters <matthew@centricular.com>
+
+	* configure.ac:
+	* ext/vulkan/Makefile.am:
+	* ext/vulkan/vkapi.h:
+	* ext/vulkan/vkdevice.c:
+	* ext/vulkan/vkdisplay.c:
+	* ext/vulkan/vkinstance.c:
+	* ext/vulkan/vkwindow.c:
+	* ext/vulkan/wayland/Makefile.am:
+	* ext/vulkan/wayland/vkdisplay_wayland.c:
+	* ext/vulkan/wayland/vkdisplay_wayland.h:
+	* ext/vulkan/wayland/vkwindow_wayland.c:
+	* ext/vulkan/wayland/vkwindow_wayland.h:
+	* ext/vulkan/wayland/wayland_event_source.c:
+	* ext/vulkan/wayland/wayland_event_source.h:
+	  vulkan: add a wayland winsys implementation
+
+2016-04-10 17:43:39 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/xcb/vkwindow_xcb.c:
+	* ext/vulkan/xcb/vkwindow_xcb.h:
+	  vulkan/xcb: getProcAddress winsys functions
+	  There's no guarantee that they will always be exposed by the vulkan loader.
+
+2016-04-09 17:52:28 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkupload.c:
+	  vkupload: copy necessary buffer metadata
+	  timestamps, flags, etc
+
+2016-04-11 08:34:00 +1000  Alessandro Decina <alessandro.d@gmail.com>
+
+	* gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m:
+	* gst-libs/gst/gl/eagl/gstglwindow_eagl.m:
+	  libgstgl: cocoa, eagl: use libdispatch to schedule GL calls
+	  Use libdispatch instead of GMainLoop to dispatch GL calls. libdispatch is more
+	  optimized and cuts a lot of poll()/pthread_* overhead.
+
+2016-04-11 08:02:45 +1000  Alessandro Decina <alessandro.d@gmail.com>
+
+	* gst-libs/gst/gl/gstglwindow.c:
+	  glwindow: reduce the number of GMutexes and GConds in send_message()
+	  Don't create many short lived locks/conds in gst_gl_window_send_message. This is
+	  a micro optimization to save a bunch of pthread_* calls which are expensive on
+	  OSX/iOS and possibly other platforms.
+
+2016-04-10 22:18:38 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* win32/common/libgstgl.def:
+	  win32: update .def file for new gl api
+
+2016-04-08 18:34:45 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkswapper.c:
+	  vkswapper: add necessary wait stages to the submission info
+
+2016-04-08 18:32:41 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkswapper.c:
+	  vkswapper: add srgb formats to our list of formats
+	  intel returns them for their surface formats.
+
+2016-04-08 18:09:53 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkimagememory.c:
+	  vulkan: silence a validation warning filling out the image barrier
+
+2016-04-08 18:09:06 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkdevice.c:
+	* ext/vulkan/vkinstance.c:
+	  vulkan: use the correct validation layer name
+	  The threading validation layer has changed names.
+
 2016-04-08 14:07:55 +0300  Sebastian Dröge <sebastian@centricular.com>
 
 	* sys/decklink/gstdecklink.cpp:
@@ -1030,6 +6706,38 @@
 	  Just warn and error out instead.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=764545
 
+2016-04-08 14:51:44 +1000  Matthew Waters <matthew@centricular.com>
+
+	* sys/nvenc/gstnvbaseenc.c:
+	* sys/nvenc/gstnvbaseenc.h:
+	  nvenc: add some rate control modes/properties
+	  Supported modes are constant quantizer, cbr, vbr and vbr with a minimum quantizer.
+
+2016-04-07 23:24:47 +1000  Matthew Waters <matthew@centricular.com>
+
+	* sys/nvenc/gstnvbaseenc.c:
+	* sys/nvenc/gstnvbaseenc.h:
+	* sys/nvenc/gstnvh264enc.c:
+	  nvenc: move codec config initialization from the implementation to the base class
+	  Supports a better separation of configuration parameters
+
+2016-04-07 22:46:08 +1000  Matthew Waters <matthew@centricular.com>
+
+	* sys/nvenc/gstnvbaseenc.c:
+	* sys/nvenc/gstnvbaseenc.h:
+	* sys/nvenc/gstnvenc.c:
+	* sys/nvenc/gstnvh264enc.c:
+	  nvenc: add preset selection
+	  Some presets are not always supported on all devices and will cause an error if
+	  used.  Specifically, the LOSSLESS presets are known to not work everywhere.
+
+2014-07-16 02:44:42 +0200  Marcin Kolny <marcin.kolny@gmail.com>
+
+	* ext/chromaprint/gstchromaprint.c:
+	  chromaprint: emit notify::fingerprint signal when fingerprint is ready
+	  In addition to adding the fingerprint to the tags.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=733233
+
 2016-04-04 20:55:51 +1000  Matthew Waters <matthew@centricular.com>
 
 	* ext/gl/gstglvideomixer.c:
@@ -1040,6 +6748,160 @@
 	  sure that it is also overridable.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=764363
 
+2016-04-05 21:40:58 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst/librfb/gstrfbsrc.c:
+	  rfbsrc: Fix fallback to GstVideoBufferPool
+	  The replacement pool need to be added to the query, otherwise the
+	  baseclass won't see it. We also need to properly remove the rejected
+	  pools.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763441
+
+2016-04-05 21:07:32 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst/librfb/gstrfbsrc.c:
+	* gst/librfb/gstrfbsrc.h:
+	  rfbsrc: Implement decide_allocation virtual
+	  This way we can use the base class for buffer allocation, hence use
+	  fill() instead of create() virtual. This also adds a strict check on the
+	  select pool buffer size as we don't support strides and padding.
+	  This is based on initial patch proposed by Sebastien Dröge, from which I
+	  also fixed a buffer pool leak.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763441
+
+2016-04-05 15:31:49 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst/librfb/gstrfbsrc.c:
+	  rfbsrc: Fix caps negotiation
+	  As we currently only use the server reported "natural" format, caps
+	  negotiation should simply be limited to telling the base class which
+	  format to use. Fix the negotiation by moving the associated code
+	  into negotiate() virtual function. Also, use gst_base_src_set_caps()
+	  rather then setting it on the pad directly. Also protect against this
+	  method being called multiple time (we can't renegotiate for now).
+	  This change also moves some network code that was being run during the
+	  application state change call, to be run on the streaming thread.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=739598
+
+2016-03-26 13:36:34 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst/librfb/gstrfbsrc.c:
+	  rfbsrc: Implement unlock() method
+	  This prevent stalls when we try to stop the source while waiting
+	  for the server to send more updates.
+
+2016-03-24 18:27:54 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst/librfb/rfbdecoder.c:
+	  rfbsrc: Check for connection being closed
+	  Although it's not very well documented, g_input_stream_read_all() will
+	  set the number of bytes read to 0 if the connection is closed rather
+	  then returning an error.
+
+2016-03-24 18:26:46 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst/librfb/rfbdecoder.c:
+	  rfbsrc: Check for read/write error
+	  Check for read/write error. This prevent undefined behaviour that rely
+	  on unitialized buffer.
+
+2016-03-24 18:14:17 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst/librfb/gstrfbsrc.c:
+	* gst/librfb/rfbdecoder.c:
+	* gst/librfb/rfbdecoder.h:
+	  rfbsrc: Add a internal method to disconnect
+	  This also removes the disconnected boolean hack.
+
+2016-03-24 18:14:37 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst/librfb/gstrfbsrc.c:
+	  rfbsrc: Don't ignore errors
+	  This prevents recursion on error. This used to happen as we
+	  don't change the state when something fails. We end up running
+	  and failing in the same state forever.
+
+2016-03-24 16:46:49 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst/librfb/rfbdecoder.c:
+	* gst/librfb/rfbdecoder.h:
+	  rfbsrc: Serialize write operations
+	  Currently we send key events from seperate threads. IOStream does not
+	  allow concurrent write operations, so protect this operation using a
+	  mutex.
+
+2016-03-17 15:24:52 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst/librfb/rfbdecoder.c:
+	  rfbsrc: Add 3.7/3.8 security type negotiation
+
+2016-03-16 18:48:49 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst/librfb/Makefile.am:
+	* gst/librfb/gstrfbsrc.c:
+	* gst/librfb/rfbdecoder.c:
+	* gst/librfb/rfbdecoder.h:
+	  rfbsrc: Port to GSocketClient
+	  Using GSocketClient we can simplify a lot the read/write operation.
+	  This also provide an GSocketConnection (a GIOStream) which can then
+	  be used with the GTlsClientConnection for secure connections. Note
+	  that we use _write_all() to ensure all bytes have been read. This is
+	  to follow the fact the none of the _send() calls check the return
+	  value.
+
+2016-03-16 16:49:29 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst/librfb/Makefile.am:
+	* gst/librfb/gstrfbsrc.h:
+	* gst/librfb/rfb.h:
+	* gst/librfb/rfbdecoder.c:
+	  rfbsrc: Remove useless library wrapping
+	  We use a sinlge .c file, simplify everything by removing that
+	  static library.
+
+2016-03-16 16:49:09 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst/librfb/Makefile.am:
+	* gst/librfb/rfb.c:
+	* gst/librfb/rfb.h:
+	* gst/librfb/rfbbuffer.c:
+	* gst/librfb/rfbbuffer.h:
+	* gst/librfb/rfbcontext.h:
+	* gst/librfb/rfbdecoder.h:
+	* gst/librfb/rfbutil.h:
+	  rfbsrc: Cleanup dead code
+	  Remove all the unused stuff, the include header, definition and C code
+	  that don't contribute anything to this element.
+
+2016-03-14 15:08:13 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst/librfb/rfbdecoder.c:
+	  rfbsrc: Properly fallback to 3.3
+	  If the major version is not 3, then the minor version provided
+	  should be ignored, as it is meaningless for our fallback.
+
+2016-03-14 15:05:45 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst/librfb/rfbdecoder.c:
+	  rfbsrc: Cleanly handle security negotiation failure
+	  When the security cannot be negotiated, the server returns
+	  security type of 0 (failure). In that case, the next step is
+	  to read the error reason string.
+
+2016-04-01 14:36:15 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* ext/dash/gstmpdparser.c:
+	  mpdparser: clamp segment durations to each other and period end
+	  5.3.2.1 in the spec.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=751792
+
+2015-09-10 13:22:58 +0100  Florin Apostol <florin.apostol@oregan.net>
+
+	* tests/check/elements/dash_mpd.c:
+	  dashdemux: unit testing reproducing segment duration overflow
+	  unit test reproducing https://bugzilla.gnome.org/show_bug.cgi?id=751792
+	  With minor changes by Vincent Penquerc'h.
+
 2016-04-05 14:49:51 +0300  Sebastian Dröge <sebastian@centricular.com>
 
 	* sys/decklink/gstdecklinkaudiosrc.cpp:
@@ -1067,6 +6929,51 @@
 	  ::VideoInputFrameArrived() callback, observed on Intensity Pro cards.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=747633
 
+2016-03-23 03:16:11 +0000  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglvideomixer.c:
+	  glvideomixer: add support for the affine transformation meta
+
+2016-03-23 03:14:40 +0000  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglimagesink.c:
+	  glimagesink: support the affine transformation meta for any texture target
+
+2016-04-05 16:22:49 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglmixer.c:
+	  glmixer: set the current texture to 0 before mapping
+	  If we fail mapping, we don't want to use undefined video data in the subclass.
+
+2015-09-08 14:37:57 +0200  Patricia Muscalu <patricia@axis.com>
+
+	* ext/curl/gstcurlbasesink.c:
+	  curlsink: catch an unknown error
+	  In this case the socket callback has not been called
+	  by libcurl and the curlsink has not been notified about any
+	  connection problems by libcurl.
+	  This indicates that it's a bug in libcurl so catch it as
+	  an unknown error.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=754432
+
+2016-04-04 13:43:30 +1000  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglmixerbin.c:
+	  glmixerbin: proxy the start-time-* properties from aggregator
+
+2016-04-04 11:28:35 +0200  Santiago Carot-Nemesio <sancane@gmail.com>
+
+	* ext/dtls/gstdtlssrtpdec.c:
+	* ext/dtls/gstdtlssrtpenc.c:
+	  dtls: Use unique names for internal elements to ease debugging
+	  https://bugzilla.gnome.org/show_bug.cgi?id=748651
+
+2016-04-03 17:56:06 +0200  Aurélien Zanelli <aurelien.zanelli@darkosphere.fr>
+
+	* gst-libs/gst/base/gstaggregator.c:
+	  aggregator: remove duplicated test of flow_return in pad_chain_internal
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764549
+
 2016-04-03 18:06:20 +0900  Kouhei Sutou <kou@clear-code.com>
 
 	* sys/directsound/Makefile.am:
@@ -1077,6 +6984,73 @@
 	  f9464ce3549c2b3948a582464631ba4f8dd0d5e7 .
 	  https://bugzilla.gnome.org/show_bug.cgi?id=764523
 
+2016-03-31 11:21:35 +0200  Christoffer Stengren <christsn.gs@gmail.com>
+
+	* gst/gdp/dataprotocol.c:
+	* gst/gdp/dataprotocol.h:
+	* gst/gdp/gstgdpdepay.c:
+	* gst/gdp/gstgdpdepay.h:
+	  gdpdepay: Query for buffer allocator before using default
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764361
+
+2016-03-22 19:27:39 +0200  Vivia Nikolaidou <vivia@toolsonair.com>
+
+	* gst/interlace/gstinterlace.c:
+	  interlace: Allow interlaced sink caps, do passthrough
+	  Allow interlace to receive already interlaced content, if compatible with its
+	  configuration. In that case, it will just do passthrough.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764036
+
+2016-04-01 21:24:34 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* ext/lv2/README:
+	  README: update to 1.0 and lilv
+
+2016-04-01 18:33:13 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* ext/lv2/gstlv2filter.c:
+	  lv2filter: remove the variable for the registry klass tag
+	  Just pass the string when registering.
+
+2016-04-01 18:31:36 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* ext/lv2/gstlv2filter.c:
+	  lv2filter: remove copy and paste of doc blob
+	  This doc block is already in gstlv2.c.
+
+2016-04-01 12:59:19 +0200  Vanessa Chipirras Navalon <vanechipi@qtec.com>
+
+	* ext/opencv/gstsegmentation.cpp:
+	* ext/opencv/gstsegmentation.h:
+	  opencv: segmentation: Ported to OpenCV version 3.1
+	  Add namespace bgsegm, replacement functions and Template class for new
+	  OpenCV versions because these functions have been removed. cvarrToMat() is
+	  added because it is compatible with all versions of OpenCV and the use of
+	  class Mat constructor is eliminated, it is also deprecated in 3.X versions.
+	  Use the namespace cv because some functions are called many times.
+	  This patch keeps compatibility with 2.4
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760473
+
+2016-04-01 14:12:08 +0300  Sreerenj Balachandran <sreerenj.balachandran@intel.com>
+
+	* gst-libs/gst/codecparsers/gstvp9parser.c:
+	* gst-libs/gst/codecparsers/gstvp9parser.h:
+	  codecparser: vp9: move persistent fields from GstVp9FrameHdr to GstVp9Parser
+	  The subsampling_x, subsampling_y, bit_depth, color_space and color_range
+	  fileds are moved from GstVp9FrameHdr to the global GstVp9Parser structure.
+	  These fields are only present in keyframe or intra-only frame, no need to
+	  duplicate them for inter-frames. This is an ABI change.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764370
+
+2016-04-01 12:08:53 +0200  Vanessa Chipirras Navalon <vanechipi@qtec.com>
+
+	* ext/opencv/gsttextoverlay.h:
+	  opencv: textoverlay: Ported to OpenCV version 3.1
+	  imgproc_c.h is added because CvFont struct needs it in any 3.x version.
+	  We use this structure in GstOpencvTextOverlay. This keeps compatibility
+	  with 2.4.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760473
+
 2016-04-01 11:56:20 +0300  Sebastian Dröge <sebastian@centricular.com>
 
 	* gst/videoparsers/gsth264parse.c:
@@ -1086,6 +7060,196 @@
 	  and the other compatible profiles.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=764448
 
+2016-03-22 07:19:03 +0000  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/egl/gsteglimagememory.c:
+	  eglimage: perform eglCreateImage in the gl thread
+	  while calling eglCreateImage without a GL context current in the executing
+	  thread works on the RPi, some other implementations will return errors.
+	  Marshall the eglCreateImage to the GL thread to appease these implementations.
+
+2016-04-01 14:58:56 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglviewconvert.c:
+	  glviewconvert: support outputting to multiple draw buffers on GLES3
+	  A similar change that was done to glcolorconvert adding the necessary shader
+	  mangling.
+
+2016-03-31 19:50:28 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglcolorconvert.c:
+	  glcolorconvert: implement multiple render targets for GLES3
+	  There are numerous slight differences required between Desktop GL and GLES3 for
+	  multiple render targets.
+	  1. gl_FragData doesn't exist at all and one is required to use
+	  'layout (location = ?) out ...' instead.
+	  2. gl_FragColor doesn't exist, same as 1
+	  3. texture2D() has been deprecated
+	  Fortunately most of these have been taken care of with GL3 and the shader
+	  mangling already exists so just expand the conditions they are used in.  The
+	  gl_FragData issue requires a new mangle pass though.  We also use this new
+	  pass on desktop GL for consistency.
+
+2016-03-31 18:23:22 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* tests/check/elements/mssdemux.c:
+	  tests: mssdemux: do not use gst_object_unref for pure GObject*
+	  Deallocate GObject* with g_object_unref instead of gst_object_unref.
+	  Even if it works now, it is confusing and in the future it might
+	  not work if any GstObject specifics are added.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=762142
+
+2016-02-16 13:55:54 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* tests/check/elements/dash_demux.c:
+	  dashdemux: tests: use g_object_unref for test data
+	  The GstDashDemuxTestCase object is allocated using g_object_newv
+	  but in many places was being deallocated using gst_object_unref.
+	  This was caused by commit ae3ed25025e34ea9b09df59d22d7ebd7294560bc.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=762142
+
+2016-03-31 16:08:12 +0100  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* ext/opencv/MotionCells.cpp:
+	* ext/opencv/MotionCells.h:
+	  motioncells: fully construct MotionCells
+	  Some members of MotionCells were not being initialized in the constructor.
+	  Protect from potential garbage memory usage by fully initializing it.
+	  Moving m_frameSize out of the class because it is only used in
+	  performDetectionMotionCells().
+	  CID 1197704
+
+2016-04-01 00:23:25 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/Makefile.am:
+	  gl/build: add missing '\' at the end of the line in MakeFile.am
+	  Otherwise the following elements aren't included in the correct variable.
+	  Fixes error in 'make distcheck' failing to find gstgltestsrc.h
+
+2016-03-31 23:07:17 +1100  Matthew Waters <matthew@centricular.com>
+
+	* tests/check/Makefile.am:
+	  gl/tests/pipelines: add custom _CFLAGS and LDADD
+	  As is done everywhere else.
+	  From what I can gather from make -C tests/check V=1 $(GST_PLUGINS_BAD_CFLAGS) is
+	  required in order to find in-tree headers as well as srcdir != builddir
+	  configurations.
+
+2016-03-31 22:20:01 +1100  Matthew Waters <matthew@centricular.com>
+
+	* tests/check/Makefile.am:
+	  gl/tests: only build the simple-launch-lines test if we have GL
+
+2016-03-31 20:00:37 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglcolorconvert.c:
+	  glcolorconvert: don't use the predefined variable name sample
+	  Using 'sample' as a variable name is an error in GLES3
+
+2016-03-22 23:10:24 +1100  Matthew Waters <matthew@centricular.com>
+
+	* tests/examples/gl/gtk/switchvideooverlay/Makefile.am:
+	* tests/examples/gl/gtk/switchvideooverlay/main.cpp:
+	  gl/examples: fix switchvideooverlay for wayland
+	  and call XInitThreads() for X11
+
+2016-03-21 15:25:21 +1100  Matthew Waters <matthew@centricular.com>
+
+	* configure.ac:
+	* tests/examples/gl/gtk/Makefile.am:
+	* tests/examples/gl/gtk/gtkvideooverlay/.gitignore:
+	* tests/examples/gl/gtk/gtkvideooverlay/Makefile.am:
+	* tests/examples/gl/gtk/gtkvideooverlay/gtkvideooverlay.vcproj:
+	* tests/examples/gl/gtk/gtkvideooverlay/main.cpp:
+	  gl/examples: remove duplicated videooverlay example
+	  filtervideooverlay proved the exact same example (only with a extra glfiltercube).
+
+2016-03-21 15:23:41 +1100  Matthew Waters <matthew@centricular.com>
+
+	* tests/examples/gl/gtk/3dvideo/main.cpp:
+	  gl/examples/3d: additions for wayland support
+
+2016-03-17 23:51:44 +1100  Matthew Waters <matthew@centricular.com>
+
+	* tests/check/Makefile.am:
+	* tests/check/pipelines/simple-launch-lines.c:
+	  gl/tests: add missing test to the build system
+	  Also update it for the current api
+
+2016-03-17 23:50:00 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/effects/gstgleffectssources.c:
+	* ext/gl/gstgldifferencematte.c:
+	* ext/gl/gstgldifferencematte.h:
+	  gldifferencematte: port to gl3/gles2
+
+2016-02-26 20:55:47 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/Makefile.am:
+	* ext/gl/gltestsrc.c:
+	* ext/gl/gstgltestsrc.c:
+	* ext/gl/gstopengl.c:
+	  gltestsrc: port to gles2/gl3
+	  This makes gltestsrc work everywhere \o/
+	  - workaround RPi returning invalid values for positive coords in the
+	  checker shader
+	  - reduce the number of iterations in the mandelbrot shader for gles2
+	  https://bugzilla.gnome.org/show_bug.cgi?id=751540
+
+2016-02-26 16:57:47 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gltestsrc.c:
+	  gltestsrc: port smpte pattern to shaders
+	  Loosely based on patch by
+	  Lubosz Sarnecki <lubosz.sarnecki@collabora.co.uk>
+	  https://bugzilla.gnome.org/show_bug.cgi?id=751540
+
+2016-02-26 12:02:15 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gltestsrc.c:
+	  gltestsrc: implement the circular method
+	  https://bugzilla.gnome.org/show_bug.cgi?id=759801
+
+2016-02-25 21:18:31 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gltestsrc.c:
+	* ext/gl/gltestsrc.h:
+	* ext/gl/gstgltestsrc.c:
+	* ext/gl/gstgltestsrc.h:
+	  gltestsrc: add a generic src framework
+	  Any unsupported pattern (circular) results in an error
+
+2016-02-29 20:15:24 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglstereosplit.c:
+	* ext/gl/gstglstereosplit.h:
+	  glsterosplit: remove internal glupload/glcolorconvert
+	  They are provided separately as elements and no other element contains the
+	  internal references to glupload/glcolorconvert.
+
+2016-03-31 19:43:04 +1100  Matthew Waters <matthew@centricular.com>
+
+	* configure.ac:
+	* gst-libs/gst/gl/glprototypes/gstgl_gles2compat.h:
+	* gst-libs/gst/gl/gstglapi.h:
+	* gst-libs/gst/gl/gstglcontext.c:
+	  gl: add support for building against GLES3 headers
+	  with a fallback to GLES2 headers if available.
+
+2016-03-31 19:38:12 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglmemory.c:
+	  glmemory: add checking the read implementation format/type on gles2 platforms
+	  By default, reading GL_RED or GL_RG us unsupported by glReadPixels unless
+	  exposed through GL_COLOR_READ_IMPLEMENTATION_FORMAT/TYPE.  This allows
+	  downloading multiple-planar video frames where possible.
+
+2016-03-31 19:35:09 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglbasememory.c:
+	  glbasememory: rollback map state when subclass map fails
+	  Otherwise our state doesn't reflect reality.
+
 2016-03-31 19:31:00 +1100  Matthew Waters <matthew@centricular.com>
 
 	* gst-libs/gst/gl/gstglmemorypbo.c:
@@ -1094,11 +7258,15 @@
 	  Also only unset the NEED_DOWNLOAD flag in download_transfer() if the read actually
 	  succeeds.
 
-2016-03-31 19:35:09 +1100  Matthew Waters <matthew@centricular.com>
+2016-03-31 19:25:32 +1100  Matthew Waters <matthew@centricular.com>
 
-	* gst-libs/gst/gl/gstglbasememory.c:
-	  glbasememory: rollback map state when subclass map fails
-	  Otherwise our state doesn't reflect reality.
+	* gst-libs/gst/gl/glprototypes/shaders.h:
+	* gst-libs/gst/gl/gstglshader.c:
+	* gst-libs/gst/gl/gstglshader.h:
+	  glshader: add glBindFragDataLocation
+	  There are some cases where it's needed for binding in/out variables in shaders.
+	  e.g. glsl 150 (gl 3.2) doesn't support the 'layout (location = ?)' specifiers in
+	  the shader source so we have to bind them ourselves.
 
 2016-03-31 12:20:30 +0300  Sebastian Dröge <sebastian@centricular.com>
 
@@ -1117,6 +7285,105 @@
 	  across header versions (and ultimately nvidia driver releases).
 	  https://bugzilla.gnome.org/show_bug.cgi?id=763324
 
+2016-03-30 22:34:59 +0100  Vanessa Chipirras Navalon <vanechipi@qtec.com>
+
+	* docs/plugins/Makefile.am:
+	* docs/plugins/gst-plugins-bad-plugins-docs.sgml:
+	* docs/plugins/gst-plugins-bad-plugins-sections.txt:
+	* docs/plugins/gst-plugins-bad-plugins.args:
+	* docs/plugins/inspect/plugin-opencv.xml:
+	* ext/opencv/Makefile.am:
+	* ext/opencv/gstopencv.cpp:
+	* ext/opencv/gstpyramidsegment.cpp:
+	* ext/opencv/gstpyramidsegment.h:
+	  opencv: pyramidsegment: delete element
+	  cvPyrSegmentation() has been deprecated in OpenCV 3.0, and there isn't any
+	  function to replace it. Deleting this element so we can support OpenCV 3.1
+	  without build issues.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760473
+
+2016-01-26 16:52:37 +0100  Vanessa Chipirras Navalon <vanechipi@qtec.com>
+
+	* ext/opencv/gstcvsmooth.cpp:
+	  opencv: gstcvsmooth: Ported to OpenCV version 3.1
+	  cvarrToMat() is added because it is compatible with all versions of Opencv
+	  and the use the class constructor Mat is eliminated because is deprecated
+	  in 3.X versions. This keeps compatibility with 2.4.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760473
+
+2016-01-27 10:05:13 +0100  Vanessa Chipirras Navalon <vanechipi@qtec.com>
+
+	* ext/opencv/gstgrabcut.cpp:
+	  opencv: grabcut: Ported to OpenCV version 3.1
+	  cvarrToMat() is added because it is compatible with all versions of Opencv
+	  and using the class Mat constructor is eliminated, because is deprecated
+	  in 3.X versions. The use the using namespace cv because is called some
+	  functions many times. This keeps compatibility with 2.4.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760473
+
+2016-01-27 15:37:39 +0100  Vanessa Chipirras Navalon <vanechipi@qtec.com>
+
+	* ext/opencv/gstfaceblur.cpp:
+	  opencv: faceblur: Ported to OpenCV version 3.1
+	  cvarrToMat() is added because it is compatible with all versions of Opencv
+	  and the use of the class constructor Mat is eliminated because is deprecated
+	  in 3.X versions. Included 'using namespace std' because it is needed for the
+	  Vector class in 3.X versions. This keeps compatibility with 2.4.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760473
+
+2016-01-27 15:51:37 +0100  Vanessa Chipirras Navalon <vanechipi@qtec.com>
+
+	* ext/opencv/gsthanddetect.cpp:
+	  opencv: handdetect: Ported to OpenCV version 3.1
+	  cvarrToMat() is added because it is compatible with all versions of Opencv
+	  and the use of the class constructor Mat is eliminated because is deprecated
+	  in 3.X versions. Included 'using namespace std' because it is needed for the
+	  vector class in 3.X versions. This keeps compatibility with 2.4.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760473
+
+2016-01-27 16:51:13 +0100  Vanessa Chipirras Navalon <vanechipi@qtec.com>
+
+	* ext/opencv/gstretinex.cpp:
+	  opencv: retinex: Ported to OpenCV version 3.1
+	  cvarrToMat() is added because it is compatible with all versions of Opencv
+	  and using the class constructor Mat is eliminated because is deprecated
+	  in 3.X versions. This keeps compatibility with 2.4.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760473
+
+2016-01-28 16:19:46 +0100  Vanessa Chipirras Navalon <vanechipi@qtec.com>
+
+	* ext/opencv/gstdisparity.cpp:
+	* ext/opencv/gstdisparity.h:
+	  opencv: disparity: Ported to OpenCV version 3.1
+	  'METHOD_VAR', 'METHOD_GC' is removed because there aren't equivalent functions
+	  in new OpenCV versions. 'img_right_as_cvMat_rgb', 'img_left_as_cvMat_rgb' and
+	  'depth_map_as_cvMat2' variables is removed because these aren't used.
+	  cvarrToMat() is added because it is compatible with all versions of Opencv
+	  and using the class Mat constructor is eliminated, because is deprecated
+	  in 3.X versions. The use 'using namespace cv' because is called some
+	  functions many times. This keeps compatibility with 2.4.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760473
+
+2016-02-01 13:58:49 +0100  Vanessa Chipirras Navalon <vanechipi@qtec.com>
+
+	* ext/opencv/gstskindetect.cpp:
+	  opencv: skindetect: Ported to OpenCV version 3.1
+	  cvCVPixToPlane() has been deprecated in OpenCV 3.0, and there is
+	  function to replace it cvSplit(). The include compat.hpp is deleted because
+	  in 3.X versions doen't exist and it isn't necessary for 2.4.X versions
+	  in this element. This keeps compatibility with 2.4.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760473
+
+2016-01-28 17:40:51 +0100  Vanessa Chipirras Navalon <vanechipi@qtec.com>
+
+	* configure.ac:
+	* ext/opencv/gstopencvutils.cpp:
+	  opencv: Ported to OpenCV version 3.1 OpenCV
+	  configure.ac was changed to work with new versions of OpenCV 3.X.
+	  A new include is added gstopencvutils.cpp because it contains
+	  the previous. This keeps compatibility with 2.4.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760473
+
 2016-03-30 10:34:07 +0300  Sebastian Dröge <sebastian@centricular.com>
 
 	* sys/androidmedia/gstahcsrc.c:
@@ -1127,6 +7394,70 @@
 	  GStreamer API doesn't provide direct ways for doing so.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=764339
 
+2016-03-07 14:57:35 +0100  Edward Hervey <edward@centricular.com>
+
+	* ext/teletextdec/gstteletextdec.c:
+	  teletexdec: Simplify negotiation code
+	  No need to use a while() loop if we're going only going to use
+	  the first structure of the caps ...
+	  CID #1341748
+
+2016-03-28 13:52:07 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/libs/aggregator.c:
+	  aggregator: Fix leak in unit test
+	  GST_PAD_PROBE_HANDLED means that we should've unreffed the probe data,
+	  it was handled by us in one way or another.
+
+2016-03-28 08:46:10 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* .gitignore:
+	  .gitignore: Ignore some more test temporary files
+
+2016-03-28 08:45:45 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* tests/check/elements/compositor.c:
+	  tests/compositor: Add test for aggregator pad numbering
+	  Tests that the behaviour in 7a5cb5a473 is being conformed to.
+
+2016-03-27 19:06:50 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* gst-libs/gst/base/gstaggregator.c:
+	  aggregator: Fix strcmp test for sink template
+
+2016-03-27 18:41:30 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* gst-libs/gst/base/gstaggregator.c:
+	  aggregator: Don't try to be too smart while allocating pad names
+	  Previously, while allocating the pad number for a new pad, aggregator was
+	  maintaining an interesting relationship between the pad count and the pad
+	  number.
+	  If you requested a sink pad called "sink_6", padcount (which is badly named and
+	  actually means number-of-pads-minus-one) would be set to 6. Which means that if
+	  you then requested a sink pad called "sink_0", it would be assigned the name
+	  "sink_6" again, which fails the non-uniqueness test inside gstelement.c.
+	  This can be fixed by instead setting padcount to be 7 in that case, but this
+	  breaks manual management of pad names by the application since it then becomes
+	  impossible to request a pad called "sink_2". Instead, we fix this by always
+	  directly using the requested name as the sink pad name. Uniqueness of the pad
+	  name is tested separately inside gstreamer core. If no name is requested, we use
+	  the next available pad number.
+	  Note that this is important since the sinkpad numbering in aggregator is not
+	  meaningless. Videoaggregator uses it to decide the Z-order of video frames.
+
+2016-02-23 15:11:36 +0100  Thibault Saunier <tsaunier@gnome.org>
+
+	* configure.ac:
+	* ext/lv2/Makefile.am:
+	* ext/lv2/gstlv2.c:
+	* ext/lv2/gstlv2.h:
+	* ext/lv2/gstlv2filter.c:
+	  lv2: Port filters to GStreamer 1.0 and use lilv instead of slv2
+	  Properly separate files as we will not have only one single base class
+	  for all elements as we used to with 0.10, but the same way it is done
+	  with ladspa, we subclass GstAudioFilter, GstBaseSource etc...
+	  https://bugzilla.gnome.org/show_bug.cgi?id=678207
+
 2016-03-27 14:29:58 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
 
 	* ext/gtk/gstgtkglsink.c:
@@ -1136,6 +7467,13 @@
 	  Set a default category for gtkgstbasewidget lest the logging go to the 'default'
 	  category where it can't be found easily
 
+2016-03-27 03:11:45 +0200  Yann Jouanin <yjo@witbe.net>
+
+	* ext/rtmp/gstrtmpsrc.c:
+	* ext/rtmp/gstrtmpsrc.h:
+	  rtmpsrc plugin : add timeout option
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764251
+
 2016-03-18 13:35:37 +0200  Sebastian Dröge <sebastian@centricular.com>
 
 	* gst/mxf/mxfmux.c:
@@ -1145,17 +7483,42 @@
 	  their state so that they can be used again when starting the muxer again.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=763862
 
-2016-03-03 11:31:01 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+2016-03-05 09:47:27 +0200  Sebastian Dröge <sebastian@centricular.com>
 
-	* gst/mpegtsdemux/mpegtspacketizer.c:
-	  mpegtspacketizer: simplify variable reset
-	  Just set it directly to 0, instead of checking and reseting
+	* docs/libs/gst-plugins-bad-libs-sections.txt:
+	* gst-libs/gst/player/gstplayer-media-info-private.h:
+	* gst-libs/gst/player/gstplayer-media-info.c:
+	* gst-libs/gst/player/gstplayer-media-info.h:
+	* gst-libs/gst/player/gstplayer.c:
+	* win32/common/libgstplayer.def:
+	  player: Add is_live flag to the GstPlayerMediaInfo
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763126
 
-2016-03-04 20:05:38 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+2016-02-29 11:39:54 +0200  Sebastian Dröge <sebastian@centricular.com>
 
-	* sys/dvb/dvbbasebin.c:
-	  dvbbasebin: plug some leaks
-	  Plug various leaks in dvbbasebin.
+	* gst/sdp/Makefile.am:
+	* gst/sdp/gstsdpelem.c:
+	* gst/sdp/gstsdpsrc.c:
+	* gst/sdp/gstsdpsrc.h:
+	  sdp: Add new sdpsrc element
+	  This can read from an SDP file or get the SDP data via property. Works
+	  around the problem that sdpdemux inside decodebin fails because the
+	  GST_STATE_CHANGE_NO_PREROLL is not observed by the pipeline.
+	  See https://bugzilla.gnome.org/show_bug.cgi?id=702495
+	  https://bugzilla.gnome.org/show_bug.cgi?id=762860
+
+2016-03-25 17:49:14 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gtk/gtkgstglwidget.c:
+	  gtk/gl: don't assert when gdk doesn't provide a GL context
+	  Allows the application to check whether gtkglsink is supported by setting
+	  the element to READY.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764148
+
+2016-03-07 19:41:19 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* gst/mpegtsdemux/mpegtsbase.c:
+	  mpegtsbase: plug EIT string leak
 
 2016-03-07 19:06:19 -0300  Thiago Santos <thiagoss@osg.samsung.com>
 
@@ -1164,10 +7527,39 @@
 	  Remember to unref the GPtrArray of the PAT table after
 	  use
 
-2016-03-07 19:41:19 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+2016-03-04 20:05:38 -0300  Thiago Santos <thiagoss@osg.samsung.com>
 
-	* gst/mpegtsdemux/mpegtsbase.c:
-	  mpegtsbase: plug EIT string leak
+	* sys/dvb/dvbbasebin.c:
+	  dvbbasebin: plug some leaks
+	  Plug various leaks in dvbbasebin.
+
+2016-03-03 11:31:01 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* gst/mpegtsdemux/mpegtspacketizer.c:
+	  mpegtspacketizer: simplify variable reset
+	  Just set it directly to 0, instead of checking and reseting
+
+2016-03-01 18:21:12 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: print time in same format
+	  Makes it easier to compare
+
+2016-03-15 16:22:59 -0700  Martin Kelly <martin@surround.io>
+
+	* sys/androidmedia/gst-android-hardware-camera.c:
+	* sys/androidmedia/gstahcsrc.c:
+	  ahc: use g_slice_new instead of g_slice_new0
+	  In many cases, we use g_slice_new0 and then immediately overwrite the
+	  allocated memory. This is inefficient. Since we're going to immediately
+	  overwrite it, we might as well use plain g_slice_new.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763998
+
+2016-03-10 08:50:28 +0900  Vineeth TM <vineeth.tm@samsung.com>
+
+	* sys/d3dvideosink/d3dvideosink.c:
+	  d3dvideosink: post message to application for unhandled keyboard/mouse events
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763403
 
 2016-03-10 08:49:01 +0900  Vineeth TM <vineeth.tm@samsung.com>
 
@@ -1181,11 +7573,348 @@
 	  gtkbasesink: post message to application for unhandled keyboard/mouse events
 	  https://bugzilla.gnome.org/show_bug.cgi?id=763403
 
-2016-03-10 08:50:28 +0900  Vineeth TM <vineeth.tm@samsung.com>
+2016-03-03 20:10:16 +0900  Justin Kim <justin.kim@collabora.com>
 
+	* sys/androidmedia/gstahcsrc.c:
+	* sys/androidmedia/gstahcsrc.h:
+	  ahcsrc: remove probe_properties
+	  It's a residue of 0.10.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763100
+
+2016-03-04 15:50:26 +0900  Vineeth TM <vineeth.tm@samsung.com>
+
+	* ext/apexsink/gstapexsink.c:
+	* ext/assrender/gstassrender.c:
+	* ext/bz2/gstbz2dec.c:
+	* ext/bz2/gstbz2enc.c:
+	* ext/curl/gstcurlbasesink.c:
+	* ext/daala/gstdaaladec.c:
+	* ext/daala/gstdaalaenc.c:
+	* ext/dash/gstdashdemux.c:
+	* ext/directfb/dfbvideosink.c:
+	* ext/dtls/gstdtlsdec.c:
+	* ext/dtls/gstdtlsenc.c:
+	* ext/dtls/gstdtlssrtpdec.c:
+	* ext/dtls/gstdtlssrtpdemux.c:
+	* ext/dtls/gstdtlssrtpenc.c:
+	* ext/dts/gstdtsdec.c:
+	* ext/faac/gstfaac.c:
+	* ext/faad/gstfaad.c:
+	* ext/flite/gstflitetestsrc.c:
+	* ext/fluidsynth/gstfluiddec.c:
+	* ext/gl/caopengllayersink.m:
+	* ext/gl/gstglcolorconvertelement.c:
+	* ext/gl/gstgldownloadelement.c:
+	* ext/gl/gstglfilterbin.c:
+	* ext/gl/gstglimagesink.c:
+	* ext/gl/gstglmixer.c:
+	* ext/gl/gstglmixerbin.c:
+	* ext/gl/gstglsrcbin.c:
+	* ext/gl/gstglstereomix.c:
+	* ext/gl/gstglstereosplit.c:
+	* ext/gl/gstgltestsrc.c:
+	* ext/gl/gstgluploadelement.c:
+	* ext/gl/gstglvideoflip.c:
+	* ext/gme/gstgme.c:
+	* ext/gsm/gstgsmdec.c:
+	* ext/gsm/gstgsmenc.c:
+	* ext/gtk/gstgtkglsink.c:
+	* ext/gtk/gstgtksink.c:
+	* ext/hls/gsthlsdemux.c:
+	* ext/hls/gsthlssink.c:
+	* ext/kate/gstkatedec.c:
+	* ext/kate/gstkateenc.c:
+	* ext/kate/gstkateparse.c:
+	* ext/kate/gstkatetiger.c:
+	* ext/libde265/libde265-dec.c:
+	* ext/libmms/gstmms.c:
+	* ext/libvisual/visual-gl.c:
+	* ext/mimic/gstmimdec.c:
+	* ext/mimic/gstmimenc.c:
+	* ext/modplug/gstmodplug.cc:
+	* ext/mpeg2enc/gstmpeg2enc.cc:
+	* ext/mplex/gstmplex.cc:
+	* ext/musepack/gstmusepackdec.c:
+	* ext/nas/nassink.c:
+	* ext/neon/gstneonhttpsrc.c:
+	* ext/openal/gstopenalsink.c:
+	* ext/openal/gstopenalsrc.c:
+	* ext/opencv/gstcvequalizehist.cpp:
+	* ext/opencv/gstcvlaplace.cpp:
+	* ext/opencv/gstcvsobel.cpp:
+	* ext/opencv/gstdisparity.cpp:
+	* ext/opencv/gstedgedetect.cpp:
+	* ext/opencv/gstfaceblur.cpp:
+	* ext/opencv/gstfacedetect.cpp:
+	* ext/opencv/gstgrabcut.cpp:
+	* ext/opencv/gsthanddetect.cpp:
+	* ext/opencv/gstmotioncells.cpp:
+	* ext/opencv/gstpyramidsegment.cpp:
+	* ext/opencv/gstretinex.cpp:
+	* ext/opencv/gstsegmentation.cpp:
+	* ext/opencv/gstskindetect.cpp:
+	* ext/opencv/gsttemplatematch.cpp:
+	* ext/opencv/gsttextoverlay.cpp:
+	* ext/openexr/gstopenexrdec.cpp:
+	* ext/openh264/gstopenh264dec.cpp:
+	* ext/openh264/gstopenh264enc.cpp:
+	* ext/openjpeg/gstopenjpegdec.c:
+	* ext/openjpeg/gstopenjpegenc.c:
+	* ext/openni2/gstopenni2src.cpp:
+	* ext/opus/gstopusparse.c:
+	* ext/qt/gstqtsink.cc:
+	* ext/resindvd/resindvdbin.c:
+	* ext/resindvd/resindvdsrc.c:
+	* ext/resindvd/rsndec.c:
+	* ext/resindvd/rsninputselector.c:
+	* ext/resindvd/rsnparsetter.c:
+	* ext/rsvg/gstrsvgdec.c:
+	* ext/rsvg/gstrsvgoverlay.c:
+	* ext/rtmp/gstrtmpsink.c:
+	* ext/rtmp/gstrtmpsrc.c:
+	* ext/sbc/gstsbcdec.c:
+	* ext/sbc/gstsbcenc.c:
+	* ext/schroedinger/gstschrodec.c:
+	* ext/schroedinger/gstschroenc.c:
+	* ext/sdl/sdlaudiosink.c:
+	* ext/smoothstreaming/gstmssdemux.c:
+	* ext/sndfile/gstsfdec.c:
+	* ext/sndfile/gstsfsink.c:
+	* ext/sndfile/gstsfsrc.c:
+	* ext/sndio/sndiosink.c:
+	* ext/sndio/sndiosrc.c:
+	* ext/soundtouch/gstpitch.cc:
+	* ext/spandsp/gstdtmfdetect.c:
+	* ext/spandsp/gstspanplc.c:
+	* ext/spandsp/gsttonegeneratesrc.c:
+	* ext/spc/gstspc.c:
+	* ext/srtp/gstsrtpdec.c:
+	* ext/srtp/gstsrtpenc.c:
+	* ext/teletextdec/gstteletextdec.c:
+	* ext/timidity/gsttimidity.c:
+	* ext/timidity/gstwildmidi.c:
+	* ext/voaacenc/gstvoaacenc.c:
+	* ext/voamrwbenc/gstvoamrwbenc.c:
+	* ext/vulkan/vksink.c:
+	* ext/wayland/gstwaylandsink.c:
+	* ext/webp/gstwebpdec.c:
+	* ext/webp/gstwebpenc.c:
+	* ext/x265/gstx265enc.c:
+	* ext/xvid/gstxviddec.c:
+	* ext/xvid/gstxvidenc.c:
+	* ext/zbar/gstzbar.c:
+	* gst-libs/gst/gl/gstglfilter.c:
+	* gst-libs/gst/insertbin/gstinsertbin.c:
+	* gst/adpcmdec/adpcmdec.c:
+	* gst/adpcmenc/adpcmenc.c:
+	* gst/aiff/aiffmux.c:
+	* gst/aiff/aiffparse.c:
+	* gst/asfmux/gstasfmux.c:
+	* gst/asfmux/gstasfparse.c:
+	* gst/asfmux/gstrtpasfpay.c:
+	* gst/audiobuffer/gstaudioringbuffer.c:
+	* gst/audiofxbad/gstaudiochannelmix.c:
+	* gst/audiomixer/gstaudiointerleave.c:
+	* gst/audiomixer/gstaudiomixer.c:
+	* gst/audiovisualizers/gstspacescope.c:
+	* gst/audiovisualizers/gstspectrascope.c:
+	* gst/audiovisualizers/gstsynaescope.c:
+	* gst/audiovisualizers/gstwavescope.c:
+	* gst/autoconvert/gstautoconvert.c:
+	* gst/autoconvert/gstautovideoconvert.c:
+	* gst/bayer/gstrgb2bayer.c:
+	* gst/camerabin2/gstdigitalzoom.c:
+	* gst/camerabin2/gstviewfinderbin.c:
+	* gst/camerabin2/gstwrappercamerabinsrc.c:
+	* gst/cdxaparse/gstcdxaparse.c:
+	* gst/cdxaparse/gstvcdparse.c:
+	* gst/coloreffects/gstchromahold.c:
+	* gst/coloreffects/gstcoloreffects.c:
+	* gst/compositor/compositor.c:
+	* gst/dataurisrc/gstdataurisrc.c:
+	* gst/dccp/gstdccpclientsink.c:
+	* gst/dccp/gstdccpclientsrc.c:
+	* gst/dccp/gstdccpserversink.c:
+	* gst/dccp/gstdccpserversrc.c:
+	* gst/debugutils/fpsdisplaysink.c:
+	* gst/debugutils/gstchecksumsink.c:
+	* gst/debugutils/gstchopmydata.c:
+	* gst/debugutils/gstcompare.c:
+	* gst/debugutils/gstdebugspy.c:
+	* gst/debugutils/gsterrorignore.c:
+	* gst/dvbsuboverlay/gstdvbsuboverlay.c:
+	* gst/dvdspu/gstdvdspu.c:
+	* gst/faceoverlay/gstfaceoverlay.c:
+	* gst/festival/gstfestival.c:
+	* gst/fieldanalysis/gstfieldanalysis.c:
+	* gst/freeverb/gstfreeverb.c:
+	* gst/gaudieffects/gstburn.c:
+	* gst/gaudieffects/gstchromium.c:
+	* gst/gaudieffects/gstdilate.c:
+	* gst/gaudieffects/gstdodge.c:
+	* gst/gaudieffects/gstexclusion.c:
+	* gst/gaudieffects/gstgaussblur.c:
+	* gst/gaudieffects/gstsolarize.c:
+	* gst/gdp/gstgdpdepay.c:
+	* gst/gdp/gstgdppay.c:
+	* gst/geometrictransform/gstgeometrictransform.c:
+	* gst/hdvparse/gsthdvparse.c:
+	* gst/id3tag/gstid3mux.c:
+	* gst/inter/gstinteraudiosink.c:
+	* gst/inter/gstinteraudiosrc.c:
+	* gst/inter/gstintersubsink.c:
+	* gst/inter/gstintersubsrc.c:
+	* gst/inter/gstintervideosink.c:
+	* gst/inter/gstintervideosrc.c:
+	* gst/interlace/gstinterlace.c:
+	* gst/ivfparse/gstivfparse.c:
+	* gst/ivtc/gstcombdetect.c:
+	* gst/ivtc/gstivtc.c:
+	* gst/jp2kdecimator/gstjp2kdecimator.c:
+	* gst/jpegformat/gstjifmux.c:
+	* gst/jpegformat/gstjpegparse.c:
+	* gst/librfb/gstrfbsrc.c:
+	* gst/midi/midiparse.c:
+	* gst/mixmatrix/mixmatrix.c:
+	* gst/mpegpsmux/mpegpsmux.c:
+	* gst/mpegtsdemux/mpegtsbase.c:
+	* gst/mpegtsdemux/mpegtsparse.c:
+	* gst/mpegtsmux/mpegtsmux.c:
+	* gst/mve/gstmvemux.c:
+	* gst/mxf/mxfdemux.c:
+	* gst/mxf/mxfmux.c:
+	* gst/netsim/gstnetsim.c:
+	* gst/nuvdemux/gstnuvdemux.c:
+	* gst/onvif/gstrtponvifparse.c:
+	* gst/onvif/gstrtponviftimestamp.c:
+	* gst/overlay/gstoverlay.c:
+	* gst/patchdetect/gstpatchdetect.c:
+	* gst/pcapparse/gstirtspparse.c:
+	* gst/pcapparse/gstpcapparse.c:
+	* gst/pnm/gstpnmdec.c:
+	* gst/pnm/gstpnmenc.c:
+	* gst/rawparse/gstrawparse.c:
+	* gst/removesilence/gstremovesilence.c:
+	* gst/sdi/gstsdidemux.c:
+	* gst/sdi/gstsdimux.c:
+	* gst/sdp/gstsdpdemux.c:
+	* gst/segmentclip/gstaudiosegmentclip.c:
+	* gst/segmentclip/gstvideosegmentclip.c:
+	* gst/siren/gstsirendec.c:
+	* gst/siren/gstsirenenc.c:
+	* gst/smooth/gstsmooth.c:
+	* gst/speed/gstspeed.c:
+	* gst/subenc/gstsrtenc.c:
+	* gst/subenc/gstwebvttenc.c:
+	* gst/tta/gstttadec.c:
+	* gst/tta/gstttaparse.c:
+	* gst/vbidec/gstvbidec.c:
+	* gst/videoframe_audiolevel/gstvideoframe-audiolevel.c:
+	* gst/videomeasure/gstvideomeasure_collector.c:
+	* gst/videomeasure/gstvideomeasure_ssim.c:
+	* gst/videoparsers/gstdiracparse.c:
+	* gst/videoparsers/gsth263parse.c:
+	* gst/videoparsers/gsth264parse.c:
+	* gst/videoparsers/gsth265parse.c:
+	* gst/videoparsers/gstmpeg4videoparse.c:
+	* gst/videoparsers/gstmpegvideoparse.c:
+	* gst/videoparsers/gstpngparse.c:
+	* gst/videoparsers/gstvc1parse.c:
+	* gst/vmnc/vmncdec.c:
+	* gst/y4m/gsty4mdec.c:
+	* gst/yadif/gstyadif.c:
+	* sys/acmenc/acmenc.c:
+	* sys/acmmp3dec/acmmp3dec.c:
+	* sys/androidmedia/gstahcsrc.c:
+	* sys/applemedia-nonpublic/celvideosrc.c:
+	* sys/applemedia-nonpublic/miovideosrc.c:
+	* sys/applemedia/atdec.c:
+	* sys/applemedia/avfassetsrc.m:
+	* sys/applemedia/avfvideosrc.m:
+	* sys/applemedia/avsamplevideosink.m:
+	* sys/applemedia/iosassetsrc.m:
+	* sys/applemedia/qtkitvideosrc.m:
+	* sys/applemedia/vtdec.c:
+	* sys/avc/gstavcsrc.cpp:
+	* sys/bluez/gsta2dpsink.c:
+	* sys/bluez/gstavdtpsink.c:
+	* sys/bluez/gstavdtpsrc.c:
 	* sys/d3dvideosink/d3dvideosink.c:
-	  d3dvideosink: post message to application for unhandled keyboard/mouse events
-	  https://bugzilla.gnome.org/show_bug.cgi?id=763403
+	* sys/decklink/gstdecklinkaudiosink.cpp:
+	* sys/decklink/gstdecklinkaudiosrc.cpp:
+	* sys/directsound/gstdirectsoundsrc.c:
+	* sys/dshowsrcwrapper/gstdshowaudiosrc.cpp:
+	* sys/dshowsrcwrapper/gstdshowvideosrc.cpp:
+	* sys/dshowvideosink/dshowvideosink.cpp:
+	* sys/dvb/dvbbasebin.c:
+	* sys/dvb/gstdvbsrc.c:
+	* sys/dxr3/dxr3audiosink.c:
+	* sys/dxr3/dxr3spusink.c:
+	* sys/dxr3/dxr3videosink.c:
+	* sys/fbdev/gstfbdevsink.c:
+	* sys/linsys/gstlinsyssdisink.c:
+	* sys/linsys/gstlinsyssdisrc.c:
+	* sys/nvenc/gstnvbaseenc.c:
+	* sys/nvenc/gstnvh264enc.c:
+	* sys/opensles/openslessink.c:
+	* sys/opensles/openslessrc.c:
+	* sys/pvr2d/gstpvrvideosink.c:
+	* sys/qcam/gstqcamsrc.c:
+	* sys/shm/gstshmsink.c:
+	* sys/shm/gstshmsrc.c:
+	* sys/tinyalsa/tinyalsasink.c:
+	* sys/uvch264/gstuvch264_mjpgdemux.c:
+	* sys/uvch264/gstuvch264_src.c:
+	* sys/vcd/vcdsrc.c:
+	* sys/vdpau/gstvdpsink.c:
+	* sys/vdpau/h264/gstvdph264dec.c:
+	* sys/vdpau/mpeg/gstvdpmpegdec.c:
+	* sys/vdpau/mpeg4/gstvdpmpeg4dec.c:
+	* sys/wasapi/gstwasapisink.c:
+	* sys/wasapi/gstwasapisrc.c:
+	* sys/wininet/gstwininetsrc.c:
+	* sys/winscreencap/gstdx9screencapsrc.c:
+	* sys/winscreencap/gstgdiscreencapsrc.c:
+	* tests/check/elements/autoconvert.c:
+	* tests/check/elements/camerabin.c:
+	* tests/check/elements/test_http_src.c:
+	* tests/check/libs/aggregator.c:
+	* tools/element-templates/sinkpad:
+	* tools/element-templates/sinkpad-audio:
+	* tools/element-templates/sinkpad-simple:
+	* tools/element-templates/sinkpad-template:
+	* tools/element-templates/srcpad:
+	* tools/element-templates/srcpad-audio:
+	* tools/element-templates/srcpad-simple:
+	* tools/element-templates/srcpad-template:
+	  bad: use new gst_element_class_add_static_pad_template()
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763081
+
+2016-03-07 17:23:23 -0800  Martin Kelly <martin@surround.io>
+
+	* sys/androidmedia/gst-android-hardware-camera.c:
+	  ahc: eliminate AHC*_CALL macros
+	  Currently, we use AHC*_CALL macros to call many of the Camera functions.
+	  However, we already have helper classes to call the Camera functions, so
+	  eliminate the macros.
+	  As a nice side-benefit, we also get improved error handling and
+	  reporting when something goes wrong calling these functions, because a
+	  GError gets populated, and we log a GST_ERROR when something fails. This
+	  was harder to do using macros, as all error handling was hidden from the
+	  caller.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763065
+
+2016-02-18 11:29:06 -0800  Martin Kelly <martin@surround.io>
+
+	* sys/androidmedia/gst-android-hardware-camera.c:
+	  ahc: use gst unref functions
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763065
+
+2016-02-18 14:08:13 -0800  Martin Kelly <martin@surround.io>
+
+	* sys/androidmedia/gst-android-hardware-camera.c:
+	  ahc: use gst new object functions
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763065
 
 2016-03-17 13:44:13 +0000  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
 
@@ -1202,13 +7931,10 @@
 	  GtkWidget *window;
 	  ^~~~~~~~~
 
-2016-03-25 17:49:14 +1100  Matthew Waters <matthew@centricular.com>
+2016-03-24 13:33:12 +0200  Sebastian Dröge <sebastian@centricular.com>
 
-	* ext/gtk/gtkgstglwidget.c:
-	  gtk/gl: don't assert when gdk doesn't provide a GL context
-	  Allows the application to check whether gtkglsink is supported by setting
-	  the element to READY.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=764148
+	* configure.ac:
+	  Back to development
 
 === release 1.8.0 ===
 
diff --git a/Makefile.am b/Makefile.am
index 6fa225a..b29d7fc 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -113,6 +113,7 @@
 	$(top_srcdir)/gst-libs/gst/baseparse \
 	$(top_srcdir)/gst-libs/gst/egl \
 	$(top_srcdir)/gst-libs/gst/signalprocessor \
+	$(top_srcdir)/tests/examples/gl/gtk/gtkvideooverlay \
 	$(top_srcdir)/tests/examples/scaletempo \
 	$(top_srcdir)/tests/examples/shapewipe \
 	$(top_srcdir)/tests/examples/switch \
diff --git a/Makefile.in b/Makefile.in
index fa276e9..d5f9bb8 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -314,6 +314,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -335,6 +337,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -384,6 +388,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -529,6 +535,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -655,8 +663,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -699,8 +705,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -884,6 +895,7 @@
 	$(top_srcdir)/gst-libs/gst/baseparse \
 	$(top_srcdir)/gst-libs/gst/egl \
 	$(top_srcdir)/gst-libs/gst/signalprocessor \
+	$(top_srcdir)/tests/examples/gl/gtk/gtkvideooverlay \
 	$(top_srcdir)/tests/examples/scaletempo \
 	$(top_srcdir)/tests/examples/shapewipe \
 	$(top_srcdir)/tests/examples/switch \
@@ -1442,8 +1454,11 @@
 
 update-exports:
 	make check-exports 2>&1 | patch -p1
-	git add win32/common/libgst*.def
-	git diff --cached -- win32/common/
+	if test -f "$(top_srcdir)/win32/common/libgstgl.def"; then \
+	  git checkout "$(top_srcdir)/win32/common/libgstgl.def";  \
+	fi
+	git add $(top_srcdir)/win32/common/libgst*.def
+	git diff --cached -- $(top_srcdir)/win32/common/
 	echo '^^^--- updated and staged changes above'
 
 # complain about nonportable printf format strings (%lld, %llu, %zu etc.)
diff --git a/NEWS b/NEWS
index 9b1f149..072b2df 100644
--- a/NEWS
+++ b/NEWS
@@ -1,28 +1 @@
-### 1.8.3
-
-The third 1.8 bug-fix release (1.8.3) was released on 19 August 2016.
-This release only contains bugfixes and it should be safe to update from 1.8.3.
-
-#### Major bugfixes in 1.8.3
-
- - Fix Android build scripts on OS X and Windows
- - Fix stepping in PAUSED state in certain circumstances
- - Fix jackaudiosink hang when exiting
- - Fix udpsrc receiving multicast packets not only from the selected
-   multicast group
- - Fix unnecessary decoding of unselected streams in GES
- - Fix (multi)udpsink randomly not sending to clients
- - Fix ALL\_BOTH probes not considering EVENT\_FLUSH
- - Fix average input rate calculations in queue2
- - Fix various locking issues causing deadlock in adaptivedemux
- - Fix gst-libav encoders to correctly produce codec\_data in caps
- - Add Wayland, Windows and Rasberry Pi support to the QML GL video sink
- - Add support for building with OpenH264 1.6
- - Add support for controlling deinterlacing in GES video sources
- - ... and many, many more!
-
-For a full list of bugfixes see [Bugzilla][buglist-1.8.3]. Note that this is
-not the full list of changes. For the full list of changes please refer to the
-GIT logs or ChangeLogs of the particular modules.
-
-[buglist-1.8.3]: https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&classification=Platform&limit=0&list_id=145400&order=bug_id&product=GStreamer&query_format=advanced&resolution=FIXED&target_milestone=1.8.3
+This is GStreamer 1.9.90
diff --git a/README b/README
index fa53f95..48e2c9f 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-GStreamer 1.7.x development series
+GStreamer 1.9.x development series
 
 WHAT IT IS
 ----------
diff --git a/RELEASE b/RELEASE
index d8caf0b..e70dea5 100644
--- a/RELEASE
+++ b/RELEASE
@@ -1,15 +1,13 @@
 
-Release notes for GStreamer Bad Plugins 1.8.3
+Release notes for GStreamer Bad Plugins 1.9.90
 
-The GStreamer team is proud to announce the third bugfix release in the stable
-1.8 release series of your favourite cross-platform multimedia framework!
+The GStreamer team is pleased to announce the first release candidate of the
+stable 1.10 release series. The 1.10 release series is adding new features on
+top of the 1.0, 1.2, 1.4, 1.6 and 1.8 series and is part of the API and
+ABI-stable 1.x release series of the GStreamer multimedia framework.
 
 
-This release only contains bugfixes and it is safe to update from 1.8.x. For a
-full list of bugfixes see Bugzilla.
-
-
-See /releases/1.8/ for the full release notes.
+Binaries for Android, iOS, Mac OS X and Windows will be provided in the next days.
 
 
 "That an accusation?"
@@ -60,16 +58,29 @@
 
 Bugs fixed in this release
      
-      * 769210 : GLMemory created by avfvideosrc and vtdec on iOS (EAGL/gles3) can't be mapped
-      * 761260 : qml: add Windows support
-      * 763044 : Enable  qmlglsink on Rasperry PI
-      * 766163 : Some header files missing in sys/applemedia/ in gst-plugins-bad-1.8.1.tar.xz
-      * 767492 : avfassetsrc: Escapes already escaped URIs wrongly, fails to work because of that
-      * 767553 : qmlglsink: Add Wayland support
-      * 767635 : gleffects: fix little rectangel appears at the center when use squeeze and tunnel effects
-      * 767792 : h264parse: fix default time_offset_length
-      * 768146 : d3dvideosink: leak on caps string
-      * 769376 : aiffparse: seeking in aiff can create audio artifacts if there's extra data at the end
+      * 738079 : wayland: Destory the scaler interface while finalizing display object
+      * 761987 : waylandsink relies on wl_scaler
+      * 766018 : gl/dispmanx: Implements set_render_rectangle to adjust the position of window
+      * 767422 : kmssink: Uses scaled size to specify input buffer region
+      * 767671 : waylandsink: update from scaler protocol to viewporter protocol
+      * 768158 : waylandsink : memory leak of gst_wayland_sink_get_caps() and scaler of wldisplay
+      * 770146 : kmssink won't compile
+      * 770221 : rtponviftimestamp: Implement property " Immediate " 
+      * 770455 : fdkaacdec: asserts on HE-AAC v2 sample
+      * 770925 : qmlglsink: check qt_context_ first in GstQSGTexture::bind()
+      * 770933 : srtpenc: deadlock in create_session
+      * 771021 : Duplicate GL_CFLAGS in gst-libs/gst/gl/Makefile.am
+      * 771023 : tests/examples/gl/clutter/Makefile.am references deprecated variable $(GST_PLUGINS_GL_LIBS)
+      * 771198 : mpegtsdemux: Trying to set NULL string on field 'title' on taglist
+      * 771382 : dvbsuboverlay: map with READWRITE for overlay blend
+      * 771780 : build: add missing $(GST_PLUGINS_BASE_LIBS)
+      * 771794 : wayland/Makefile.am: add missing libs
+      * 771817 : dx9screencapsrc: throw error for invalid screen index
+      * 771871 : lv2 plugin doesn't do processing in case of mono sound
+      * 771970 : h265parse: Fix parsing of multiple NALs in the hvcC box
+      * 772067 : fdkaacenc: fix enc ! dec case
+      * 772108 : fdkaacenc: set framed=true on src caps
+      * 772186 : fdkaac: misc memory related fixes
 
 ==== Download ====
 
@@ -106,18 +117,30 @@
         
 Contributors to this release
     
-      * Bernhard Miller
-      * Guillaume Desmottes
+      * Alessandro Decina
+      * Alistair Buxton
+      * Arun Raghavan
+      * Florian Zwoch
+      * Graham Leggett
+      * Gwang Yoon Hwang
       * Haihua Hu
+      * Hyunjun Ko
       * Jan Schmidt
-      * Jonathan Roy
+      * Joakim Johansson
+      * Julien Isorce
+      * Kyungyong Kim
+      * Martin Kelly
       * Matthew Waters
-      * Michael Olbrich
-      * Nirbheek Chauhan
+      * Nicolas Dufresne
+      * Olivier Crête
+      * Philippe Normand
+      * Scott D Phillips
       * Sebastian Dröge
-      * Sergei Saveliev
-      * Sergey Borovkov
+      * Sergey Mamonov
       * Thiago Santos
+      * Thibault Saunier
       * Tim-Philipp Müller
-      * Vineeth TM
+      * Vincent Penquerc'h
+      * Víctor Manuel Jáquez Leal
+      * Wonchul Lee
  
\ No newline at end of file
diff --git a/common/Makefile.in b/common/Makefile.in
index 10571c4..ac4a598 100644
--- a/common/Makefile.in
+++ b/common/Makefile.in
@@ -276,6 +276,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -297,6 +299,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -346,6 +350,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -491,6 +497,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -617,8 +625,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -661,8 +667,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/common/gst.supp b/common/gst.supp
index 2740e9a..f85cd69 100644
--- a/common/gst.supp
+++ b/common/gst.supp
@@ -4024,5 +4024,4 @@
    fun:malloc
    ...
    fun:g_quark_init
-   fun:glib_init_ctor
 }
diff --git a/common/gtk-doc-plugins.mak b/common/gtk-doc-plugins.mak
index fe0977c..4b5dd1b 100644
--- a/common/gtk-doc-plugins.mak
+++ b/common/gtk-doc-plugins.mak
@@ -179,9 +179,13 @@
 		$(top_srcdir)/common/plugins.xsl $$a > xml/`basename $$a`; done
 	@for f in $(EXAMPLE_CFILES); do \
 		$(PYTHON) $(top_srcdir)/common/c-to-xml.py $$f > xml/element-`basename $$f .c`.xml; done
-	@gtkdoc-mkdb \
+	@_source_dir='' ;						\
+	for i in $(DOC_SOURCE_DIR) ; do					\
+	    _source_dir="$${_source_dir} --source-dir=$$i" ;	        \
+	done ;								\
+	gtkdoc-mkdb \
 		--module=$(DOC_MODULE) \
-		--source-dir=$(DOC_SOURCE_DIR) \
+		$${_source_dir} \
 		 --expand-content-files="$(expand_content_files)" \
 		--main-sgml-file=$(srcdir)/$(DOC_MAIN_SGML_FILE) \
 		--output-format=xml \
diff --git a/common/gtk-doc.mak b/common/gtk-doc.mak
index 2aab3a9..3f83491 100644
--- a/common/gtk-doc.mak
+++ b/common/gtk-doc.mak
@@ -121,7 +121,11 @@
 
 sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(expand_content_files)
 	@echo '  DOC   Building XML'
-	@gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR)  --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) --output-format=xml $(MKDB_OPTIONS)
+	@_source_dir='' ;						\
+	for i in $(DOC_SOURCE_DIR) ; do					\
+	    _source_dir="$${_source_dir} --source-dir=$$i" ;	        \
+	done ;							        \
+	gtkdoc-mkdb --module=$(DOC_MODULE) $${_source_dir}  --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) --output-format=xml $(MKDB_OPTIONS)
 	@cp ../version.entities xml
 	@touch sgml-build.stamp
 
diff --git a/common/m4/Makefile.in b/common/m4/Makefile.in
index 25b8a7a..078b8be 100644
--- a/common/m4/Makefile.in
+++ b/common/m4/Makefile.in
@@ -216,6 +216,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -237,6 +239,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -286,6 +290,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -431,6 +437,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -557,8 +565,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -601,8 +607,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/common/m4/ax_pthread.m4 b/common/m4/ax_pthread.m4
index d383ad5..4c4051e 100644
--- a/common/m4/ax_pthread.m4
+++ b/common/m4/ax_pthread.m4
@@ -19,10 +19,10 @@
 #   is necessary on AIX to use the special cc_r compiler alias.)
 #
 #   NOTE: You are assumed to not only compile your program with these flags,
-#   but also link it with them as well. e.g. you should link with
+#   but also to link with them as well. For example, you might link with
 #   $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
 #
-#   If you are only building threads programs, you may wish to use these
+#   If you are only building threaded programs, you may wish to use these
 #   variables in your default LIBS, CFLAGS, and CC:
 #
 #     LIBS="$PTHREAD_LIBS $LIBS"
@@ -30,8 +30,8 @@
 #     CC="$PTHREAD_CC"
 #
 #   In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
-#   has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name
-#   (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
+#   has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to
+#   that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
 #
 #   Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
 #   PTHREAD_PRIO_INHERIT symbol is defined when compiling with
@@ -82,35 +82,40 @@
 #   modified version of the Autoconf Macro, you may extend this special
 #   exception to the GPL to apply to your modified version as well.
 
-#serial 21
+#serial 23
 
 AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
 AC_DEFUN([AX_PTHREAD], [
 AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_CC])
+AC_REQUIRE([AC_PROG_SED])
 AC_LANG_PUSH([C])
 ax_pthread_ok=no
 
 # We used to check for pthread.h first, but this fails if pthread.h
-# requires special compiler flags (e.g. on True64 or Sequent).
+# requires special compiler flags (e.g. on Tru64 or Sequent).
 # It gets checked for in the link test anyway.
 
 # First of all, check if the user has set any of the PTHREAD_LIBS,
 # etcetera environment variables, and if threads linking works using
 # them:
-if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
-        save_CFLAGS="$CFLAGS"
+if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then
+        ax_pthread_save_CC="$CC"
+        ax_pthread_save_CFLAGS="$CFLAGS"
+        ax_pthread_save_LIBS="$LIBS"
+        AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"])
         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-        save_LIBS="$LIBS"
         LIBS="$PTHREAD_LIBS $LIBS"
-        AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
-        AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes])
+        AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS])
+        AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes])
         AC_MSG_RESULT([$ax_pthread_ok])
-        if test x"$ax_pthread_ok" = xno; then
+        if test "x$ax_pthread_ok" = "xno"; then
                 PTHREAD_LIBS=""
                 PTHREAD_CFLAGS=""
         fi
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
+        CC="$ax_pthread_save_CC"
+        CFLAGS="$ax_pthread_save_CFLAGS"
+        LIBS="$ax_pthread_save_LIBS"
 fi
 
 # We must check for the threads library under a number of different
@@ -123,7 +128,7 @@
 # which indicates that we try without any flags at all, and "pthread-config"
 # which is a program returning the flags for the Pth emulation library.
 
-ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
 
 # The ordering *is* (sometimes) important.  Some notes on the
 # individual items follow:
@@ -132,82 +137,225 @@
 # none: in case threads are in libc; should be tried before -Kthread and
 #       other compiler flags to prevent continual compiler warnings
 # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
-# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
-# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
-# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
-# -pthreads: Solaris/gcc
-# -mthreads: Mingw32/gcc, Lynx/gcc
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64
+#           (Note: HP C rejects this with "bad form for `-t' option")
+# -pthreads: Solaris/gcc (Note: HP C also rejects)
 # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
-#      doesn't hurt to check since this sometimes defines pthreads too;
-#      also defines -D_REENTRANT)
-#      ... -mt is also the pthreads flag for HP/aCC
+#      doesn't hurt to check since this sometimes defines pthreads and
+#      -D_REENTRANT too), HP C (must be checked before -lpthread, which
+#      is present but should not be used directly; and before -mthreads,
+#      because the compiler interprets this as "-mt" + "-hreads")
+# -mthreads: Mingw32/gcc, Lynx/gcc
 # pthread: Linux, etcetera
 # --thread-safe: KAI C++
 # pthread-config: use pthread-config program (for GNU Pth library)
 
-case ${host_os} in
+case $host_os in
+
+        freebsd*)
+
+        # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+        # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+
+        ax_pthread_flags="-kthread lthread $ax_pthread_flags"
+        ;;
+
+        hpux*)
+
+        # From the cc(1) man page: "[-mt] Sets various -D flags to enable
+        # multi-threading and also sets -lpthread."
+
+        ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags"
+        ;;
+
+        openedition*)
+
+        # IBM z/OS requires a feature-test macro to be defined in order to
+        # enable POSIX threads at all, so give the user a hint if this is
+        # not set. (We don't define these ourselves, as they can affect
+        # other portions of the system API in unpredictable ways.)
+
+        AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING],
+            [
+#            if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS)
+             AX_PTHREAD_ZOS_MISSING
+#            endif
+            ],
+            [AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])])
+        ;;
+
         solaris*)
 
         # On Solaris (at least, for some versions), libc contains stubbed
         # (non-functional) versions of the pthreads routines, so link-based
-        # tests will erroneously succeed.  (We need to link with -pthreads/-mt/
-        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
-        # a function called by this macro, so we could check for that, but
-        # who knows whether they'll stub that too in a future libc.)  So,
-        # we'll just look for -pthreads and -lpthread first:
+        # tests will erroneously succeed. (N.B.: The stubs are missing
+        # pthread_cleanup_push, or rather a function called by this macro,
+        # so we could check for that, but who knows whether they'll stub
+        # that too in a future libc.)  So we'll check first for the
+        # standard Solaris way of linking pthreads (-mt -lpthread).
 
-        ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
-        ;;
-
-        darwin*)
-        ax_pthread_flags="-pthread $ax_pthread_flags"
+        ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags"
         ;;
 esac
 
-# Clang doesn't consider unrecognized options an error unless we specify
-# -Werror. We throw in some extra Clang-specific options to ensure that
-# this doesn't happen for GCC, which also accepts -Werror.
+# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC)
 
-AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags])
-save_CFLAGS="$CFLAGS"
-ax_pthread_extra_flags="-Werror"
-CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument"
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])],
-                  [AC_MSG_RESULT([yes])],
-                  [ax_pthread_extra_flags=
-                   AC_MSG_RESULT([no])])
-CFLAGS="$save_CFLAGS"
+AS_IF([test "x$GCC" = "xyes"],
+      [ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"])
 
-if test x"$ax_pthread_ok" = xno; then
-for flag in $ax_pthread_flags; do
+# The presence of a feature test macro requesting re-entrant function
+# definitions is, on some systems, a strong hint that pthreads support is
+# correctly enabled
 
-        case $flag in
+case $host_os in
+        darwin* | hpux* | linux* | osf* | solaris*)
+        ax_pthread_check_macro="_REENTRANT"
+        ;;
+
+        aix*)
+        ax_pthread_check_macro="_THREAD_SAFE"
+        ;;
+
+        *)
+        ax_pthread_check_macro="--"
+        ;;
+esac
+AS_IF([test "x$ax_pthread_check_macro" = "x--"],
+      [ax_pthread_check_cond=0],
+      [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"])
+
+# Are we compiling with Clang?
+
+AC_CACHE_CHECK([whether $CC is Clang],
+    [ax_cv_PTHREAD_CLANG],
+    [ax_cv_PTHREAD_CLANG=no
+     # Note that Autoconf sets GCC=yes for Clang as well as GCC
+     if test "x$GCC" = "xyes"; then
+        AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG],
+            [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */
+#            if defined(__clang__) && defined(__llvm__)
+             AX_PTHREAD_CC_IS_CLANG
+#            endif
+            ],
+            [ax_cv_PTHREAD_CLANG=yes])
+     fi
+    ])
+ax_pthread_clang="$ax_cv_PTHREAD_CLANG"
+
+ax_pthread_clang_warning=no
+
+# Clang needs special handling, because older versions handle the -pthread
+# option in a rather... idiosyncratic way
+
+if test "x$ax_pthread_clang" = "xyes"; then
+
+        # Clang takes -pthread; it has never supported any other flag
+
+        # (Note 1: This will need to be revisited if a system that Clang
+        # supports has POSIX threads in a separate library.  This tends not
+        # to be the way of modern systems, but it's conceivable.)
+
+        # (Note 2: On some systems, notably Darwin, -pthread is not needed
+        # to get POSIX threads support; the API is always present and
+        # active.  We could reasonably leave PTHREAD_CFLAGS empty.  But
+        # -pthread does define _REENTRANT, and while the Darwin headers
+        # ignore this macro, third-party headers might not.)
+
+        PTHREAD_CFLAGS="-pthread"
+        PTHREAD_LIBS=
+
+        ax_pthread_ok=yes
+
+        # However, older versions of Clang make a point of warning the user
+        # that, in an invocation where only linking and no compilation is
+        # taking place, the -pthread option has no effect ("argument unused
+        # during compilation").  They expect -pthread to be passed in only
+        # when source code is being compiled.
+        #
+        # Problem is, this is at odds with the way Automake and most other
+        # C build frameworks function, which is that the same flags used in
+        # compilation (CFLAGS) are also used in linking.  Many systems
+        # supported by AX_PTHREAD require exactly this for POSIX threads
+        # support, and in fact it is often not straightforward to specify a
+        # flag that is used only in the compilation phase and not in
+        # linking.  Such a scenario is extremely rare in practice.
+        #
+        # Even though use of the -pthread flag in linking would only print
+        # a warning, this can be a nuisance for well-run software projects
+        # that build with -Werror.  So if the active version of Clang has
+        # this misfeature, we search for an option to squash it.
+
+        AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread],
+            [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG],
+            [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown
+             # Create an alternate version of $ac_link that compiles and
+             # links in two steps (.c -> .o, .o -> exe) instead of one
+             # (.c -> exe), because the warning occurs only in the second
+             # step
+             ax_pthread_save_ac_link="$ac_link"
+             ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g'
+             ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"`
+             ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)"
+             ax_pthread_save_CFLAGS="$CFLAGS"
+             for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do
+                AS_IF([test "x$ax_pthread_try" = "xunknown"], [break])
+                CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS"
+                ac_link="$ax_pthread_save_ac_link"
+                AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
+                    [ac_link="$ax_pthread_2step_ac_link"
+                     AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
+                         [break])
+                    ])
+             done
+             ac_link="$ax_pthread_save_ac_link"
+             CFLAGS="$ax_pthread_save_CFLAGS"
+             AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no])
+             ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try"
+            ])
+
+        case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in
+                no | unknown) ;;
+                *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;;
+        esac
+
+fi # $ax_pthread_clang = yes
+
+if test "x$ax_pthread_ok" = "xno"; then
+for ax_pthread_try_flag in $ax_pthread_flags; do
+
+        case $ax_pthread_try_flag in
                 none)
                 AC_MSG_CHECKING([whether pthreads work without any flags])
                 ;;
 
+                -mt,pthread)
+                AC_MSG_CHECKING([whether pthreads work with -mt -lpthread])
+                PTHREAD_CFLAGS="-mt"
+                PTHREAD_LIBS="-lpthread"
+                ;;
+
                 -*)
-                AC_MSG_CHECKING([whether pthreads work with $flag])
-                PTHREAD_CFLAGS="$flag"
+                AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag])
+                PTHREAD_CFLAGS="$ax_pthread_try_flag"
                 ;;
 
                 pthread-config)
                 AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
-                if test x"$ax_pthread_config" = xno; then continue; fi
+                AS_IF([test "x$ax_pthread_config" = "xno"], [continue])
                 PTHREAD_CFLAGS="`pthread-config --cflags`"
                 PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
                 ;;
 
                 *)
-                AC_MSG_CHECKING([for the pthreads library -l$flag])
-                PTHREAD_LIBS="-l$flag"
+                AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag])
+                PTHREAD_LIBS="-l$ax_pthread_try_flag"
                 ;;
         esac
 
-        save_LIBS="$LIBS"
-        save_CFLAGS="$CFLAGS"
+        ax_pthread_save_CFLAGS="$CFLAGS"
+        ax_pthread_save_LIBS="$LIBS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
         LIBS="$PTHREAD_LIBS $LIBS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags"
 
         # Check for various functions.  We must include pthread.h,
         # since some functions may be macros.  (On the Sequent, we
@@ -218,7 +366,11 @@
         # pthread_cleanup_push because it is one of the few pthread
         # functions on Solaris that doesn't have a non-functional libc stub.
         # We try pthread_create on general principles.
+
         AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
+#                       if $ax_pthread_check_cond
+#                        error "$ax_pthread_check_macro must be defined"
+#                       endif
                         static void routine(void *a) { a = 0; }
                         static void *start_routine(void *a) { return a; }],
                        [pthread_t th; pthread_attr_t attr;
@@ -227,16 +379,14 @@
                         pthread_attr_init(&attr);
                         pthread_cleanup_push(routine, 0);
                         pthread_cleanup_pop(0) /* ; */])],
-                [ax_pthread_ok=yes],
-                [])
+            [ax_pthread_ok=yes],
+            [])
 
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
+        CFLAGS="$ax_pthread_save_CFLAGS"
+        LIBS="$ax_pthread_save_LIBS"
 
         AC_MSG_RESULT([$ax_pthread_ok])
-        if test "x$ax_pthread_ok" = xyes; then
-                break;
-        fi
+        AS_IF([test "x$ax_pthread_ok" = "xyes"], [break])
 
         PTHREAD_LIBS=""
         PTHREAD_CFLAGS=""
@@ -244,71 +394,74 @@
 fi
 
 # Various other checks:
-if test "x$ax_pthread_ok" = xyes; then
-        save_LIBS="$LIBS"
-        LIBS="$PTHREAD_LIBS $LIBS"
-        save_CFLAGS="$CFLAGS"
+if test "x$ax_pthread_ok" = "xyes"; then
+        ax_pthread_save_CFLAGS="$CFLAGS"
+        ax_pthread_save_LIBS="$LIBS"
         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
 
         # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
-        AC_MSG_CHECKING([for joinable pthread attribute])
-        attr_name=unknown
-        for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
-            AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
-                           [int attr = $attr; return attr /* ; */])],
-                [attr_name=$attr; break],
-                [])
-        done
-        AC_MSG_RESULT([$attr_name])
-        if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
-            AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name],
-                               [Define to necessary symbol if this constant
-                                uses a non-standard name on your system.])
-        fi
+        AC_CACHE_CHECK([for joinable pthread attribute],
+            [ax_cv_PTHREAD_JOINABLE_ATTR],
+            [ax_cv_PTHREAD_JOINABLE_ATTR=unknown
+             for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
+                 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
+                                                 [int attr = $ax_pthread_attr; return attr /* ; */])],
+                                [ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break],
+                                [])
+             done
+            ])
+        AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \
+               test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \
+               test "x$ax_pthread_joinable_attr_defined" != "xyes"],
+              [AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE],
+                                  [$ax_cv_PTHREAD_JOINABLE_ATTR],
+                                  [Define to necessary symbol if this constant
+                                   uses a non-standard name on your system.])
+               ax_pthread_joinable_attr_defined=yes
+              ])
 
-        AC_MSG_CHECKING([if more special flags are required for pthreads])
-        flag=no
-        case ${host_os} in
-            aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
-            osf* | hpux*) flag="-D_REENTRANT";;
-            solaris*)
-            if test "$GCC" = "yes"; then
-                flag="-D_REENTRANT"
-            else
-                # TODO: What about Clang on Solaris?
-                flag="-mt -D_REENTRANT"
-            fi
-            ;;
-        esac
-        AC_MSG_RESULT([$flag])
-        if test "x$flag" != xno; then
-            PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
-        fi
+        AC_CACHE_CHECK([whether more special flags are required for pthreads],
+            [ax_cv_PTHREAD_SPECIAL_FLAGS],
+            [ax_cv_PTHREAD_SPECIAL_FLAGS=no
+             case $host_os in
+             solaris*)
+             ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
+             ;;
+             esac
+            ])
+        AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \
+               test "x$ax_pthread_special_flags_added" != "xyes"],
+              [PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS"
+               ax_pthread_special_flags_added=yes])
 
         AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
-            [ax_cv_PTHREAD_PRIO_INHERIT], [
-                AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
-                                                [[int i = PTHREAD_PRIO_INHERIT;]])],
-                    [ax_cv_PTHREAD_PRIO_INHERIT=yes],
-                    [ax_cv_PTHREAD_PRIO_INHERIT=no])
+            [ax_cv_PTHREAD_PRIO_INHERIT],
+            [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
+                                             [[int i = PTHREAD_PRIO_INHERIT;]])],
+                            [ax_cv_PTHREAD_PRIO_INHERIT=yes],
+                            [ax_cv_PTHREAD_PRIO_INHERIT=no])
             ])
-        AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"],
-            [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])])
+        AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \
+               test "x$ax_pthread_prio_inherit_defined" != "xyes"],
+              [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])
+               ax_pthread_prio_inherit_defined=yes
+              ])
 
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
+        CFLAGS="$ax_pthread_save_CFLAGS"
+        LIBS="$ax_pthread_save_LIBS"
 
         # More AIX lossage: compile with *_r variant
-        if test "x$GCC" != xyes; then
+        if test "x$GCC" != "xyes"; then
             case $host_os in
                 aix*)
                 AS_CASE(["x/$CC"],
-                  [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
-                  [#handle absolute path differently from PATH based program lookup
-                   AS_CASE(["x$CC"],
-                     [x/*],
-                     [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
-                     [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
+                    [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
+                    [#handle absolute path differently from PATH based program lookup
+                     AS_CASE(["x$CC"],
+                         [x/*],
+                         [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
+                         [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
                 ;;
             esac
         fi
@@ -321,7 +474,7 @@
 AC_SUBST([PTHREAD_CC])
 
 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-if test x"$ax_pthread_ok" = xyes; then
+if test "x$ax_pthread_ok" = "xyes"; then
         ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
         :
 else
diff --git a/common/win32.mak b/common/win32.mak
index 87cd346..6060532 100644
--- a/common/win32.mak
+++ b/common/win32.mak
@@ -61,8 +61,11 @@
 
 update-exports:
 	make check-exports 2>&1 | patch -p1
-	git add win32/common/libgst*.def
-	git diff --cached -- win32/common/
+	if test -f "$(top_srcdir)/win32/common/libgstgl.def"; then \
+	  git checkout "$(top_srcdir)/win32/common/libgstgl.def";  \
+	fi
+	git add $(top_srcdir)/win32/common/libgst*.def
+	git diff --cached -- $(top_srcdir)/win32/common/
 	echo '^^^--- updated and staged changes above'
 
 # complain about nonportable printf format strings (%lld, %llu, %zu etc.)
diff --git a/config.h.in b/config.h.in
index 6431860..429459d 100644
--- a/config.h.in
+++ b/config.h.in
@@ -223,6 +223,9 @@
 /* Define to enable DVB Source (used by dvb). */
 #undef HAVE_DVB
 
+/* Define to 1 if the system has the type `EGLAttrib'. */
+#undef HAVE_EGLATTRIB
+
 /* Define to enable building of experimental plug-ins. */
 #undef HAVE_EXPERIMENTAL
 
@@ -241,6 +244,9 @@
 /* Define to 1 if you have the <fcntl.h> header file. */
 #undef HAVE_FCNTL_H
 
+/* Define to enable fdkaac plugin (used by fdkaac). */
+#undef HAVE_FDK_AAC
+
 /* FIONREAD ioctl found in sys/filio.h */
 #undef HAVE_FIONREAD_IN_SYS_FILIO
 
@@ -322,6 +328,9 @@
 /* Define to enable Kate (used by kate). */
 #undef HAVE_KATE
 
+/* Define to enable drm/kms libraries (used by kms). */
+#undef HAVE_KMS
+
 /* Define to enable ladspa (used by ladspa). */
 #undef HAVE_LADSPA
 
@@ -349,6 +358,9 @@
 /* Define to enable libvisual visualization library (used by libvisual). */
 #undef HAVE_LIBVISUAL
 
+/* Define if we have liblilv >= 0.22 */
+#undef HAVE_LILV_0_22
+
 /* Define to enable Linear Systems SDI plugin (used by linsys). */
 #undef HAVE_LINSYS
 
@@ -415,15 +427,9 @@
 /* Define to enable opencv plugins (used by opencv). */
 #undef HAVE_OPENCV
 
-/* Define to 1 if you have the <opencv2/contrib/contrib.hpp> header file. */
-#undef HAVE_OPENCV2_CONTRIB_CONTRIB_HPP
-
 /* Define to 1 if you have the <opencv2/core/core_c.h> header file. */
 #undef HAVE_OPENCV2_CORE_CORE_C_H
 
-/* Define to 1 if you have the <opencv2/core/types_c.h> header file. */
-#undef HAVE_OPENCV2_CORE_TYPES_C_H
-
 /* Define to 1 if you have the <opencv2/core/version.hpp> header file. */
 #undef HAVE_OPENCV2_CORE_VERSION_HPP
 
@@ -436,12 +442,6 @@
 /* Define to 1 if you have the <opencv2/imgproc/imgproc.hpp> header file. */
 #undef HAVE_OPENCV2_IMGPROC_IMGPROC_HPP
 
-/* Define to 1 if you have the <opencv2/legacy/compat.hpp> header file. */
-#undef HAVE_OPENCV2_LEGACY_COMPAT_HPP
-
-/* Define to 1 if you have the <opencv2/legacy/legacy.hpp> header file. */
-#undef HAVE_OPENCV2_LEGACY_LEGACY_HPP
-
 /* Define to 1 if you have the <opencv2/objdetect/objdetect.hpp> header file.
    */
 #undef HAVE_OPENCV2_OBJDETECT_OBJDETECT_HPP
@@ -501,6 +501,9 @@
 /* Define to enable Qt elements (used by qt). */
 #undef HAVE_QT
 
+/* Define if building with QTKit */
+#undef HAVE_QTKIT
+
 /* Define if Qt eglfs integration is installed */
 #undef HAVE_QT_EGLFS
 
@@ -648,6 +651,9 @@
 /* Define to enable WebP (used by webp ). */
 #undef HAVE_WEBP
 
+/* Define to enable WebRTC Audio Processing (used by webrtcdsp). */
+#undef HAVE_WEBRTCDSP
+
 /* Define to enable wildmidi midi soft synth plugin (used by wildmidi). */
 #undef HAVE_WILDMIDI
 
diff --git a/configure b/configure
index 9110f12..2508148 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for GStreamer Bad Plug-ins 1.8.3.
+# Generated by GNU Autoconf 2.69 for GStreamer Bad Plug-ins 1.9.90.
 #
 # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer>.
 #
@@ -591,8 +591,8 @@
 # Identity of this package.
 PACKAGE_NAME='GStreamer Bad Plug-ins'
 PACKAGE_TARNAME='gst-plugins-bad'
-PACKAGE_VERSION='1.8.3'
-PACKAGE_STRING='GStreamer Bad Plug-ins 1.8.3'
+PACKAGE_VERSION='1.9.90'
+PACKAGE_STRING='GStreamer Bad Plug-ins 1.9.90'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer'
 PACKAGE_URL=''
 
@@ -652,6 +652,10 @@
 GST_OPTION_CFLAGS
 DEPRECATED_CFLAGS
 PROFILE_CFLAGS
+USE_WEBRTCDSP_FALSE
+USE_WEBRTCDSP_TRUE
+WEBRTCDSP_LIBS
+WEBRTCDSP_CFLAGS
 USE_X265_FALSE
 USE_X265_TRUE
 X265_LIBS
@@ -867,12 +871,16 @@
 LIBDE265_CFLAGS
 USE_LV2_FALSE
 USE_LV2_TRUE
-SLV2_LIBS
-SLV2_CFLAGS
+LILV_LIBS
+LILV_CFLAGS
 USE_LADSPA_FALSE
 USE_LADSPA_TRUE
 LRDF_LIBS
 LRDF_CFLAGS
+USE_KMS_FALSE
+USE_KMS_TRUE
+DRM_LIBS
+DRM_CFLAGS
 USE_KATE_FALSE
 USE_KATE_TRUE
 USE_TIGER_FALSE
@@ -894,6 +902,10 @@
 FLITE_LIBS
 FLITE_CFLAGS
 HAVE_FLITE
+USE_FDK_AAC_FALSE
+USE_FDK_AAC_TRUE
+FDK_AAC_LIBS
+FDK_AAC_CFLAGS
 USE_FBDEV_FALSE
 USE_FBDEV_TRUE
 USE_FAAD_FALSE
@@ -920,10 +932,9 @@
 USE_WEBP_TRUE
 WEBP_LIBS
 WEBP_CFLAGS
-USE_WAYLAND_FALSE
-USE_WAYLAND_TRUE
-WAYLAND_LIBS
-WAYLAND_CFLAGS
+WAYLAND_PROTOCOLS_DATADIR
+WAYLAND_PROTOCOLS_LIBS
+WAYLAND_PROTOCOLS_CFLAGS
 wayland_scanner
 USE_DIRECTFB_FALSE
 USE_DIRECTFB_TRUE
@@ -988,10 +999,6 @@
 NVENCODE_CFLAGS
 CUDA_LIBS
 CUDA_CFLAGS
-GST_PBUTILS_LIBS
-GST_PBUTILS_CFLAGS
-GST_VIDEO_LIBS
-GST_VIDEO_CFLAGS
 LIBUDEV_LIBS
 LIBUDEV_CFLAGS
 USE_UVCH264_FALSE
@@ -1042,6 +1049,10 @@
 DIRECTSOUND_LIBS
 DIRECTX_LDFLAGS
 DIRECTX_CFLAGS
+USE_WAYLAND_FALSE
+USE_WAYLAND_TRUE
+WAYLAND_LIBS
+WAYLAND_CFLAGS
 USE_XCB_FALSE
 USE_XCB_TRUE
 XCB_LIBS
@@ -1109,6 +1120,8 @@
 X_CFLAGS
 DCCP_LIBS
 WINSOCK2_LIBS
+HAVE_QTKIT_FALSE
+HAVE_QTKIT_TRUE
 HAVE_VIDEOTOOLBOX_FALSE
 HAVE_VIDEOTOOLBOX_TRUE
 HAVE_IOS_FALSE
@@ -1131,6 +1144,8 @@
 USE_PLUGIN_VIDEOFILTERS_TRUE
 USE_PLUGIN_TTA_FALSE
 USE_PLUGIN_TTA_TRUE
+USE_PLUGIN_TIMECODE_FALSE
+USE_PLUGIN_TIMECODE_TRUE
 USE_PLUGIN_STEREO_FALSE
 USE_PLUGIN_STEREO_TRUE
 USE_PLUGIN_SUBENC_FALSE
@@ -1352,6 +1367,12 @@
 GST_PLUGINS_BASE_CFLAGS
 HAVE_GST_CHECK_FALSE
 HAVE_GST_CHECK_TRUE
+GST_PBUTILS_LIBS
+GST_PBUTILS_CFLAGS
+GST_AUDIO_LIBS
+GST_AUDIO_CFLAGS
+GST_VIDEO_LIBS
+GST_VIDEO_CFLAGS
 GST_NET_LIBS
 GST_NET_CFLAGS
 GST_CONTROLLER_LIBS
@@ -1756,6 +1777,7 @@
 enable_speed
 enable_subenc
 enable_stereo
+enable_timecode
 enable_tta
 enable_videofilters
 enable_videomeasure
@@ -1812,10 +1834,12 @@
 enable_faac
 enable_faad
 enable_fbdev
+enable_fdk_aac
 enable_flite
 enable_gsm
 enable_fluidsynth
 enable_kate
+enable_kms
 enable_ladspa
 enable_lv2
 enable_libde265
@@ -1873,6 +1897,7 @@
 enable_hls
 with_libgcrypt_prefix
 enable_x265
+enable_webrtcdsp
 '
       ac_precious_vars='build_alias
 host_alias
@@ -1910,6 +1935,12 @@
 GST_CONTROLLER_LIBS
 GST_NET_CFLAGS
 GST_NET_LIBS
+GST_VIDEO_CFLAGS
+GST_VIDEO_LIBS
+GST_AUDIO_CFLAGS
+GST_AUDIO_LIBS
+GST_PBUTILS_CFLAGS
+GST_PBUTILS_LIBS
 GST_PLUGINS_BASE_CFLAGS
 GST_PLUGINS_BASE_LIBS
 GST_PLUGINS_GOOD_CFLAGS
@@ -1960,6 +1991,8 @@
 LIBPNG_LIBS
 XCB_CFLAGS
 XCB_LIBS
+WAYLAND_CFLAGS
+WAYLAND_LIBS
 BLUEZ5_CFLAGS
 BLUEZ5_LIBS
 GIO_UNIX_CFLAGS
@@ -1968,10 +2001,6 @@
 G_UDEV_LIBS
 LIBUSB_CFLAGS
 LIBUSB_LIBS
-GST_VIDEO_CFLAGS
-GST_VIDEO_LIBS
-GST_PBUTILS_CFLAGS
-GST_PBUTILS_LIBS
 CUDA_CFLAGS
 CUDA_LIBS
 NVENCODE_CFLAGS
@@ -1998,24 +2027,28 @@
 LIBDC1394_LIBS
 DIRECTFB_CFLAGS
 DIRECTFB_LIBS
-WAYLAND_CFLAGS
-WAYLAND_LIBS
+WAYLAND_PROTOCOLS_CFLAGS
+WAYLAND_PROTOCOLS_LIBS
 WEBP_CFLAGS
 WEBP_LIBS
 DAALA_CFLAGS
 DAALA_LIBS
 DVDNAV_CFLAGS
 DVDNAV_LIBS
+FDK_AAC_CFLAGS
+FDK_AAC_LIBS
 FLUIDSYNTH_CFLAGS
 FLUIDSYNTH_LIBS
 KATE_CFLAGS
 KATE_LIBS
 TIGER_CFLAGS
 TIGER_LIBS
+DRM_CFLAGS
+DRM_LIBS
 LRDF_CFLAGS
 LRDF_LIBS
-SLV2_CFLAGS
-SLV2_LIBS
+LILV_CFLAGS
+LILV_LIBS
 LIBDE265_CFLAGS
 LIBDE265_LIBS
 LIBMMS_CFLAGS
@@ -2103,7 +2136,9 @@
 OPENSSL_CFLAGS
 OPENSSL_LIBS
 X265_CFLAGS
-X265_LIBS'
+X265_LIBS
+WEBRTCDSP_CFLAGS
+WEBRTCDSP_LIBS'
 
 
 # Initialize some variables set by options.
@@ -2654,7 +2689,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures GStreamer Bad Plug-ins 1.8.3 to adapt to many kinds of systems.
+\`configure' configures GStreamer Bad Plug-ins 1.9.90 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -2726,7 +2761,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GStreamer Bad Plug-ins 1.8.3:";;
+     short | recursive ) echo "Configuration of GStreamer Bad Plug-ins 1.9.90:";;
    esac
   cat <<\_ACEOF
 
@@ -2836,6 +2871,7 @@
   --disable-speed         disable dependency-less speed plugin
   --disable-subenc        disable dependency-less subenc plugin
   --disable-stereo        disable dependency-less stereo plugin
+  --disable-timecode      disable dependency-less timecode plugin
   --disable-tta           disable dependency-less tta plugin
   --disable-videofilters  disable dependency-less videofilters plugin
   --disable-videomeasure  disable dependency-less videomeasure plugin
@@ -2888,10 +2924,12 @@
   --disable-faac               disable AAC encoder plug-in: faac
   --disable-faad               disable FAAD2 AAC decoder plug-in: faad
   --disable-fbdev              disable linux framebuffer: fbdevsink
+  --disable-fdk_aac            disable fdkaac plugin: fdkaac
   --disable-flite              disable Flite plugin: flite
   --disable-gsm                disable GSM library: gsmenc gsmdec
   --disable-fluidsynth         disable fluidsynth: fluidsynth
   --disable-kate               disable Kate: kate
+  --disable-kms                disable drm/kms libraries: kms
   --disable-ladspa             disable ladspa: ladspa
   --disable-lv2                disable lv2: lv2
   --disable-libde265           disable libde265 HEVC/H.265 decoder: libde265
@@ -2944,6 +2982,7 @@
   --disable-sndio              disable sndio audio: sndio
   --disable-hls                disable http live streaming plugin: hls
   --disable-x265               disable x265 plug-in: x265
+  --disable-webrtcdsp          disable WebRTC Audio Processing: webrtcdsp
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -3053,6 +3092,18 @@
               C compiler flags for GST_NET, overriding pkg-config
   GST_NET_LIBS
               linker flags for GST_NET, overriding pkg-config
+  GST_VIDEO_CFLAGS
+              C compiler flags for GST_VIDEO, overriding pkg-config
+  GST_VIDEO_LIBS
+              linker flags for GST_VIDEO, overriding pkg-config
+  GST_AUDIO_CFLAGS
+              C compiler flags for GST_AUDIO, overriding pkg-config
+  GST_AUDIO_LIBS
+              linker flags for GST_AUDIO, overriding pkg-config
+  GST_PBUTILS_CFLAGS
+              C compiler flags for GST_PBUTILS, overriding pkg-config
+  GST_PBUTILS_LIBS
+              linker flags for GST_PBUTILS, overriding pkg-config
   GST_PLUGINS_BASE_CFLAGS
               C compiler flags for GST_PLUGINS_BASE, overriding pkg-config
   GST_PLUGINS_BASE_LIBS
@@ -3131,6 +3182,10 @@
   LIBPNG_LIBS linker flags for LIBPNG, overriding pkg-config
   XCB_CFLAGS  C compiler flags for XCB, overriding pkg-config
   XCB_LIBS    linker flags for XCB, overriding pkg-config
+  WAYLAND_CFLAGS
+              C compiler flags for WAYLAND, overriding pkg-config
+  WAYLAND_LIBS
+              linker flags for WAYLAND, overriding pkg-config
   BLUEZ5_CFLAGS
               C compiler flags for BLUEZ5, overriding pkg-config
   BLUEZ5_LIBS linker flags for BLUEZ5, overriding pkg-config
@@ -3144,14 +3199,6 @@
   LIBUSB_CFLAGS
               C compiler flags for LIBUSB, overriding pkg-config
   LIBUSB_LIBS linker flags for LIBUSB, overriding pkg-config
-  GST_VIDEO_CFLAGS
-              C compiler flags for GST_VIDEO, overriding pkg-config
-  GST_VIDEO_LIBS
-              linker flags for GST_VIDEO, overriding pkg-config
-  GST_PBUTILS_CFLAGS
-              C compiler flags for GST_PBUTILS, overriding pkg-config
-  GST_PBUTILS_LIBS
-              linker flags for GST_PBUTILS, overriding pkg-config
   CUDA_CFLAGS C compiler flags for CUDA, overriding pkg-config
   CUDA_LIBS   linker flags for CUDA, overriding pkg-config
   NVENCODE_CFLAGS
@@ -3196,10 +3243,10 @@
               C compiler flags for DIRECTFB, overriding pkg-config
   DIRECTFB_LIBS
               linker flags for DIRECTFB, overriding pkg-config
-  WAYLAND_CFLAGS
-              C compiler flags for WAYLAND, overriding pkg-config
-  WAYLAND_LIBS
-              linker flags for WAYLAND, overriding pkg-config
+  WAYLAND_PROTOCOLS_CFLAGS
+              C compiler flags for WAYLAND_PROTOCOLS, overriding pkg-config
+  WAYLAND_PROTOCOLS_LIBS
+              linker flags for WAYLAND_PROTOCOLS, overriding pkg-config
   WEBP_CFLAGS C compiler flags for WEBP, overriding pkg-config
   WEBP_LIBS   linker flags for WEBP, overriding pkg-config
   DAALA_CFLAGS
@@ -3208,6 +3255,10 @@
   DVDNAV_CFLAGS
               C compiler flags for DVDNAV, overriding pkg-config
   DVDNAV_LIBS linker flags for DVDNAV, overriding pkg-config
+  FDK_AAC_CFLAGS
+              C compiler flags for FDK_AAC, overriding pkg-config
+  FDK_AAC_LIBS
+              linker flags for FDK_AAC, overriding pkg-config
   FLUIDSYNTH_CFLAGS
               C compiler flags for FLUIDSYNTH, overriding pkg-config
   FLUIDSYNTH_LIBS
@@ -3217,10 +3268,12 @@
   TIGER_CFLAGS
               C compiler flags for TIGER, overriding pkg-config
   TIGER_LIBS  linker flags for TIGER, overriding pkg-config
+  DRM_CFLAGS  C compiler flags for DRM, overriding pkg-config
+  DRM_LIBS    linker flags for DRM, overriding pkg-config
   LRDF_CFLAGS C compiler flags for LRDF, overriding pkg-config
   LRDF_LIBS   linker flags for LRDF, overriding pkg-config
-  SLV2_CFLAGS C compiler flags for SLV2, overriding pkg-config
-  SLV2_LIBS   linker flags for SLV2, overriding pkg-config
+  LILV_CFLAGS C compiler flags for LILV, overriding pkg-config
+  LILV_LIBS   linker flags for LILV, overriding pkg-config
   LIBDE265_CFLAGS
               C compiler flags for LIBDE265, overriding pkg-config
   LIBDE265_LIBS
@@ -3361,6 +3414,10 @@
               linker flags for OPENSSL, overriding pkg-config
   X265_CFLAGS C compiler flags for X265, overriding pkg-config
   X265_LIBS   linker flags for X265, overriding pkg-config
+  WEBRTCDSP_CFLAGS
+              C compiler flags for WEBRTCDSP, overriding pkg-config
+  WEBRTCDSP_LIBS
+              linker flags for WEBRTCDSP, overriding pkg-config
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
@@ -3428,7 +3485,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GStreamer Bad Plug-ins configure 1.8.3
+GStreamer Bad Plug-ins configure 1.9.90
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -4401,7 +4458,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by GStreamer Bad Plug-ins $as_me 1.8.3, which was
+It was created by GStreamer Bad Plug-ins $as_me 1.9.90, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -5383,7 +5440,7 @@
 
 # Define the identity of the package.
  PACKAGE='gst-plugins-bad'
- VERSION='1.8.3'
+ VERSION='1.9.90'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -5594,9 +5651,9 @@
 
 
 
-  PACKAGE_VERSION_MAJOR=$(echo 1.8.3 | cut -d'.' -f1)
-  PACKAGE_VERSION_MINOR=$(echo 1.8.3 | cut -d'.' -f2)
-  PACKAGE_VERSION_MICRO=$(echo 1.8.3 | cut -d'.' -f3)
+  PACKAGE_VERSION_MAJOR=$(echo 1.9.90 | cut -d'.' -f1)
+  PACKAGE_VERSION_MINOR=$(echo 1.9.90 | cut -d'.' -f2)
+  PACKAGE_VERSION_MICRO=$(echo 1.9.90 | cut -d'.' -f3)
 
 
 
@@ -5607,7 +5664,7 @@
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
 $as_echo_n "checking nano version... " >&6; }
 
-  NANO=$(echo 1.8.3 | cut -d'.' -f4)
+  NANO=$(echo 1.9.90 | cut -d'.' -f4)
 
   if test x"$NANO" = x || test "x$NANO" = "x0" ; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5
@@ -10451,10 +10508,10 @@
 done
 
 
-  GST_CURRENT=803
+  GST_CURRENT=990
   GST_REVISION=0
-  GST_AGE=803
-  GST_LIBVERSION=803:0:803
+  GST_AGE=990
+  GST_LIBVERSION=990:0:990
 
 
 
@@ -15082,8 +15139,8 @@
 
 
 
-GST_REQ=1.8.0
-GSTPB_REQ=1.8.0
+GST_REQ=1.9.90
+GSTPB_REQ=1.9.90
 
 
 
@@ -24967,6 +25024,8 @@
 
 
 
+
+
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -24976,19 +25035,23 @@
 ax_pthread_ok=no
 
 # We used to check for pthread.h first, but this fails if pthread.h
-# requires special compiler flags (e.g. on True64 or Sequent).
+# requires special compiler flags (e.g. on Tru64 or Sequent).
 # It gets checked for in the link test anyway.
 
 # First of all, check if the user has set any of the PTHREAD_LIBS,
 # etcetera environment variables, and if threads linking works using
 # them:
-if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
-        save_CFLAGS="$CFLAGS"
+if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then
+        ax_pthread_save_CC="$CC"
+        ax_pthread_save_CFLAGS="$CFLAGS"
+        ax_pthread_save_LIBS="$LIBS"
+        if test "x$PTHREAD_CC" != "x"; then :
+  CC="$PTHREAD_CC"
+fi
         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-        save_LIBS="$LIBS"
         LIBS="$PTHREAD_LIBS $LIBS"
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5
-$as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; }
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS" >&5
+$as_echo_n "checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS... " >&6; }
         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -25014,12 +25077,13 @@
     conftest$ac_exeext conftest.$ac_ext
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
 $as_echo "$ax_pthread_ok" >&6; }
-        if test x"$ax_pthread_ok" = xno; then
+        if test "x$ax_pthread_ok" = "xno"; then
                 PTHREAD_LIBS=""
                 PTHREAD_CFLAGS=""
         fi
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
+        CC="$ax_pthread_save_CC"
+        CFLAGS="$ax_pthread_save_CFLAGS"
+        LIBS="$ax_pthread_save_LIBS"
 fi
 
 # We must check for the threads library under a number of different
@@ -25032,7 +25096,7 @@
 # which indicates that we try without any flags at all, and "pthread-config"
 # which is a program returning the flags for the Pth emulation library.
 
-ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
 
 # The ordering *is* (sometimes) important.  Some notes on the
 # individual items follow:
@@ -25041,82 +25105,257 @@
 # none: in case threads are in libc; should be tried before -Kthread and
 #       other compiler flags to prevent continual compiler warnings
 # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
-# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
-# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
-# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
-# -pthreads: Solaris/gcc
-# -mthreads: Mingw32/gcc, Lynx/gcc
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64
+#           (Note: HP C rejects this with "bad form for `-t' option")
+# -pthreads: Solaris/gcc (Note: HP C also rejects)
 # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
-#      doesn't hurt to check since this sometimes defines pthreads too;
-#      also defines -D_REENTRANT)
-#      ... -mt is also the pthreads flag for HP/aCC
+#      doesn't hurt to check since this sometimes defines pthreads and
+#      -D_REENTRANT too), HP C (must be checked before -lpthread, which
+#      is present but should not be used directly; and before -mthreads,
+#      because the compiler interprets this as "-mt" + "-hreads")
+# -mthreads: Mingw32/gcc, Lynx/gcc
 # pthread: Linux, etcetera
 # --thread-safe: KAI C++
 # pthread-config: use pthread-config program (for GNU Pth library)
 
-case ${host_os} in
+case $host_os in
+
+        freebsd*)
+
+        # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+        # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+
+        ax_pthread_flags="-kthread lthread $ax_pthread_flags"
+        ;;
+
+        hpux*)
+
+        # From the cc(1) man page: "[-mt] Sets various -D flags to enable
+        # multi-threading and also sets -lpthread."
+
+        ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags"
+        ;;
+
+        openedition*)
+
+        # IBM z/OS requires a feature-test macro to be defined in order to
+        # enable POSIX threads at all, so give the user a hint if this is
+        # not set. (We don't define these ourselves, as they can affect
+        # other portions of the system API in unpredictable ways.)
+
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#            if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS)
+             AX_PTHREAD_ZOS_MISSING
+#            endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&5
+$as_echo "$as_me: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&2;}
+fi
+rm -f conftest*
+
+        ;;
+
         solaris*)
 
         # On Solaris (at least, for some versions), libc contains stubbed
         # (non-functional) versions of the pthreads routines, so link-based
-        # tests will erroneously succeed.  (We need to link with -pthreads/-mt/
-        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
-        # a function called by this macro, so we could check for that, but
-        # who knows whether they'll stub that too in a future libc.)  So,
-        # we'll just look for -pthreads and -lpthread first:
+        # tests will erroneously succeed. (N.B.: The stubs are missing
+        # pthread_cleanup_push, or rather a function called by this macro,
+        # so we could check for that, but who knows whether they'll stub
+        # that too in a future libc.)  So we'll check first for the
+        # standard Solaris way of linking pthreads (-mt -lpthread).
 
-        ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
-        ;;
-
-        darwin*)
-        ax_pthread_flags="-pthread $ax_pthread_flags"
+        ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags"
         ;;
 esac
 
-# Clang doesn't consider unrecognized options an error unless we specify
-# -Werror. We throw in some extra Clang-specific options to ensure that
-# this doesn't happen for GCC, which also accepts -Werror.
+# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC)
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler needs -Werror to reject unknown flags" >&5
-$as_echo_n "checking if compiler needs -Werror to reject unknown flags... " >&6; }
-save_CFLAGS="$CFLAGS"
-ax_pthread_extra_flags="-Werror"
-CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-int foo(void);
-int
-main ()
-{
-foo()
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  ax_pthread_extra_flags=
-                   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if test "x$GCC" = "xyes"; then :
+  ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-CFLAGS="$save_CFLAGS"
 
-if test x"$ax_pthread_ok" = xno; then
-for flag in $ax_pthread_flags; do
+# The presence of a feature test macro requesting re-entrant function
+# definitions is, on some systems, a strong hint that pthreads support is
+# correctly enabled
 
-        case $flag in
+case $host_os in
+        darwin* | hpux* | linux* | osf* | solaris*)
+        ax_pthread_check_macro="_REENTRANT"
+        ;;
+
+        aix*)
+        ax_pthread_check_macro="_THREAD_SAFE"
+        ;;
+
+        *)
+        ax_pthread_check_macro="--"
+        ;;
+esac
+if test "x$ax_pthread_check_macro" = "x--"; then :
+  ax_pthread_check_cond=0
+else
+  ax_pthread_check_cond="!defined($ax_pthread_check_macro)"
+fi
+
+# Are we compiling with Clang?
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC is Clang" >&5
+$as_echo_n "checking whether $CC is Clang... " >&6; }
+if ${ax_cv_PTHREAD_CLANG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ax_cv_PTHREAD_CLANG=no
+     # Note that Autoconf sets GCC=yes for Clang as well as GCC
+     if test "x$GCC" = "xyes"; then
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Note: Clang 2.7 lacks __clang_[a-z]+__ */
+#            if defined(__clang__) && defined(__llvm__)
+             AX_PTHREAD_CC_IS_CLANG
+#            endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1; then :
+  ax_cv_PTHREAD_CLANG=yes
+fi
+rm -f conftest*
+
+     fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG" >&5
+$as_echo "$ax_cv_PTHREAD_CLANG" >&6; }
+ax_pthread_clang="$ax_cv_PTHREAD_CLANG"
+
+ax_pthread_clang_warning=no
+
+# Clang needs special handling, because older versions handle the -pthread
+# option in a rather... idiosyncratic way
+
+if test "x$ax_pthread_clang" = "xyes"; then
+
+        # Clang takes -pthread; it has never supported any other flag
+
+        # (Note 1: This will need to be revisited if a system that Clang
+        # supports has POSIX threads in a separate library.  This tends not
+        # to be the way of modern systems, but it's conceivable.)
+
+        # (Note 2: On some systems, notably Darwin, -pthread is not needed
+        # to get POSIX threads support; the API is always present and
+        # active.  We could reasonably leave PTHREAD_CFLAGS empty.  But
+        # -pthread does define _REENTRANT, and while the Darwin headers
+        # ignore this macro, third-party headers might not.)
+
+        PTHREAD_CFLAGS="-pthread"
+        PTHREAD_LIBS=
+
+        ax_pthread_ok=yes
+
+        # However, older versions of Clang make a point of warning the user
+        # that, in an invocation where only linking and no compilation is
+        # taking place, the -pthread option has no effect ("argument unused
+        # during compilation").  They expect -pthread to be passed in only
+        # when source code is being compiled.
+        #
+        # Problem is, this is at odds with the way Automake and most other
+        # C build frameworks function, which is that the same flags used in
+        # compilation (CFLAGS) are also used in linking.  Many systems
+        # supported by AX_PTHREAD require exactly this for POSIX threads
+        # support, and in fact it is often not straightforward to specify a
+        # flag that is used only in the compilation phase and not in
+        # linking.  Such a scenario is extremely rare in practice.
+        #
+        # Even though use of the -pthread flag in linking would only print
+        # a warning, this can be a nuisance for well-run software projects
+        # that build with -Werror.  So if the active version of Clang has
+        # this misfeature, we search for an option to squash it.
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread" >&5
+$as_echo_n "checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread... " >&6; }
+if ${ax_cv_PTHREAD_CLANG_NO_WARN_FLAG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown
+             # Create an alternate version of $ac_link that compiles and
+             # links in two steps (.c -> .o, .o -> exe) instead of one
+             # (.c -> exe), because the warning occurs only in the second
+             # step
+             ax_pthread_save_ac_link="$ac_link"
+             ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g'
+             ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"`
+             ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)"
+             ax_pthread_save_CFLAGS="$CFLAGS"
+             for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do
+                if test "x$ax_pthread_try" = "xunknown"; then :
+  break
+fi
+                CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS"
+                ac_link="$ax_pthread_save_ac_link"
+                cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main(void){return 0;}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_link="$ax_pthread_2step_ac_link"
+                     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main(void){return 0;}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+             done
+             ac_link="$ax_pthread_save_ac_link"
+             CFLAGS="$ax_pthread_save_CFLAGS"
+             if test "x$ax_pthread_try" = "x"; then :
+  ax_pthread_try=no
+fi
+             ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&5
+$as_echo "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&6; }
+
+        case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in
+                no | unknown) ;;
+                *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;;
+        esac
+
+fi # $ax_pthread_clang = yes
+
+if test "x$ax_pthread_ok" = "xno"; then
+for ax_pthread_try_flag in $ax_pthread_flags; do
+
+        case $ax_pthread_try_flag in
                 none)
                 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5
 $as_echo_n "checking whether pthreads work without any flags... " >&6; }
                 ;;
 
+                -mt,pthread)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with -mt -lpthread" >&5
+$as_echo_n "checking whether pthreads work with -mt -lpthread... " >&6; }
+                PTHREAD_CFLAGS="-mt"
+                PTHREAD_LIBS="-lpthread"
+                ;;
+
                 -*)
-                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5
-$as_echo_n "checking whether pthreads work with $flag... " >&6; }
-                PTHREAD_CFLAGS="$flag"
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $ax_pthread_try_flag" >&5
+$as_echo_n "checking whether pthreads work with $ax_pthread_try_flag... " >&6; }
+                PTHREAD_CFLAGS="$ax_pthread_try_flag"
                 ;;
 
                 pthread-config)
@@ -25158,22 +25397,24 @@
 fi
 
 
-                if test x"$ax_pthread_config" = xno; then continue; fi
+                if test "x$ax_pthread_config" = "xno"; then :
+  continue
+fi
                 PTHREAD_CFLAGS="`pthread-config --cflags`"
                 PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
                 ;;
 
                 *)
-                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5
-$as_echo_n "checking for the pthreads library -l$flag... " >&6; }
-                PTHREAD_LIBS="-l$flag"
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$ax_pthread_try_flag" >&5
+$as_echo_n "checking for the pthreads library -l$ax_pthread_try_flag... " >&6; }
+                PTHREAD_LIBS="-l$ax_pthread_try_flag"
                 ;;
         esac
 
-        save_LIBS="$LIBS"
-        save_CFLAGS="$CFLAGS"
+        ax_pthread_save_CFLAGS="$CFLAGS"
+        ax_pthread_save_LIBS="$LIBS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
         LIBS="$PTHREAD_LIBS $LIBS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags"
 
         # Check for various functions.  We must include pthread.h,
         # since some functions may be macros.  (On the Sequent, we
@@ -25184,9 +25425,13 @@
         # pthread_cleanup_push because it is one of the few pthread
         # functions on Solaris that doesn't have a non-functional libc stub.
         # We try pthread_create on general principles.
+
         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <pthread.h>
+#                       if $ax_pthread_check_cond
+#                        error "$ax_pthread_check_macro must be defined"
+#                       endif
                         static void routine(void *a) { a = 0; }
                         static void *start_routine(void *a) { return a; }
 int
@@ -25208,14 +25453,14 @@
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
+        CFLAGS="$ax_pthread_save_CFLAGS"
+        LIBS="$ax_pthread_save_LIBS"
 
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
 $as_echo "$ax_pthread_ok" >&6; }
-        if test "x$ax_pthread_ok" = xyes; then
-                break;
-        fi
+        if test "x$ax_pthread_ok" = "xyes"; then :
+  break
+fi
 
         PTHREAD_LIBS=""
         PTHREAD_CFLAGS=""
@@ -25223,72 +25468,80 @@
 fi
 
 # Various other checks:
-if test "x$ax_pthread_ok" = xyes; then
-        save_LIBS="$LIBS"
-        LIBS="$PTHREAD_LIBS $LIBS"
-        save_CFLAGS="$CFLAGS"
+if test "x$ax_pthread_ok" = "xyes"; then
+        ax_pthread_save_CFLAGS="$CFLAGS"
+        ax_pthread_save_LIBS="$LIBS"
         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
 
         # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5
 $as_echo_n "checking for joinable pthread attribute... " >&6; }
-        attr_name=unknown
-        for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
-            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+if ${ax_cv_PTHREAD_JOINABLE_ATTR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ax_cv_PTHREAD_JOINABLE_ATTR=unknown
+             for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
+                 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <pthread.h>
 int
 main ()
 {
-int attr = $attr; return attr /* ; */
+int attr = $ax_pthread_attr; return attr /* ; */
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  attr_name=$attr; break
+  ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
-        done
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5
-$as_echo "$attr_name" >&6; }
-        if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
+             done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_JOINABLE_ATTR" >&5
+$as_echo "$ax_cv_PTHREAD_JOINABLE_ATTR" >&6; }
+        if test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \
+               test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \
+               test "x$ax_pthread_joinable_attr_defined" != "xyes"; then :
 
 cat >>confdefs.h <<_ACEOF
-#define PTHREAD_CREATE_JOINABLE $attr_name
+#define PTHREAD_CREATE_JOINABLE $ax_cv_PTHREAD_JOINABLE_ATTR
 _ACEOF
 
-        fi
+               ax_pthread_joinable_attr_defined=yes
 
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5
-$as_echo_n "checking if more special flags are required for pthreads... " >&6; }
-        flag=no
-        case ${host_os} in
-            aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
-            osf* | hpux*) flag="-D_REENTRANT";;
-            solaris*)
-            if test "$GCC" = "yes"; then
-                flag="-D_REENTRANT"
-            else
-                # TODO: What about Clang on Solaris?
-                flag="-mt -D_REENTRANT"
-            fi
-            ;;
-        esac
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag" >&5
-$as_echo "$flag" >&6; }
-        if test "x$flag" != xno; then
-            PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
-        fi
+fi
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether more special flags are required for pthreads" >&5
+$as_echo_n "checking whether more special flags are required for pthreads... " >&6; }
+if ${ax_cv_PTHREAD_SPECIAL_FLAGS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ax_cv_PTHREAD_SPECIAL_FLAGS=no
+             case $host_os in
+             solaris*)
+             ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
+             ;;
+             esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_SPECIAL_FLAGS" >&5
+$as_echo "$ax_cv_PTHREAD_SPECIAL_FLAGS" >&6; }
+        if test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \
+               test "x$ax_pthread_special_flags_added" != "xyes"; then :
+  PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS"
+               ax_pthread_special_flags_added=yes
+fi
 
         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5
 $as_echo_n "checking for PTHREAD_PRIO_INHERIT... " >&6; }
 if ${ax_cv_PTHREAD_PRIO_INHERIT+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-
-                cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <pthread.h>
 int
@@ -25310,23 +25563,26 @@
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5
 $as_echo "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; }
-        if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"; then :
+        if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \
+               test "x$ax_pthread_prio_inherit_defined" != "xyes"; then :
 
 $as_echo "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h
 
+               ax_pthread_prio_inherit_defined=yes
+
 fi
 
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
+        CFLAGS="$ax_pthread_save_CFLAGS"
+        LIBS="$ax_pthread_save_LIBS"
 
         # More AIX lossage: compile with *_r variant
-        if test "x$GCC" != xyes; then
+        if test "x$GCC" != "xyes"; then
             case $host_os in
                 aix*)
                 case "x/$CC" in #(
   x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6) :
     #handle absolute path differently from PATH based program lookup
-                   case "x$CC" in #(
+                     case "x$CC" in #(
   x/*) :
     if as_fn_executable_p ${CC}_r; then :
   PTHREAD_CC="${CC}_r"
@@ -25391,7 +25647,7 @@
 
 
 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-if test x"$ax_pthread_ok" = xyes; then
+if test "x$ax_pthread_ok" = "xyes"; then
 
 $as_echo "#define HAVE_PTHREAD 1" >>confdefs.h
 
@@ -27036,6 +27292,292 @@
 
 
 
+
+  which="gstreamer-video-$GST_API_VERSION"
+    required=$GST_REQ
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GST_VIDEO" >&5
+$as_echo_n "checking for GST_VIDEO... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GST_VIDEO_CFLAGS"; then
+        pkg_cv_GST_VIDEO_CFLAGS="$GST_VIDEO_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GST_VIDEO_CFLAGS=`$PKG_CONFIG --cflags "$which" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GST_VIDEO_LIBS"; then
+        pkg_cv_GST_VIDEO_LIBS="$GST_VIDEO_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GST_VIDEO_LIBS=`$PKG_CONFIG --libs "$which" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        GST_VIDEO_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$which"`
+        else
+	        GST_VIDEO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$which"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$GST_VIDEO_PKG_ERRORS" >&5
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+      HAVE_GST_VIDEO="no"
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "$GST_VIDEO_PKG_ERRORS" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: $GST_VIDEO_PKG_ERRORS" >&5
+$as_echo "$as_me: $GST_VIDEO_PKG_ERRORS" >&6;}
+      fi
+
+elif test $pkg_failed = untried; then
+
+      HAVE_GST_VIDEO="no"
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "$GST_VIDEO_PKG_ERRORS" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: $GST_VIDEO_PKG_ERRORS" >&5
+$as_echo "$as_me: $GST_VIDEO_PKG_ERRORS" >&6;}
+      fi
+
+else
+	GST_VIDEO_CFLAGS=$pkg_cv_GST_VIDEO_CFLAGS
+	GST_VIDEO_LIBS=$pkg_cv_GST_VIDEO_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+      HAVE_GST_VIDEO="yes"
+
+fi
+
+
+
+  which="gstreamer-audio-$GST_API_VERSION"
+    required=$GST_REQ
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GST_AUDIO" >&5
+$as_echo_n "checking for GST_AUDIO... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GST_AUDIO_CFLAGS"; then
+        pkg_cv_GST_AUDIO_CFLAGS="$GST_AUDIO_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GST_AUDIO_CFLAGS=`$PKG_CONFIG --cflags "$which" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GST_AUDIO_LIBS"; then
+        pkg_cv_GST_AUDIO_LIBS="$GST_AUDIO_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GST_AUDIO_LIBS=`$PKG_CONFIG --libs "$which" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        GST_AUDIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$which"`
+        else
+	        GST_AUDIO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$which"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$GST_AUDIO_PKG_ERRORS" >&5
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+      HAVE_GST_AUDIO="no"
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "$GST_AUDIO_PKG_ERRORS" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: $GST_AUDIO_PKG_ERRORS" >&5
+$as_echo "$as_me: $GST_AUDIO_PKG_ERRORS" >&6;}
+      fi
+
+elif test $pkg_failed = untried; then
+
+      HAVE_GST_AUDIO="no"
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "$GST_AUDIO_PKG_ERRORS" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: $GST_AUDIO_PKG_ERRORS" >&5
+$as_echo "$as_me: $GST_AUDIO_PKG_ERRORS" >&6;}
+      fi
+
+else
+	GST_AUDIO_CFLAGS=$pkg_cv_GST_AUDIO_CFLAGS
+	GST_AUDIO_LIBS=$pkg_cv_GST_AUDIO_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+      HAVE_GST_AUDIO="yes"
+
+fi
+
+
+
+  which="gstreamer-pbutils-$GST_API_VERSION"
+    required=$GST_REQ
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GST_PBUTILS" >&5
+$as_echo_n "checking for GST_PBUTILS... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GST_PBUTILS_CFLAGS"; then
+        pkg_cv_GST_PBUTILS_CFLAGS="$GST_PBUTILS_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GST_PBUTILS_CFLAGS=`$PKG_CONFIG --cflags "$which" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GST_PBUTILS_LIBS"; then
+        pkg_cv_GST_PBUTILS_LIBS="$GST_PBUTILS_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GST_PBUTILS_LIBS=`$PKG_CONFIG --libs "$which" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        GST_PBUTILS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$which"`
+        else
+	        GST_PBUTILS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$which"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$GST_PBUTILS_PKG_ERRORS" >&5
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+      HAVE_GST_PBUTILS="no"
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "$GST_PBUTILS_PKG_ERRORS" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: $GST_PBUTILS_PKG_ERRORS" >&5
+$as_echo "$as_me: $GST_PBUTILS_PKG_ERRORS" >&6;}
+      fi
+
+elif test $pkg_failed = untried; then
+
+      HAVE_GST_PBUTILS="no"
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "$GST_PBUTILS_PKG_ERRORS" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: $GST_PBUTILS_PKG_ERRORS" >&5
+$as_echo "$as_me: $GST_PBUTILS_PKG_ERRORS" >&6;}
+      fi
+
+else
+	GST_PBUTILS_CFLAGS=$pkg_cv_GST_PBUTILS_CFLAGS
+	GST_PBUTILS_LIBS=$pkg_cv_GST_PBUTILS_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+      HAVE_GST_PBUTILS="yes"
+
+fi
+
+
+
  if test "x$HAVE_GST_CHECK" = "xyes"; then
   HAVE_GST_CHECK_TRUE=
   HAVE_GST_CHECK_FALSE='#'
@@ -28127,12 +28669,12 @@
         pkg_cv_GRAPHENE_CFLAGS="$GRAPHENE_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"graphene-1.0 >= 1.0.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "graphene-1.0 >= 1.0.0") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"graphene-1.0 >= 1.4.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "graphene-1.0 >= 1.4.0") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_GRAPHENE_CFLAGS=`$PKG_CONFIG --cflags "graphene-1.0 >= 1.0.0" 2>/dev/null`
+  pkg_cv_GRAPHENE_CFLAGS=`$PKG_CONFIG --cflags "graphene-1.0 >= 1.4.0" 2>/dev/null`
 else
   pkg_failed=yes
 fi
@@ -28145,12 +28687,12 @@
         pkg_cv_GRAPHENE_LIBS="$GRAPHENE_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"graphene-1.0 >= 1.0.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "graphene-1.0 >= 1.0.0") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"graphene-1.0 >= 1.4.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "graphene-1.0 >= 1.4.0") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_GRAPHENE_LIBS=`$PKG_CONFIG --libs "graphene-1.0 >= 1.0.0" 2>/dev/null`
+  pkg_cv_GRAPHENE_LIBS=`$PKG_CONFIG --libs "graphene-1.0 >= 1.4.0" 2>/dev/null`
 else
   pkg_failed=yes
 fi
@@ -28169,9 +28711,9 @@
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-	        GRAPHENE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "graphene-1.0 >= 1.0.0"`
+	        GRAPHENE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "graphene-1.0 >= 1.4.0"`
         else
-	        GRAPHENE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "graphene-1.0 >= 1.0.0"`
+	        GRAPHENE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "graphene-1.0 >= 1.4.0"`
         fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$GRAPHENE_PKG_ERRORS" >&5
@@ -28985,6 +29527,10 @@
 fi
 
 
+if test x$enable_static = xyes -a x$enable_shared = xno; then
+  GST_STATIC_CFLAGS="-DGST_STATIC_COMPILATION"
+fi
+
 
 # Check whether --with-player-tests was given.
 if test "${with_player_tests+set}" = set; then :
@@ -30210,10 +30756,11 @@
  sdi tta \
  videomeasure \
  linsys \
- apexsink dc1394 \
- musepack nas sdl timidity \
+ apexsink \
+ nas sdl timidity \
  wininet \
- xvid lv2 sndio libvisual"
+ xvid sndio libvisual"
+
 
 
 
@@ -32797,6 +33344,49 @@
 
 
 
+  GST_PLUGINS_ALL="$GST_PLUGINS_ALL timecode"
+
+
+
+  # Check whether --enable-timecode was given.
+if test "${enable_timecode+set}" = set; then :
+  enableval=$enable_timecode;
+      case "${enableval}" in
+        yes) gst_use_timecode=yes ;;
+        no) gst_use_timecode=no ;;
+        *) as_fn_error $? "bad value ${enableval} for --enable-timecode" "$LINENO" 5 ;;
+       esac
+
+else
+  gst_use_timecode=yes
+fi
+
+  if test x$gst_use_timecode = xno; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: disabling dependency-less plugin timecode" >&5
+$as_echo "$as_me: disabling dependency-less plugin timecode" >&6;}
+    WITHOUT_PLUGINS="$WITHOUT_PLUGINS timecode"
+  fi
+
+
+    if [ -z "$WITH_PLUGINS" ] || echo " $WITH_PLUGINS " | tr , ' ' | grep -i " timecode " > /dev/null; then
+    GST_PLUGINS_SELECTED="$GST_PLUGINS_SELECTED timecode"
+  fi
+    if echo " $WITHOUT_PLUGINS " | tr , ' ' | grep -i " timecode " > /dev/null; then
+    GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ timecode / /'`
+  fi
+    if echo " $GST_PLUGINS_NONPORTED " | tr , ' ' | grep -i " timecode " > /dev/null; then
+    GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ timecode / /'`
+  fi
+   if echo " $GST_PLUGINS_SELECTED " | grep -i " timecode " > /dev/null; then
+  USE_PLUGIN_TIMECODE_TRUE=
+  USE_PLUGIN_TIMECODE_FALSE='#'
+else
+  USE_PLUGIN_TIMECODE_TRUE='#'
+  USE_PLUGIN_TIMECODE_FALSE=
+fi
+
+
+
   GST_PLUGINS_ALL="$GST_PLUGINS_ALL tta"
 
 
@@ -33166,6 +33756,14 @@
 fi
 
 
+ac_fn_c_check_header_preproc "$LINENO" "QTKit/QTKit.h" "ac_cv_header_QTKit_QTKit_h"
+if test "x$ac_cv_header_QTKit_QTKit_h" = xyes; then :
+  HAVE_QTKIT="yes"
+else
+  HAVE_QTKIT="no"
+fi
+
+
 
 if test "x$HAVE_VIDEOTOOLBOX" = "xyes"; then
   old_LIBS=$LIBS
@@ -33224,6 +33822,19 @@
 
 fi
 
+ if test "x$HAVE_QTKIT" = "xyes"; then
+  HAVE_QTKIT_TRUE=
+  HAVE_QTKIT_FALSE='#'
+else
+  HAVE_QTKIT_TRUE='#'
+  HAVE_QTKIT_FALSE=
+fi
+
+if test "x$HAVE_QTKIT" = "xyes"; then
+
+$as_echo "#define HAVE_QTKIT 1" >>confdefs.h
+
+fi
 for ac_header in sys/socket.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default"
@@ -33530,6 +34141,7 @@
 
 HAVE_GL=no
 HAVE_GLES2=no
+HAVE_GLES3_H=no
 HAVE_WAYLAND_EGL=no
 
 HAVE_EGL_RPI=no
@@ -33938,6 +34550,12 @@
 
 
       fi
+      ac_fn_c_check_header_mongrel "$LINENO" "GLES3/gl3.h" "ac_cv_header_GLES3_gl3_h" "$ac_includes_default"
+if test "x$ac_cv_header_GLES3_gl3_h" = xyes; then :
+  HAVE_GLES3_H=yes
+fi
+
+
     fi
     if test "x$NEED_EGL" != "xno"; then
 
@@ -34490,6 +35108,17 @@
 $as_echo "yes" >&6; }
 	HAVE_WAYLAND_EGL=yes
 fi
+
+    # OS X and iOS always have GL available
+    case $host in
+      *-darwin*)
+        if test "x$HAVE_IOS" = "xyes"; then
+          HAVE_GLES2=yes
+        else
+          HAVE_GL=yes
+        fi
+      ;;
+    esac
   ;;
 esac
 
@@ -34654,6 +35283,10 @@
 fi
 
 if test "x$HAVE_GL" = "xyes" -a "x$HAVE_GLES2" = "xyes"; then
+  GLES3_H_DEFINE=0
+  if test "x$HAVE_GLES3_H" == "xyes"; then
+    GLES3_H_DEFINE=1
+  fi
   GL_INCLUDES="
 #ifdef __GNUC__
 #  pragma GCC diagnostic push
@@ -34666,8 +35299,13 @@
 #  include <OpenGLES/ES2/gl.h>
 #  include <OpenGLES/ES2/glext.h>
 # else
-#  include <GLES2/gl2.h>
-#  include <GLES2/gl2ext.h>
+#  if $GLES3_H_DEFINE
+#   include <GLES3/gl3.h>
+#   include <GLES3/gl3ext.h>
+#  else
+#   include <GLES2/gl2.h>
+#   include <GLES2/gl2ext.h>
+#  endif
 # endif
 # ifdef __APPLE__
 #  include <OpenGL/OpenGL.h>
@@ -34711,6 +35349,7 @@
       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Disabling GL|ES 2.0 support" >&5
 $as_echo "$as_me: WARNING: Disabling GL|ES 2.0 support" >&2;}
       HAVE_GLES2=no
+      HAVE_GLES3_H=no
     fi
 
 fi
@@ -34952,6 +35591,9 @@
 if test "x$USE_GLES2" = "xyes"; then
   GL_APIS="gles2 $GL_APIS"
   GST_GL_HAVE_GLES2=1
+  if test "x$HAVE_GLES3_H" = "xyes"; then
+    GST_GL_HAVE_GLES3=1
+  fi
 fi
 
 GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
@@ -35239,8 +35881,13 @@
 #  include <OpenGLES/ES2/gl.h>
 #  include <OpenGLES/ES2/glext.h>
 # else
-#  include <GLES2/gl2.h>
-#  include <GLES2/gl2ext.h>
+#  if $GST_GL_HAVE_GLES3
+#   include <GLES3/gl3.h>
+#   include <GLES3/gl3ext.h>
+#  else
+#   include <GLES2/gl2.h>
+#   include <GLES2/gl2ext.h>
+#  endif
 # endif
 "
 fi
@@ -35266,6 +35913,7 @@
 GST_GL_HAVE_GLSYNC=0
 GST_GL_HAVE_GLUINT64=0
 GST_GL_HAVE_GLINT64=0
+GST_GL_HAVE_EGLATTRIB=0
 
 old_CFLAGS=$CFLAGS
 CFLAGS="$GL_CFLAGS $CFLAGS"
@@ -35375,6 +36023,27 @@
   GST_GL_HAVE_GLINT64=1
 fi
 
+if test "x$USE_EGL" = "xyes"; then
+  EGL_INCLUDES="$GL_INCLUDES
+  #include <EGL/egl.h>
+  #include <EGL/eglext.h>
+  "
+  ac_fn_c_check_type "$LINENO" "EGLAttrib" "ac_cv_type_EGLAttrib" "$EGL_INCLUDES
+"
+if test "x$ac_cv_type_EGLAttrib" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_EGLATTRIB 1
+_ACEOF
+
+
+fi
+
+  if test "x$ac_cv_type_EGLAttrib" = "xyes"; then
+    GST_GL_HAVE_EGLATTRIB=1
+  fi
+fi
+
 CFLAGS=$old_CFLAGS
 
 GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
@@ -35385,6 +36054,7 @@
 #define GST_GL_HAVE_GLSYNC $GST_GL_HAVE_GLSYNC
 #define GST_GL_HAVE_GLUINT64 $GST_GL_HAVE_GLUINT64
 #define GST_GL_HAVE_GLINT64 $GST_GL_HAVE_GLINT64
+#define GST_GL_HAVE_EGLATTRIB $GST_GL_HAVE_EGLATTRIB
 "
 
 ac_config_commands="$ac_config_commands gst-libs/gst/gl/gstglconfig.h"
@@ -35599,8 +36269,6 @@
 fi
 
 
-VULKAN_CONFIG_DEFINES=""
-
 
 pkg_failed=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XCB" >&5
@@ -35662,18 +36330,17 @@
 
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-                HAVE_XCB=no
+                GST_VULKAN_HAVE_WINDOW_XCB=0
 elif test $pkg_failed = untried; then
-	HAVE_XCB=no
+	GST_VULKAN_HAVE_WINDOW_XCB=0
 else
 	XCB_CFLAGS=$pkg_cv_XCB_CFLAGS
 	XCB_LIBS=$pkg_cv_XCB_LIBS
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-	HAVE_XCB=yes
+	GST_VULKAN_HAVE_WINDOW_XCB=1
 fi
-
- if test "x$HAVE_XCB" = "xyes"; then
+ if test "x$GST_VULKAN_HAVE_WINDOW_XCB" = "x1"; then
   USE_XCB_TRUE=
   USE_XCB_FALSE='#'
 else
@@ -35681,10 +36348,89 @@
   USE_XCB_FALSE=
 fi
 
-if test "x$HAVE_XCB" = "xyes"; then
-  VULKAN_CONFIG_DEFINES="$VULKAN_CONFIG_DEFINES
-  #define GST_VULKAN_HAVE_WINDOW_XCB 1"
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for WAYLAND" >&5
+$as_echo_n "checking for WAYLAND... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$WAYLAND_CFLAGS"; then
+        pkg_cv_WAYLAND_CFLAGS="$WAYLAND_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"wayland-client >= 1.4\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "wayland-client >= 1.4") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_WAYLAND_CFLAGS=`$PKG_CONFIG --cflags "wayland-client >= 1.4" 2>/dev/null`
+else
+  pkg_failed=yes
 fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$WAYLAND_LIBS"; then
+        pkg_cv_WAYLAND_LIBS="$WAYLAND_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"wayland-client >= 1.4\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "wayland-client >= 1.4") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_WAYLAND_LIBS=`$PKG_CONFIG --libs "wayland-client >= 1.4" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        WAYLAND_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "wayland-client >= 1.4"`
+        else
+	        WAYLAND_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "wayland-client >= 1.4"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$WAYLAND_PKG_ERRORS" >&5
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+                GST_VULKAN_HAVE_WINDOW_WAYLAND=0
+elif test $pkg_failed = untried; then
+	GST_VULKAN_HAVE_WINDOW_WAYLAND=0
+else
+	WAYLAND_CFLAGS=$pkg_cv_WAYLAND_CFLAGS
+	WAYLAND_LIBS=$pkg_cv_WAYLAND_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	GST_VULKAN_HAVE_WINDOW_WAYLAND=1
+fi
+ if test "x$GST_VULKAN_HAVE_WINDOW_WAYLAND" = "x1"; then
+  USE_WAYLAND_TRUE=
+  USE_WAYLAND_FALSE='#'
+else
+  USE_WAYLAND_TRUE='#'
+  USE_WAYLAND_FALSE=
+fi
+
+VULKAN_CONFIG_DEFINES="
+#define GST_VULKAN_HAVE_WINDOW_XCB $GST_VULKAN_HAVE_WINDOW_XCB
+#define GST_VULKAN_HAVE_WINDOW_WAYLAND $GST_VULKAN_HAVE_WINDOW_WAYLAND"
 
 ac_config_commands="$ac_config_commands ext/vulkan/vkconfig.h"
 
@@ -37664,196 +38410,6 @@
   HAVE_NVENC=no
 
 
-  which="gstreamer-video-1.0"
-    required="no"
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GST_VIDEO" >&5
-$as_echo_n "checking for GST_VIDEO... " >&6; }
-
-if test -n "$PKG_CONFIG"; then
-    if test -n "$GST_VIDEO_CFLAGS"; then
-        pkg_cv_GST_VIDEO_CFLAGS="$GST_VIDEO_CFLAGS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_GST_VIDEO_CFLAGS=`$PKG_CONFIG --cflags "$which" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    fi
-else
-	pkg_failed=untried
-fi
-if test -n "$PKG_CONFIG"; then
-    if test -n "$GST_VIDEO_LIBS"; then
-        pkg_cv_GST_VIDEO_LIBS="$GST_VIDEO_LIBS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_GST_VIDEO_LIBS=`$PKG_CONFIG --libs "$which" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    fi
-else
-	pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        GST_VIDEO_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$which"`
-        else
-	        GST_VIDEO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$which"`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$GST_VIDEO_PKG_ERRORS" >&5
-
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-      HAVE_GST_VIDEO="no"
-      if test "x$required" = "xyes"; then
-        as_fn_error $? "$GST_VIDEO_PKG_ERRORS" "$LINENO" 5
-      else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: $GST_VIDEO_PKG_ERRORS" >&5
-$as_echo "$as_me: $GST_VIDEO_PKG_ERRORS" >&6;}
-      fi
-
-elif test $pkg_failed = untried; then
-
-      HAVE_GST_VIDEO="no"
-      if test "x$required" = "xyes"; then
-        as_fn_error $? "$GST_VIDEO_PKG_ERRORS" "$LINENO" 5
-      else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: $GST_VIDEO_PKG_ERRORS" >&5
-$as_echo "$as_me: $GST_VIDEO_PKG_ERRORS" >&6;}
-      fi
-
-else
-	GST_VIDEO_CFLAGS=$pkg_cv_GST_VIDEO_CFLAGS
-	GST_VIDEO_LIBS=$pkg_cv_GST_VIDEO_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-      HAVE_GST_VIDEO="yes"
-
-fi
-
-
-
-  which="gstreamer-pbutils-1.0"
-    required="no"
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GST_PBUTILS" >&5
-$as_echo_n "checking for GST_PBUTILS... " >&6; }
-
-if test -n "$PKG_CONFIG"; then
-    if test -n "$GST_PBUTILS_CFLAGS"; then
-        pkg_cv_GST_PBUTILS_CFLAGS="$GST_PBUTILS_CFLAGS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_GST_PBUTILS_CFLAGS=`$PKG_CONFIG --cflags "$which" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    fi
-else
-	pkg_failed=untried
-fi
-if test -n "$PKG_CONFIG"; then
-    if test -n "$GST_PBUTILS_LIBS"; then
-        pkg_cv_GST_PBUTILS_LIBS="$GST_PBUTILS_LIBS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_GST_PBUTILS_LIBS=`$PKG_CONFIG --libs "$which" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    fi
-else
-	pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        GST_PBUTILS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$which"`
-        else
-	        GST_PBUTILS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$which"`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$GST_PBUTILS_PKG_ERRORS" >&5
-
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-      HAVE_GST_PBUTILS="no"
-      if test "x$required" = "xyes"; then
-        as_fn_error $? "$GST_PBUTILS_PKG_ERRORS" "$LINENO" 5
-      else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: $GST_PBUTILS_PKG_ERRORS" >&5
-$as_echo "$as_me: $GST_PBUTILS_PKG_ERRORS" >&6;}
-      fi
-
-elif test $pkg_failed = untried; then
-
-      HAVE_GST_PBUTILS="no"
-      if test "x$required" = "xyes"; then
-        as_fn_error $? "$GST_PBUTILS_PKG_ERRORS" "$LINENO" 5
-      else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: $GST_PBUTILS_PKG_ERRORS" >&5
-$as_echo "$as_me: $GST_PBUTILS_PKG_ERRORS" >&6;}
-      fi
-
-else
-	GST_PBUTILS_CFLAGS=$pkg_cv_GST_PBUTILS_CFLAGS
-	GST_PBUTILS_LIBS=$pkg_cv_GST_PBUTILS_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-      HAVE_GST_PBUTILS="yes"
-
-fi
-
-
-
 # Check whether --with-cuda-prefix was given.
 if test "${with_cuda_prefix+set}" = set; then :
   withval=$with_cuda_prefix; if test "x$with_cuda_prefix" != "x"; then :
@@ -41229,14 +41785,89 @@
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 
-    if test "x$wayland_scanner" != "x"; then
-      HAVE_WAYLAND="yes"
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: wayland-scanner is required to build the wayland plugin" >&5
-$as_echo "wayland-scanner is required to build the wayland plugin" >&6; }
-      HAVE_WAYLAND="no"
-    fi
 
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for WAYLAND_PROTOCOLS" >&5
+$as_echo_n "checking for WAYLAND_PROTOCOLS... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$WAYLAND_PROTOCOLS_CFLAGS"; then
+        pkg_cv_WAYLAND_PROTOCOLS_CFLAGS="$WAYLAND_PROTOCOLS_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"wayland-protocols >= 1.4\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "wayland-protocols >= 1.4") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_WAYLAND_PROTOCOLS_CFLAGS=`$PKG_CONFIG --cflags "wayland-protocols >= 1.4" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$WAYLAND_PROTOCOLS_LIBS"; then
+        pkg_cv_WAYLAND_PROTOCOLS_LIBS="$WAYLAND_PROTOCOLS_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"wayland-protocols >= 1.4\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "wayland-protocols >= 1.4") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_WAYLAND_PROTOCOLS_LIBS=`$PKG_CONFIG --libs "wayland-protocols >= 1.4" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        WAYLAND_PROTOCOLS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "wayland-protocols >= 1.4"`
+        else
+	        WAYLAND_PROTOCOLS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "wayland-protocols >= 1.4"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$WAYLAND_PROTOCOLS_PKG_ERRORS" >&5
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+                 HAVE_WAYLAND="no"
+
+elif test $pkg_failed = untried; then
+	 HAVE_WAYLAND="no"
+
+else
+	WAYLAND_PROTOCOLS_CFLAGS=$pkg_cv_WAYLAND_PROTOCOLS_CFLAGS
+	WAYLAND_PROTOCOLS_LIBS=$pkg_cv_WAYLAND_PROTOCOLS_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+      if test "x$wayland_scanner" != "x"; then
+        HAVE_WAYLAND="yes"
+        WAYLAND_PROTOCOLS_DATADIR=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`
+
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: wayland-scanner is required to build the wayland plugin" >&5
+$as_echo "wayland-scanner is required to build the wayland plugin" >&6; }
+        HAVE_WAYLAND="no"
+      fi
+
+fi
 fi
 
 
@@ -42435,6 +43066,169 @@
 
 
 echo
+{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: fdkaac plugin ***" >&5
+$as_echo "$as_me: *** checking feature: fdkaac plugin ***" >&6;}
+if test "xfdkaac" != "x"
+then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins: fdkaac ***" >&5
+$as_echo "$as_me: *** for plug-ins: fdkaac ***" >&6;}
+fi
+NOUSE=
+if test "x$USE_FDK_AAC" = "xno"; then
+  NOUSE="yes"
+fi
+# Check whether --enable-fdk_aac was given.
+if test "${enable_fdk_aac+set}" = set; then :
+  enableval=$enable_fdk_aac;  case "${enableval}" in
+      yes) USE_FDK_AAC=yes;;
+      no) USE_FDK_AAC=no;;
+      *) as_fn_error $? "bad value ${enableval} for --enable-fdk_aac" "$LINENO" 5 ;;
+    esac
+else
+   USE_FDK_AAC=yes
+fi
+
+if test "x$NOUSE" = "xyes"; then
+  USE_FDK_AAC="no"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** fdkaac pre-configured not to be built" >&5
+$as_echo "$as_me: WARNING: *** fdkaac pre-configured not to be built" >&2;}
+fi
+NOUSE=
+
+if echo " $GST_PLUGINS_NONPORTED " | tr , ' ' | grep -i " FDK_AAC " > /dev/null; then
+  USE_FDK_AAC="no"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** fdkaac not ported" >&5
+$as_echo "$as_me: WARNING: *** fdkaac not ported" >&2;}
+fi
+
+
+if test x$USE_FDK_AAC = xyes; then
+
+  gst_check_save_LIBS=$LIBS
+  gst_check_save_LDFLAGS=$LDFLAGS
+  gst_check_save_CFLAGS=$CFLAGS
+  gst_check_save_CPPFLAGS=$CPPFLAGS
+  gst_check_save_CXXFLAGS=$CXXFLAGS
+
+  HAVE_FDK_AAC=no
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FDK_AAC" >&5
+$as_echo_n "checking for FDK_AAC... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$FDK_AAC_CFLAGS"; then
+        pkg_cv_FDK_AAC_CFLAGS="$FDK_AAC_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fdk-aac\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "fdk-aac") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_FDK_AAC_CFLAGS=`$PKG_CONFIG --cflags "fdk-aac" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$FDK_AAC_LIBS"; then
+        pkg_cv_FDK_AAC_LIBS="$FDK_AAC_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fdk-aac\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "fdk-aac") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_FDK_AAC_LIBS=`$PKG_CONFIG --libs "fdk-aac" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        FDK_AAC_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "fdk-aac"`
+        else
+	        FDK_AAC_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "fdk-aac"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$FDK_AAC_PKG_ERRORS" >&5
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+    HAVE_FDK_AAC="no"
+
+elif test $pkg_failed = untried; then
+
+    HAVE_FDK_AAC="no"
+
+else
+	FDK_AAC_CFLAGS=$pkg_cv_FDK_AAC_CFLAGS
+	FDK_AAC_LIBS=$pkg_cv_FDK_AAC_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	HAVE_FDK_AAC="yes"
+fi
+
+
+  LIBS=$gst_check_save_LIBS
+  LDFLAGS=$gst_check_save_LDFLAGS
+  CFLAGS=$gst_check_save_CFLAGS
+  CPPFLAGS=$gst_check_save_CPPFLAGS
+  CXXFLAGS=$gst_check_save_CXXFLAGS
+
+    if test x$HAVE_FDK_AAC = xno; then
+    USE_FDK_AAC=no
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will be built: fdkaac" >&5
+$as_echo "$as_me: *** These plugins will be built: fdkaac" >&6;}
+  fi
+fi
+if test x$USE_FDK_AAC = xyes; then
+  :
+  if test "xfdkaac" != "x"; then
+    GST_PLUGINS_YES="\tfdkaac\n$GST_PLUGINS_YES"
+  fi
+
+$as_echo "#define HAVE_FDK_AAC /**/" >>confdefs.h
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will not be built: fdkaac" >&5
+$as_echo "$as_me: *** These plugins will not be built: fdkaac" >&6;}
+  if test "xfdkaac" != "x"; then
+    GST_PLUGINS_NO="\tfdkaac\n$GST_PLUGINS_NO"
+  fi
+  :
+fi
+ if test x$USE_FDK_AAC = xyes; then
+  USE_FDK_AAC_TRUE=
+  USE_FDK_AAC_FALSE='#'
+else
+  USE_FDK_AAC_TRUE='#'
+  USE_FDK_AAC_FALSE=
+fi
+
+
+
+echo
 { $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: Flite plugin ***" >&5
 $as_echo "$as_me: *** checking feature: Flite plugin ***" >&6;}
 if test "xflite" != "x"
@@ -43238,6 +44032,260 @@
 
 
 echo
+{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: drm/kms libraries ***" >&5
+$as_echo "$as_me: *** checking feature: drm/kms libraries ***" >&6;}
+if test "xkms" != "x"
+then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins: kms ***" >&5
+$as_echo "$as_me: *** for plug-ins: kms ***" >&6;}
+fi
+NOUSE=
+if test "x$USE_KMS" = "xno"; then
+  NOUSE="yes"
+fi
+# Check whether --enable-kms was given.
+if test "${enable_kms+set}" = set; then :
+  enableval=$enable_kms;  case "${enableval}" in
+      yes) USE_KMS=yes;;
+      no) USE_KMS=no;;
+      *) as_fn_error $? "bad value ${enableval} for --enable-kms" "$LINENO" 5 ;;
+    esac
+else
+   USE_KMS=yes
+fi
+
+if test "x$NOUSE" = "xyes"; then
+  USE_KMS="no"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** kms pre-configured not to be built" >&5
+$as_echo "$as_me: WARNING: *** kms pre-configured not to be built" >&2;}
+fi
+NOUSE=
+
+if echo " $GST_PLUGINS_NONPORTED " | tr , ' ' | grep -i " KMS " > /dev/null; then
+  USE_KMS="no"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** kms not ported" >&5
+$as_echo "$as_me: WARNING: *** kms not ported" >&2;}
+fi
+
+
+if test x$USE_KMS = xyes; then
+
+  gst_check_save_LIBS=$LIBS
+  gst_check_save_LDFLAGS=$LDFLAGS
+  gst_check_save_CFLAGS=$CFLAGS
+  gst_check_save_CPPFLAGS=$CPPFLAGS
+  gst_check_save_CXXFLAGS=$CXXFLAGS
+
+  HAVE_KMS=no
+
+
+  which="gstreamer-allocators-1.0"
+    required="no"
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GST_ALLOCATORS" >&5
+$as_echo_n "checking for GST_ALLOCATORS... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GST_ALLOCATORS_CFLAGS"; then
+        pkg_cv_GST_ALLOCATORS_CFLAGS="$GST_ALLOCATORS_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GST_ALLOCATORS_CFLAGS=`$PKG_CONFIG --cflags "$which" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GST_ALLOCATORS_LIBS"; then
+        pkg_cv_GST_ALLOCATORS_LIBS="$GST_ALLOCATORS_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GST_ALLOCATORS_LIBS=`$PKG_CONFIG --libs "$which" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        GST_ALLOCATORS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$which"`
+        else
+	        GST_ALLOCATORS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$which"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$GST_ALLOCATORS_PKG_ERRORS" >&5
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+      HAVE_GST_ALLOCATORS="no"
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "$GST_ALLOCATORS_PKG_ERRORS" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: $GST_ALLOCATORS_PKG_ERRORS" >&5
+$as_echo "$as_me: $GST_ALLOCATORS_PKG_ERRORS" >&6;}
+      fi
+
+elif test $pkg_failed = untried; then
+
+      HAVE_GST_ALLOCATORS="no"
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "$GST_ALLOCATORS_PKG_ERRORS" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: $GST_ALLOCATORS_PKG_ERRORS" >&5
+$as_echo "$as_me: $GST_ALLOCATORS_PKG_ERRORS" >&6;}
+      fi
+
+else
+	GST_ALLOCATORS_CFLAGS=$pkg_cv_GST_ALLOCATORS_CFLAGS
+	GST_ALLOCATORS_LIBS=$pkg_cv_GST_ALLOCATORS_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+      HAVE_GST_ALLOCATORS="yes"
+
+fi
+
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DRM" >&5
+$as_echo_n "checking for DRM... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$DRM_CFLAGS"; then
+        pkg_cv_DRM_CFLAGS="$DRM_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libdrm >= 2.4.55 libkms\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libdrm >= 2.4.55 libkms") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_DRM_CFLAGS=`$PKG_CONFIG --cflags "libdrm >= 2.4.55 libkms" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$DRM_LIBS"; then
+        pkg_cv_DRM_LIBS="$DRM_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libdrm >= 2.4.55 libkms\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libdrm >= 2.4.55 libkms") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_DRM_LIBS=`$PKG_CONFIG --libs "libdrm >= 2.4.55 libkms" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        DRM_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libdrm >= 2.4.55 libkms"`
+        else
+	        DRM_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libdrm >= 2.4.55 libkms"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$DRM_PKG_ERRORS" >&5
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+                HAVE_KMS=no
+elif test $pkg_failed = untried; then
+	HAVE_KMS=no
+else
+	DRM_CFLAGS=$pkg_cv_DRM_CFLAGS
+	DRM_LIBS=$pkg_cv_DRM_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	HAVE_KMS=yes
+fi
+
+
+  LIBS=$gst_check_save_LIBS
+  LDFLAGS=$gst_check_save_LDFLAGS
+  CFLAGS=$gst_check_save_CFLAGS
+  CPPFLAGS=$gst_check_save_CPPFLAGS
+  CXXFLAGS=$gst_check_save_CXXFLAGS
+
+    if test x$HAVE_KMS = xno; then
+    USE_KMS=no
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will be built: kms" >&5
+$as_echo "$as_me: *** These plugins will be built: kms" >&6;}
+  fi
+fi
+if test x$USE_KMS = xyes; then
+  :
+  if test "xkms" != "x"; then
+    GST_PLUGINS_YES="\tkms\n$GST_PLUGINS_YES"
+  fi
+
+$as_echo "#define HAVE_KMS /**/" >>confdefs.h
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will not be built: kms" >&5
+$as_echo "$as_me: *** These plugins will not be built: kms" >&6;}
+  if test "xkms" != "x"; then
+    GST_PLUGINS_NO="\tkms\n$GST_PLUGINS_NO"
+  fi
+  :
+fi
+ if test x$USE_KMS = xyes; then
+  USE_KMS_TRUE=
+  USE_KMS_FALSE='#'
+else
+  USE_KMS_TRUE='#'
+  USE_KMS_FALSE=
+fi
+
+
+
+echo
 { $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: ladspa ***" >&5
 $as_echo "$as_me: *** checking feature: ladspa ***" >&6;}
 if test "xladspa" != "x"
@@ -43461,20 +44509,20 @@
 
 
 pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SLV2" >&5
-$as_echo_n "checking for SLV2... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LILV" >&5
+$as_echo_n "checking for LILV... " >&6; }
 
 if test -n "$PKG_CONFIG"; then
-    if test -n "$SLV2_CFLAGS"; then
-        pkg_cv_SLV2_CFLAGS="$SLV2_CFLAGS"
+    if test -n "$LILV_CFLAGS"; then
+        pkg_cv_LILV_CFLAGS="$LILV_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"slv2 >= 0.6.6\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "slv2 >= 0.6.6") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lilv-0 >= 0.22\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "lilv-0 >= 0.22") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_SLV2_CFLAGS=`$PKG_CONFIG --cflags "slv2 >= 0.6.6" 2>/dev/null`
+  pkg_cv_LILV_CFLAGS=`$PKG_CONFIG --cflags "lilv-0 >= 0.22" 2>/dev/null`
 else
   pkg_failed=yes
 fi
@@ -43483,16 +44531,16 @@
 	pkg_failed=untried
 fi
 if test -n "$PKG_CONFIG"; then
-    if test -n "$SLV2_LIBS"; then
-        pkg_cv_SLV2_LIBS="$SLV2_LIBS"
+    if test -n "$LILV_LIBS"; then
+        pkg_cv_LILV_LIBS="$LILV_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"slv2 >= 0.6.6\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "slv2 >= 0.6.6") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lilv-0 >= 0.22\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "lilv-0 >= 0.22") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_SLV2_LIBS=`$PKG_CONFIG --libs "slv2 >= 0.6.6" 2>/dev/null`
+  pkg_cv_LILV_LIBS=`$PKG_CONFIG --libs "lilv-0 >= 0.22" 2>/dev/null`
 else
   pkg_failed=yes
 fi
@@ -43511,12 +44559,74 @@
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-	        SLV2_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "slv2 >= 0.6.6"`
+	        LILV_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "lilv-0 >= 0.22"`
         else
-	        SLV2_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "slv2 >= 0.6.6"`
+	        LILV_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "lilv-0 >= 0.22"`
         fi
 	# Put the nasty error message in config.log where it belongs
-	echo "$SLV2_PKG_ERRORS" >&5
+	echo "$LILV_PKG_ERRORS" >&5
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LILV" >&5
+$as_echo_n "checking for LILV... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$LILV_CFLAGS"; then
+        pkg_cv_LILV_CFLAGS="$LILV_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lilv-0 >= 0.16\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "lilv-0 >= 0.16") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_LILV_CFLAGS=`$PKG_CONFIG --cflags "lilv-0 >= 0.16" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$LILV_LIBS"; then
+        pkg_cv_LILV_LIBS="$LILV_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lilv-0 >= 0.16\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "lilv-0 >= 0.16") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_LILV_LIBS=`$PKG_CONFIG --libs "lilv-0 >= 0.16" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        LILV_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "lilv-0 >= 0.16"`
+        else
+	        LILV_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "lilv-0 >= 0.16"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$LILV_PKG_ERRORS" >&5
 
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -43524,13 +44634,101 @@
 elif test $pkg_failed = untried; then
 	HAVE_LV2="no"
 else
-	SLV2_CFLAGS=$pkg_cv_SLV2_CFLAGS
-	SLV2_LIBS=$pkg_cv_SLV2_LIBS
+	LILV_CFLAGS=$pkg_cv_LILV_CFLAGS
+	LILV_LIBS=$pkg_cv_LILV_LIBS
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 	HAVE_LV2="yes"
 fi
 
+elif test $pkg_failed = untried; then
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LILV" >&5
+$as_echo_n "checking for LILV... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$LILV_CFLAGS"; then
+        pkg_cv_LILV_CFLAGS="$LILV_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lilv-0 >= 0.16\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "lilv-0 >= 0.16") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_LILV_CFLAGS=`$PKG_CONFIG --cflags "lilv-0 >= 0.16" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$LILV_LIBS"; then
+        pkg_cv_LILV_LIBS="$LILV_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lilv-0 >= 0.16\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "lilv-0 >= 0.16") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_LILV_LIBS=`$PKG_CONFIG --libs "lilv-0 >= 0.16" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        LILV_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "lilv-0 >= 0.16"`
+        else
+	        LILV_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "lilv-0 >= 0.16"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$LILV_PKG_ERRORS" >&5
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+                HAVE_LV2="no"
+elif test $pkg_failed = untried; then
+	HAVE_LV2="no"
+else
+	LILV_CFLAGS=$pkg_cv_LILV_CFLAGS
+	LILV_LIBS=$pkg_cv_LILV_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	HAVE_LV2="yes"
+fi
+
+else
+	LILV_CFLAGS=$pkg_cv_LILV_CFLAGS
+	LILV_LIBS=$pkg_cv_LILV_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+    HAVE_LV2="yes",
+    HAVE_LILV_0_22="yes"
+
+$as_echo "#define HAVE_LILV_0_22 1" >>confdefs.h
+
+
+fi
+
 
 
 
@@ -46250,12 +47448,12 @@
         pkg_cv_OPENCV_CFLAGS="$OPENCV_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"opencv >= 2.3.0 opencv < 2.5.0 \""; } >&5
-  ($PKG_CONFIG --exists --print-errors "opencv >= 2.3.0 opencv < 2.5.0 ") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"opencv >= 2.3.0 opencv <= 3.1.0 \""; } >&5
+  ($PKG_CONFIG --exists --print-errors "opencv >= 2.3.0 opencv <= 3.1.0 ") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_OPENCV_CFLAGS=`$PKG_CONFIG --cflags "opencv >= 2.3.0 opencv < 2.5.0 " 2>/dev/null`
+  pkg_cv_OPENCV_CFLAGS=`$PKG_CONFIG --cflags "opencv >= 2.3.0 opencv <= 3.1.0 " 2>/dev/null`
 else
   pkg_failed=yes
 fi
@@ -46268,12 +47466,12 @@
         pkg_cv_OPENCV_LIBS="$OPENCV_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"opencv >= 2.3.0 opencv < 2.5.0 \""; } >&5
-  ($PKG_CONFIG --exists --print-errors "opencv >= 2.3.0 opencv < 2.5.0 ") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"opencv >= 2.3.0 opencv <= 3.1.0 \""; } >&5
+  ($PKG_CONFIG --exists --print-errors "opencv >= 2.3.0 opencv <= 3.1.0 ") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_OPENCV_LIBS=`$PKG_CONFIG --libs "opencv >= 2.3.0 opencv < 2.5.0 " 2>/dev/null`
+  pkg_cv_OPENCV_LIBS=`$PKG_CONFIG --libs "opencv >= 2.3.0 opencv <= 3.1.0 " 2>/dev/null`
 else
   pkg_failed=yes
 fi
@@ -46292,9 +47490,9 @@
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-	        OPENCV_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "opencv >= 2.3.0 opencv < 2.5.0 "`
+	        OPENCV_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "opencv >= 2.3.0 opencv <= 3.1.0 "`
         else
-	        OPENCV_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "opencv >= 2.3.0 opencv < 2.5.0 "`
+	        OPENCV_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "opencv >= 2.3.0 opencv <= 3.1.0 "`
         fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$OPENCV_PKG_ERRORS" >&5
@@ -46708,15 +47906,11 @@
     OLD_CPPFLAGS=$CPPFLAGS
     CPPFLAGS=$OPENCV_CFLAGS
     something_not_found=no
-    for ac_header in opencv2/contrib/contrib.hpp \
-                      opencv2/core/core_c.h \
-                      opencv2/core/types_c.h \
+    for ac_header in opencv2/core/core_c.h \
                       opencv2/core/version.hpp \
                       opencv2/highgui/highgui_c.h \
                       opencv2/imgproc/imgproc.hpp \
                       opencv2/imgproc/imgproc_c.h \
-                      opencv2/legacy/compat.hpp \
-                      opencv2/legacy/legacy.hpp \
                       opencv2/objdetect/objdetect.hpp \
                       opencv2/video/background_segm.hpp
 do :
@@ -49674,7 +50868,6 @@
 
   HAVE_VULKAN=no
 
-  HAVE_VULKAN=no
   ac_fn_c_check_header_mongrel "$LINENO" "vulkan/vulkan.h" "ac_cv_header_vulkan_vulkan_h" "$ac_includes_default"
 if test "x$ac_cv_header_vulkan_vulkan_h" = xyes; then :
 
@@ -49718,8 +50911,11 @@
 
       VULKAN_LIBS="-lvulkan"
 
-            if test "x$HAVE_XCB" = "xyes"; then
-        HAVE_VULKAN=yes
+      if test "x$GST_VULKAN_HAVE_WINDOW_XCB" = "x1"; then
+        HAVE_VULKAN="yes"
+      fi
+      if test "x$GST_VULKAN_HAVE_WINDOW_WAYLAND" = "x1"; then
+        HAVE_VULKAN="yes"
       fi
 
 fi
@@ -57188,6 +58384,317 @@
 
 
 
+echo
+{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: WebRTC Audio Processing ***" >&5
+$as_echo "$as_me: *** checking feature: WebRTC Audio Processing ***" >&6;}
+if test "xwebrtcdsp" != "x"
+then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins: webrtcdsp ***" >&5
+$as_echo "$as_me: *** for plug-ins: webrtcdsp ***" >&6;}
+fi
+NOUSE=
+if test "x$USE_WEBRTCDSP" = "xno"; then
+  NOUSE="yes"
+fi
+# Check whether --enable-webrtcdsp was given.
+if test "${enable_webrtcdsp+set}" = set; then :
+  enableval=$enable_webrtcdsp;  case "${enableval}" in
+      yes) USE_WEBRTCDSP=yes;;
+      no) USE_WEBRTCDSP=no;;
+      *) as_fn_error $? "bad value ${enableval} for --enable-webrtcdsp" "$LINENO" 5 ;;
+    esac
+else
+   USE_WEBRTCDSP=yes
+fi
+
+if test "x$NOUSE" = "xyes"; then
+  USE_WEBRTCDSP="no"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** webrtcdsp pre-configured not to be built" >&5
+$as_echo "$as_me: WARNING: *** webrtcdsp pre-configured not to be built" >&2;}
+fi
+NOUSE=
+
+if echo " $GST_PLUGINS_NONPORTED " | tr , ' ' | grep -i " WEBRTCDSP " > /dev/null; then
+  USE_WEBRTCDSP="no"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** webrtcdsp not ported" >&5
+$as_echo "$as_me: WARNING: *** webrtcdsp not ported" >&2;}
+fi
+
+
+if test x$USE_WEBRTCDSP = xyes; then
+
+  gst_check_save_LIBS=$LIBS
+  gst_check_save_LDFLAGS=$LDFLAGS
+  gst_check_save_CFLAGS=$CFLAGS
+  gst_check_save_CPPFLAGS=$CPPFLAGS
+  gst_check_save_CXXFLAGS=$CXXFLAGS
+
+  HAVE_WEBRTCDSP=no
+
+
+
+  which="webrtc-audio-processing >= 0.2 webrtc-audio-processing < 0.4"
+    required="no"
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for WEBRTCDSP" >&5
+$as_echo_n "checking for WEBRTCDSP... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$WEBRTCDSP_CFLAGS"; then
+        pkg_cv_WEBRTCDSP_CFLAGS="$WEBRTCDSP_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_WEBRTCDSP_CFLAGS=`$PKG_CONFIG --cflags "$which" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$WEBRTCDSP_LIBS"; then
+        pkg_cv_WEBRTCDSP_LIBS="$WEBRTCDSP_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_WEBRTCDSP_LIBS=`$PKG_CONFIG --libs "$which" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        WEBRTCDSP_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$which"`
+        else
+	        WEBRTCDSP_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$which"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$WEBRTCDSP_PKG_ERRORS" >&5
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+      HAVE_WEBRTCDSP="no"
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "$WEBRTCDSP_PKG_ERRORS" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: $WEBRTCDSP_PKG_ERRORS" >&5
+$as_echo "$as_me: $WEBRTCDSP_PKG_ERRORS" >&6;}
+      fi
+
+elif test $pkg_failed = untried; then
+
+      HAVE_WEBRTCDSP="no"
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "$WEBRTCDSP_PKG_ERRORS" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: $WEBRTCDSP_PKG_ERRORS" >&5
+$as_echo "$as_me: $WEBRTCDSP_PKG_ERRORS" >&6;}
+      fi
+
+else
+	WEBRTCDSP_CFLAGS=$pkg_cv_WEBRTCDSP_CFLAGS
+	WEBRTCDSP_LIBS=$pkg_cv_WEBRTCDSP_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+      HAVE_WEBRTCDSP="yes"
+
+fi
+
+
+
+  # On Android, C++ headers comes with the STL implementation
+  case "${host}" in #(
+  *android*) :
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNUSTL" >&5
+$as_echo_n "checking for GNUSTL... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GNUSTL_CFLAGS"; then
+        pkg_cv_GNUSTL_CFLAGS="$GNUSTL_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnustl\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "gnustl") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GNUSTL_CFLAGS=`$PKG_CONFIG --cflags "gnustl" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GNUSTL_LIBS"; then
+        pkg_cv_GNUSTL_LIBS="$GNUSTL_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnustl\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "gnustl") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GNUSTL_LIBS=`$PKG_CONFIG --libs "gnustl" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        GNUSTL_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gnustl"`
+        else
+	        GNUSTL_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gnustl"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$GNUSTL_PKG_ERRORS" >&5
+
+	as_fn_error $? "Package requirements (gnustl) were not met:
+
+$GNUSTL_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables GNUSTL_CFLAGS
+and GNUSTL_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" "$LINENO" 5
+elif test $pkg_failed = untried; then
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables GNUSTL_CFLAGS
+and GNUSTL_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
+else
+	GNUSTL_CFLAGS=$pkg_cv_GNUSTL_CFLAGS
+	GNUSTL_LIBS=$pkg_cv_GNUSTL_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+          WEBRTCDSP_CFLAGS="$WEBRTCDSP_CFLAGS $GNUSTL_CFLAGS"
+          WEBRTCDSP_LIBS="$WEBRTCDSP_LIBS $GNUSTL_LIBS"
+fi
+       ;; #(
+  *) :
+     ;;
+esac
+
+
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  old_CPPFLAGS=$CPPFLAGS
+  CPPFLAGS="-std=c++11 $CPPFLAGS $GNUSTL_CFLAGS"
+  ac_fn_cxx_check_header_mongrel "$LINENO" "vector" "ac_cv_header_vector" "$ac_includes_default"
+if test "x$ac_cv_header_vector" = xyes; then :
+
+else
+  HAVE_WEBRTCDSP=no
+fi
+
+
+  CPPFLAGS=$old_CPPFLAGS
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+  LIBS=$gst_check_save_LIBS
+  LDFLAGS=$gst_check_save_LDFLAGS
+  CFLAGS=$gst_check_save_CFLAGS
+  CPPFLAGS=$gst_check_save_CPPFLAGS
+  CXXFLAGS=$gst_check_save_CXXFLAGS
+
+    if test x$HAVE_WEBRTCDSP = xno; then
+    USE_WEBRTCDSP=no
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will be built: webrtcdsp" >&5
+$as_echo "$as_me: *** These plugins will be built: webrtcdsp" >&6;}
+  fi
+fi
+if test x$USE_WEBRTCDSP = xyes; then
+  :
+  if test "xwebrtcdsp" != "x"; then
+    GST_PLUGINS_YES="\twebrtcdsp\n$GST_PLUGINS_YES"
+  fi
+
+$as_echo "#define HAVE_WEBRTCDSP /**/" >>confdefs.h
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will not be built: webrtcdsp" >&5
+$as_echo "$as_me: *** These plugins will not be built: webrtcdsp" >&6;}
+  if test "xwebrtcdsp" != "x"; then
+    GST_PLUGINS_NO="\twebrtcdsp\n$GST_PLUGINS_NO"
+  fi
+  :
+fi
+ if test x$USE_WEBRTCDSP = xyes; then
+  USE_WEBRTCDSP_TRUE=
+  USE_WEBRTCDSP_FALSE='#'
+else
+  USE_WEBRTCDSP_TRUE='#'
+  USE_WEBRTCDSP_FALSE=
+fi
+
+
+
 else
 
 
@@ -57368,6 +58875,14 @@
 fi
 
  if false; then
+  USE_FDK_AAC_TRUE=
+  USE_FDK_AAC_FALSE='#'
+else
+  USE_FDK_AAC_TRUE='#'
+  USE_FDK_AAC_FALSE=
+fi
+
+ if false; then
   USE_FLITE_TRUE=
   USE_FLITE_FALSE='#'
 else
@@ -57432,6 +58947,14 @@
 fi
 
  if false; then
+  USE_KMS_TRUE=
+  USE_KMS_FALSE='#'
+else
+  USE_KMS_TRUE='#'
+  USE_KMS_FALSE=
+fi
+
+ if false; then
   USE_TIGER_TRUE=
   USE_TIGER_FALSE='#'
 else
@@ -57808,6 +59331,14 @@
 fi
 
  if false; then
+  USE_WEBRTCDSP_TRUE=
+  USE_WEBRTCDSP_FALSE='#'
+else
+  USE_WEBRTCDSP_TRUE='#'
+  USE_WEBRTCDSP_FALSE=
+fi
+
+ if false; then
   USE_OPENH264_TRUE=
   USE_OPENH264_FALSE='#'
 else
@@ -57831,6 +59362,14 @@
   USE_DTLS_FALSE=
 fi
 
+ if false; then
+  USE_VULKAN_TRUE=
+  USE_VULKAN_FALSE='#'
+else
+  USE_VULKAN_TRUE='#'
+  USE_VULKAN_FALSE=
+fi
+
 
 fi
 
@@ -57854,7 +59393,7 @@
 
 
 
-GST_CFLAGS="$GST_CFLAGS -DGST_USE_UNSTABLE_API"
+GST_CFLAGS="$GST_CFLAGS $GST_STATIC_CFLAGS -DGST_USE_UNSTABLE_API"
 GST_CXXFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CXXFLAGS)"
 GST_OBJCFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_OBJCFLAGS)"
 GST_CFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS)"
@@ -57885,7 +59424,7 @@
 $MKDIR_P tests/check/orc
 
 
-ac_config_files="$ac_config_files Makefile common/Makefile common/m4/Makefile gst-plugins-bad.spec gst/Makefile gst/accurip/Makefile gst/adpcmdec/Makefile gst/adpcmenc/Makefile gst/aiff/Makefile gst/videoframe_audiolevel/Makefile gst/asfmux/Makefile gst/audiofxbad/Makefile gst/audiomixer/Makefile gst/audiovisualizers/Makefile gst/autoconvert/Makefile gst/bayer/Makefile gst/camerabin2/Makefile gst/cdxaparse/Makefile gst/coloreffects/Makefile gst/dataurisrc/Makefile gst/dccp/Makefile gst/debugutils/Makefile gst/dvbsuboverlay/Makefile gst/dvdspu/Makefile gst/faceoverlay/Makefile gst/festival/Makefile gst/fieldanalysis/Makefile gst/freeverb/Makefile gst/frei0r/Makefile gst/gaudieffects/Makefile gst/geometrictransform/Makefile gst/gdp/Makefile gst/hdvparse/Makefile gst/id3tag/Makefile gst/inter/Makefile gst/interlace/Makefile gst/ivfparse/Makefile gst/ivtc/Makefile gst/jp2kdecimator/Makefile gst/jpegformat/Makefile gst/librfb/Makefile gst/midi/Makefile gst/mpegdemux/Makefile gst/mpegtsdemux/Makefile gst/mpegtsmux/Makefile gst/mpegtsmux/tsmux/Makefile gst/mpegpsmux/Makefile gst/mve/Makefile gst/mxf/Makefile gst/netsim/Makefile gst/nuvdemux/Makefile gst/onvif/Makefile gst/patchdetect/Makefile gst/pcapparse/Makefile gst/pnm/Makefile gst/rawparse/Makefile gst/removesilence/Makefile gst/sdi/Makefile gst/sdp/Makefile gst/segmentclip/Makefile gst/siren/Makefile gst/smooth/Makefile gst/speed/Makefile gst/subenc/Makefile gst/stereo/Makefile gst/tta/Makefile gst/videofilters/Makefile gst/videomeasure/Makefile gst/videoparsers/Makefile gst/videosignal/Makefile gst/vmnc/Makefile gst/y4m/Makefile gst/yadif/Makefile gst/compositor/Makefile gst-libs/Makefile gst-libs/gst/Makefile gst-libs/gst/adaptivedemux/Makefile gst-libs/gst/basecamerabinsrc/Makefile gst-libs/gst/gl/Makefile gst-libs/gst/gl/android/Makefile gst-libs/gst/gl/cocoa/Makefile gst-libs/gst/gl/dispmanx/Makefile gst-libs/gst/gl/glprototypes/Makefile gst-libs/gst/gl/eagl/Makefile gst-libs/gst/gl/egl/Makefile gst-libs/gst/gl/wayland/Makefile gst-libs/gst/gl/win32/Makefile gst-libs/gst/gl/x11/Makefile gst-libs/gst/insertbin/Makefile gst-libs/gst/interfaces/Makefile gst-libs/gst/codecparsers/Makefile gst-libs/gst/mpegts/Makefile gst-libs/gst/uridownloader/Makefile gst-libs/gst/wayland/Makefile gst-libs/gst/base/Makefile gst-libs/gst/player/Makefile gst-libs/gst/video/Makefile gst-libs/gst/audio/Makefile sys/Makefile sys/dshowdecwrapper/Makefile sys/acmenc/Makefile sys/acmmp3dec/Makefile sys/androidmedia/Makefile sys/applemedia/Makefile sys/applemedia-nonpublic/Makefile sys/avc/Makefile sys/bluez/Makefile sys/d3dvideosink/Makefile sys/decklink/Makefile sys/directsound/Makefile sys/dshowsrcwrapper/Makefile sys/dshowvideosink/Makefile sys/dvb/Makefile sys/fbdev/Makefile sys/linsys/Makefile sys/nvenc/Makefile sys/opensles/Makefile sys/shm/Makefile sys/tinyalsa/Makefile sys/uvch264/Makefile sys/vcd/Makefile sys/vdpau/Makefile sys/pvr2d/Makefile sys/wasapi/Makefile sys/wininet/Makefile sys/winks/Makefile sys/winscreencap/Makefile tests/Makefile tests/check/Makefile tests/files/Makefile tests/examples/Makefile tests/examples/avsamplesink/Makefile tests/examples/camerabin2/Makefile tests/examples/codecparsers/Makefile tests/examples/directfb/Makefile tests/examples/gl/Makefile tests/examples/gl/cocoa/Makefile tests/examples/gl/clutter/Makefile tests/examples/gl/generic/Makefile tests/examples/gl/generic/cube/Makefile tests/examples/gl/generic/cubeyuv/Makefile tests/examples/gl/generic/doublecube/Makefile tests/examples/gl/generic/recordgraphic/Makefile tests/examples/gl/gtk/Makefile tests/examples/gl/gtk/gtkvideooverlay/Makefile tests/examples/gl/gtk/3dvideo/Makefile tests/examples/gl/gtk/filternovideooverlay/Makefile tests/examples/gl/gtk/filtervideooverlay/Makefile tests/examples/gl/gtk/fxtest/Makefile tests/examples/gl/gtk/switchvideooverlay/Makefile tests/examples/gl/qt/Makefile tests/examples/gl/sdl/Makefile tests/examples/gtk/Makefile tests/examples/mpegts/Makefile tests/examples/mxf/Makefile tests/examples/opencv/Makefile tests/examples/uvch264/Makefile tests/examples/waylandsink/Makefile tests/icles/Makefile ext/voamrwbenc/Makefile ext/voaacenc/Makefile ext/assrender/Makefile ext/apexsink/Makefile ext/bs2b/Makefile ext/bz2/Makefile ext/chromaprint/Makefile ext/curl/Makefile ext/dash/Makefile ext/dc1394/Makefile ext/directfb/Makefile ext/wayland/Makefile ext/daala/Makefile ext/dts/Makefile ext/gl/Makefile ext/gtk/Makefile ext/faac/Makefile ext/faad/Makefile ext/flite/Makefile ext/fluidsynth/Makefile ext/gsm/Makefile ext/hls/Makefile ext/kate/Makefile ext/ladspa/Makefile ext/lv2/Makefile ext/libde265/Makefile ext/libmms/Makefile ext/libvisual/Makefile ext/Makefile ext/modplug/Makefile ext/mpeg2enc/Makefile ext/mimic/Makefile ext/mplex/Makefile ext/musepack/Makefile ext/nas/Makefile ext/neon/Makefile ext/ofa/Makefile ext/openal/Makefile ext/opencv/Makefile ext/openexr/Makefile ext/openh264/Makefile ext/openjpeg/Makefile ext/openni2/Makefile ext/opus/Makefile ext/qt/Makefile ext/rsvg/Makefile ext/resindvd/Makefile ext/rtmp/Makefile ext/sbc/Makefile ext/schroedinger/Makefile ext/sdl/Makefile ext/smoothstreaming/Makefile ext/sndfile/Makefile ext/soundtouch/Makefile ext/spandsp/Makefile ext/sndio/Makefile ext/srtp/Makefile ext/teletextdec/Makefile ext/gme/Makefile ext/spc/Makefile ext/timidity/Makefile ext/vulkan/Makefile ext/vulkan/xcb/Makefile ext/webp/Makefile ext/x265/Makefile ext/xvid/Makefile ext/zbar/Makefile ext/dtls/Makefile po/Makefile.in docs/Makefile docs/plugins/Makefile docs/libs/Makefile docs/version.entities pkgconfig/Makefile pkgconfig/gstreamer-plugins-bad.pc pkgconfig/gstreamer-plugins-bad-uninstalled.pc pkgconfig/gstreamer-codecparsers.pc pkgconfig/gstreamer-codecparsers-uninstalled.pc pkgconfig/gstreamer-insertbin.pc pkgconfig/gstreamer-insertbin-uninstalled.pc pkgconfig/gstreamer-gl.pc pkgconfig/gstreamer-gl-uninstalled.pc pkgconfig/gstreamer-mpegts.pc pkgconfig/gstreamer-mpegts-uninstalled.pc pkgconfig/gstreamer-player.pc pkgconfig/gstreamer-player-uninstalled.pc pkgconfig/gstreamer-wayland.pc pkgconfig/gstreamer-wayland-uninstalled.pc pkgconfig/gstreamer-bad-base.pc pkgconfig/gstreamer-bad-base-uninstalled.pc pkgconfig/gstreamer-bad-video.pc pkgconfig/gstreamer-bad-video-uninstalled.pc pkgconfig/gstreamer-bad-audio.pc pkgconfig/gstreamer-bad-audio-uninstalled.pc tools/Makefile m4/Makefile"
+ac_config_files="$ac_config_files Makefile common/Makefile common/m4/Makefile gst-plugins-bad.spec gst/Makefile gst/accurip/Makefile gst/adpcmdec/Makefile gst/adpcmenc/Makefile gst/aiff/Makefile gst/videoframe_audiolevel/Makefile gst/asfmux/Makefile gst/audiofxbad/Makefile gst/audiomixer/Makefile gst/audiovisualizers/Makefile gst/autoconvert/Makefile gst/bayer/Makefile gst/camerabin2/Makefile gst/cdxaparse/Makefile gst/coloreffects/Makefile gst/dataurisrc/Makefile gst/dccp/Makefile gst/debugutils/Makefile gst/dvbsuboverlay/Makefile gst/dvdspu/Makefile gst/faceoverlay/Makefile gst/festival/Makefile gst/fieldanalysis/Makefile gst/freeverb/Makefile gst/frei0r/Makefile gst/gaudieffects/Makefile gst/geometrictransform/Makefile gst/gdp/Makefile gst/hdvparse/Makefile gst/id3tag/Makefile gst/inter/Makefile gst/interlace/Makefile gst/ivfparse/Makefile gst/ivtc/Makefile gst/jp2kdecimator/Makefile gst/jpegformat/Makefile gst/librfb/Makefile gst/midi/Makefile gst/mpegdemux/Makefile gst/mpegtsdemux/Makefile gst/mpegtsmux/Makefile gst/mpegtsmux/tsmux/Makefile gst/mpegpsmux/Makefile gst/mve/Makefile gst/mxf/Makefile gst/netsim/Makefile gst/nuvdemux/Makefile gst/onvif/Makefile gst/patchdetect/Makefile gst/pcapparse/Makefile gst/pnm/Makefile gst/rawparse/Makefile gst/removesilence/Makefile gst/sdi/Makefile gst/sdp/Makefile gst/segmentclip/Makefile gst/siren/Makefile gst/smooth/Makefile gst/speed/Makefile gst/subenc/Makefile gst/stereo/Makefile gst/tta/Makefile gst/timecode/Makefile gst/videofilters/Makefile gst/videomeasure/Makefile gst/videoparsers/Makefile gst/videosignal/Makefile gst/vmnc/Makefile gst/y4m/Makefile gst/yadif/Makefile gst/compositor/Makefile gst-libs/Makefile gst-libs/gst/Makefile gst-libs/gst/adaptivedemux/Makefile gst-libs/gst/basecamerabinsrc/Makefile gst-libs/gst/gl/Makefile gst-libs/gst/gl/android/Makefile gst-libs/gst/gl/cocoa/Makefile gst-libs/gst/gl/dispmanx/Makefile gst-libs/gst/gl/glprototypes/Makefile gst-libs/gst/gl/eagl/Makefile gst-libs/gst/gl/egl/Makefile gst-libs/gst/gl/wayland/Makefile gst-libs/gst/gl/win32/Makefile gst-libs/gst/gl/x11/Makefile gst-libs/gst/insertbin/Makefile gst-libs/gst/interfaces/Makefile gst-libs/gst/codecparsers/Makefile gst-libs/gst/mpegts/Makefile gst-libs/gst/uridownloader/Makefile gst-libs/gst/wayland/Makefile gst-libs/gst/base/Makefile gst-libs/gst/player/Makefile gst-libs/gst/video/Makefile gst-libs/gst/audio/Makefile sys/Makefile sys/dshowdecwrapper/Makefile sys/acmenc/Makefile sys/acmmp3dec/Makefile sys/androidmedia/Makefile sys/applemedia/Makefile sys/avc/Makefile sys/bluez/Makefile sys/d3dvideosink/Makefile sys/decklink/Makefile sys/directsound/Makefile sys/dshowsrcwrapper/Makefile sys/dshowvideosink/Makefile sys/dvb/Makefile sys/fbdev/Makefile sys/kms/Makefile sys/linsys/Makefile sys/nvenc/Makefile sys/opensles/Makefile sys/shm/Makefile sys/tinyalsa/Makefile sys/uvch264/Makefile sys/vcd/Makefile sys/vdpau/Makefile sys/pvr2d/Makefile sys/wasapi/Makefile sys/wininet/Makefile sys/winks/Makefile sys/winscreencap/Makefile tests/Makefile tests/check/Makefile tests/files/Makefile tests/examples/Makefile tests/examples/avsamplesink/Makefile tests/examples/camerabin2/Makefile tests/examples/codecparsers/Makefile tests/examples/directfb/Makefile tests/examples/gl/Makefile tests/examples/gl/cocoa/Makefile tests/examples/gl/clutter/Makefile tests/examples/gl/generic/Makefile tests/examples/gl/generic/cube/Makefile tests/examples/gl/generic/cubeyuv/Makefile tests/examples/gl/generic/doublecube/Makefile tests/examples/gl/generic/recordgraphic/Makefile tests/examples/gl/gtk/Makefile tests/examples/gl/gtk/3dvideo/Makefile tests/examples/gl/gtk/filternovideooverlay/Makefile tests/examples/gl/gtk/filtervideooverlay/Makefile tests/examples/gl/gtk/fxtest/Makefile tests/examples/gl/gtk/switchvideooverlay/Makefile tests/examples/gl/qt/Makefile tests/examples/gl/sdl/Makefile tests/examples/gtk/Makefile tests/examples/mpegts/Makefile tests/examples/mxf/Makefile tests/examples/opencv/Makefile tests/examples/uvch264/Makefile tests/examples/waylandsink/Makefile tests/icles/Makefile ext/voamrwbenc/Makefile ext/voaacenc/Makefile ext/assrender/Makefile ext/apexsink/Makefile ext/bs2b/Makefile ext/bz2/Makefile ext/chromaprint/Makefile ext/curl/Makefile ext/dash/Makefile ext/dc1394/Makefile ext/directfb/Makefile ext/wayland/Makefile ext/daala/Makefile ext/dts/Makefile ext/gl/Makefile ext/gtk/Makefile ext/faac/Makefile ext/faad/Makefile ext/fdkaac/Makefile ext/flite/Makefile ext/fluidsynth/Makefile ext/gsm/Makefile ext/hls/Makefile ext/kate/Makefile ext/ladspa/Makefile ext/lv2/Makefile ext/libde265/Makefile ext/libmms/Makefile ext/libvisual/Makefile ext/Makefile ext/modplug/Makefile ext/mpeg2enc/Makefile ext/mimic/Makefile ext/mplex/Makefile ext/musepack/Makefile ext/nas/Makefile ext/neon/Makefile ext/ofa/Makefile ext/openal/Makefile ext/opencv/Makefile ext/openexr/Makefile ext/openh264/Makefile ext/openjpeg/Makefile ext/openni2/Makefile ext/opus/Makefile ext/qt/Makefile ext/rsvg/Makefile ext/resindvd/Makefile ext/rtmp/Makefile ext/sbc/Makefile ext/schroedinger/Makefile ext/sdl/Makefile ext/smoothstreaming/Makefile ext/sndfile/Makefile ext/soundtouch/Makefile ext/spandsp/Makefile ext/sndio/Makefile ext/srtp/Makefile ext/teletextdec/Makefile ext/gme/Makefile ext/spc/Makefile ext/timidity/Makefile ext/vulkan/Makefile ext/vulkan/xcb/Makefile ext/vulkan/wayland/Makefile ext/webp/Makefile ext/x265/Makefile ext/xvid/Makefile ext/zbar/Makefile ext/dtls/Makefile ext/webrtcdsp/Makefile po/Makefile.in docs/Makefile docs/plugins/Makefile docs/libs/Makefile docs/version.entities pkgconfig/Makefile pkgconfig/gstreamer-plugins-bad.pc pkgconfig/gstreamer-plugins-bad-uninstalled.pc pkgconfig/gstreamer-codecparsers.pc pkgconfig/gstreamer-codecparsers-uninstalled.pc pkgconfig/gstreamer-insertbin.pc pkgconfig/gstreamer-insertbin-uninstalled.pc pkgconfig/gstreamer-gl.pc pkgconfig/gstreamer-gl-uninstalled.pc pkgconfig/gstreamer-mpegts.pc pkgconfig/gstreamer-mpegts-uninstalled.pc pkgconfig/gstreamer-player.pc pkgconfig/gstreamer-player-uninstalled.pc pkgconfig/gstreamer-wayland.pc pkgconfig/gstreamer-wayland-uninstalled.pc pkgconfig/gstreamer-bad-base.pc pkgconfig/gstreamer-bad-base-uninstalled.pc pkgconfig/gstreamer-bad-video.pc pkgconfig/gstreamer-bad-video-uninstalled.pc pkgconfig/gstreamer-bad-audio.pc pkgconfig/gstreamer-bad-audio-uninstalled.pc tools/Makefile m4/Makefile"
 
 
 sed \
@@ -58496,6 +60035,10 @@
   as_fn_error $? "conditional \"USE_PLUGIN_STEREO\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${USE_PLUGIN_TIMECODE_TRUE}" && test -z "${USE_PLUGIN_TIMECODE_FALSE}"; then
+  as_fn_error $? "conditional \"USE_PLUGIN_TIMECODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${USE_PLUGIN_TTA_TRUE}" && test -z "${USE_PLUGIN_TTA_FALSE}"; then
   as_fn_error $? "conditional \"USE_PLUGIN_TTA\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -58540,6 +60083,10 @@
   as_fn_error $? "conditional \"HAVE_VIDEOTOOLBOX\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${HAVE_QTKIT_TRUE}" && test -z "${HAVE_QTKIT_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_QTKIT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${USE_PLUGIN_DCCP_TRUE}" && test -z "${USE_PLUGIN_DCCP_FALSE}"; then
   as_fn_error $? "conditional \"USE_PLUGIN_DCCP\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -58624,6 +60171,10 @@
   as_fn_error $? "conditional \"USE_XCB\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${USE_WAYLAND_TRUE}" && test -z "${USE_WAYLAND_FALSE}"; then
+  as_fn_error $? "conditional \"USE_WAYLAND\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${USE_DIRECTSOUND_TRUE}" && test -z "${USE_DIRECTSOUND_FALSE}"; then
   as_fn_error $? "conditional \"USE_DIRECTSOUND\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -58780,6 +60331,10 @@
   as_fn_error $? "conditional \"USE_FBDEV\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${USE_FDK_AAC_TRUE}" && test -z "${USE_FDK_AAC_FALSE}"; then
+  as_fn_error $? "conditional \"USE_FDK_AAC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${USE_FLITE_TRUE}" && test -z "${USE_FLITE_FALSE}"; then
   as_fn_error $? "conditional \"USE_FLITE\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -58804,6 +60359,10 @@
   as_fn_error $? "conditional \"USE_KATE\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${USE_KMS_TRUE}" && test -z "${USE_KMS_FALSE}"; then
+  as_fn_error $? "conditional \"USE_KMS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${USE_LADSPA_TRUE}" && test -z "${USE_LADSPA_FALSE}"; then
   as_fn_error $? "conditional \"USE_LADSPA\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -59016,6 +60575,10 @@
   as_fn_error $? "conditional \"USE_X265\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${USE_WEBRTCDSP_TRUE}" && test -z "${USE_WEBRTCDSP_FALSE}"; then
+  as_fn_error $? "conditional \"USE_WEBRTCDSP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${USE_ASSRENDER_TRUE}" && test -z "${USE_ASSRENDER_FALSE}"; then
   as_fn_error $? "conditional \"USE_ASSRENDER\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -59104,6 +60667,10 @@
   as_fn_error $? "conditional \"USE_FBDEV\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${USE_FDK_AAC_TRUE}" && test -z "${USE_FDK_AAC_FALSE}"; then
+  as_fn_error $? "conditional \"USE_FDK_AAC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${USE_FLITE_TRUE}" && test -z "${USE_FLITE_FALSE}"; then
   as_fn_error $? "conditional \"USE_FLITE\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -59136,6 +60703,10 @@
   as_fn_error $? "conditional \"USE_KATE\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${USE_KMS_TRUE}" && test -z "${USE_KMS_FALSE}"; then
+  as_fn_error $? "conditional \"USE_KMS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${USE_TIGER_TRUE}" && test -z "${USE_TIGER_FALSE}"; then
   as_fn_error $? "conditional \"USE_TIGER\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -59324,6 +60895,10 @@
   as_fn_error $? "conditional \"USE_WEBP\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${USE_WEBRTCDSP_TRUE}" && test -z "${USE_WEBRTCDSP_FALSE}"; then
+  as_fn_error $? "conditional \"USE_WEBRTCDSP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${USE_OPENH264_TRUE}" && test -z "${USE_OPENH264_FALSE}"; then
   as_fn_error $? "conditional \"USE_OPENH264\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -59336,6 +60911,10 @@
   as_fn_error $? "conditional \"USE_DTLS\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${USE_VULKAN_TRUE}" && test -z "${USE_VULKAN_FALSE}"; then
+  as_fn_error $? "conditional \"USE_VULKAN\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 
 : "${CONFIG_STATUS=./config.status}"
 ac_write_fail=0
@@ -59733,7 +61312,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by GStreamer Bad Plug-ins $as_me 1.8.3, which was
+This file was extended by GStreamer Bad Plug-ins $as_me 1.9.90, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -59799,7 +61378,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-GStreamer Bad Plug-ins config.status 1.8.3
+GStreamer Bad Plug-ins config.status 1.9.90
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -60415,6 +61994,7 @@
     "gst/subenc/Makefile") CONFIG_FILES="$CONFIG_FILES gst/subenc/Makefile" ;;
     "gst/stereo/Makefile") CONFIG_FILES="$CONFIG_FILES gst/stereo/Makefile" ;;
     "gst/tta/Makefile") CONFIG_FILES="$CONFIG_FILES gst/tta/Makefile" ;;
+    "gst/timecode/Makefile") CONFIG_FILES="$CONFIG_FILES gst/timecode/Makefile" ;;
     "gst/videofilters/Makefile") CONFIG_FILES="$CONFIG_FILES gst/videofilters/Makefile" ;;
     "gst/videomeasure/Makefile") CONFIG_FILES="$CONFIG_FILES gst/videomeasure/Makefile" ;;
     "gst/videoparsers/Makefile") CONFIG_FILES="$CONFIG_FILES gst/videoparsers/Makefile" ;;
@@ -60453,7 +62033,6 @@
     "sys/acmmp3dec/Makefile") CONFIG_FILES="$CONFIG_FILES sys/acmmp3dec/Makefile" ;;
     "sys/androidmedia/Makefile") CONFIG_FILES="$CONFIG_FILES sys/androidmedia/Makefile" ;;
     "sys/applemedia/Makefile") CONFIG_FILES="$CONFIG_FILES sys/applemedia/Makefile" ;;
-    "sys/applemedia-nonpublic/Makefile") CONFIG_FILES="$CONFIG_FILES sys/applemedia-nonpublic/Makefile" ;;
     "sys/avc/Makefile") CONFIG_FILES="$CONFIG_FILES sys/avc/Makefile" ;;
     "sys/bluez/Makefile") CONFIG_FILES="$CONFIG_FILES sys/bluez/Makefile" ;;
     "sys/d3dvideosink/Makefile") CONFIG_FILES="$CONFIG_FILES sys/d3dvideosink/Makefile" ;;
@@ -60463,6 +62042,7 @@
     "sys/dshowvideosink/Makefile") CONFIG_FILES="$CONFIG_FILES sys/dshowvideosink/Makefile" ;;
     "sys/dvb/Makefile") CONFIG_FILES="$CONFIG_FILES sys/dvb/Makefile" ;;
     "sys/fbdev/Makefile") CONFIG_FILES="$CONFIG_FILES sys/fbdev/Makefile" ;;
+    "sys/kms/Makefile") CONFIG_FILES="$CONFIG_FILES sys/kms/Makefile" ;;
     "sys/linsys/Makefile") CONFIG_FILES="$CONFIG_FILES sys/linsys/Makefile" ;;
     "sys/nvenc/Makefile") CONFIG_FILES="$CONFIG_FILES sys/nvenc/Makefile" ;;
     "sys/opensles/Makefile") CONFIG_FILES="$CONFIG_FILES sys/opensles/Makefile" ;;
@@ -60493,7 +62073,6 @@
     "tests/examples/gl/generic/doublecube/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/gl/generic/doublecube/Makefile" ;;
     "tests/examples/gl/generic/recordgraphic/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/gl/generic/recordgraphic/Makefile" ;;
     "tests/examples/gl/gtk/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/gl/gtk/Makefile" ;;
-    "tests/examples/gl/gtk/gtkvideooverlay/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/gl/gtk/gtkvideooverlay/Makefile" ;;
     "tests/examples/gl/gtk/3dvideo/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/gl/gtk/3dvideo/Makefile" ;;
     "tests/examples/gl/gtk/filternovideooverlay/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/gl/gtk/filternovideooverlay/Makefile" ;;
     "tests/examples/gl/gtk/filtervideooverlay/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/gl/gtk/filtervideooverlay/Makefile" ;;
@@ -60526,6 +62105,7 @@
     "ext/gtk/Makefile") CONFIG_FILES="$CONFIG_FILES ext/gtk/Makefile" ;;
     "ext/faac/Makefile") CONFIG_FILES="$CONFIG_FILES ext/faac/Makefile" ;;
     "ext/faad/Makefile") CONFIG_FILES="$CONFIG_FILES ext/faad/Makefile" ;;
+    "ext/fdkaac/Makefile") CONFIG_FILES="$CONFIG_FILES ext/fdkaac/Makefile" ;;
     "ext/flite/Makefile") CONFIG_FILES="$CONFIG_FILES ext/flite/Makefile" ;;
     "ext/fluidsynth/Makefile") CONFIG_FILES="$CONFIG_FILES ext/fluidsynth/Makefile" ;;
     "ext/gsm/Makefile") CONFIG_FILES="$CONFIG_FILES ext/gsm/Makefile" ;;
@@ -60571,11 +62151,13 @@
     "ext/timidity/Makefile") CONFIG_FILES="$CONFIG_FILES ext/timidity/Makefile" ;;
     "ext/vulkan/Makefile") CONFIG_FILES="$CONFIG_FILES ext/vulkan/Makefile" ;;
     "ext/vulkan/xcb/Makefile") CONFIG_FILES="$CONFIG_FILES ext/vulkan/xcb/Makefile" ;;
+    "ext/vulkan/wayland/Makefile") CONFIG_FILES="$CONFIG_FILES ext/vulkan/wayland/Makefile" ;;
     "ext/webp/Makefile") CONFIG_FILES="$CONFIG_FILES ext/webp/Makefile" ;;
     "ext/x265/Makefile") CONFIG_FILES="$CONFIG_FILES ext/x265/Makefile" ;;
     "ext/xvid/Makefile") CONFIG_FILES="$CONFIG_FILES ext/xvid/Makefile" ;;
     "ext/zbar/Makefile") CONFIG_FILES="$CONFIG_FILES ext/zbar/Makefile" ;;
     "ext/dtls/Makefile") CONFIG_FILES="$CONFIG_FILES ext/dtls/Makefile" ;;
+    "ext/webrtcdsp/Makefile") CONFIG_FILES="$CONFIG_FILES ext/webrtcdsp/Makefile" ;;
     "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
     "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
     "docs/plugins/Makefile") CONFIG_FILES="$CONFIG_FILES docs/plugins/Makefile" ;;
diff --git a/configure.ac b/configure.ac
index f0a1e17..8402afd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,7 +3,7 @@
 dnl initialize autoconf
 dnl when going to/from release please set the nano (fourth number) right !
 dnl releases only do Wall, git and prerelease does Werror too
-AC_INIT([GStreamer Bad Plug-ins],[1.8.3],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-bad])
+AC_INIT([GStreamer Bad Plug-ins],[1.9.90],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-bad])
 
 AG_GST_INIT
 
@@ -51,11 +51,11 @@
 dnl - interfaces added -> increment AGE
 dnl - interfaces removed -> AGE = 0
 dnl sets GST_LT_LDFLAGS
-AS_LIBTOOL(GST, 803, 0, 803)
+AS_LIBTOOL(GST, 990, 0, 990)
 
 dnl *** required versions of GStreamer stuff ***
-GST_REQ=1.8.0
-GSTPB_REQ=1.8.0
+GST_REQ=1.9.90
+GSTPB_REQ=1.9.90
 
 dnl *** autotools stuff ****
 
@@ -201,6 +201,10 @@
 AG_GST_CHECK_GST_CHECK($GST_API_VERSION, [$GST_REQ], no)
 AG_GST_CHECK_GST_CONTROLLER($GST_API_VERSION, [$GST_REQ], yes)
 AG_GST_CHECK_GST_NET($GST_API_VERSION, [$GST_REQ], yes)
+AG_GST_PKG_CHECK_MODULES(GST_VIDEO, gstreamer-video-[$GST_API_VERSION], [$GST_REQ], yes)
+AG_GST_PKG_CHECK_MODULES(GST_AUDIO, gstreamer-audio-[$GST_API_VERSION], [$GST_REQ], yes)
+AG_GST_PKG_CHECK_MODULES(GST_PBUTILS, gstreamer-pbutils-[$GST_API_VERSION], [$GST_REQ], yes)
+
 AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes")
 
 AG_GST_CHECK_GST_PLUGINS_BASE($GST_API_VERSION, [$GSTPB_REQ], yes)
@@ -310,7 +314,7 @@
 
 dnl graphene-1.0 is optional and used in gltransformation
 HAVE_GRAPHENE=NO
-PKG_CHECK_MODULES(GRAPHENE, graphene-1.0 >= 1.0.0, HAVE_GRAPHENE=yes, HAVE_GRAPHENE=no)
+PKG_CHECK_MODULES(GRAPHENE, graphene-1.0 >= 1.4.0, HAVE_GRAPHENE=yes, HAVE_GRAPHENE=no)
 if test "x$HAVE_GRAPHENE" = "xyes"; then
   AC_DEFINE(HAVE_GRAPHENE, [1] , [Use graphene])
 fi
@@ -396,6 +400,12 @@
 AC_SUBST(GST_PLUGIN_LIBTOOLFLAGS)
 AM_CONDITIONAL(GST_PLUGIN_BUILD_STATIC, test "x$enable_static_plugins" = "xyes")
 
+dnl If only building static libraries, define GST_STATIC_COMPILATION. This is
+dnl needed only on Windows, but it doesn't hurt to have it everywhere.
+if test x$enable_static = xyes -a x$enable_shared = xno; then
+  GST_STATIC_CFLAGS="-DGST_STATIC_COMPILATION"
+fi
+
 AC_ARG_WITH([player-tests],
   AS_HELP_STRING([--with-player-tests],[Enable GstPlayer tests that need network access (default: no)]))
 if test x$with_player_tests = xyes; then
@@ -450,10 +460,11 @@
  sdi tta \
  videomeasure \
  linsys \
- apexsink dc1394 \
- musepack nas sdl timidity \
+ apexsink \
+ nas sdl timidity \
  wininet \
- xvid lv2 sndio libvisual"
+ xvid sndio libvisual"
+
 AC_SUBST(GST_PLUGINS_NONPORTED)
 
 dnl these are all the gst plug-ins, compilable without additional libs
@@ -517,6 +528,7 @@
 AG_GST_CHECK_PLUGIN(speed)
 AG_GST_CHECK_PLUGIN(subenc)
 AG_GST_CHECK_PLUGIN(stereo)
+AG_GST_CHECK_PLUGIN(timecode)
 AG_GST_CHECK_PLUGIN(tta)
 AG_GST_CHECK_PLUGIN(videofilters)
 AG_GST_CHECK_PLUGIN(videomeasure)
@@ -531,6 +543,7 @@
 AC_CHECK_HEADER(AVFoundation/AVFoundation.h, HAVE_AVFOUNDATION="yes", HAVE_AVFOUNDATION="no", [-])
 AC_CHECK_HEADER(MobileCoreServices/MobileCoreServices.h, HAVE_IOS="yes", HAVE_IOS="no", [-])
 AC_CHECK_HEADER(VideoToolbox/VideoToolbox.h, HAVE_VIDEOTOOLBOX="yes", HAVE_VIDEOTOOLBOX="no", [-])
+AC_CHECK_HEADER(QTKit/QTKit.h, HAVE_QTKIT="yes", HAVE_QTKIT="no", [-])
 
 if test "x$HAVE_VIDEOTOOLBOX" = "xyes"; then
   old_LIBS=$LIBS
@@ -557,6 +570,10 @@
   AC_DEFINE(HAVE_VIDEOTOOLBOX, 1, [Define if building with VideoToolbox])
 fi
 
+AM_CONDITIONAL(HAVE_QTKIT, test "x$HAVE_QTKIT" = "xyes")
+if test "x$HAVE_QTKIT" = "xyes"; then
+  AC_DEFINE(HAVE_QTKIT, 1, [Define if building with QTKit])
+fi
 dnl disable gst plugins we might not be able to build on this
 dnl platform: (ugly but minimally invasive)
 dnl FIXME: maybe move to sys, or make work with winsock2
@@ -681,6 +698,7 @@
 
 HAVE_GL=no
 HAVE_GLES2=no
+HAVE_GLES3_H=no
 HAVE_WAYLAND_EGL=no
 
 HAVE_EGL_RPI=no
@@ -707,6 +725,7 @@
       if test "x$HAVE_GLES2" != "xyes"; then
         AG_GST_CHECK_LIBHEADER(GLES2, GLESv2, glTexImage2D,, GLES2/gl2.h)
       fi
+      AC_CHECK_HEADER([GLES3/gl3.h], [HAVE_GLES3_H=yes])
     fi
     if test "x$NEED_EGL" != "xno"; then
       AG_GST_PKG_CHECK_MODULES(EGL, egl)
@@ -780,6 +799,17 @@
     CFLAGS=$old_CFLAGS
 
     PKG_CHECK_MODULES(WAYLAND_EGL, wayland-client >= 1.0 wayland-cursor >= 1.0 wayland-egl >= 9.0, HAVE_WAYLAND_EGL=yes, HAVE_WAYLAND_EGL=no)
+
+    # OS X and iOS always have GL available
+    case $host in
+      *-darwin*)
+        if test "x$HAVE_IOS" = "xyes"; then
+          HAVE_GLES2=yes
+        else
+          HAVE_GL=yes
+        fi
+      ;;
+    esac
   ;;
 esac
 
@@ -857,6 +887,10 @@
 
 dnl check if we can include both GL and GLES2 at the same time
 if test "x$HAVE_GL" = "xyes" -a "x$HAVE_GLES2" = "xyes"; then
+  GLES3_H_DEFINE=0
+  if test "x$HAVE_GLES3_H" == "xyes"; then
+    GLES3_H_DEFINE=1
+  fi
   GL_INCLUDES="
 #ifdef __GNUC__
 #  pragma GCC diagnostic push
@@ -869,8 +903,13 @@
 #  include <OpenGLES/ES2/gl.h>
 #  include <OpenGLES/ES2/glext.h>
 # else
-#  include <GLES2/gl2.h>
-#  include <GLES2/gl2ext.h>
+#  if $GLES3_H_DEFINE
+#   include <GLES3/gl3.h>
+#   include <GLES3/gl3ext.h>
+#  else
+#   include <GLES2/gl2.h>
+#   include <GLES2/gl2ext.h>
+#  endif
 # endif
 # ifdef __APPLE__
 #  include <OpenGL/OpenGL.h>
@@ -906,6 +945,7 @@
     else
       AC_MSG_WARN([Disabling GL|ES 2.0 support])
       HAVE_GLES2=no
+      HAVE_GLES3_H=no
     fi
   ])
   CFLAGS="$save_CFLAGS"
@@ -1149,6 +1189,9 @@
 if test "x$USE_GLES2" = "xyes"; then
   GL_APIS="gles2 $GL_APIS"
   GST_GL_HAVE_GLES2=1
+  if test "x$HAVE_GLES3_H" = "xyes"; then
+    GST_GL_HAVE_GLES3=1
+  fi
 fi
 
 GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
@@ -1318,8 +1361,13 @@
 #  include <OpenGLES/ES2/gl.h>
 #  include <OpenGLES/ES2/glext.h>
 # else
-#  include <GLES2/gl2.h>
-#  include <GLES2/gl2ext.h>
+#  if $GST_GL_HAVE_GLES3
+#   include <GLES3/gl3.h>
+#   include <GLES3/gl3ext.h>
+#  else
+#   include <GLES2/gl2.h>
+#   include <GLES2/gl2ext.h>
+#  endif
 # endif
 "
 fi
@@ -1345,6 +1393,7 @@
 GST_GL_HAVE_GLSYNC=0
 GST_GL_HAVE_GLUINT64=0
 GST_GL_HAVE_GLINT64=0
+GST_GL_HAVE_EGLATTRIB=0
 
 old_CFLAGS=$CFLAGS
 CFLAGS="$GL_CFLAGS $CFLAGS"
@@ -1384,6 +1433,17 @@
   GST_GL_HAVE_GLINT64=1
 fi
 
+if test "x$USE_EGL" = "xyes"; then
+  EGL_INCLUDES="$GL_INCLUDES
+  #include <EGL/egl.h>
+  #include <EGL/eglext.h>
+  "
+  AC_CHECK_TYPES(EGLAttrib, [], [], [[$EGL_INCLUDES]])
+  if test "x$ac_cv_type_EGLAttrib" = "xyes"; then
+    GST_GL_HAVE_EGLATTRIB=1
+  fi
+fi
+
 CFLAGS=$old_CFLAGS
 
 GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
@@ -1394,6 +1454,7 @@
 #define GST_GL_HAVE_GLSYNC $GST_GL_HAVE_GLSYNC
 #define GST_GL_HAVE_GLUINT64 $GST_GL_HAVE_GLUINT64
 #define GST_GL_HAVE_GLINT64 $GST_GL_HAVE_GLINT64
+#define GST_GL_HAVE_EGLATTRIB $GST_GL_HAVE_EGLATTRIB
 "
 
 AC_CONFIG_COMMANDS([gst-libs/gst/gl/gstglconfig.h], [
@@ -1470,15 +1531,14 @@
 AM_CONDITIONAL(HAVE_JPEG, test "x$HAVE_JPEG" = "xyes")
 
 dnl Vulkan
-VULKAN_CONFIG_DEFINES=""
+PKG_CHECK_MODULES(XCB, xcb >= 1.10, GST_VULKAN_HAVE_WINDOW_XCB=1, GST_VULKAN_HAVE_WINDOW_XCB=0)
+AM_CONDITIONAL(USE_XCB, test "x$GST_VULKAN_HAVE_WINDOW_XCB" = "x1")
 
-PKG_CHECK_MODULES(XCB, xcb >= 1.10, HAVE_XCB=yes, HAVE_XCB=no)
-
-AM_CONDITIONAL(USE_XCB, test "x$HAVE_XCB" = "xyes")
-if test "x$HAVE_XCB" = "xyes"; then
-  VULKAN_CONFIG_DEFINES="$VULKAN_CONFIG_DEFINES
-  #define GST_VULKAN_HAVE_WINDOW_XCB 1"
-fi
+PKG_CHECK_MODULES(WAYLAND, wayland-client >= 1.4, GST_VULKAN_HAVE_WINDOW_WAYLAND=1, GST_VULKAN_HAVE_WINDOW_WAYLAND=0)
+AM_CONDITIONAL(USE_WAYLAND, test "x$GST_VULKAN_HAVE_WINDOW_WAYLAND" = "x1")
+VULKAN_CONFIG_DEFINES="
+#define GST_VULKAN_HAVE_WINDOW_XCB $GST_VULKAN_HAVE_WINDOW_XCB
+#define GST_VULKAN_HAVE_WINDOW_WAYLAND $GST_VULKAN_HAVE_WINDOW_WAYLAND"
 
 AC_CONFIG_COMMANDS([ext/vulkan/vkconfig.h], [
 	outfile=vkconfig.h-tmp
@@ -1850,8 +1910,6 @@
 dnl *** NVENC ***
 translit(dnm, m, l) AM_CONDITIONAL(USE_NVENC, true)
 AG_GST_CHECK_FEATURE(NVENC, [NVIDIA Encode API], nvenc, [
-  AG_GST_PKG_CHECK_MODULES(GST_VIDEO, gstreamer-video-1.0)
-  AG_GST_PKG_CHECK_MODULES(GST_PBUTILS, gstreamer-pbutils-1.0)
   AC_ARG_WITH([cuda-prefix],
           AS_HELP_STRING([--with-cuda-prefix],
           [Use the provided prefix for detecting the cuda installation]),
@@ -2161,13 +2219,17 @@
 AC_PATH_PROG([wayland_scanner], [wayland-scanner])
 AG_GST_CHECK_FEATURE(WAYLAND, [wayland sink], wayland , [
   PKG_CHECK_MODULES(WAYLAND, wayland-client >= 1.4.0, [
-    if test "x$wayland_scanner" != "x"; then
-      HAVE_WAYLAND="yes"
-    else
-      AC_MSG_RESULT([wayland-scanner is required to build the wayland plugin])
-      HAVE_WAYLAND="no"
-    fi
-    ],
+    PKG_CHECK_MODULES(WAYLAND_PROTOCOLS, wayland-protocols >= 1.4, [
+      if test "x$wayland_scanner" != "x"; then
+        HAVE_WAYLAND="yes"
+        AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, `$PKG_CONFIG --variable=pkgdatadir wayland-protocols`)
+      else
+        AC_MSG_RESULT([wayland-scanner is required to build the wayland plugin])
+        HAVE_WAYLAND="no"
+      fi
+      ],
+      [ HAVE_WAYLAND="no"
+    ])],
     [ HAVE_WAYLAND="no"
   ])
 ])
@@ -2258,6 +2320,14 @@
   fi
 ])
 
+dnl *** fdkaac ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_FDK_AAC, true)
+AG_GST_CHECK_FEATURE(FDK_AAC, [fdkaac plugin], fdkaac, [
+  PKG_CHECK_MODULES(FDK_AAC, fdk-aac, HAVE_FDK_AAC="yes", [
+    HAVE_FDK_AAC="no"
+  ])
+])
+
 dnl *** flite ***
 translit(dnm, m, l) AM_CONDITIONAL(USE_FLITE, true)
 AG_GST_CHECK_FEATURE(FLITE, [Flite plugin], flite, [
@@ -2311,6 +2381,13 @@
   AC_SUBST(TIGER_LIBS)
 ],,,[AM_CONDITIONAL(USE_TIGER, false)])
 
+dnl *** kms ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_KMS, true)
+AG_GST_CHECK_FEATURE(KMS, [drm/kms libraries], kms, [
+  AG_GST_PKG_CHECK_MODULES(GST_ALLOCATORS, gstreamer-allocators-1.0)
+  PKG_CHECK_MODULES([DRM], [libdrm >= 2.4.55 libkms], HAVE_KMS=yes, HAVE_KMS=no)
+])
+
 dnl *** ladspa ***
 translit(dnm, m, l) AM_CONDITIONAL(USE_LADSPA, true)
 AG_GST_CHECK_FEATURE(LADSPA, [ladspa], ladspa, [
@@ -2327,9 +2404,15 @@
 dnl *** LV2 ***
 translit(dnm, m, l) AM_CONDITIONAL(USE_LV2, true)
 AG_GST_CHECK_FEATURE(LV2, [lv2], lv2, [
-  PKG_CHECK_MODULES(SLV2, slv2 >= 0.6.6, HAVE_LV2="yes", HAVE_LV2="no")
-  AC_SUBST(SLV2_CFLAGS)
-  AC_SUBST(SLV2_LIBS)
+  PKG_CHECK_MODULES(LILV, lilv-0 >= 0.22, [
+    HAVE_LV2="yes",
+    HAVE_LILV_0_22="yes"
+    AC_DEFINE(HAVE_LILV_0_22, 1, [Define if we have liblilv >= 0.22])
+  ],[
+    PKG_CHECK_MODULES(LILV, lilv-0 >= 0.16, HAVE_LV2="yes", HAVE_LV2="no")
+  ])
+  AC_SUBST(LILV_CFLAGS)
+  AC_SUBST(LILV_LIBS)
 ])
 
 dnl *** libde265 ***
@@ -2657,21 +2740,17 @@
   dnl a new version and the no-backward-compatibility define. (There doesn't
   dnl seem to be a switch to suppress the warnings the cvcompat.h header
   dnl causes.)
-  PKG_CHECK_MODULES(OPENCV, opencv >= 2.3.0 opencv < 2.5.0 , [
+  PKG_CHECK_MODULES(OPENCV, opencv >= 2.3.0 opencv <= 3.1.0 , [
     AC_PROG_CXX
     AC_LANG([C++])
     OLD_CPPFLAGS=$CPPFLAGS
     CPPFLAGS=$OPENCV_CFLAGS
     something_not_found=no
-    AC_CHECK_HEADERS([opencv2/contrib/contrib.hpp \
-                      opencv2/core/core_c.h \
-                      opencv2/core/types_c.h \
+    AC_CHECK_HEADERS([opencv2/core/core_c.h \
                       opencv2/core/version.hpp \
                       opencv2/highgui/highgui_c.h \
                       opencv2/imgproc/imgproc.hpp \
                       opencv2/imgproc/imgproc_c.h \
-                      opencv2/legacy/compat.hpp \
-                      opencv2/legacy/legacy.hpp \
                       opencv2/objdetect/objdetect.hpp \
                       opencv2/video/background_segm.hpp], [], [something_not_found=yes])
     CPPFLAGS=$OLD_CPPFLAGS
@@ -2923,14 +3002,15 @@
 dnl *** Vulkan ***
 translit(dnm, m, l) AM_CONDITIONAL(USE_VULKAN, true)
 AG_GST_CHECK_FEATURE(VULKAN, [Vulkan elements], vulkan, [
-  HAVE_VULKAN=no
   AC_CHECK_HEADER(vulkan/vulkan.h, [
     AC_CHECK_LIB(vulkan, vkCreateDevice, [
       VULKAN_LIBS="-lvulkan"
       AC_SUBST(VULKAN_LIBS)
-      dnl TODO check platform support (x11, win32, wayland, android, etc)
-      if test "x$HAVE_XCB" = "xyes"; then
-        HAVE_VULKAN=yes
+      if test "x$GST_VULKAN_HAVE_WINDOW_XCB" = "x1"; then
+        HAVE_VULKAN="yes"
+      fi
+      if test "x$GST_VULKAN_HAVE_WINDOW_WAYLAND" = "x1"; then
+        HAVE_VULKAN="yes"
       fi
     ], [])
   ], [])
@@ -3334,6 +3414,32 @@
   AG_GST_PKG_CHECK_MODULES(X265, x265)
 ])
 
+dnl *** WebRTC Audio Processing ***
+dnl Note: We test for a specific version as there is no API stability
+translit(dnm, m, l) AM_CONDITIONAL(USE_WEBRTCDSP, true)
+AG_GST_CHECK_FEATURE(WEBRTCDSP, [WebRTC Audio Processing], webrtcdsp, [
+
+  AG_GST_PKG_CHECK_MODULES(WEBRTCDSP, webrtc-audio-processing >= 0.2 webrtc-audio-processing < 0.4)
+
+  # On Android, C++ headers comes with the STL implementation
+  AS_CASE(["${host}"],
+    [*android*],
+      [
+        PKG_CHECK_MODULES(GNUSTL, gnustl, [
+          WEBRTCDSP_CFLAGS="$WEBRTCDSP_CFLAGS $GNUSTL_CFLAGS"
+          WEBRTCDSP_LIBS="$WEBRTCDSP_LIBS $GNUSTL_LIBS"])
+      ])
+  AC_SUBST([WEBRTCDSP_CFLAGS])
+  AC_SUBST([WEBRTCDSP_LIBS])
+
+  AC_LANG_PUSH([C++])
+  old_CPPFLAGS=$CPPFLAGS
+  CPPFLAGS="-std=c++11 $CPPFLAGS $GNUSTL_CFLAGS"
+  AC_CHECK_HEADER([vector],[],[HAVE_WEBRTCDSP=no])
+  CPPFLAGS=$old_CPPFLAGS
+  AC_LANG_POP([C++])
+])
+
 else
 
 dnl not building plugins with external dependencies,
@@ -3361,6 +3467,7 @@
 AM_CONDITIONAL(USE_FAAC, false)
 AM_CONDITIONAL(USE_FAAD, false)
 AM_CONDITIONAL(USE_FBDEV, false)
+AM_CONDITIONAL(USE_FDK_AAC, false)
 AM_CONDITIONAL(USE_FLITE, false)
 AM_CONDITIONAL(USE_FLUIDSYNTH, false)
 AM_CONDITIONAL(USE_GL, false)
@@ -3369,6 +3476,7 @@
 AM_CONDITIONAL(USE_GTK3_GL, false)
 AM_CONDITIONAL(USE_HLS, false)
 AM_CONDITIONAL(USE_KATE, false)
+AM_CONDITIONAL(USE_KMS, false)
 AM_CONDITIONAL(USE_TIGER, false)
 AM_CONDITIONAL(USE_LADSPA, false)
 AM_CONDITIONAL(USE_LV2, false)
@@ -3416,9 +3524,11 @@
 AM_CONDITIONAL(USE_SNDIO, false)
 AM_CONDITIONAL(USE_UVCH264, false)
 AM_CONDITIONAL(USE_WEBP, false)
+AM_CONDITIONAL(USE_WEBRTCDSP, false)
 AM_CONDITIONAL(USE_OPENH264, false)
 AM_CONDITIONAL(USE_X265, false)
 AM_CONDITIONAL(USE_DTLS, false)
+AM_CONDITIONAL(USE_VULKAN, false)
 
 fi dnl of EXT plugins
 
@@ -3459,7 +3569,7 @@
 dnl prefer internal headers to already installed ones
 dnl also add builddir include for enumtypes and marshal
 dnl add GST_OPTION_CFLAGS, but overridable
-GST_CFLAGS="$GST_CFLAGS -DGST_USE_UNSTABLE_API"
+GST_CFLAGS="$GST_CFLAGS $GST_STATIC_CFLAGS -DGST_USE_UNSTABLE_API"
 GST_CXXFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CXXFLAGS)"
 GST_OBJCFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_OBJCFLAGS)"
 GST_CFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS)"
@@ -3567,6 +3677,7 @@
 gst/subenc/Makefile
 gst/stereo/Makefile
 gst/tta/Makefile
+gst/timecode/Makefile
 gst/videofilters/Makefile
 gst/videomeasure/Makefile
 gst/videoparsers/Makefile
@@ -3605,7 +3716,6 @@
 sys/acmmp3dec/Makefile
 sys/androidmedia/Makefile
 sys/applemedia/Makefile
-sys/applemedia-nonpublic/Makefile
 sys/avc/Makefile
 sys/bluez/Makefile
 sys/d3dvideosink/Makefile
@@ -3615,6 +3725,7 @@
 sys/dshowvideosink/Makefile
 sys/dvb/Makefile
 sys/fbdev/Makefile
+sys/kms/Makefile
 sys/linsys/Makefile
 sys/nvenc/Makefile
 sys/opensles/Makefile
@@ -3645,7 +3756,6 @@
 tests/examples/gl/generic/doublecube/Makefile
 tests/examples/gl/generic/recordgraphic/Makefile
 tests/examples/gl/gtk/Makefile
-tests/examples/gl/gtk/gtkvideooverlay/Makefile
 tests/examples/gl/gtk/3dvideo/Makefile
 tests/examples/gl/gtk/filternovideooverlay/Makefile
 tests/examples/gl/gtk/filtervideooverlay/Makefile
@@ -3678,6 +3788,7 @@
 ext/gtk/Makefile
 ext/faac/Makefile
 ext/faad/Makefile
+ext/fdkaac/Makefile
 ext/flite/Makefile
 ext/fluidsynth/Makefile
 ext/gsm/Makefile
@@ -3723,11 +3834,13 @@
 ext/timidity/Makefile
 ext/vulkan/Makefile
 ext/vulkan/xcb/Makefile
+ext/vulkan/wayland/Makefile
 ext/webp/Makefile
 ext/x265/Makefile
 ext/xvid/Makefile
 ext/zbar/Makefile
 ext/dtls/Makefile
+ext/webrtcdsp/Makefile
 po/Makefile.in
 docs/Makefile
 docs/plugins/Makefile
diff --git a/docs/Makefile.in b/docs/Makefile.in
index 052f2d0..7b1293d 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -275,6 +275,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -296,6 +298,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -345,6 +349,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -490,6 +496,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -616,8 +624,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -660,8 +666,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/docs/libs/Makefile.in b/docs/libs/Makefile.in
index dec78aa..edcd08b 100644
--- a/docs/libs/Makefile.in
+++ b/docs/libs/Makefile.in
@@ -237,6 +237,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -258,6 +260,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -307,6 +311,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -452,6 +458,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -578,8 +586,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -622,8 +628,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -1143,7 +1154,11 @@
 
 @ENABLE_GTK_DOC_TRUE@sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(expand_content_files)
 @ENABLE_GTK_DOC_TRUE@	@echo '  DOC   Building XML'
-@ENABLE_GTK_DOC_TRUE@	@gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR)  --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) --output-format=xml $(MKDB_OPTIONS)
+@ENABLE_GTK_DOC_TRUE@	@_source_dir='' ;						\
+@ENABLE_GTK_DOC_TRUE@	for i in $(DOC_SOURCE_DIR) ; do					\
+@ENABLE_GTK_DOC_TRUE@	    _source_dir="$${_source_dir} --source-dir=$$i" ;	        \
+@ENABLE_GTK_DOC_TRUE@	done ;							        \
+@ENABLE_GTK_DOC_TRUE@	gtkdoc-mkdb --module=$(DOC_MODULE) $${_source_dir}  --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) --output-format=xml $(MKDB_OPTIONS)
 @ENABLE_GTK_DOC_TRUE@	@cp ../version.entities xml
 @ENABLE_GTK_DOC_TRUE@	@touch sgml-build.stamp
 
diff --git a/docs/libs/gst-plugins-bad-libs-sections.txt b/docs/libs/gst-plugins-bad-libs-sections.txt
index 922da0f..a14bfc2 100644
--- a/docs/libs/gst-plugins-bad-libs-sections.txt
+++ b/docs/libs/gst-plugins-bad-libs-sections.txt
@@ -1184,6 +1184,7 @@
 gst_gl_video_allocation_params_init_full
 gst_gl_video_allocation_params_new
 gst_gl_video_allocation_params_new_wrapped_data
+gst_gl_video_allocation_params_new_wrapped_gl_handle
 gst_gl_video_allocation_params_new_wrapped_texture
 GstGLMemoryAllocator
 GstGLMemoryAllocatorClass
@@ -1660,7 +1661,7 @@
 GST_VIDEO_AGGREGATOR
 GST_VIDEO_AGGREGATOR_CLASS
 GST_VIDEO_AGGREGATOR_GET_CLASS
-gst_videoaggregator_get_type
+gst_video_aggregator_get_type
 GstVideoAggregatorPrivate
 </SECTION>
 
@@ -1676,7 +1677,7 @@
 GST_VIDEO_AGGREGATOR_PAD
 GST_VIDEO_AGGREGATOR_PAD_CLASS
 GST_VIDEO_AGGREGATOR_PAD_GET_CLASS
-gst_videoaggregator_pad_get_type
+gst_video_aggregator_pad_get_type
 </SECTION>
 
 <SECTION>
@@ -1704,8 +1705,8 @@
 
 gst_player_get_pipeline
 
-gst_player_set_position_update_interval
-gst_player_get_position_update_interval
+gst_player_set_config
+gst_player_get_config
 
 GstPlayerState
 gst_player_state_get_name
@@ -1745,6 +1746,14 @@
 gst_player_set_color_balance
 gst_player_get_color_balance
 
+gst_player_get_multiview_mode
+gst_player_set_multiview_mode
+gst_player_get_multiview_flags
+gst_player_set_multiview_flags
+
+gst_player_get_audio_video_offset
+gst_player_set_audio_video_offset
+
 gst_player_get_rate
 gst_player_set_rate
 
@@ -1754,6 +1763,13 @@
 GstPlayerVideoRenderer
 GstPlayerVideoRendererInterface
 
+<SUBSECTION config>
+gst_player_config_set_position_update_interval
+gst_player_config_get_position_update_interval
+
+gst_player_config_set_user_agent
+gst_player_config_get_user_agent
+
 <SUBSECTION Standard>
 GST_IS_PLAYER
 GST_IS_PLAYER_CLASS
@@ -1858,6 +1874,7 @@
 gst_player_media_info_get_title
 gst_player_media_info_get_container_format
 gst_player_media_info_is_seekable
+gst_player_media_info_is_live
 gst_player_media_info_get_image_sample
 gst_player_media_info_get_tags
 gst_player_media_info_get_stream_list
diff --git a/docs/libs/html/GstGLFilter.html b/docs/libs/html/GstGLFilter.html
index 5915661..6c86e93 100644
--- a/docs/libs/html/GstGLFilter.html
+++ b/docs/libs/html/GstGLFilter.html
@@ -42,15 +42,7 @@
 <tbody>
 <tr>
 <td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="GstGLFilter.html#gst-gl-filter-draw-texture" title="gst_gl_filter_draw_texture ()">gst_gl_filter_draw_texture</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 </td>
 <td class="function_name">
 <a class="link" href="GstGLFilter.html#gst-gl-filter-render-to-target" title="gst_gl_filter_render_to_target ()">gst_gl_filter_render_to_target</a> <span class="c_punctuation">()</span>
@@ -111,68 +103,17 @@
 <div class="refsect1">
 <a name="GstGLFilter.functions_details"></a><h2>Functions</h2>
 <div class="refsect2">
-<a name="gst-gl-filter-draw-texture"></a><h3>gst_gl_filter_draw_texture ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_gl_filter_draw_texture (<em class="parameter"><code><a class="link" href="GstGLFilter.html" title="GstGLFilter"><span class="type">GstGLFilter</span></a> *filter</code></em>,
-                            <em class="parameter"><code><span class="type">GLuint</span> texture</code></em>,
-                            <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> width</code></em>,
-                            <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> height</code></em>);</pre>
-<p>Draws <em class="parameter"><code>texture</code></em>
- into the OpenGL scene at the specified <em class="parameter"><code>width</code></em>
- and <em class="parameter"><code>height</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-gl-filter-draw-texture.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>filter</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLFilter.html" title="GstGLFilter"><span class="type">GstGLFilter</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>texture</p></td>
-<td class="parameter_description"><p>the texture to draw</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>width</p></td>
-<td class="parameter_description"><p>width of <em class="parameter"><code>texture</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>height</p></td>
-<td class="parameter_description"><p>height of texture</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
 <a name="gst-gl-filter-render-to-target"></a><h3>gst_gl_filter_render_to_target ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 gst_gl_filter_render_to_target (<em class="parameter"><code><a class="link" href="GstGLFilter.html" title="GstGLFilter"><span class="type">GstGLFilter</span></a> *filter</code></em>,
-                                <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> resize</code></em>,
-                                <em class="parameter"><code><span class="type">GLuint</span> input</code></em>,
-                                <em class="parameter"><code><span class="type">GLuint</span> target</code></em>,
-                                <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#GLCB:CAPS" title="GLCB ()"><span class="type">GLCB</span></a> func</code></em>,
+                                <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a> *input</code></em>,
+                                <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a> *output</code></em>,
+                                <em class="parameter"><code><span class="type">GstGLFilterRenderFunc</span> func</code></em>,
                                 <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> data</code></em>);</pre>
 <p>Transforms <em class="parameter"><code>input</code></em>
  into <em class="parameter"><code>output</code></em>
  using <em class="parameter"><code>func</code></em>
- on through FBO.  <em class="parameter"><code>resize</code></em>
- should
-only ever be <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> whenever <em class="parameter"><code>input</code></em>
- is the input texture of <em class="parameter"><code>filter</code></em>
-.</p>
+ on through FBO.</p>
 <div class="refsect3">
 <a name="gst-gl-filter-render-to-target.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -188,18 +129,12 @@
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
-<td class="parameter_name"><p>resize</p></td>
-<td class="parameter_description"><p>whether to automatically resize the texture between the input size
-and the output size</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
 <td class="parameter_name"><p>input</p></td>
 <td class="parameter_description"><p>the input texture</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
-<td class="parameter_name"><p>target</p></td>
+<td class="parameter_name"><p>output</p></td>
 <td class="parameter_description"><p>the output texture</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
@@ -220,6 +155,11 @@
 </tbody>
 </table></div>
 </div>
+<div class="refsect3">
+<a name="gst-gl-filter-render-to-target.returns"></a><h4>Returns</h4>
+<p> the return value of <em class="parameter"><code>func</code></em>
+</p>
+</div>
 </div>
 <hr>
 <div class="refsect2">
@@ -227,18 +167,13 @@
 <pre class="programlisting"><span class="returnvalue">void</span>
 gst_gl_filter_render_to_target_with_shader
                                (<em class="parameter"><code><a class="link" href="GstGLFilter.html" title="GstGLFilter"><span class="type">GstGLFilter</span></a> *filter</code></em>,
-                                <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> resize</code></em>,
-                                <em class="parameter"><code><span class="type">GLuint</span> input</code></em>,
-                                <em class="parameter"><code><span class="type">GLuint</span> target</code></em>,
+                                <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a> *input</code></em>,
+                                <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a> *output</code></em>,
                                 <em class="parameter"><code><a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a> *shader</code></em>);</pre>
 <p>Transforms <em class="parameter"><code>input</code></em>
  into <em class="parameter"><code>output</code></em>
  using <em class="parameter"><code>shader</code></em>
- on FBO.  <em class="parameter"><code>resize</code></em>
- should
-only ever be <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> whenever <em class="parameter"><code>input</code></em>
- is the input texture of <em class="parameter"><code>filter</code></em>
-.</p>
+ with a FBO.</p>
 <p>See also: <a class="link" href="GstGLFilter.html#gst-gl-filter-render-to-target" title="gst_gl_filter_render_to_target ()"><code class="function">gst_gl_filter_render_to_target()</code></a></p>
 <div class="refsect3">
 <a name="gst-gl-filter-render-to-target-with-shader.parameters"></a><h4>Parameters</h4>
@@ -255,18 +190,12 @@
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
-<td class="parameter_name"><p>resize</p></td>
-<td class="parameter_description"><p>whether to automatically resize the texture between the input size
-and the output size</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
 <td class="parameter_name"><p>input</p></td>
 <td class="parameter_description"><p>the input texture</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
-<td class="parameter_name"><p>target</p></td>
+<td class="parameter_name"><p>output</p></td>
 <td class="parameter_description"><p>the output texture</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
@@ -349,7 +278,7 @@
 
   gboolean (*set_caps)          (GstGLFilter* filter, GstCaps* incaps, GstCaps* outcaps);
   gboolean (*filter)            (GstGLFilter *filter, GstBuffer *inbuf, GstBuffer *outbuf);
-  gboolean (*filter_texture)    (GstGLFilter *filter, guint in_tex, guint out_tex);
+  gboolean (*filter_texture)    (GstGLFilter *filter, GstGLMemory *in_tex, GstGLMemory *out_tex);
   gboolean (*init_fbo)          (GstGLFilter *filter);
 
   GstCaps *(*transform_internal_caps) (GstGLFilter *filter,
@@ -358,6 +287,8 @@
   /* useful to init and cleanup custom gl resources */
   void (*display_init_cb)       (GstGLFilter *filter);
   void (*display_reset_cb)      (GstGLFilter *filter);
+
+  gpointer                      _padding[GST_PADDING];
 } GstGLFilterClass;
 </pre>
 <div class="refsect3">
@@ -414,6 +345,11 @@
 <td class="struct_member_description"><p>execute arbitrary gl code at stop</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
+<tr>
+<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> <em class="structfield"><code><a name="GstGLFilterClass.-padding"></a>_padding</code></em>[GST_PADDING];</p></td>
+<td> </td>
+<td> </td>
+</tr>
 </tbody>
 </table></div>
 </div>
diff --git a/docs/libs/html/GstGLFramebuffer.html b/docs/libs/html/GstGLFramebuffer.html
index 3cdd4be..34aa7e4 100644
--- a/docs/libs/html/GstGLFramebuffer.html
+++ b/docs/libs/html/GstGLFramebuffer.html
@@ -39,40 +39,14 @@
 <col width="150px" class="functions_return">
 <col class="functions_name">
 </colgroup>
-<tbody>
-<tr>
+<tbody><tr>
 <td class="function_type">
 <a class="link" href="GstGLFramebuffer.html" title="GstGLFramebuffer"><span class="returnvalue">GstGLFramebuffer</span></a> *
 </td>
 <td class="function_name">
 <a class="link" href="GstGLFramebuffer.html#gst-gl-framebuffer-new" title="gst_gl_framebuffer_new ()">gst_gl_framebuffer_new</a> <span class="c_punctuation">()</span>
 </td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="GstGLFramebuffer.html#gst-gl-framebuffer-generate" title="gst_gl_framebuffer_generate ()">gst_gl_framebuffer_generate</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="GstGLFramebuffer.html#gst-gl-framebuffer-delete" title="gst_gl_framebuffer_delete ()">gst_gl_framebuffer_delete</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="GstGLFramebuffer.html#gst-gl-framebuffer-use-v2" title="gst_gl_framebuffer_use_v2 ()">gst_gl_framebuffer_use_v2</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-</tbody>
+</tr></tbody>
 </table></div>
 </div>
 <div class="refsect1">
@@ -84,8 +58,8 @@
 </colgroup>
 <tbody>
 <tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="GstGLFramebuffer.html#GstGLFramebuffer-struct" title="struct GstGLFramebuffer">GstGLFramebuffer</a></td>
+<td class="datatype_keyword"> </td>
+<td class="function_name"><a class="link" href="GstGLFramebuffer.html#GstGLFramebuffer-struct" title="GstGLFramebuffer">GstGLFramebuffer</a></td>
 </tr>
 <tr>
 <td class="datatype_keyword">struct</td>
@@ -97,7 +71,9 @@
 <div class="refsect1">
 <a name="GstGLFramebuffer.object-hierarchy"></a><h2>Object Hierarchy</h2>
 <pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
-    <span class="lineart">╰──</span> GstGLFramebuffer
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> GstGLFramebuffer
 </pre>
 </div>
 <div class="refsect1">
@@ -110,49 +86,20 @@
 <pre class="programlisting"><a class="link" href="GstGLFramebuffer.html" title="GstGLFramebuffer"><span class="returnvalue">GstGLFramebuffer</span></a> *
 gst_gl_framebuffer_new (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>);</pre>
 </div>
-<hr>
-<div class="refsect2">
-<a name="gst-gl-framebuffer-generate"></a><h3>gst_gl_framebuffer_generate ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_gl_framebuffer_generate (<em class="parameter"><code><a class="link" href="GstGLFramebuffer.html" title="GstGLFramebuffer"><span class="type">GstGLFramebuffer</span></a> *frame</code></em>,
-                             <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> width</code></em>,
-                             <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> height</code></em>,
-                             <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> *fbo</code></em>,
-                             <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> *depthbuffer</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-gl-framebuffer-delete"></a><h3>gst_gl_framebuffer_delete ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_gl_framebuffer_delete (<em class="parameter"><code><a class="link" href="GstGLFramebuffer.html" title="GstGLFramebuffer"><span class="type">GstGLFramebuffer</span></a> *frame</code></em>,
-                           <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> fbo</code></em>,
-                           <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> depth</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-gl-framebuffer-use-v2"></a><h3>gst_gl_framebuffer_use_v2 ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_gl_framebuffer_use_v2 (<em class="parameter"><code><a class="link" href="GstGLFramebuffer.html" title="GstGLFramebuffer"><span class="type">GstGLFramebuffer</span></a> *frame</code></em>,
-                           <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> texture_fbo_width</code></em>,
-                           <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> texture_fbo_height</code></em>,
-                           <em class="parameter"><code><span class="type">GLuint</span> fbo</code></em>,
-                           <em class="parameter"><code><span class="type">GLuint</span> depth_buffer</code></em>,
-                           <em class="parameter"><code><span class="type">GLuint</span> texture_fbo</code></em>,
-                           <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#GLCB-V2:CAPS" title="GLCB_V2 ()"><span class="type">GLCB_V2</span></a> cb</code></em>,
-                           <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> stuff</code></em>);</pre>
-</div>
 </div>
 <div class="refsect1">
 <a name="GstGLFramebuffer.other_details"></a><h2>Types and Values</h2>
 <div class="refsect2">
-<a name="GstGLFramebuffer-struct"></a><h3>struct GstGLFramebuffer</h3>
-<pre class="programlisting">struct GstGLFramebuffer;</pre>
+<a name="GstGLFramebuffer-struct"></a><h3>GstGLFramebuffer</h3>
+<pre class="programlisting">typedef struct _GstGLFramebuffer GstGLFramebuffer;</pre>
 </div>
 <hr>
 <div class="refsect2">
 <a name="GstGLFramebufferClass"></a><h3>struct GstGLFramebufferClass</h3>
 <pre class="programlisting">struct GstGLFramebufferClass {
-  GObjectClass object_class;
+  GstObjectClass object_class;
+
+  gpointer          _padding[GST_PADDING];
 };
 </pre>
 </div>
diff --git a/docs/libs/html/GstGLUpload.html b/docs/libs/html/GstGLUpload.html
index 2c66ebd..5f73454 100644
--- a/docs/libs/html/GstGLUpload.html
+++ b/docs/libs/html/GstGLUpload.html
@@ -275,7 +275,8 @@
 <div class="refsect2">
 <a name="gst-gl-upload-transform-caps"></a><h3>gst_gl_upload_transform_caps ()</h3>
 <pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="returnvalue">GstCaps</span></a> *
-gst_gl_upload_transform_caps (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
+gst_gl_upload_transform_caps (<em class="parameter"><code><a class="link" href="GstGLUpload.html" title="GstGLUpload"><span class="type">GstGLUpload</span></a> *upload</code></em>,
+                              <em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
                               <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstPad.html#GstPadDirection"><span class="type">GstPadDirection</span></a> direction</code></em>,
                               <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *caps</code></em>,
                               <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *filter</code></em>);</pre>
diff --git a/docs/libs/html/api-index-full.html b/docs/libs/html/api-index-full.html
index 94ff3e1..621b26f 100644
--- a/docs/libs/html/api-index-full.html
+++ b/docs/libs/html/api-index-full.html
@@ -216,18 +216,10 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#GST-CAPS-FEATURE-MEMORY-EGL-IMAGE:CAPS" title="GST_CAPS_FEATURE_MEMORY_EGL_IMAGE">GST_CAPS_FEATURE_MEMORY_EGL_IMAGE</a>, macro in <a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html" title="GstEGLImageMemory">GstEGLImageMemory</a>
-</dt>
-<dd></dd>
-<dt>
 <a class="link" href="gst-plugins-bad-libs-GstGLBuffer.html#GST-CAPS-FEATURE-MEMORY-GL-BUFFER:CAPS" title="GST_CAPS_FEATURE_MEMORY_GL_BUFFER">GST_CAPS_FEATURE_MEMORY_GL_BUFFER</a>, macro in <a class="link" href="gst-plugins-bad-libs-GstGLBuffer.html" title="GstGLBuffer">GstGLBuffer</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#CDCB:CAPS" title="CDCB ()">CDCB</a>, user_function in <a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html" title="OpenGL Miscellaneous Utilities">OpenGL Miscellaneous Utilities</a>
-</dt>
-<dd></dd>
-<dt>
 <a class="link" href="GstGLDisplay.html#gst-context-get-gl-display" title="gst_context_get_gl_display ()">gst_context_get_gl_display</a>, function in <a class="link" href="GstGLDisplay.html" title="GstGLDisplay">GstGLDisplay</a>
 </dt>
 <dd></dd>
@@ -266,34 +258,6 @@
 <dd></dd>
 <a name="idxE"></a><h3 class="title">E</h3>
 <dt>
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-get-display" title="gst_egl_image_memory_get_display ()">gst_egl_image_memory_get_display</a>, function in <a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html" title="GstEGLImageMemory">GstEGLImageMemory</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-get-image" title="gst_egl_image_memory_get_image ()">gst_egl_image_memory_get_image</a>, function in <a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html" title="GstEGLImageMemory">GstEGLImageMemory</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-get-orientation" title="gst_egl_image_memory_get_orientation ()">gst_egl_image_memory_get_orientation</a>, function in <a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html" title="GstEGLImageMemory">GstEGLImageMemory</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-init" title="gst_egl_image_memory_init ()">gst_egl_image_memory_init</a>, function in <a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html" title="GstEGLImageMemory">GstEGLImageMemory</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-setup-buffer" title="gst_egl_image_memory_setup_buffer ()">gst_egl_image_memory_setup_buffer</a>, function in <a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html" title="GstEGLImageMemory">GstEGLImageMemory</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-set-orientation" title="gst_egl_image_memory_set_orientation ()">gst_egl_image_memory_set_orientation</a>, function in <a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html" title="GstEGLImageMemory">GstEGLImageMemory</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#GST-EGL-IMAGE-MEMORY-TYPE:CAPS" title="GST_EGL_IMAGE_MEMORY_TYPE">GST_EGL_IMAGE_MEMORY_TYPE</a>, macro in <a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html" title="GstEGLImageMemory">GstEGLImageMemory</a>
-</dt>
-<dd></dd>
-<dt>
 <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-event-parse-mpegts-section" title="gst_event_parse_mpegts_section ()">gst_event_parse_mpegts_section</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
 </dt>
 <dd></dd>
@@ -403,14 +367,6 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#GLCB:CAPS" title="GLCB ()">GLCB</a>, user_function in <a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html" title="OpenGL Miscellaneous Utilities">OpenGL Miscellaneous Utilities</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#GLCB-V2:CAPS" title="GLCB_V2 ()">GLCB_V2</a>, user_function in <a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html" title="OpenGL Miscellaneous Utilities">OpenGL Miscellaneous Utilities</a>
-</dt>
-<dd></dd>
-<dt>
 <a class="link" href="GstGLColorConvert.html#GstGLColorConvert-struct" title="GstGLColorConvert">GstGLColorConvert</a>, struct in <a class="link" href="GstGLColorConvert.html" title="GstGLColorConvert">GstGLColorConvert</a>
 </dt>
 <dd></dd>
@@ -459,10 +415,6 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#GstGLDisplayProjection" title="enum GstGLDisplayProjection">GstGLDisplayProjection</a>, enum in <a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html" title="OpenGL Miscellaneous Utilities">OpenGL Miscellaneous Utilities</a>
-</dt>
-<dd></dd>
-<dt>
 <a class="link" href="GstGLDisplay.html#GstGLDisplayType" title="enum GstGLDisplayType">GstGLDisplayType</a>, enum in <a class="link" href="GstGLDisplay.html" title="GstGLDisplay">GstGLDisplay</a>
 </dt>
 <dd></dd>
@@ -475,7 +427,7 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="GstGLFramebuffer.html#GstGLFramebuffer-struct" title="struct GstGLFramebuffer">GstGLFramebuffer</a>, struct in <a class="link" href="GstGLFramebuffer.html" title="GstGLFramebuffer">GstGLFramebuffer</a>
+<a class="link" href="GstGLFramebuffer.html#GstGLFramebuffer-struct" title="GstGLFramebuffer">GstGLFramebuffer</a>, struct in <a class="link" href="GstGLFramebuffer.html" title="GstGLFramebuffer">GstGLFramebuffer</a>
 </dt>
 <dd></dd>
 <dt>
@@ -983,18 +935,10 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-del-fbo" title="gst_gl_context_del_fbo ()">gst_gl_context_del_fbo</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html" title="OpenGL Miscellaneous Utilities">OpenGL Miscellaneous Utilities</a>
-</dt>
-<dd></dd>
-<dt>
 <a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-del-shader" title="gst_gl_context_del_shader ()">gst_gl_context_del_shader</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html" title="OpenGL Miscellaneous Utilities">OpenGL Miscellaneous Utilities</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-del-texture" title="gst_gl_context_del_texture ()">gst_gl_context_del_texture</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html" title="OpenGL Miscellaneous Utilities">OpenGL Miscellaneous Utilities</a>
-</dt>
-<dd></dd>
-<dt>
 <a class="link" href="GstGLContext.html#gst-gl-context-destroy" title="gst_gl_context_destroy ()">gst_gl_context_destroy</a>, function in <a class="link" href="GstGLContext.html" title="GstGLContext">GstGLContext</a>
 </dt>
 <dd></dd>
@@ -1031,18 +975,10 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-gen-fbo" title="gst_gl_context_gen_fbo ()">gst_gl_context_gen_fbo</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html" title="OpenGL Miscellaneous Utilities">OpenGL Miscellaneous Utilities</a>
-</dt>
-<dd></dd>
-<dt>
 <a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-gen-shader" title="gst_gl_context_gen_shader ()">gst_gl_context_gen_shader</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html" title="OpenGL Miscellaneous Utilities">OpenGL Miscellaneous Utilities</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-gen-texture" title="gst_gl_context_gen_texture ()">gst_gl_context_gen_texture</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html" title="OpenGL Miscellaneous Utilities">OpenGL Miscellaneous Utilities</a>
-</dt>
-<dd></dd>
-<dt>
 <a class="link" href="GstGLContext.html#gst-gl-context-get-current" title="gst_gl_context_get_current ()">gst_gl_context_get_current</a>, function in <a class="link" href="GstGLContext.html" title="GstGLContext">GstGLContext</a>
 </dt>
 <dd></dd>
@@ -1059,10 +995,6 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-get-error" title="gst_gl_context_get_error ()">gst_gl_context_get_error</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html" title="OpenGL Miscellaneous Utilities">OpenGL Miscellaneous Utilities</a>
-</dt>
-<dd></dd>
-<dt>
 <a class="link" href="GstGLContext.html#gst-gl-context-get-gl-api" title="gst_gl_context_get_gl_api ()">gst_gl_context_get_gl_api</a>, function in <a class="link" href="GstGLContext.html" title="GstGLContext">GstGLContext</a>
 </dt>
 <dd></dd>
@@ -1119,10 +1051,6 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-set-error" title="gst_gl_context_set_error ()">gst_gl_context_set_error</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html" title="OpenGL Miscellaneous Utilities">OpenGL Miscellaneous Utilities</a>
-</dt>
-<dd></dd>
-<dt>
 <a class="link" href="GstGLContext.html#gst-gl-context-set-shared-with" title="gst_gl_context_set_shared_with ()">gst_gl_context_set_shared_with</a>, function in <a class="link" href="GstGLContext.html" title="GstGLContext">GstGLContext</a>
 </dt>
 <dd></dd>
@@ -1139,10 +1067,6 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-use-fbo-v2" title="gst_gl_context_use_fbo_v2 ()">gst_gl_context_use_fbo_v2</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html" title="OpenGL Miscellaneous Utilities">OpenGL Miscellaneous Utilities</a>
-</dt>
-<dd></dd>
-<dt>
 <a class="link" href="gst-plugins-bad-libs-GstGLContextWGL.html#gst-gl-context-wgl-get-current-context" title="gst_gl_context_wgl_get_current_context ()">gst_gl_context_wgl_get_current_context</a>, function in <a class="link" href="gst-plugins-bad-libs-GstGLContextWGL.html" title="GstGLContextWGL">GstGLContextWGL</a>
 </dt>
 <dd></dd>
@@ -1195,10 +1119,6 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="GstGLFilter.html#gst-gl-filter-draw-texture" title="gst_gl_filter_draw_texture ()">gst_gl_filter_draw_texture</a>, function in <a class="link" href="GstGLFilter.html" title="GstGLFilter">GstGLFilter</a>
-</dt>
-<dd></dd>
-<dt>
 <a class="link" href="GstGLFilter.html#gst-gl-filter-filter-texture" title="gst_gl_filter_filter_texture ()">gst_gl_filter_filter_texture</a>, function in <a class="link" href="GstGLFilter.html" title="GstGLFilter">GstGLFilter</a>
 </dt>
 <dd></dd>
@@ -1219,26 +1139,10 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="GstGLFramebuffer.html#gst-gl-framebuffer-delete" title="gst_gl_framebuffer_delete ()">gst_gl_framebuffer_delete</a>, function in <a class="link" href="GstGLFramebuffer.html" title="GstGLFramebuffer">GstGLFramebuffer</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="GstGLFramebuffer.html#gst-gl-framebuffer-generate" title="gst_gl_framebuffer_generate ()">gst_gl_framebuffer_generate</a>, function in <a class="link" href="GstGLFramebuffer.html" title="GstGLFramebuffer">GstGLFramebuffer</a>
-</dt>
-<dd></dd>
-<dt>
 <a class="link" href="GstGLFramebuffer.html#gst-gl-framebuffer-new" title="gst_gl_framebuffer_new ()">gst_gl_framebuffer_new</a>, function in <a class="link" href="GstGLFramebuffer.html" title="GstGLFramebuffer">GstGLFramebuffer</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="GstGLFramebuffer.html#gst-gl-framebuffer-use-v2" title="gst_gl_framebuffer_use_v2 ()">gst_gl_framebuffer_use_v2</a>, function in <a class="link" href="GstGLFramebuffer.html" title="GstGLFramebuffer">GstGLFramebuffer</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-generate-texture-full" title="gst_gl_generate_texture_full ()">gst_gl_generate_texture_full</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html" title="OpenGL Miscellaneous Utilities">OpenGL Miscellaneous Utilities</a>
-</dt>
-<dd></dd>
-<dt>
 <a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-get-plane-data-size" title="gst_gl_get_plane_data_size ()">gst_gl_get_plane_data_size</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html" title="OpenGL Miscellaneous Utilities">OpenGL Miscellaneous Utilities</a>
 </dt>
 <dd></dd>
@@ -1647,6 +1551,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-new-wrapped-gl-handle" title="gst_gl_video_allocation_params_new_wrapped_gl_handle ()">gst_gl_video_allocation_params_new_wrapped_gl_handle</a>, function in <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html" title="GstGLMemory">GstGLMemory</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-new-wrapped-texture" title="gst_gl_video_allocation_params_new_wrapped_texture ()">gst_gl_video_allocation_params_new_wrapped_texture</a>, function in <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html" title="GstGLMemory">GstGLMemory</a>
 </dt>
 <dd></dd>
@@ -2049,10 +1957,6 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-is-egl-image-memory" title="gst_is_egl_image_memory ()">gst_is_egl_image_memory</a>, function in <a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html" title="GstEGLImageMemory">GstEGLImageMemory</a>
-</dt>
-<dd></dd>
-<dt>
 <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#gst-is-gl-base-memory" title="gst_is_gl_base_memory ()">gst_is_gl_base_memory</a>, function in <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html" title="GstGLBaseMemory">GstGLBaseMemory</a>
 </dt>
 <dd></dd>
@@ -3340,6 +3244,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer-uri-loaded" title="The “uri-loaded” signal">GstPlayer::uri-loaded</a>, object signal in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer-video-dimensions-changed" title="The “video-dimensions-changed” signal">GstPlayer::video-dimensions-changed</a>, object signal in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
 </dt>
 <dd></dd>
@@ -3352,6 +3260,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer--audio-video-offset" title="The “audio-video-offset” property">GstPlayer:audio-video-offset</a>, object property in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer--current-audio-track" title="The “current-audio-track” property">GstPlayer:current-audio-track</a>, object property in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
 </dt>
 <dd></dd>
@@ -3384,10 +3296,6 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer--position-update-interval" title="The “position-update-interval” property">GstPlayer:position-update-interval</a>, object property in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
-</dt>
-<dd></dd>
-<dt>
 <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer--rate" title="The “rate” property">GstPlayer:rate</a>, object property in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
 </dt>
 <dd></dd>
@@ -3404,6 +3312,14 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer--video-multiview-flags" title="The “video-multiview-flags” property">GstPlayer:video-multiview-flags</a>, object property in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer--video-multiview-mode" title="The “video-multiview-mode” property">GstPlayer:video-multiview-mode</a>, object property in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer--video-renderer" title="The “video-renderer” property">GstPlayer:video-renderer</a>, object property in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
 </dt>
 <dd></dd>
@@ -3488,6 +3404,22 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-config-get-position-update-interval" title="gst_player_config_get_position_update_interval ()">gst_player_config_get_position_update_interval</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-config-get-user-agent" title="gst_player_config_get_user_agent ()">gst_player_config_get_user_agent</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-config-set-position-update-interval" title="gst_player_config_set_position_update_interval ()">gst_player_config_set_position_update_interval</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-config-set-user-agent" title="gst_player_config_set_user_agent ()">gst_player_config_set_user_agent</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GST-PLAYER-ERROR:CAPS" title="GST_PLAYER_ERROR">GST_PLAYER_ERROR</a>, macro in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
 </dt>
 <dd></dd>
@@ -3500,10 +3432,18 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-get-audio-video-offset" title="gst_player_get_audio_video_offset ()">gst_player_get_audio_video_offset</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-get-color-balance" title="gst_player_get_color_balance ()">gst_player_get_color_balance</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-get-config" title="gst_player_get_config ()">gst_player_get_config</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-get-current-audio-track" title="gst_player_get_current_audio_track ()">gst_player_get_current_audio_track</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
 </dt>
 <dd></dd>
@@ -3528,6 +3468,14 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-get-multiview-flags" title="gst_player_get_multiview_flags ()">gst_player_get_multiview_flags</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-get-multiview-mode" title="gst_player_get_multiview_mode ()">gst_player_get_multiview_mode</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-get-mute" title="gst_player_get_mute ()">gst_player_get_mute</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
 </dt>
 <dd></dd>
@@ -3540,10 +3488,6 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-get-position-update-interval" title="gst_player_get_position_update_interval ()">gst_player_get_position_update_interval</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
-</dt>
-<dd></dd>
-<dt>
 <a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-get-rate" title="gst_player_get_rate ()">gst_player_get_rate</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
 </dt>
 <dd></dd>
@@ -3604,6 +3548,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#gst-player-media-info-is-live" title="gst_player_media_info_is_live ()">gst_player_media_info_is_live</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html" title="gstplayer-mediainfo">gstplayer-mediainfo</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#gst-player-media-info-is-seekable" title="gst_player_media_info_is_seekable ()">gst_player_media_info_is_seekable</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html" title="gstplayer-mediainfo">gstplayer-mediainfo</a>
 </dt>
 <dd></dd>
@@ -3632,15 +3580,27 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-audio-video-offset" title="gst_player_set_audio_video_offset ()">gst_player_set_audio_video_offset</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-color-balance" title="gst_player_set_color_balance ()">gst_player_set_color_balance</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-mute" title="gst_player_set_mute ()">gst_player_set_mute</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-config" title="gst_player_set_config ()">gst_player_set_config</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-position-update-interval" title="gst_player_set_position_update_interval ()">gst_player_set_position_update_interval</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-multiview-flags" title="gst_player_set_multiview_flags ()">gst_player_set_multiview_flags</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-multiview-mode" title="gst_player_set_multiview_mode ()">gst_player_set_multiview_mode</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-mute" title="gst_player_set_mute ()">gst_player_set_mute</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
 </dt>
 <dd></dd>
 <dt>
diff --git a/docs/libs/html/gst-plugins-bad-libs-1.0.devhelp2 b/docs/libs/html/gst-plugins-bad-libs-1.0.devhelp2
index ef0bc7c..e120295 100644
--- a/docs/libs/html/gst-plugins-bad-libs-1.0.devhelp2
+++ b/docs/libs/html/gst-plugins-bad-libs-1.0.devhelp2
@@ -576,32 +576,20 @@
     <keyword type="enum" name="enum GstGLDisplayType" link="GstGLDisplay.html#GstGLDisplayType"/>
     <keyword type="struct" name="GstGLDisplay" link="GstGLDisplay.html#GstGLDisplay-struct"/>
     <keyword type="signal" name="The “create-context” signal" link="GstGLDisplay.html#GstGLDisplay-create-context"/>
-    <keyword type="function" name="gst_egl_image_memory_init ()" link="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-init"/>
-    <keyword type="function" name="gst_egl_image_memory_get_display ()" link="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-get-display"/>
-    <keyword type="function" name="gst_egl_image_memory_get_image ()" link="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-get-image"/>
-    <keyword type="function" name="gst_egl_image_memory_get_orientation ()" link="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-get-orientation"/>
-    <keyword type="function" name="gst_egl_image_memory_set_orientation ()" link="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-set-orientation"/>
-    <keyword type="function" name="gst_egl_image_memory_setup_buffer ()" link="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-setup-buffer"/>
-    <keyword type="function" name="gst_is_egl_image_memory ()" link="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-is-egl-image-memory"/>
-    <keyword type="macro" name="GST_EGL_IMAGE_MEMORY_TYPE" link="gst-plugins-bad-libs-GstEGLImageMemory.html#GST-EGL-IMAGE-MEMORY-TYPE:CAPS"/>
-    <keyword type="macro" name="GST_CAPS_FEATURE_MEMORY_EGL_IMAGE" link="gst-plugins-bad-libs-GstEGLImageMemory.html#GST-CAPS-FEATURE-MEMORY-EGL-IMAGE:CAPS"/>
-    <keyword type="function" name="gst_gl_filter_draw_texture ()" link="GstGLFilter.html#gst-gl-filter-draw-texture"/>
     <keyword type="function" name="gst_gl_filter_render_to_target ()" link="GstGLFilter.html#gst-gl-filter-render-to-target"/>
     <keyword type="function" name="gst_gl_filter_render_to_target_with_shader ()" link="GstGLFilter.html#gst-gl-filter-render-to-target-with-shader"/>
     <keyword type="function" name="gst_gl_filter_filter_texture ()" link="GstGLFilter.html#gst-gl-filter-filter-texture"/>
     <keyword type="struct" name="GstGLFilter" link="GstGLFilter.html#GstGLFilter-struct"/>
     <keyword type="struct" name="GstGLFilterClass" link="GstGLFilter.html#GstGLFilterClass"/>
     <keyword type="function" name="gst_gl_framebuffer_new ()" link="GstGLFramebuffer.html#gst-gl-framebuffer-new"/>
-    <keyword type="function" name="gst_gl_framebuffer_generate ()" link="GstGLFramebuffer.html#gst-gl-framebuffer-generate"/>
-    <keyword type="function" name="gst_gl_framebuffer_delete ()" link="GstGLFramebuffer.html#gst-gl-framebuffer-delete"/>
-    <keyword type="function" name="gst_gl_framebuffer_use_v2 ()" link="GstGLFramebuffer.html#gst-gl-framebuffer-use-v2"/>
-    <keyword type="struct" name="struct GstGLFramebuffer" link="GstGLFramebuffer.html#GstGLFramebuffer-struct"/>
+    <keyword type="struct" name="GstGLFramebuffer" link="GstGLFramebuffer.html#GstGLFramebuffer-struct"/>
     <keyword type="struct" name="struct GstGLFramebufferClass" link="GstGLFramebuffer.html#GstGLFramebufferClass"/>
     <keyword type="function" name="gst_gl_video_allocation_params_copy_data ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-copy-data" since="1.8"/>
     <keyword type="function" name="gst_gl_video_allocation_params_free_data ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-free-data" since="1.8"/>
     <keyword type="function" name="gst_gl_video_allocation_params_init_full ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-init-full" since="1.8"/>
     <keyword type="function" name="gst_gl_video_allocation_params_new ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-new" since="1.8"/>
     <keyword type="function" name="gst_gl_video_allocation_params_new_wrapped_data ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-new-wrapped-data" since="1.8"/>
+    <keyword type="function" name="gst_gl_video_allocation_params_new_wrapped_gl_handle ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-new-wrapped-gl-handle" since="1.8"/>
     <keyword type="function" name="gst_gl_video_allocation_params_new_wrapped_texture ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-new-wrapped-texture" since="1.8"/>
     <keyword type="function" name="gst_gl_memory_allocator_get_default ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-allocator-get-default" since="1.8"/>
     <keyword type="function" name="gst_gl_memory_init_once ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-init-once" since="1.4"/>
@@ -775,23 +763,12 @@
     <keyword type="macro" name="GST_GL_ASYNC_CAT_LEVEL_LOG()" link="gst-plugins-bad-libs-OpenGL-debugging.html#GST-GL-ASYNC-CAT-LEVEL-LOG:CAPS"/>
     <keyword type="function" name="gst_gl_insert_debug_marker ()" link="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-insert-debug-marker" since="1.8"/>
     <keyword type="struct" name="struct GstGLAsyncDebug" link="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug"/>
-    <keyword type="function" name="GLCB ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#GLCB:CAPS"/>
-    <keyword type="function" name="GLCB_V2 ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#GLCB-V2:CAPS"/>
-    <keyword type="function" name="CDCB ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#CDCB:CAPS"/>
     <keyword type="function" name="gst_gl_handle_set_context ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-handle-set-context"/>
     <keyword type="function" name="gst_gl_handle_context_query ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-handle-context-query"/>
-    <keyword type="function" name="gst_gl_context_gen_texture ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-gen-texture"/>
-    <keyword type="function" name="gst_gl_context_del_texture ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-del-texture"/>
-    <keyword type="function" name="gst_gl_context_gen_fbo ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-gen-fbo"/>
-    <keyword type="function" name="gst_gl_context_del_fbo ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-del-fbo"/>
-    <keyword type="function" name="gst_gl_context_use_fbo_v2 ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-use-fbo-v2"/>
     <keyword type="function" name="gst_gl_context_gen_shader ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-gen-shader"/>
     <keyword type="function" name="gst_gl_context_del_shader ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-del-shader"/>
     <keyword type="function" name="gst_gl_context_check_framebuffer_status ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-check-framebuffer-status"/>
-    <keyword type="function" name="gst_gl_context_set_error ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-set-error"/>
-    <keyword type="function" name="gst_gl_context_get_error ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-get-error"/>
     <keyword type="function" name="gst_gl_context_clear_shader ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-clear-shader"/>
-    <keyword type="function" name="gst_gl_generate_texture_full ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-generate-texture-full"/>
     <keyword type="function" name="gst_gl_caps_replace_all_caps_features ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-caps-replace-all-caps-features"/>
     <keyword type="function" name="gst_gl_ensure_element_data ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-ensure-element-data"/>
     <keyword type="function" name="gst_gl_get_plane_data_size ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-get-plane-data-size"/>
@@ -800,7 +777,6 @@
     <keyword type="function" name="gst_gl_value_get_texture_target_mask ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-value-get-texture-target-mask"/>
     <keyword type="function" name="gst_gl_value_set_texture_target ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-value-set-texture-target"/>
     <keyword type="function" name="gst_gl_value_set_texture_target_from_mask ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-value-set-texture-target-from-mask"/>
-    <keyword type="enum" name="enum GstGLDisplayProjection" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#GstGLDisplayProjection"/>
     <keyword type="function" name="gst_gl_format_type_n_bytes ()" link="gst-plugins-bad-libs-OpenGL-Formats.html#gst-gl-format-type-n-bytes"/>
     <keyword type="function" name="gst_gl_texture_type_n_bytes ()" link="gst-plugins-bad-libs-OpenGL-Formats.html#gst-gl-texture-type-n-bytes"/>
     <keyword type="function" name="gst_gl_format_from_gl_texture_type ()" link="gst-plugins-bad-libs-OpenGL-Formats.html#gst-gl-format-from-gl-texture-type"/>
@@ -832,8 +808,8 @@
     <keyword type="function" name="gst_player_get_volume ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-get-volume"/>
     <keyword type="function" name="gst_player_get_mute ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-get-mute"/>
     <keyword type="function" name="gst_player_get_pipeline ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-get-pipeline"/>
-    <keyword type="function" name="gst_player_set_position_update_interval ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-set-position-update-interval"/>
-    <keyword type="function" name="gst_player_get_position_update_interval ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-get-position-update-interval"/>
+    <keyword type="function" name="gst_player_set_config ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-set-config"/>
+    <keyword type="function" name="gst_player_get_config ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-get-config"/>
     <keyword type="function" name="gst_player_state_get_name ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-state-get-name"/>
     <keyword type="function" name="gst_player_error_get_name ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-error-get-name"/>
     <keyword type="function" name="gst_player_get_media_info ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-get-media-info"/>
@@ -858,8 +834,18 @@
     <keyword type="function" name="gst_player_has_color_balance ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-has-color-balance"/>
     <keyword type="function" name="gst_player_set_color_balance ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-set-color-balance"/>
     <keyword type="function" name="gst_player_get_color_balance ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-get-color-balance"/>
+    <keyword type="function" name="gst_player_get_multiview_mode ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-get-multiview-mode" since="1.10"/>
+    <keyword type="function" name="gst_player_set_multiview_mode ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-set-multiview-mode" since="1.10"/>
+    <keyword type="function" name="gst_player_get_multiview_flags ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-get-multiview-flags" since="1.10"/>
+    <keyword type="function" name="gst_player_set_multiview_flags ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-set-multiview-flags" since="1.10"/>
+    <keyword type="function" name="gst_player_get_audio_video_offset ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-get-audio-video-offset"/>
+    <keyword type="function" name="gst_player_set_audio_video_offset ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-set-audio-video-offset"/>
     <keyword type="function" name="gst_player_get_rate ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-get-rate"/>
     <keyword type="function" name="gst_player_set_rate ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-set-rate"/>
+    <keyword type="function" name="gst_player_config_set_position_update_interval ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-config-set-position-update-interval"/>
+    <keyword type="function" name="gst_player_config_get_position_update_interval ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-config-get-position-update-interval"/>
+    <keyword type="function" name="gst_player_config_set_user_agent ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-config-set-user-agent"/>
+    <keyword type="function" name="gst_player_config_get_user_agent ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-config-get-user-agent"/>
     <keyword type="struct" name="GstPlayer" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer-struct"/>
     <keyword type="enum" name="enum GstPlayerState" link="gst-plugins-bad-libs-gstplayer.html#GstPlayerState"/>
     <keyword type="macro" name="GST_PLAYER_ERROR" link="gst-plugins-bad-libs-gstplayer.html#GST-PLAYER-ERROR:CAPS"/>
@@ -869,6 +855,7 @@
     <keyword type="struct" name="struct GstPlayerSignalDispatcherInterface" link="gst-plugins-bad-libs-gstplayer.html#GstPlayerSignalDispatcherInterface"/>
     <keyword type="struct" name="GstPlayerVideoRenderer" link="gst-plugins-bad-libs-gstplayer.html#GstPlayerVideoRenderer-struct"/>
     <keyword type="struct" name="struct GstPlayerVideoRendererInterface" link="gst-plugins-bad-libs-gstplayer.html#GstPlayerVideoRendererInterface"/>
+    <keyword type="property" name="The “audio-video-offset” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--audio-video-offset"/>
     <keyword type="property" name="The “current-audio-track” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--current-audio-track"/>
     <keyword type="property" name="The “current-subtitle-track” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--current-subtitle-track"/>
     <keyword type="property" name="The “current-video-track” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--current-video-track"/>
@@ -877,11 +864,12 @@
     <keyword type="property" name="The “mute” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--mute"/>
     <keyword type="property" name="The “pipeline” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--pipeline"/>
     <keyword type="property" name="The “position” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--position"/>
-    <keyword type="property" name="The “position-update-interval” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--position-update-interval"/>
     <keyword type="property" name="The “rate” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--rate"/>
     <keyword type="property" name="The “signal-dispatcher” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--signal-dispatcher"/>
     <keyword type="property" name="The “suburi” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--suburi"/>
     <keyword type="property" name="The “uri” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--uri"/>
+    <keyword type="property" name="The “video-multiview-flags” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--video-multiview-flags"/>
+    <keyword type="property" name="The “video-multiview-mode” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--video-multiview-mode"/>
     <keyword type="property" name="The “video-renderer” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--video-renderer"/>
     <keyword type="property" name="The “volume” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--volume"/>
     <keyword type="signal" name="The “buffering” signal" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer-buffering"/>
@@ -893,6 +881,7 @@
     <keyword type="signal" name="The “position-updated” signal" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer-position-updated"/>
     <keyword type="signal" name="The “seek-done” signal" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer-seek-done"/>
     <keyword type="signal" name="The “state-changed” signal" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer-state-changed"/>
+    <keyword type="signal" name="The “uri-loaded” signal" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer-uri-loaded"/>
     <keyword type="signal" name="The “video-dimensions-changed” signal" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer-video-dimensions-changed"/>
     <keyword type="signal" name="The “volume-changed” signal" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer-volume-changed"/>
     <keyword type="signal" name="The “warning” signal" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer-warning"/>
@@ -901,6 +890,7 @@
     <keyword type="function" name="gst_player_media_info_get_title ()" link="gst-plugins-bad-libs-gstplayer-mediainfo.html#gst-player-media-info-get-title"/>
     <keyword type="function" name="gst_player_media_info_get_container_format ()" link="gst-plugins-bad-libs-gstplayer-mediainfo.html#gst-player-media-info-get-container-format"/>
     <keyword type="function" name="gst_player_media_info_is_seekable ()" link="gst-plugins-bad-libs-gstplayer-mediainfo.html#gst-player-media-info-is-seekable"/>
+    <keyword type="function" name="gst_player_media_info_is_live ()" link="gst-plugins-bad-libs-gstplayer-mediainfo.html#gst-player-media-info-is-live"/>
     <keyword type="function" name="gst_player_media_info_get_image_sample ()" link="gst-plugins-bad-libs-gstplayer-mediainfo.html#gst-player-media-info-get-image-sample"/>
     <keyword type="function" name="gst_player_media_info_get_tags ()" link="gst-plugins-bad-libs-gstplayer-mediainfo.html#gst-player-media-info-get-tags"/>
     <keyword type="function" name="gst_player_media_info_get_stream_list ()" link="gst-plugins-bad-libs-gstplayer-mediainfo.html#gst-player-media-info-get-stream-list"/>
@@ -1731,8 +1721,6 @@
     <keyword type="constant" name="GST_GL_WINDOW_ERROR_FAILED" link="GstGLWindow.html#GST-GL-WINDOW-ERROR-FAILED:CAPS"/>
     <keyword type="constant" name="GST_GL_WINDOW_ERROR_OLD_LIBS" link="GstGLWindow.html#GST-GL-WINDOW-ERROR-OLD-LIBS:CAPS"/>
     <keyword type="constant" name="GST_GL_WINDOW_ERROR_RESOURCE_UNAVAILABLE" link="GstGLWindow.html#GST-GL-WINDOW-ERROR-RESOURCE-UNAVAILABLE:CAPS"/>
-    <keyword type="constant" name="GST_GL_DISPLAY_PROJECTION_ORTHO2D" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#GST-GL-DISPLAY-PROJECTION-ORTHO2D:CAPS"/>
-    <keyword type="constant" name="GST_GL_DISPLAY_PROJECTION_PERSPECTIVE" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#GST-GL-DISPLAY-PROJECTION-PERSPECTIVE:CAPS"/>
     <keyword type="constant" name="GST_GL_TEXTURE_TARGET_NONE" link="gst-plugins-bad-libs-OpenGL-Formats.html#GST-GL-TEXTURE-TARGET-NONE:CAPS"/>
     <keyword type="constant" name="GST_GL_TEXTURE_TARGET_2D" link="gst-plugins-bad-libs-OpenGL-Formats.html#GST-GL-TEXTURE-TARGET-2D:CAPS"/>
     <keyword type="constant" name="GST_GL_TEXTURE_TARGET_RECTANGLE" link="gst-plugins-bad-libs-OpenGL-Formats.html#GST-GL-TEXTURE-TARGET-RECTANGLE:CAPS"/>
@@ -1892,8 +1880,8 @@
     <keyword type="member" name="GstH264SPS.crop-rect-height" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.crop-rect-height"/>
     <keyword type="member" name="GstH264SPS.crop-rect-x" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.crop-rect-x"/>
     <keyword type="member" name="GstH264SPS.crop-rect-y" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.crop-rect-y"/>
-    <keyword type="member" name="GstH264SPS.fps-num" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.fps-num"/>
-    <keyword type="member" name="GstH264SPS.fps-den" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.fps-den"/>
+    <keyword type="member" name="GstH264SPS.fps-num-removed" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.fps-num-removed"/>
+    <keyword type="member" name="GstH264SPS.fps-den-removed" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.fps-den-removed"/>
     <keyword type="member" name="GstH264SPS.valid" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.valid"/>
     <keyword type="member" name="GstH264SPS.extension-type" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.extension-type"/>
     <keyword type="member" name="GstH264HRDParams.cpb-cnt-minus1" link="gst-plugins-bad-libs-h264parser.html#GstH264HRDParams.cpb-cnt-minus1"/>
@@ -1975,7 +1963,9 @@
     <keyword type="member" name="GstMpegVideoSequenceHdr.bitrate-value" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr.bitrate-value"/>
     <keyword type="member" name="GstMpegVideoSequenceHdr.vbv-buffer-size-value" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr.vbv-buffer-size-value"/>
     <keyword type="member" name="GstMpegVideoSequenceHdr.constrained-parameters-flag" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr.constrained-parameters-flag"/>
+    <keyword type="member" name="GstMpegVideoSequenceHdr.load-intra-quantiser-matrix" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr.load-intra-quantiser-matrix"/>
     <keyword type="member" name="GstMpegVideoSequenceHdr.intra-quantizer-matrix" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr.intra-quantizer-matrix"/>
+    <keyword type="member" name="GstMpegVideoSequenceHdr.load-non-intra-quantiser-matrix" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr.load-non-intra-quantiser-matrix"/>
     <keyword type="member" name="GstMpegVideoSequenceHdr.non-intra-quantizer-matrix" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr.non-intra-quantizer-matrix"/>
     <keyword type="member" name="GstMpegVideoSequenceHdr.par-w" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr.par-w"/>
     <keyword type="member" name="GstMpegVideoSequenceHdr.par-h" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr.par-h"/>
@@ -1996,6 +1986,7 @@
     <keyword type="member" name="GstMpegVideoSequenceExt.profile-level-escape-bit" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceExt.profile-level-escape-bit"/>
     <keyword type="member" name="GstMpegVideoPictureHdr.tsn" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureHdr.tsn"/>
     <keyword type="member" name="GstMpegVideoPictureHdr.pic-type" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureHdr.pic-type"/>
+    <keyword type="member" name="GstMpegVideoPictureHdr.vbv-delay" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureHdr.vbv-delay"/>
     <keyword type="member" name="GstMpegVideoPictureHdr.full-pel-forward-vector" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureHdr.full-pel-forward-vector"/>
     <keyword type="member" name="GstMpegVideoPictureHdr.full-pel-backward-vector" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureHdr.full-pel-backward-vector"/>
     <keyword type="member" name="GstMpegVideoPictureHdr.f-code" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureHdr.f-code"/>
@@ -2325,11 +2316,11 @@
     <keyword type="member" name="GstGLBaseMemoryAllocatorClass.alloc" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorClass.alloc"/>
     <keyword type="member" name="GstGLBaseMemoryAllocatorClass.create" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorClass.create"/>
     <keyword type="member" name="GstGLBaseMemoryAllocatorClass.map" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorClass.map"/>
-    <keyword type="member" name="GstGLBaseMemoryAllocatorClass.flush" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorClass.flush"/>
-    <keyword type="member" name="GstGLBaseMemoryAllocatorClass.invalidate" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorClass.invalidate"/>
     <keyword type="member" name="GstGLBaseMemoryAllocatorClass.unmap" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorClass.unmap"/>
     <keyword type="member" name="GstGLBaseMemoryAllocatorClass.copy" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorClass.copy"/>
     <keyword type="member" name="GstGLBaseMemoryAllocatorClass.destroy" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorClass.destroy"/>
+    <keyword type="member" name="GstGLBaseMemoryAllocatorClass.flush" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorClass.flush"/>
+    <keyword type="member" name="GstGLBaseMemoryAllocatorClass.invalidate" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorClass.invalidate"/>
     <keyword type="member" name="GstGLAllocationParams.struct-size" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams.struct-size"/>
     <keyword type="member" name="GstGLAllocationParams.copy" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams.copy"/>
     <keyword type="member" name="GstGLAllocationParams.free" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams.free"/>
@@ -2361,6 +2352,7 @@
     <keyword type="member" name="GstGLFilterClass.transform-internal-caps" link="GstGLFilter.html#GstGLFilterClass.transform-internal-caps"/>
     <keyword type="member" name="GstGLFilterClass.display-init-cb" link="GstGLFilter.html#GstGLFilterClass.display-init-cb"/>
     <keyword type="member" name="GstGLFilterClass.display-reset-cb" link="GstGLFilter.html#GstGLFilterClass.display-reset-cb"/>
+    <keyword type="member" name="GstGLFilterClass.-padding" link="GstGLFilter.html#GstGLFilterClass.-padding"/>
     <keyword type="member" name="GstGLMemory.mem" link="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory.mem"/>
     <keyword type="member" name="GstGLMemory.tex-id" link="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory.tex-id"/>
     <keyword type="member" name="GstGLMemory.tex-target" link="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory.tex-target"/>
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstEGLImageMemory.html b/docs/libs/html/gst-plugins-bad-libs-GstEGLImageMemory.html
index 8143490..166bb00 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstEGLImageMemory.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstEGLImageMemory.html
@@ -32,154 +32,14 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="gst-plugins-bad-libs-GstEGLImageMemory.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="functions_return">
-<col class="functions_name">
-</colgroup>
-<tbody>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-init" title="gst_egl_image_memory_init ()">gst_egl_image_memory_init</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">EGLDisplay</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-get-display" title="gst_egl_image_memory_get_display ()">gst_egl_image_memory_get_display</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">EGLImageKHR</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-get-image" title="gst_egl_image_memory_get_image ()">gst_egl_image_memory_get_image</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GstVideoGLTextureOrientation</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-get-orientation" title="gst_egl_image_memory_get_orientation ()">gst_egl_image_memory_get_orientation</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-set-orientation" title="gst_egl_image_memory_set_orientation ()">gst_egl_image_memory_set_orientation</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-setup-buffer" title="gst_egl_image_memory_setup_buffer ()">gst_egl_image_memory_setup_buffer</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-is-egl-image-memory" title="gst_is_egl_image_memory ()">gst_is_egl_image_memory</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-GstEGLImageMemory.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="name">
-<col class="description">
-</colgroup>
-<tbody>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#GST-EGL-IMAGE-MEMORY-TYPE:CAPS" title="GST_EGL_IMAGE_MEMORY_TYPE">GST_EGL_IMAGE_MEMORY_TYPE</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#GST-CAPS-FEATURE-MEMORY-EGL-IMAGE:CAPS" title="GST_CAPS_FEATURE_MEMORY_EGL_IMAGE">GST_CAPS_FEATURE_MEMORY_EGL_IMAGE</a></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect1">
 <a name="gst-plugins-bad-libs-GstEGLImageMemory.description"></a><h2>Description</h2>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstEGLImageMemory.functions_details"></a><h2>Functions</h2>
-<div class="refsect2">
-<a name="gst-egl-image-memory-init"></a><h3>gst_egl_image_memory_init ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_egl_image_memory_init (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-egl-image-memory-get-display"></a><h3>gst_egl_image_memory_get_display ()</h3>
-<pre class="programlisting"><span class="returnvalue">EGLDisplay</span>
-gst_egl_image_memory_get_display (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a> *mem</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-egl-image-memory-get-image"></a><h3>gst_egl_image_memory_get_image ()</h3>
-<pre class="programlisting"><span class="returnvalue">EGLImageKHR</span>
-gst_egl_image_memory_get_image (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a> *mem</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-egl-image-memory-get-orientation"></a><h3>gst_egl_image_memory_get_orientation ()</h3>
-<pre class="programlisting"><span class="returnvalue">GstVideoGLTextureOrientation</span>
-gst_egl_image_memory_get_orientation (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a> *mem</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-egl-image-memory-set-orientation"></a><h3>gst_egl_image_memory_set_orientation ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_egl_image_memory_set_orientation (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a> *mem</code></em>,
-                                      <em class="parameter"><code><span class="type">GstVideoGLTextureOrientation</span> orientation</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-egl-image-memory-setup-buffer"></a><h3>gst_egl_image_memory_setup_buffer ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_egl_image_memory_setup_buffer (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
-                                   <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> *info</code></em>,
-                                   <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> *buffer</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-is-egl-image-memory"></a><h3>gst_is_egl_image_memory ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_is_egl_image_memory (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a> *mem</code></em>);</pre>
-</div>
+<p></p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstEGLImageMemory.other_details"></a><h2>Types and Values</h2>
-<div class="refsect2">
-<a name="GST-EGL-IMAGE-MEMORY-TYPE:CAPS"></a><h3>GST_EGL_IMAGE_MEMORY_TYPE</h3>
-<pre class="programlisting">#define GST_EGL_IMAGE_MEMORY_TYPE "EGLImage"
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GST-CAPS-FEATURE-MEMORY-EGL-IMAGE:CAPS"></a><h3>GST_CAPS_FEATURE_MEMORY_EGL_IMAGE</h3>
-<pre class="programlisting">#define GST_CAPS_FEATURE_MEMORY_EGL_IMAGE "memory:EGLImage"
-</pre>
-</div>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstGLContextEGL.html b/docs/libs/html/gst-plugins-bad-libs-GstGLContextEGL.html
index 04e867e..2f8ad01 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstGLContextEGL.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstGLContextEGL.html
@@ -116,12 +116,17 @@
   EGLSurface egl_surface;
   EGLConfig  egl_config;
 
+  gint egl_major;
+  gint egl_minor;
+
   GstGLAPI gl_api;
 
   const gchar *egl_exts;
 
-  EGLImageKHR (*eglCreateImage) (EGLDisplay dpy, EGLContext ctx, EGLenum target,
+  EGLImageKHR (*eglCreateImageKHR) (EGLDisplay dpy, EGLContext ctx, EGLenum target,
       EGLClientBuffer buffer, const EGLint *attrib_list);
+  EGLImageKHR (*eglCreateImage) (EGLDisplay dpy, EGLContext ctx, EGLenum target,
+      EGLClientBuffer buffer, const EGLAttrib *attrib_list);
   EGLBoolean (*eglDestroyImage) (EGLDisplay dpy, EGLImageKHR image);
 
   /* Cached handle */
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstGLMemory.html b/docs/libs/html/gst-plugins-bad-libs-GstGLMemory.html
index 633f69e..996f1fd 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstGLMemory.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstGLMemory.html
@@ -85,6 +85,14 @@
 <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="returnvalue">GstGLVideoAllocationParams</span></a> *
 </td>
 <td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-new-wrapped-gl-handle" title="gst_gl_video_allocation_params_new_wrapped_gl_handle ()">gst_gl_video_allocation_params_new_wrapped_gl_handle</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="returnvalue">GstGLVideoAllocationParams</span></a> *
+</td>
+<td class="function_name">
 <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-new-wrapped-texture" title="gst_gl_video_allocation_params_new_wrapped_texture ()">gst_gl_video_allocation_params_new_wrapped_texture</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
@@ -337,8 +345,9 @@
                                 <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> plane</code></em>,
                                 <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoAlignment"><span class="type">GstVideoAlignment</span></a> *valign</code></em>,
                                 <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> target</code></em>,
+                                <em class="parameter"><code><span class="type">GstVideoGLTextureType</span> tex_type</code></em>,
                                 <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> wrapped_data</code></em>,
-                                <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> gl_handle</code></em>,
+                                <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> gl_handle</code></em>,
                                 <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
                                 <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> notify</code></em>);</pre>
 <p>Intended for subclass usage</p>
@@ -412,6 +421,11 @@
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
+<td class="parameter_name"><p>tex_type</p></td>
+<td class="parameter_description"><p>the <span class="type">GstVideoGLTextureType</span></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
 <td class="parameter_name"><p>wrapped_data</p></td>
 <td class="parameter_description"><p> the optional data pointer to wrap. </p></td>
 <td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
@@ -451,7 +465,8 @@
                                     <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> *v_info</code></em>,
                                     <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> plane</code></em>,
                                     <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoAlignment"><span class="type">GstVideoAlignment</span></a> *valign</code></em>,
-                                    <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> target</code></em>);</pre>
+                                    <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> target</code></em>,
+                                    <em class="parameter"><code><span class="type">GstVideoGLTextureType</span> tex_type</code></em>);</pre>
 <div class="refsect3">
 <a name="gst-gl-video-allocation-params-new.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -468,32 +483,33 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>alloc_params</p></td>
-<td class="parameter_description"><p> the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocationParams-struct"><span class="type">GstAllocationParams</span></a> for <em class="parameter"><code>wrapped_data</code></em>
-. </p></td>
+<td class="parameter_description"><p> the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocationParams-struct"><span class="type">GstAllocationParams</span></a> for sysmem mappings of the texture. </p></td>
 <td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
 </tr>
 <tr>
 <td class="parameter_name"><p>v_info</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> for <em class="parameter"><code>wrapped_data</code></em>
-</p></td>
+<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> for the texture</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
 <td class="parameter_name"><p>plane</p></td>
-<td class="parameter_description"><p>the video plane <em class="parameter"><code>wrapped_data</code></em>
-represents</p></td>
+<td class="parameter_description"><p>the video plane of <em class="parameter"><code>v_info</code></em>
+to allocate</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
 <td class="parameter_name"><p>valign</p></td>
-<td class="parameter_description"><p> any <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoAlignment"><span class="type">GstVideoAlignment</span></a> applied to symem mappings of <em class="parameter"><code>wrapped_data</code></em>
-. </p></td>
+<td class="parameter_description"><p> any <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoAlignment"><span class="type">GstVideoAlignment</span></a> applied to symem mappings of the texture. </p></td>
 <td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
 </tr>
 <tr>
 <td class="parameter_name"><p>target</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> for <em class="parameter"><code>wrapped_data</code></em>
-</p></td>
+<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> for the created textures</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>target</p></td>
+<td class="parameter_description"><p>the <span class="type">GstVideoGLTextureType</span> for the created textures</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 </tbody>
@@ -516,6 +532,7 @@
                                 <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> plane</code></em>,
                                 <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoAlignment"><span class="type">GstVideoAlignment</span></a> *valign</code></em>,
                                 <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> target</code></em>,
+                                <em class="parameter"><code><span class="type">GstVideoGLTextureType</span> tex_type</code></em>,
                                 <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> wrapped_data</code></em>,
                                 <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
                                 <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> notify</code></em>);</pre>
@@ -564,6 +581,12 @@
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
+<td class="parameter_name"><p>tex_type</p></td>
+<td class="parameter_description"><p>the <span class="type">GstVideoGLTextureType</span> for <em class="parameter"><code>wrapped_data</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
 <td class="parameter_name"><p>wrapped_data</p></td>
 <td class="parameter_description"><p>the data pointer to wrap</p></td>
 <td class="parameter_annotations"> </td>
@@ -591,6 +614,101 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-gl-video-allocation-params-new-wrapped-gl-handle"></a><h3>gst_gl_video_allocation_params_new_wrapped_gl_handle ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="returnvalue">GstGLVideoAllocationParams</span></a> *
+gst_gl_video_allocation_params_new_wrapped_gl_handle
+                               (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
+                                <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocationParams-struct"><span class="type">GstAllocationParams</span></a> *alloc_params</code></em>,
+                                <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> *v_info</code></em>,
+                                <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> plane</code></em>,
+                                <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoAlignment"><span class="type">GstVideoAlignment</span></a> *valign</code></em>,
+                                <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> target</code></em>,
+                                <em class="parameter"><code><span class="type">GstVideoGLTextureType</span> tex_type</code></em>,
+                                <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> gl_handle</code></em>,
+                                <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
+                                <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> notify</code></em>);</pre>
+<p><em class="parameter"><code>gl_handle</code></em>
+ is defined by the specific OpenGL handle being wrapped
+For <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a> and <a class="link" href="gst-plugins-bad-libs-gstglmemorypbo.html#GstGLMemoryPBO" title="GstGLMemoryPBO"><span class="type">GstGLMemoryPBO</span></a> it is an OpenGL texture id.
+Other memory types may define it to require a different type of parameter.</p>
+<div class="refsect3">
+<a name="gst-gl-video-allocation-params-new-wrapped-gl-handle.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>context</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>alloc_params</p></td>
+<td class="parameter_description"><p> the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocationParams-struct"><span class="type">GstAllocationParams</span></a> for <em class="parameter"><code>tex_id</code></em>
+. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>v_info</p></td>
+<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> for <em class="parameter"><code>tex_id</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>plane</p></td>
+<td class="parameter_description"><p>the video plane <em class="parameter"><code>tex_id</code></em>
+represents</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>valign</p></td>
+<td class="parameter_description"><p> any <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoAlignment"><span class="type">GstVideoAlignment</span></a> applied to symem mappings of <em class="parameter"><code>tex_id</code></em>
+. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>target</p></td>
+<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> for <em class="parameter"><code>tex_id</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>tex_type</p></td>
+<td class="parameter_description"><p>the <span class="type">GstVideoGLTextureType</span> for <em class="parameter"><code>tex_id</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>gl_handle</p></td>
+<td class="parameter_description"><p>the GL handle to wrap</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p> user data to call <em class="parameter"><code>notify</code></em>
+with. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>notify</p></td>
+<td class="parameter_description"><p> a <a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-gl-video-allocation-params-new-wrapped-gl-handle.returns"></a><h4>Returns</h4>
+<p> a new <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="type">GstGLVideoAllocationParams</span></a> for wrapping <em class="parameter"><code>gl_handle</code></em>
+</p>
+</div>
+<p class="since">Since: 1.8</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-gl-video-allocation-params-new-wrapped-texture"></a><h3>gst_gl_video_allocation_params_new_wrapped_texture ()</h3>
 <pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="returnvalue">GstGLVideoAllocationParams</span></a> *
 gst_gl_video_allocation_params_new_wrapped_texture
@@ -600,6 +718,7 @@
                                 <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> plane</code></em>,
                                 <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoAlignment"><span class="type">GstVideoAlignment</span></a> *valign</code></em>,
                                 <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> target</code></em>,
+                                <em class="parameter"><code><span class="type">GstVideoGLTextureType</span> tex_type</code></em>,
                                 <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> tex_id</code></em>,
                                 <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
                                 <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> notify</code></em>);</pre>
@@ -648,6 +767,12 @@
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
+<td class="parameter_name"><p>tex_type</p></td>
+<td class="parameter_description"><p>the <span class="type">GstGLTextureType</span> for <em class="parameter"><code>tex_id</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
 <td class="parameter_name"><p>tex_id</p></td>
 <td class="parameter_description"><p>the GL texture to wrap</p></td>
 <td class="parameter_annotations"> </td>
@@ -718,6 +843,7 @@
                     <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a> *parent</code></em>,
                     <em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
                     <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> target</code></em>,
+                    <em class="parameter"><code><span class="type">GstVideoGLTextureType</span> tex_type</code></em>,
                     <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocationParams-struct"><span class="type">GstAllocationParams</span></a> *params</code></em>,
                     <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> *info</code></em>,
                     <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> plane</code></em>,
@@ -1119,7 +1245,10 @@
 <pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 gst_gl_memory_setup_buffer (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemoryAllocator"><span class="type">GstGLMemoryAllocator</span></a> *allocator</code></em>,
                             <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> *buffer</code></em>,
-                            <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="type">GstGLVideoAllocationParams</span></a> *params</code></em>);</pre>
+                            <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="type">GstGLVideoAllocationParams</span></a> *params</code></em>,
+                            <em class="parameter"><code><span class="type">GstVideoGLTextureType</span> *tex_types</code></em>,
+                            <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> *wrapped_data</code></em>,
+                            <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> n_wrapped_pointers</code></em>);</pre>
 <div class="refsect3">
 <a name="gst-gl-memory-setup-buffer.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1145,6 +1274,11 @@
 <td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="type">GstGLVideoAllocationParams</span></a> to allocate with</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
+<tr>
+<td class="parameter_name"><p>tex_types</p></td>
+<td class="parameter_description"><p> a list of <span class="type">GstVideoGLTextureType</span>'s to allocate with. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -1171,6 +1305,7 @@
   guint                  plane;
   GstVideoAlignment     *valign;
   GstGLTextureTarget     target;
+  GstVideoGLTextureType  tex_type;
 };
 </pre>
 </div>
diff --git a/docs/libs/html/gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html b/docs/libs/html/gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html
index a3841ea..3dea301 100644
--- a/docs/libs/html/gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html
+++ b/docs/libs/html/gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html
@@ -41,30 +41,6 @@
 <tbody>
 <tr>
 <td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<span class="c_punctuation">(</span><a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#GLCB:CAPS" title="GLCB ()">*GLCB</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<span class="c_punctuation">(</span><a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#GLCB-V2:CAPS" title="GLCB_V2 ()">*GLCB_V2</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<span class="c_punctuation">(</span><a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#CDCB:CAPS" title="CDCB ()">*CDCB</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
 <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 </td>
 <td class="function_name">
@@ -81,46 +57,6 @@
 </tr>
 <tr>
 <td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-gen-texture" title="gst_gl_context_gen_texture ()">gst_gl_context_gen_texture</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-del-texture" title="gst_gl_context_del_texture ()">gst_gl_context_del_texture</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-gen-fbo" title="gst_gl_context_gen_fbo ()">gst_gl_context_gen_fbo</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-del-fbo" title="gst_gl_context_del_fbo ()">gst_gl_context_del_fbo</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-use-fbo-v2" title="gst_gl_context_use_fbo_v2 ()">gst_gl_context_use_fbo_v2</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
 <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 </td>
 <td class="function_name">
@@ -148,35 +84,11 @@
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-set-error" title="gst_gl_context_set_error ()">gst_gl_context_set_error</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-get-error" title="gst_gl_context_get_error ()">gst_gl_context_get_error</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
 <a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-clear-shader" title="gst_gl_context_clear_shader ()">gst_gl_context_clear_shader</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
 <tr>
 <td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-generate-texture-full" title="gst_gl_generate_texture_full ()">gst_gl_generate_texture_full</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
 <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="returnvalue">GstCaps</span></a> *
 </td>
 <td class="function_name">
@@ -243,130 +155,11 @@
 </table></div>
 </div>
 <div class="refsect1">
-<a name="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="name">
-<col class="description">
-</colgroup>
-<tbody><tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#GstGLDisplayProjection" title="enum GstGLDisplayProjection">GstGLDisplayProjection</a></td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect1">
 <a name="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.description"></a><h2>Description</h2>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.functions_details"></a><h2>Functions</h2>
 <div class="refsect2">
-<a name="GLCB:CAPS"></a><h3>GLCB ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-<span class="c_punctuation">(</span>*GLCB<span class="c_punctuation">)</span> (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> Param1</code></em>,
-         <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> Param2</code></em>,
-         <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> Param3</code></em>,
-         <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> stuff</code></em>);</pre>
-<p>callback definition for operating on textures</p>
-<div class="refsect3">
-<a name="GLCB.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>width</p></td>
-<td class="parameter_description"><p>the width</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>height</p></td>
-<td class="parameter_description"><p>the height</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>texture</p></td>
-<td class="parameter_description"><p>texture</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>stuff</p></td>
-<td class="parameter_description"><p>user data</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GLCB-V2:CAPS"></a><h3>GLCB_V2 ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-<span class="c_punctuation">(</span>*GLCB_V2<span class="c_punctuation">)</span> (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> stuff</code></em>);</pre>
-<p>callback definition for operating through a Framebuffer object</p>
-<div class="refsect3">
-<a name="GLCB-V2.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>stuff</p></td>
-<td class="parameter_description"><p>user data</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="CDCB:CAPS"></a><h3>CDCB ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-<span class="c_punctuation">(</span>*CDCB<span class="c_punctuation">)</span> (<em class="parameter"><code><span class="type">GLuint</span> texture</code></em>,
-         <em class="parameter"><code><span class="type">GLuint</span> width</code></em>,
-         <em class="parameter"><code><span class="type">GLuint</span> height</code></em>,
-         <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> data</code></em>);</pre>
-<p>client draw callback</p>
-<div class="refsect3">
-<a name="CDCB.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>texture</p></td>
-<td class="parameter_description"><p>texture to draw</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>width</p></td>
-<td class="parameter_description"><p>new width</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>height</p></td>
-<td class="parameter_description"><p>new height:</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>user data</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
 <a name="gst-gl-handle-set-context"></a><h3>gst_gl_handle_set_context ()</h3>
 <pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 gst_gl_handle_set_context (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *element</code></em>,
@@ -385,54 +178,6 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-gl-context-gen-texture"></a><h3>gst_gl_context_gen_texture ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_gl_context_gen_texture (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
-                            <em class="parameter"><code><span class="type">GLuint</span> *pTexture</code></em>,
-                            <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoFormat"><span class="type">GstVideoFormat</span></a> v_format</code></em>,
-                            <em class="parameter"><code><span class="type">GLint</span> width</code></em>,
-                            <em class="parameter"><code><span class="type">GLint</span> height</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-gl-context-del-texture"></a><h3>gst_gl_context_del_texture ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_gl_context_del_texture (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
-                            <em class="parameter"><code><span class="type">GLuint</span> *pTexture</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-gl-context-gen-fbo"></a><h3>gst_gl_context_gen_fbo ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_gl_context_gen_fbo (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
-                        <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> width</code></em>,
-                        <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> height</code></em>,
-                        <em class="parameter"><code><span class="type">GLuint</span> *fbo</code></em>,
-                        <em class="parameter"><code><span class="type">GLuint</span> *depthbuffer</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-gl-context-del-fbo"></a><h3>gst_gl_context_del_fbo ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_gl_context_del_fbo (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
-                        <em class="parameter"><code><span class="type">GLuint</span> fbo</code></em>,
-                        <em class="parameter"><code><span class="type">GLuint</span> depth_buffer</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-gl-context-use-fbo-v2"></a><h3>gst_gl_context_use_fbo_v2 ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_gl_context_use_fbo_v2 (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
-                           <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> texture_fbo_width</code></em>,
-                           <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> texture_fbo_height</code></em>,
-                           <em class="parameter"><code><span class="type">GLuint</span> fbo</code></em>,
-                           <em class="parameter"><code><span class="type">GLuint</span> depth_buffer</code></em>,
-                           <em class="parameter"><code><span class="type">GLuint</span> texture_fbo</code></em>,
-                           <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#GLCB-V2:CAPS" title="GLCB_V2 ()"><span class="type">GLCB_V2</span></a> cb</code></em>,
-                           <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> stuff</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
 <a name="gst-gl-context-gen-shader"></a><h3>gst_gl_context_gen_shader ()</h3>
 <pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 gst_gl_context_gen_shader (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
@@ -456,20 +201,6 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-gl-context-set-error"></a><h3>gst_gl_context_set_error ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_gl_context_set_error (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
-                          <em class="parameter"><code>const <span class="type">char</span> *format</code></em>,
-                          <em class="parameter"><code>...</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-gl-context-get-error"></a><h3>gst_gl_context_get_error ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
-gst_gl_context_get_error (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
 <a name="gst-gl-context-clear-shader"></a><h3>gst_gl_context_clear_shader ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
 gst_gl_context_clear_shader (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>);</pre>
@@ -493,18 +224,6 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-gl-generate-texture-full"></a><h3>gst_gl_generate_texture_full ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_gl_generate_texture_full (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
-                              <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> *info</code></em>,
-                              <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> comp</code></em>,
-                              <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> stride[]</code></em>,
-                              <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> offset[]</code></em>,
-                              <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size[]</code></em>,
-                              <em class="parameter"><code><span class="type">GLuint</span> *pTexture</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
 <a name="gst-gl-caps-replace-all-caps-features"></a><h3>gst_gl_caps_replace_all_caps_features ()</h3>
 <pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="returnvalue">GstCaps</span></a> *
 gst_gl_caps_replace_all_caps_features (<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *caps</code></em>,
@@ -645,31 +364,6 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.other_details"></a><h2>Types and Values</h2>
-<div class="refsect2">
-<a name="GstGLDisplayProjection"></a><h3>enum GstGLDisplayProjection</h3>
-<div class="refsect3">
-<a name="GstGLDisplayProjection.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-GL-DISPLAY-PROJECTION-ORTHO2D:CAPS"></a>GST_GL_DISPLAY_PROJECTION_ORTHO2D</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-GL-DISPLAY-PROJECTION-PERSPECTIVE:CAPS"></a>GST_GL_DISPLAY_PROJECTION_PERSPECTIVE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstglbasememory.html b/docs/libs/html/gst-plugins-bad-libs-gstglbasememory.html
index 1f333d0..e53334a 100644
--- a/docs/libs/html/gst-plugins-bad-libs-gstglbasememory.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gstglbasememory.html
@@ -345,7 +345,7 @@
                                <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> alloc_size</code></em>,
                                <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocationParams-struct"><span class="type">GstAllocationParams</span></a> *alloc_params</code></em>,
                                <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> wrapped_data</code></em>,
-                               <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> gl_handle</code></em>,
+                               <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> gl_handle</code></em>,
                                <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
                                <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> notify</code></em>);</pre>
 <p><em class="parameter"><code>notify</code></em>
@@ -970,13 +970,13 @@
 
   GstGLBaseMemoryAllocatorCreateFunction        create;
   GstGLBaseMemoryAllocatorMapFunction           map;
+  GstGLBaseMemoryAllocatorUnmapFunction         unmap;
+  GstGLBaseMemoryAllocatorCopyFunction          copy;
+  GstGLBaseMemoryAllocatorDestroyFunction       destroy;
 #if 0
   GstGLBaseMemoryAllocatorFlushFunction         flush;        /* make CPU writes visible to the GPU */
   GstGLBaseMemoryAllocatorInvalidateFunction    invalidate;   /* make GPU writes visible to the CPU */
 #endif
-  GstGLBaseMemoryAllocatorUnmapFunction         unmap;
-  GstGLBaseMemoryAllocatorCopyFunction          copy;
-  GstGLBaseMemoryAllocatorDestroyFunction       destroy;
 } GstGLBaseMemoryAllocatorClass;
 </pre>
 <div class="refsect3">
@@ -1004,16 +1004,6 @@
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
-<td class="struct_member_name"><p><span class="type">GstGLBaseMemoryAllocatorFlushFunction</span> <em class="structfield"><code><a name="GstGLBaseMemoryAllocatorClass.flush"></a>flush</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><span class="type">GstGLBaseMemoryAllocatorInvalidateFunction</span> <em class="structfield"><code><a name="GstGLBaseMemoryAllocatorClass.invalidate"></a>invalidate</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
 <td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorUnmapFunction" title="GstGLBaseMemoryAllocatorUnmapFunction ()"><span class="type">GstGLBaseMemoryAllocatorUnmapFunction</span></a> <em class="structfield"><code><a name="GstGLBaseMemoryAllocatorClass.unmap"></a>unmap</code></em>;</p></td>
 <td class="struct_member_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorUnmapFunction" title="GstGLBaseMemoryAllocatorUnmapFunction ()"><span class="type">GstGLBaseMemoryAllocatorUnmapFunction</span></a></p></td>
 <td class="struct_member_annotations"> </td>
@@ -1028,6 +1018,16 @@
 <td class="struct_member_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorDestroyFunction" title="GstGLBaseMemoryAllocatorDestroyFunction ()"><span class="type">GstGLBaseMemoryAllocatorDestroyFunction</span></a></p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
+<tr>
+<td class="struct_member_name"><p><span class="type">GstGLBaseMemoryAllocatorFlushFunction</span> <em class="structfield"><code><a name="GstGLBaseMemoryAllocatorClass.flush"></a>flush</code></em>;</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><span class="type">GstGLBaseMemoryAllocatorInvalidateFunction</span> <em class="structfield"><code><a name="GstGLBaseMemoryAllocatorClass.invalidate"></a>invalidate</code></em>;</p></td>
+<td> </td>
+<td> </td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -1145,7 +1145,7 @@
   /* GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_SYSMEM only */
   gpointer                          wrapped_data;
   /* GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE only */
-  guint                             gl_handle;
+  gpointer                          gl_handle;
 };
 </pre>
 <div class="refsect3">
@@ -1209,7 +1209,7 @@
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstGLAllocationParams.gl-handle"></a>gl_handle</code></em>;</p></td>
+<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> <em class="structfield"><code><a name="GstGLAllocationParams.gl-handle"></a>gl_handle</code></em>;</p></td>
 <td class="struct_member_description"><p>the wrapped OpenGL handle</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstplayer-mediainfo.html b/docs/libs/html/gst-plugins-bad-libs-gstplayer-mediainfo.html
index 023f4c9..2a67c75 100644
--- a/docs/libs/html/gst-plugins-bad-libs-gstplayer-mediainfo.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gstplayer-mediainfo.html
@@ -79,6 +79,14 @@
 </tr>
 <tr>
 <td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#gst-player-media-info-is-live" title="gst_player_media_info_is_live ()">gst_player_media_info_is_live</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstSample.html#GstSample-struct"><span class="returnvalue">GstSample</span></a> *
 </td>
 <td class="function_name">
@@ -409,6 +417,31 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-player-media-info-is-live"></a><h3>gst_player_media_info_is_live ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_player_media_info_is_live (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
+<div class="refsect3">
+<a name="gst-player-media-info-is-live.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-player-media-info-is-live.returns"></a><h4>Returns</h4>
+<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the media is live.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-player-media-info-get-image-sample"></a><h3>gst_player_media_info_get_image_sample ()</h3>
 <pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstSample.html#GstSample-struct"><span class="returnvalue">GstSample</span></a> *
 gst_player_media_info_get_image_sample
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html b/docs/libs/html/gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html
index 8bf557d..dc406f6 100644
--- a/docs/libs/html/gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html
@@ -268,7 +268,7 @@
 <p>Configure a subregion as a video target within the window set by
 <a class="link" href="gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html#gst-player-video-overlay-video-renderer-set-window-handle" title="gst_player_video_overlay_video_renderer_set_window_handle ()"><code class="function">gst_player_video_overlay_video_renderer_set_window_handle()</code></a>. If this is not
 used or not supported the video will fill the area of the window set as the
-overlay to 100%. By specifying the rectangle, the video can be overlayed to
+overlay to 100%. By specifying the rectangle, the video can be overlaid to
 a specific region of that window only. After setting the new rectangle one
 should call <a class="link" href="gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html#gst-player-video-overlay-video-renderer-expose" title="gst_player_video_overlay_video_renderer_expose ()"><code class="function">gst_player_video_overlay_video_renderer_expose()</code></a> to force a
 redraw. To unset the region pass -1 for the <em class="parameter"><code>width</code></em>
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstplayer.html b/docs/libs/html/gst-plugins-bad-libs-gstplayer.html
index 97ee382..46959b8 100644
--- a/docs/libs/html/gst-plugins-bad-libs-gstplayer.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gstplayer.html
@@ -158,18 +158,18 @@
 </tr>
 <tr>
 <td class="function_type">
-<span class="returnvalue">void</span>
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 </td>
 <td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-position-update-interval" title="gst_player_set_position_update_interval ()">gst_player_set_position_update_interval</a> <span class="c_punctuation">()</span>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-config" title="gst_player_set_config ()">gst_player_set_config</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
 <tr>
 <td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstStructure.html#GstStructure-struct"><span class="returnvalue">GstStructure</span></a> *
 </td>
 <td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-get-position-update-interval" title="gst_player_get_position_update_interval ()">gst_player_get_position_update_interval</a> <span class="c_punctuation">()</span>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-get-config" title="gst_player_get_config ()">gst_player_get_config</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
 <tr>
@@ -292,7 +292,7 @@
 </tr>
 <tr>
 <td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+<span class="returnvalue">void</span>
 </td>
 <td class="function_name">
 <a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-subtitle-uri" title="gst_player_set_subtitle_uri ()">gst_player_set_subtitle_uri</a> <span class="c_punctuation">()</span>
@@ -363,6 +363,54 @@
 </tr>
 <tr>
 <td class="function_type">
+<a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewMode"><span class="returnvalue">GstVideoMultiviewMode</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-get-multiview-mode" title="gst_player_get_multiview_mode ()">gst_player_get_multiview_mode</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-multiview-mode" title="gst_player_set_multiview_mode ()">gst_player_set_multiview_mode</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewFlags"><span class="returnvalue">GstVideoMultiviewFlags</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-get-multiview-flags" title="gst_player_get_multiview_flags ()">gst_player_get_multiview_flags</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-multiview-flags" title="gst_player_set_multiview_flags ()">gst_player_set_multiview_flags</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint64"><span class="returnvalue">gint64</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-get-audio-video-offset" title="gst_player_get_audio_video_offset ()">gst_player_get_audio_video_offset</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-audio-video-offset" title="gst_player_set_audio_video_offset ()">gst_player_set_audio_video_offset</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a>
 </td>
 <td class="function_name">
@@ -377,6 +425,38 @@
 <a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-rate" title="gst_player_set_rate ()">gst_player_set_rate</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-config-set-position-update-interval" title="gst_player_config_set_position_update_interval ()">gst_player_config_set_position_update_interval</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-config-get-position-update-interval" title="gst_player_config_get_position_update_interval ()">gst_player_config_get_position_update_interval</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-config-set-user-agent" title="gst_player_config_set_user_agent ()">gst_player_config_set_user_agent</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-config-get-user-agent" title="gst_player_config_get_user_agent ()">gst_player_config_get_user_agent</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -390,6 +470,11 @@
 </colgroup>
 <tbody>
 <tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint64"><span class="type">gint64</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer--audio-video-offset" title="The “audio-video-offset” property">audio-video-offset</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
 <td class="property_type">
 <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a> *</td>
 <td class="property_name"><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer--current-audio-track" title="The “current-audio-track” property">current-audio-track</a></td>
@@ -435,11 +520,6 @@
 <td class="property_flags">Read</td>
 </tr>
 <tr>
-<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer--position-update-interval" title="The “position-update-interval” property">position-update-interval</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
 <td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer--rate" title="The “rate” property">rate</a></td>
 <td class="property_flags">Read / Write</td>
@@ -463,6 +543,16 @@
 <td class="property_flags">Read / Write</td>
 </tr>
 <tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewFlags"><span class="type">GstVideoMultiviewFlags</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer--video-multiview-flags" title="The “video-multiview-flags” property">video-multiview-flags</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewFramePacking"><span class="type">GstVideoMultiviewFramePacking</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer--video-multiview-mode" title="The “video-multiview-mode” property">video-multiview-mode</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
 <td class="property_type">
 <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerVideoRenderer"><span class="type">GstPlayerVideoRenderer</span></a> *</td>
 <td class="property_name"><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer--video-renderer" title="The “video-renderer” property">video-renderer</a></td>
@@ -532,6 +622,11 @@
 </tr>
 <tr>
 <td class="signal_type"><span class="returnvalue">void</span></td>
+<td class="signal_name"><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer-uri-loaded" title="The “uri-loaded” signal">uri-loaded</a></td>
+<td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-NO-HOOKS:CAPS">No Hooks</a></td>
+</tr>
+<tr>
+<td class="signal_type"><span class="returnvalue">void</span></td>
 <td class="signal_name"><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer-video-dimensions-changed" title="The “video-dimensions-changed” signal">video-dimensions-changed</a></td>
 <td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-NO-HOOKS:CAPS">No Hooks</a></td>
 </tr>
@@ -1019,15 +1114,21 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-player-set-position-update-interval"></a><h3>gst_player_set_position_update_interval ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_player_set_position_update_interval
-                               (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
-                                <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> interval</code></em>);</pre>
-<p>Set interval in milliseconds between two position-updated signals.
-Pass 0 to stop updating the position.</p>
+<a name="gst-player-set-config"></a><h3>gst_player_set_config ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_player_set_config (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
+                       <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstStructure.html#GstStructure-struct"><span class="type">GstStructure</span></a> *config</code></em>);</pre>
+<p>Set the configuration of the player. If the player is already configured, and
+the configuration haven't change, this function will return <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>. If the
+player is not in the GST_PLAYER_STATE_STOPPED, this method will return <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>
+and active configuration will remain.</p>
+<p><em class="parameter"><code>config</code></em>
+ is a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstStructure.html#GstStructure-struct"><span class="type">GstStructure</span></a> that contains the configuration parameters for
+the player.</p>
+<p>This function takes ownership of <em class="parameter"><code>config</code></em>
+.</p>
 <div class="refsect3">
-<a name="gst-player-set-position-update-interval.parameters"></a><h4>Parameters</h4>
+<a name="gst-player-set-config.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1041,22 +1142,29 @@
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
-<td class="parameter_name"><p>interval</p></td>
-<td class="parameter_description"><p>interval in ms</p></td>
-<td class="parameter_annotations"> </td>
+<td class="parameter_name"><p>config</p></td>
+<td class="parameter_description"><p> a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstStructure.html#GstStructure-struct"><span class="type">GstStructure</span></a>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
 </tr>
 </tbody>
 </table></div>
 </div>
+<div class="refsect3">
+<a name="gst-player-set-config.returns"></a><h4>Returns</h4>
+<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> when the configuration could be set.
+Since 1.10</p>
+</div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-player-get-position-update-interval"></a><h3>gst_player_get_position_update_interval ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
-gst_player_get_position_update_interval
-                               (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
+<a name="gst-player-get-config"></a><h3>gst_player_get_config ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstStructure.html#GstStructure-struct"><span class="returnvalue">GstStructure</span></a> *
+gst_player_get_config (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
+<p>Get a copy of the current configuration of the player. This configuration
+can either be modified and used for the <a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-config" title="gst_player_set_config ()"><code class="function">gst_player_set_config()</code></a> call
+or it must be freed after usage.</p>
 <div class="refsect3">
-<a name="gst-player-get-position-update-interval.parameters"></a><h4>Parameters</h4>
+<a name="gst-player-get-config.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
@@ -1071,8 +1179,12 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="gst-player-get-position-update-interval.returns"></a><h4>Returns</h4>
-<p> current position update interval in milliseconds</p>
+<a name="gst-player-get-config.returns"></a><h4>Returns</h4>
+<p> a copy of the current configuration of <em class="parameter"><code>player</code></em>
+. Use
+<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstStructure.html#gst-structure-free"><code class="function">gst_structure_free()</code></a> after usage or <a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-config" title="gst_player_set_config ()"><code class="function">gst_player_set_config()</code></a>.</p>
+<p>Since 1.10. </p>
+<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
 </div>
 <hr>
@@ -1520,7 +1632,7 @@
 <hr>
 <div class="refsect2">
 <a name="gst-player-set-subtitle-uri"></a><h3>gst_player_set_subtitle_uri ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+<pre class="programlisting"><span class="returnvalue">void</span>
 gst_player_set_subtitle_uri (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
                              <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *uri</code></em>);</pre>
 <div class="refsect3">
@@ -1807,6 +1919,191 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-player-get-multiview-mode"></a><h3>gst_player_get_multiview_mode ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewMode"><span class="returnvalue">GstVideoMultiviewMode</span></a>
+gst_player_get_multiview_mode (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
+<p>Retrieve the current value of the indicated <em class="parameter"><code>type</code></em>
+.</p>
+<div class="refsect3">
+<a name="gst-player-get-multiview-mode.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>player</p></td>
+<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-player-get-multiview-mode.returns"></a><h4>Returns</h4>
+<p> The current value of <em class="parameter"><code>type</code></em>
+, Default: -1 "none"</p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-player-set-multiview-mode"></a><h3>gst_player_set_multiview_mode ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_player_set_multiview_mode (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
+                               <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewMode"><span class="type">GstVideoMultiviewMode</span></a> mode</code></em>);</pre>
+<p>Sets the current value of the indicated mode <em class="parameter"><code>type</code></em>
+ to the passed
+value.</p>
+<div class="refsect3">
+<a name="gst-player-set-multiview-mode.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>player</p></td>
+<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>mode</p></td>
+<td class="parameter_description"><p>The new value for the <em class="parameter"><code>type</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-player-get-multiview-flags"></a><h3>gst_player_get_multiview_flags ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewFlags"><span class="returnvalue">GstVideoMultiviewFlags</span></a>
+gst_player_get_multiview_flags (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
+<p>Retrieve the current value of the indicated <em class="parameter"><code>type</code></em>
+.</p>
+<div class="refsect3">
+<a name="gst-player-get-multiview-flags.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>player</p></td>
+<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-player-get-multiview-flags.returns"></a><h4>Returns</h4>
+<p> The current value of <em class="parameter"><code>type</code></em>
+, Default: 0x00000000 "none</p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-player-set-multiview-flags"></a><h3>gst_player_set_multiview_flags ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_player_set_multiview_flags (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
+                                <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewFlags"><span class="type">GstVideoMultiviewFlags</span></a> flags</code></em>);</pre>
+<p>Sets the current value of the indicated mode <em class="parameter"><code>type</code></em>
+ to the passed
+value.</p>
+<div class="refsect3">
+<a name="gst-player-set-multiview-flags.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>player</p></td>
+<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>flags</p></td>
+<td class="parameter_description"><p>The new value for the <em class="parameter"><code>type</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-player-get-audio-video-offset"></a><h3>gst_player_get_audio_video_offset ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint64"><span class="returnvalue">gint64</span></a>
+gst_player_get_audio_video_offset (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
+<p>Retrieve the current value of audio-video-offset property</p>
+<div class="refsect3">
+<a name="gst-player-get-audio-video-offset.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>player</p></td>
+<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-player-get-audio-video-offset.returns"></a><h4>Returns</h4>
+<p> The current value of audio-video-offset in nanoseconds</p>
+<p>Since 1.10</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-player-set-audio-video-offset"></a><h3>gst_player_set_audio_video_offset ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_player_set_audio_video_offset (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
+                                   <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint64"><span class="type">gint64</span></a> offset</code></em>);</pre>
+<p>Sets audio-video-offset property by value of <em class="parameter"><code>offset</code></em>
+</p>
+<p>Since 1.10</p>
+<div class="refsect3">
+<a name="gst-player-set-audio-video-offset.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>player</p></td>
+<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>offset</p></td>
+<td class="parameter_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint64"><span class="type">gint64</span></a> in nanoseconds</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-player-get-rate"></a><h3>gst_player_get_rate ()</h3>
 <pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a>
 gst_player_get_rate (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
@@ -1860,6 +2157,129 @@
 </table></div>
 </div>
 </div>
+<hr>
+<div class="refsect2">
+<a name="gst-player-config-set-position-update-interval"></a><h3>gst_player_config_set_position_update_interval ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_player_config_set_position_update_interval
+                               (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstStructure.html#GstStructure-struct"><span class="type">GstStructure</span></a> *config</code></em>,
+                                <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> interval</code></em>);</pre>
+<p>set interval in milliseconds between two position-updated signals.
+pass 0 to stop updating the position.
+Since 1.10</p>
+<div class="refsect3">
+<a name="gst-player-config-set-position-update-interval.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>config</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> configuration</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>interval</p></td>
+<td class="parameter_description"><p>interval in ms</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-player-config-get-position-update-interval"></a><h3>gst_player_config_get_position_update_interval ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+gst_player_config_get_position_update_interval
+                               (<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstStructure.html#GstStructure-struct"><span class="type">GstStructure</span></a> *config</code></em>);</pre>
+<div class="refsect3">
+<a name="gst-player-config-get-position-update-interval.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>config</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> configuration</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-player-config-get-position-update-interval.returns"></a><h4>Returns</h4>
+<p> current position update interval in milliseconds</p>
+<p>Since 1.10</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-player-config-set-user-agent"></a><h3>gst_player_config_set_user_agent ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_player_config_set_user_agent (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstStructure.html#GstStructure-struct"><span class="type">GstStructure</span></a> *config</code></em>,
+                                  <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *agent</code></em>);</pre>
+<p>Set the user agent to pass to the server if <em class="parameter"><code>player</code></em>
+ needs to connect
+to a server during playback. This is typically used when playing HTTP
+or RTSP streams.</p>
+<p>Since 1.10</p>
+<div class="refsect3">
+<a name="gst-player-config-set-user-agent.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>config</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> configuration</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>agent</p></td>
+<td class="parameter_description"><p>the string to use as user agent</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-player-config-get-user-agent"></a><h3>gst_player_config_get_user_agent ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+gst_player_config_get_user_agent (<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstStructure.html#GstStructure-struct"><span class="type">GstStructure</span></a> *config</code></em>);</pre>
+<p>Return the user agent which has been configured using
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-config-set-user-agent" title="gst_player_config_set_user_agent ()"><code class="function">gst_player_config_set_user_agent()</code></a> if any.</p>
+<div class="refsect3">
+<a name="gst-player-config-get-user-agent.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>config</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> configuration</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-player-config-get-user-agent.returns"></a><h4>Returns</h4>
+<p> the configured agent, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
+Since 1.10. </p>
+<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+</div>
+</div>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-gstplayer.other_details"></a><h2>Types and Values</h2>
@@ -2022,6 +2442,14 @@
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-gstplayer.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
+<a name="GstPlayer--audio-video-offset"></a><h3>The <code class="literal">“audio-video-offset”</code> property</h3>
+<pre class="programlisting">  “audio-video-offset”       <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint64"><span class="type">gint64</span></a></pre>
+<p>The synchronisation offset between audio and video in nanoseconds.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstPlayer--current-audio-track"></a><h3>The <code class="literal">“current-audio-track”</code> property</h3>
 <pre class="programlisting">  “current-audio-track”      <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a> *</pre>
 <p>Current audio track information.</p>
@@ -2081,15 +2509,6 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="GstPlayer--position-update-interval"></a><h3>The <code class="literal">“position-update-interval”</code> property</h3>
-<pre class="programlisting">  “position-update-interval” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
-<p>Interval in milliseconds between two position-updated signals.Pass 0 to stop updating the position.</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &lt;= 10000</p>
-<p>Default value: 100</p>
-</div>
-<hr>
-<div class="refsect2">
 <a name="GstPlayer--rate"></a><h3>The <code class="literal">“rate”</code> property</h3>
 <pre class="programlisting">  “rate”                     <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
 <p>Playback rate.</p>
@@ -2122,6 +2541,21 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstPlayer--video-multiview-flags"></a><h3>The <code class="literal">“video-multiview-flags”</code> property</h3>
+<pre class="programlisting">  “video-multiview-flags”    <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewFlags"><span class="type">GstVideoMultiviewFlags</span></a></pre>
+<p>Override details of the multiview frame layout.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstPlayer--video-multiview-mode"></a><h3>The <code class="literal">“video-multiview-mode”</code> property</h3>
+<pre class="programlisting">  “video-multiview-mode”     <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewFramePacking"><span class="type">GstVideoMultiviewFramePacking</span></a></pre>
+<p>Re-interpret a video stream as one of several frame-packed stereoscopic modes.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: GST_VIDEO_MULTIVIEW_FRAME_PACKING_NONE</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstPlayer--video-renderer"></a><h3>The <code class="literal">“video-renderer”</code> property</h3>
 <pre class="programlisting">  “video-renderer”           <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerVideoRenderer"><span class="type">GstPlayerVideoRenderer</span></a> *</pre>
 <p>Video renderer to use for rendering videos.</p>
@@ -2219,6 +2653,15 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GstPlayer-uri-loaded"></a><h3>The <code class="literal">“uri-loaded”</code> signal</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+user_function (<a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *gstplayer,
+               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a>     *arg1,
+               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>   user_data)</pre>
+<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-NO-HOOKS:CAPS">No Hooks</a></p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstPlayer-video-dimensions-changed"></a><h3>The <code class="literal">“video-dimensions-changed”</code> signal</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
 user_function (<a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *gstplayer,
diff --git a/docs/libs/html/gst-plugins-bad-libs-h264parser.html b/docs/libs/html/gst-plugins-bad-libs-h264parser.html
index 404dc52..eca1b07 100644
--- a/docs/libs/html/gst-plugins-bad-libs-h264parser.html
+++ b/docs/libs/html/gst-plugins-bad-libs-h264parser.html
@@ -1697,7 +1697,7 @@
   gint width, height;
   gint crop_rect_width, crop_rect_height;
   gint crop_rect_x, crop_rect_y;
-  gint fps_num, fps_den;
+  gint fps_num_removed, fps_den_removed; /* FIXME: remove */
   gboolean valid;
 
   /* Subset SPS extensions */
@@ -1953,12 +1953,12 @@
 <td> </td>
 </tr>
 <tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstH264SPS.fps-num"></a>fps_num</code></em>;</p></td>
+<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstH264SPS.fps-num-removed"></a>fps_num_removed</code></em>;</p></td>
 <td> </td>
 <td> </td>
 </tr>
 <tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstH264SPS.fps-den"></a>fps_den</code></em>;</p></td>
+<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstH264SPS.fps-den-removed"></a>fps_den_removed</code></em>;</p></td>
 <td> </td>
 <td> </td>
 </tr>
@@ -2214,7 +2214,7 @@
 </tr>
 <tr>
 <td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.overscan-info-present-flag"></a>overscan_info_present_flag</code></em>;</p></td>
-<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> overscan_appropriate_flag is present <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwize</p></td>
+<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> overscan_appropriate_flag is present <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
@@ -2264,7 +2264,7 @@
 <tr>
 <td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.chroma-loc-info-present-flag"></a>chroma_loc_info_present_flag</code></em>;</p></td>
 <td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> specifies that chroma_sample_loc_type_top_field and
-chroma_sample_loc_type_bottom_field are present, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwize</p></td>
+chroma_sample_loc_type_bottom_field are present, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
@@ -2300,7 +2300,7 @@
 <td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.fixed-frame-rate-flag"></a>fixed_frame_rate_flag</code></em>;</p></td>
 <td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> indicates that the temporal distance between the HRD output times
 of any two consecutive pictures in output order is constrained as specified in the spec, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>
-otherwize.</p></td>
+otherwise.</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
diff --git a/docs/libs/html/gst-plugins-bad-libs-mpeg4parser.html b/docs/libs/html/gst-plugins-bad-libs-mpeg4parser.html
index f1f03f6..54a9a29 100644
--- a/docs/libs/html/gst-plugins-bad-libs-mpeg4parser.html
+++ b/docs/libs/html/gst-plugins-bad-libs-mpeg4parser.html
@@ -231,7 +231,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>skip_user_data</p></td>
-<td class="parameter_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> to skip user data packet <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwize</p></td>
+<td class="parameter_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> to skip user data packet <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
diff --git a/docs/libs/html/gst-plugins-bad-libs-mpegvideoparser.html b/docs/libs/html/gst-plugins-bad-libs-mpegvideoparser.html
index 6e731a1..82f7c7a 100644
--- a/docs/libs/html/gst-plugins-bad-libs-mpegvideoparser.html
+++ b/docs/libs/html/gst-plugins-bad-libs-mpegvideoparser.html
@@ -307,7 +307,7 @@
 </div>
 <div class="refsect3">
 <a name="gst-mpeg-video-parse-sequence-header.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the seqhdr could be parsed correctly, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwize.</p>
+<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the seqhdr could be parsed correctly, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
 </div>
 </div>
 <hr>
@@ -361,7 +361,7 @@
 <div class="refsect3">
 <a name="gst-mpeg-video-parse-picture-header.returns"></a><h4>Returns</h4>
 <p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the picture sequence could be parsed correctly, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>
-otherwize.</p>
+otherwise.</p>
 </div>
 </div>
 <hr>
@@ -416,7 +416,7 @@
 <div class="refsect3">
 <a name="gst-mpeg-video-parse-picture-extension.returns"></a><h4>Returns</h4>
 <p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the picture extension could be parsed correctly,
-<a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwize.</p>
+<a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
 </div>
 </div>
 <hr>
@@ -469,7 +469,7 @@
 </div>
 <div class="refsect3">
 <a name="gst-mpeg-video-parse-gop.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the gop could be parsed correctly, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwize.</p>
+<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the gop could be parsed correctly, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
 </div>
 </div>
 <hr>
@@ -524,7 +524,7 @@
 </div>
 <div class="refsect3">
 <a name="gst-mpeg-video-parse-sequence-extension.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the seqext could be parsed correctly, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwize.</p>
+<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the seqext could be parsed correctly, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
 </div>
 </div>
 <hr>
@@ -591,7 +591,7 @@
 <div class="refsect3">
 <a name="gst-mpeg-video-parse-quant-matrix-extension.returns"></a><h4>Returns</h4>
 <p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the quant matrix extension could be parsed correctly,
-<a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwize.</p>
+<a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise.</p>
 </div>
 </div>
 <hr>
@@ -1016,7 +1016,9 @@
 
   guint8  constrained_parameters_flag;
 
+  guint8  load_intra_quantiser_matrix;
   guint8  intra_quantizer_matrix[64];
+  guint8  load_non_intra_quantiser_matrix;
   guint8  non_intra_quantizer_matrix[64];
 
   /* Calculated values */
@@ -1071,11 +1073,21 @@
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
+<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceHdr.load-intra-quantiser-matrix"></a>load_intra_quantiser_matrix</code></em>;</p></td>
+<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> indicates the presence of intra_quantiser_matrix</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
 <td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceHdr.intra-quantizer-matrix"></a>intra_quantizer_matrix</code></em>[64];</p></td>
 <td class="struct_member_description"><p>intra-quantization table, in zigzag scan order</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
+<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceHdr.load-non-intra-quantiser-matrix"></a>load_non_intra_quantiser_matrix</code></em>;</p></td>
+<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> indicates the presence of non_intra_quantiser_matrix</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
 <td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceHdr.non-intra-quantizer-matrix"></a>non_intra_quantizer_matrix</code></em>[64];</p></td>
 <td class="struct_member_description"><p>non-intra quantization table, in zigzag scan order</p></td>
 <td class="struct_member_annotations"> </td>
@@ -1216,6 +1228,7 @@
 <pre class="programlisting">struct GstMpegVideoPictureHdr {
   guint16 tsn;
   guint8 pic_type;
+  guint16 vbv_delay;
 
   guint8 full_pel_forward_vector, full_pel_backward_vector;
 
@@ -1243,6 +1256,11 @@
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
+<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureHdr.vbv-delay"></a>vbv_delay</code></em>;</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
 <td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureHdr.full-pel-forward-vector"></a>full_pel_forward_vector</code></em>;</p></td>
 <td class="struct_member_description"><p>the full pel forward flag of
 the frame: 0 or 1.</p></td>
@@ -1416,7 +1434,7 @@
 </tr>
 <tr>
 <td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureExt.progressive-frame"></a>progressive_frame</code></em>;</p></td>
-<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the frame is progressive <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwize</p></td>
+<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the frame is progressive <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
diff --git a/docs/libs/html/gst-plugins-bad-libs-vc1parser.html b/docs/libs/html/gst-plugins-bad-libs-vc1parser.html
index 0d38ca3..ccae74d 100644
--- a/docs/libs/html/gst-plugins-bad-libs-vc1parser.html
+++ b/docs/libs/html/gst-plugins-bad-libs-vc1parser.html
@@ -687,7 +687,7 @@
 </div>
 <div class="refsect3">
 <a name="gst-vc1-bitplanes-ensure-size.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if everything went fine, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwize</p>
+<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if everything went fine, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
 </div>
 </div>
 </div>
diff --git a/docs/libs/html/gstreamer-libs-hierarchy.html b/docs/libs/html/gstreamer-libs-hierarchy.html
index 0ddd4d9..94793a3 100644
--- a/docs/libs/html/gstreamer-libs-hierarchy.html
+++ b/docs/libs/html/gstreamer-libs-hierarchy.html
@@ -42,13 +42,13 @@
     <span class="lineart">│</span>       <span class="lineart">├──</span> <a class="link" href="GstGLColorConvert.html" title="GstGLColorConvert">GstGLColorConvert</a>
     <span class="lineart">│</span>       <span class="lineart">├──</span> <a class="link" href="GstGLContext.html" title="GstGLContext">GstGLContext</a>
     <span class="lineart">│</span>       <span class="lineart">├──</span> <a class="link" href="GstGLDisplay.html" title="GstGLDisplay">GstGLDisplay</a>
+    <span class="lineart">│</span>       <span class="lineart">├──</span> <a class="link" href="GstGLFramebuffer.html" title="GstGLFramebuffer">GstGLFramebuffer</a>
     <span class="lineart">│</span>       <span class="lineart">├──</span> <a class="link" href="GstGLShader.html" title="GstGLShader">GstGLShader</a>
     <span class="lineart">│</span>       <span class="lineart">├──</span> <a class="link" href=".html#GstGLSLStage">GstGLSLStage</a>
     <span class="lineart">│</span>       <span class="lineart">├──</span> <a class="link" href="GstGLUpload.html" title="GstGLUpload">GstGLUpload</a>
     <span class="lineart">│</span>       <span class="lineart">├──</span> GstGLViewConvert
     <span class="lineart">│</span>       <span class="lineart">├──</span> <a class="link" href="GstGLWindow.html" title="GstGLWindow">GstGLWindow</a>
     <span class="lineart">│</span>       <span class="lineart">╰──</span> <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer">GstPlayer</a>
-    <span class="lineart">├──</span> <a class="link" href="GstGLFramebuffer.html" title="GstGLFramebuffer">GstGLFramebuffer</a>
     <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerStreamInfo">GstPlayerStreamInfo</a>
     <span class="lineart">│</span>   <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo">GstPlayerAudioInfo</a>
     <span class="lineart">│</span>   <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerSubtitleInfo">GstPlayerSubtitleInfo</a>
diff --git a/docs/libs/html/index.html b/docs/libs/html/index.html
index dc2f729..9ea1815 100644
--- a/docs/libs/html/index.html
+++ b/docs/libs/html/index.html
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GStreamer Bad Plugins 1.0 Library Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for GStreamer Bad Library 1.0 (1.8.3)
+      for GStreamer Bad Library 1.0 (1.9.90)
       <a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/</a>.
     </p></div>
 </div>
diff --git a/docs/plugins/Makefile.am b/docs/plugins/Makefile.am
index 7607b55..0dc14f8 100644
--- a/docs/plugins/Makefile.am
+++ b/docs/plugins/Makefile.am
@@ -25,7 +25,7 @@
 SCAN_OPTIONS=
 
 # Extra options to supply to gtkdoc-mkdb.
-MKDB_OPTIONS=--sgml-mode --source-suffixes=c,h,cc,m
+MKDB_OPTIONS=--sgml-mode --source-suffixes=c,h,cc,cpp,m
 
 # Extra options to supply to gtkdoc-fixref.
 FIXXREF_OPTIONS=--extra-dir=$(GLIB_PREFIX)/share/gtk-doc/html \
@@ -38,7 +38,8 @@
   $(top_srcdir)/ext/*/*.hh
 CFILE_GLOB= \
   $(top_srcdir)/gst/*/*.c $(top_srcdir)/ext/*/*.c $(top_srcdir)/sys/*/*.c \
-  $(top_srcdir)/ext/*/*.cc $(top_srcdir)/sys/*/*.m
+  $(top_srcdir)/ext/*/*.cc $(top_srcdir)/ext/*/*.cpp  $(top_srcdir)/sys/*/*.cpp \
+  $(top_srcdir)/ext/*/*.m $(top_srcdir)/sys/*/*.m
 
 # Header files to ignore when scanning.
 IGNORE_HFILES =
@@ -69,7 +70,7 @@
 	$(top_srcdir)/ext/curl/gstcurlhttpsink.h \
 	$(top_srcdir)/ext/curl/gstcurlsmtpsink.h \
 	$(top_srcdir)/ext/curl/gstcurltlssink.h \
-	$(top_srcdir)/ext/dc1394/gstdc1394.h \
+	$(top_srcdir)/ext/dc1394/gstdc1394src.h \
 	$(top_srcdir)/ext/directfb/dfbvideosink.h \
 	$(top_srcdir)/ext/dts/gstdtsdec.h \
 	$(top_srcdir)/ext/faac/gstfaac.h \
@@ -94,12 +95,13 @@
 	$(top_srcdir)/ext/opencv/gstedgedetect.h \
 	$(top_srcdir)/ext/opencv/gstfaceblur.h \
 	$(top_srcdir)/ext/opencv/gstfacedetect.h \
-	$(top_srcdir)/ext/opencv/gstpyramidsegment.h \
 	$(top_srcdir)/ext/opencv/gsttemplatematch.h \
 	$(top_srcdir)/ext/opencv/gsttextoverlay.h \
 	$(top_srcdir)/ext/openni2/gstopenni2src.h \
 	$(top_srcdir)/ext/rsvg/gstrsvgdec.h \
 	$(top_srcdir)/ext/rsvg/gstrsvgoverlay.h \
+	$(top_srcdir)/ext/rtmp/gstrtmpsrc.h \
+	$(top_srcdir)/ext/rtmp/gstrtmpsink.h \
 	$(top_srcdir)/ext/spandsp/gstspanplc.h \
 	$(top_srcdir)/ext/spandsp/gstdtmfdetect.h \
 	$(top_srcdir)/ext/sdl/sdlaudiosink.h \
@@ -108,6 +110,8 @@
 	$(top_srcdir)/ext/timidity/gstwildmidi.h \
 	$(top_srcdir)/ext/voaacenc/gstvoaacenc.h \
 	$(top_srcdir)/ext/voamrwbenc/gstvoamrwbenc.h \
+	$(top_srcdir)/ext/webrtcdsp/gstwebrtcdsp.h \
+	$(top_srcdir)/ext/webrtcdsp/gstwebrtcechoprobe.h \
 	$(top_srcdir)/ext/zbar/gstzbar.h \
 	$(top_srcdir)/gst/aiff/aiffparse.h \
 	$(top_srcdir)/gst/aiff/aiffmux.h \
@@ -150,6 +154,8 @@
 	$(top_srcdir)/gst/geometrictransform/gstwaterripple.h \
 	$(top_srcdir)/gst/ivfparse/gstivfparse.h \
 	$(top_srcdir)/gst/jpegformat/gstjpegparse.h \
+	$(top_srcdir)/gst/mpegtsdemux/tsdemux.h \
+	$(top_srcdir)/gst/mpegtsmux/mpegtsmux.h \
 	$(top_srcdir)/gst/mxf/mxfdemux.h \
 	$(top_srcdir)/gst/mxf/mxfmux.h \
 	$(top_srcdir)/gst/nuvdemux/gstnuvdemux.h \
diff --git a/docs/plugins/Makefile.in b/docs/plugins/Makefile.in
index c2aae2c..e6306ae 100644
--- a/docs/plugins/Makefile.in
+++ b/docs/plugins/Makefile.in
@@ -295,6 +295,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -316,6 +318,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -365,6 +369,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -510,6 +516,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -636,8 +644,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -680,8 +686,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -798,7 +809,7 @@
 SCAN_OPTIONS = 
 
 # Extra options to supply to gtkdoc-mkdb.
-MKDB_OPTIONS = --sgml-mode --source-suffixes=c,h,cc,m
+MKDB_OPTIONS = --sgml-mode --source-suffixes=c,h,cc,cpp,m
 
 # Extra options to supply to gtkdoc-fixref.
 FIXXREF_OPTIONS = --extra-dir=$(GLIB_PREFIX)/share/gtk-doc/html \
@@ -813,7 +824,8 @@
 
 CFILE_GLOB = \
   $(top_srcdir)/gst/*/*.c $(top_srcdir)/ext/*/*.c $(top_srcdir)/sys/*/*.c \
-  $(top_srcdir)/ext/*/*.cc $(top_srcdir)/sys/*/*.m
+  $(top_srcdir)/ext/*/*.cc $(top_srcdir)/ext/*/*.cpp  $(top_srcdir)/sys/*/*.cpp \
+  $(top_srcdir)/ext/*/*.m $(top_srcdir)/sys/*/*.m
 
 
 # Header files to ignore when scanning.
@@ -845,7 +857,7 @@
 	$(top_srcdir)/ext/curl/gstcurlhttpsink.h \
 	$(top_srcdir)/ext/curl/gstcurlsmtpsink.h \
 	$(top_srcdir)/ext/curl/gstcurltlssink.h \
-	$(top_srcdir)/ext/dc1394/gstdc1394.h \
+	$(top_srcdir)/ext/dc1394/gstdc1394src.h \
 	$(top_srcdir)/ext/directfb/dfbvideosink.h \
 	$(top_srcdir)/ext/dts/gstdtsdec.h \
 	$(top_srcdir)/ext/faac/gstfaac.h \
@@ -870,12 +882,13 @@
 	$(top_srcdir)/ext/opencv/gstedgedetect.h \
 	$(top_srcdir)/ext/opencv/gstfaceblur.h \
 	$(top_srcdir)/ext/opencv/gstfacedetect.h \
-	$(top_srcdir)/ext/opencv/gstpyramidsegment.h \
 	$(top_srcdir)/ext/opencv/gsttemplatematch.h \
 	$(top_srcdir)/ext/opencv/gsttextoverlay.h \
 	$(top_srcdir)/ext/openni2/gstopenni2src.h \
 	$(top_srcdir)/ext/rsvg/gstrsvgdec.h \
 	$(top_srcdir)/ext/rsvg/gstrsvgoverlay.h \
+	$(top_srcdir)/ext/rtmp/gstrtmpsrc.h \
+	$(top_srcdir)/ext/rtmp/gstrtmpsink.h \
 	$(top_srcdir)/ext/spandsp/gstspanplc.h \
 	$(top_srcdir)/ext/spandsp/gstdtmfdetect.h \
 	$(top_srcdir)/ext/sdl/sdlaudiosink.h \
@@ -884,6 +897,8 @@
 	$(top_srcdir)/ext/timidity/gstwildmidi.h \
 	$(top_srcdir)/ext/voaacenc/gstvoaacenc.h \
 	$(top_srcdir)/ext/voamrwbenc/gstvoamrwbenc.h \
+	$(top_srcdir)/ext/webrtcdsp/gstwebrtcdsp.h \
+	$(top_srcdir)/ext/webrtcdsp/gstwebrtcechoprobe.h \
 	$(top_srcdir)/ext/zbar/gstzbar.h \
 	$(top_srcdir)/gst/aiff/aiffparse.h \
 	$(top_srcdir)/gst/aiff/aiffmux.h \
@@ -926,6 +941,8 @@
 	$(top_srcdir)/gst/geometrictransform/gstwaterripple.h \
 	$(top_srcdir)/gst/ivfparse/gstivfparse.h \
 	$(top_srcdir)/gst/jpegformat/gstjpegparse.h \
+	$(top_srcdir)/gst/mpegtsdemux/tsdemux.h \
+	$(top_srcdir)/gst/mpegtsmux/mpegtsmux.h \
 	$(top_srcdir)/gst/mxf/mxfdemux.h \
 	$(top_srcdir)/gst/mxf/mxfmux.h \
 	$(top_srcdir)/gst/nuvdemux/gstnuvdemux.h \
@@ -1503,9 +1520,13 @@
 @ENABLE_GTK_DOC_TRUE@		$(top_srcdir)/common/plugins.xsl $$a > xml/`basename $$a`; done
 @ENABLE_GTK_DOC_TRUE@	@for f in $(EXAMPLE_CFILES); do \
 @ENABLE_GTK_DOC_TRUE@		$(PYTHON) $(top_srcdir)/common/c-to-xml.py $$f > xml/element-`basename $$f .c`.xml; done
-@ENABLE_GTK_DOC_TRUE@	@gtkdoc-mkdb \
+@ENABLE_GTK_DOC_TRUE@	@_source_dir='' ;						\
+@ENABLE_GTK_DOC_TRUE@	for i in $(DOC_SOURCE_DIR) ; do					\
+@ENABLE_GTK_DOC_TRUE@	    _source_dir="$${_source_dir} --source-dir=$$i" ;	        \
+@ENABLE_GTK_DOC_TRUE@	done ;								\
+@ENABLE_GTK_DOC_TRUE@	gtkdoc-mkdb \
 @ENABLE_GTK_DOC_TRUE@		--module=$(DOC_MODULE) \
-@ENABLE_GTK_DOC_TRUE@		--source-dir=$(DOC_SOURCE_DIR) \
+@ENABLE_GTK_DOC_TRUE@		$${_source_dir} \
 @ENABLE_GTK_DOC_TRUE@		 --expand-content-files="$(expand_content_files)" \
 @ENABLE_GTK_DOC_TRUE@		--main-sgml-file=$(srcdir)/$(DOC_MAIN_SGML_FILE) \
 @ENABLE_GTK_DOC_TRUE@		--output-format=xml \
diff --git a/docs/plugins/gst-plugins-bad-plugins-docs.sgml b/docs/plugins/gst-plugins-bad-plugins-docs.sgml
index 710ced5..dea2355 100644
--- a/docs/plugins/gst-plugins-bad-plugins-docs.sgml
+++ b/docs/plugins/gst-plugins-bad-plugins-docs.sgml
@@ -23,6 +23,7 @@
     <xi:include href="xml/element-assrender.xml" />
     <xi:include href="xml/element-audiointerleave.xml" />
     <xi:include href="xml/element-audiomixer.xml" />
+    <xi:include href="xml/element-audioparse.xml" />
     <xi:include href="xml/element-autoconvert.xml" />
     <xi:include href="xml/element-bs2b.xml" />
     <xi:include href="xml/element-bulge.xml" />
@@ -57,6 +58,52 @@
     <xi:include href="xml/element-fisheye.xml" />
     <xi:include href="xml/element-fpsdisplaysink.xml" />
     <xi:include href="xml/element-gaussianblur.xml" />
+    <xi:include href="xml/element-glcolorbalance.xml" />
+    <xi:include href="xml/element-glcolorconvert.xml" />
+    <xi:include href="xml/element-glcolorscale.xml" />
+    <xi:include href="xml/element-gldeinterlace.xml" />
+    <xi:include href="xml/element-gldifferencematte.xml" />
+    <xi:include href="xml/element-gldownload.xml" />
+    <xi:include href="xml/element-gleffects_blur.xml" />
+    <xi:include href="xml/element-gleffects_bulge.xml" />
+    <xi:include href="xml/element-gleffects_fisheye.xml" />
+    <xi:include href="xml/element-gleffects_glow.xml" />
+    <xi:include href="xml/element-gleffects_heat.xml" />
+    <xi:include href="xml/element-gleffects_identity.xml" />
+    <xi:include href="xml/element-gleffects_laplacian.xml" />
+    <xi:include href="xml/element-gleffects_lumaxpro.xml" />
+    <xi:include href="xml/element-gleffects_mirror.xml" />
+    <xi:include href="xml/element-gleffects_sepia.xml" />
+    <xi:include href="xml/element-gleffects_sin.xml" />
+    <xi:include href="xml/element-gleffects_sobel.xml" />
+    <xi:include href="xml/element-gleffects_square.xml" />
+    <xi:include href="xml/element-gleffects_squeeze.xml" />
+    <xi:include href="xml/element-gleffects_stretch.xml" />
+    <xi:include href="xml/element-gleffects_tunnel.xml" />
+    <xi:include href="xml/element-gleffects_twirl.xml" />
+    <xi:include href="xml/element-gleffects.xml" />
+    <xi:include href="xml/element-gleffects_xpro.xml" />
+    <xi:include href="xml/element-gleffects_xray.xml" />
+    <xi:include href="xml/element-glfilterapp.xml" />
+    <xi:include href="xml/element-glfilterbin.xml" />
+    <xi:include href="xml/element-glfiltercube.xml" />
+    <xi:include href="xml/element-glfilterglass.xml" />
+    <xi:include href="xml/element-glimagesinkelement.xml" />
+    <xi:include href="xml/element-glimagesink.xml" />
+    <xi:include href="xml/element-glmixerbin.xml" />
+    <xi:include href="xml/element-glmosaic.xml" />
+    <xi:include href="xml/element-gloverlay.xml" />
+    <xi:include href="xml/element-glshader.xml" />
+    <xi:include href="xml/element-glsinkbin.xml" />
+    <xi:include href="xml/element-glsrcbin.xml" />
+    <xi:include href="xml/element-glstereomix.xml" />
+    <xi:include href="xml/element-glstereosplit.xml" />
+    <xi:include href="xml/element-gltestsrc.xml" />
+    <xi:include href="xml/element-gltransformation.xml" />
+    <xi:include href="xml/element-glupload.xml" />
+    <xi:include href="xml/element-glvideomixerelement.xml" />
+    <xi:include href="xml/element-glvideomixer.xml" />
+    <xi:include href="xml/element-glviewconvert.xml" />
     <xi:include href="xml/element-jpegparse.xml" />
     <xi:include href="xml/element-kaleidoscope.xml" />
     <xi:include href="xml/element-liveadder.xml" />
@@ -75,7 +122,8 @@
     <xi:include href="xml/element-openalsink.xml" />
     <xi:include href="xml/element-pcapparse.xml" />
     <xi:include href="xml/element-pinch.xml" />
-    <xi:include href="xml/element-pyramidsegment.xml" />
+    <xi:include href="xml/element-rawaudioparse.xml" />
+    <xi:include href="xml/element-rawvideoparse.xml" />
     <xi:include href="xml/element-rfbsrc.xml" />
     <xi:include href="xml/element-rtmpsink.xml" />
     <xi:include href="xml/element-rtmpsrc.xml" />
@@ -94,12 +142,16 @@
     <xi:include href="xml/element-opencvtextoverlay.xml" />
     <xi:include href="xml/element-tunnel.xml" />
     <xi:include href="xml/element-twirl.xml" />
+    <xi:include href="xml/element-unalignedaudioparse.xml" />
+    <xi:include href="xml/element-unalignedvideoparse.xml" />
     <xi:include href="xml/element-videoparse.xml" />
     <xi:include href="xml/element-waterripple.xml" />
     <xi:include href="xml/element-zbar.xml" />
     <xi:include href="xml/element-voaacenc.xml" />
     <xi:include href="xml/element-voamrwbenc.xml" />
     <xi:include href="xml/element-wavescope.xml" />
+    <xi:include href="xml/element-webrtcdsp.xml" />
+    <xi:include href="xml/element-webrtcechoprobe.xml" />
   </chapter>
 
   <chapter>
@@ -137,6 +189,7 @@
     <xi:include href="xml/plugin-neon.xml" />
     <xi:include href="xml/plugin-ofa.xml" />
     <xi:include href="xml/plugin-openal.xml" />
+    <xi:include href="xml/plugin-opengl.xml" />
     <xi:include href="xml/plugin-opencv.xml" />
     <xi:include href="xml/plugin-pcapparse.xml" />
     <xi:include href="xml/plugin-rawparse.xml" />
@@ -148,6 +201,7 @@
     <xi:include href="xml/plugin-speed.xml" />
     <xi:include href="xml/plugin-voaacenc.xml" />
     <xi:include href="xml/plugin-voamrwbenc.xml" />
+    <xi:include href="xml/plugin-webrtcdsp.xml" />
     <xi:include href="xml/plugin-zbar.xml" />
   </chapter>
 </book>
diff --git a/docs/plugins/gst-plugins-bad-plugins-sections.txt b/docs/plugins/gst-plugins-bad-plugins-sections.txt
index 2c1365b..ba933c1 100644
--- a/docs/plugins/gst-plugins-bad-plugins-sections.txt
+++ b/docs/plugins/gst-plugins-bad-plugins-sections.txt
@@ -1,14 +1,96 @@
 <SECTION>
+<FILE>element-adpcmdec</FILE>
+<TITLE>adpcmdec</TITLE>
+GstCMDec
+<SUBSECTION Standard>
+GstCMDecClass
+GST_CM_DEC
+GST_CM_DEC_CAST
+GST_IS_CM_DEC
+GST_CM_DEC_CLASS
+GST_IS_CM_DEC_CLASS
+GST_TYPE_CM_DEC
+<SUBSECTION Private>
+gst_cm_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-adpcmenc</FILE>
+<TITLE>adpcmenc</TITLE>
+GstCMEnc
+<SUBSECTION Standard>
+GstCMEncClass
+GST_CM_ENC
+GST_CM_ENC_CAST
+GST_IS_CM_ENC
+GST_CM_ENC_CLASS
+GST_IS_CM_ENC_CLASS
+GST_TYPE_CM_ENC
+<SUBSECTION Private>
+gst_cm_enc_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-audioparse</FILE>
+<TITLE>audioparse</TITLE>
+GstAudioParse
+<SUBSECTION Standard>
+GstAudioParseClass
+GST_AUDIO_PARSE
+GST_AUDIO_PARSE_CAST
+GST_IS_AUDIO_PARSE
+GST_AUDIO_PARSE_CLASS
+GST_IS_AUDIO_PARSE_CLASS
+GST_TYPE_AUDIO_PARSE
+<SUBSECTION Private>
+gst_audio_parse_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-dvbbasebin</FILE>
+<TITLE>dvbbasebin</TITLE>
+GstBaseBin
+<SUBSECTION Standard>
+GstBaseBinClass
+GST_BASE_BIN
+GST_BASE_BIN_CAST
+GST_IS_BASE_BIN
+GST_BASE_BIN_CLASS
+GST_IS_BASE_BIN_CLASS
+GST_TYPE_BASE_BIN
+<SUBSECTION Private>
+gst_base_bin_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-a2dpsink</FILE>
+<TITLE>a2dpsink</TITLE>
+GstA2dpSink
+<SUBSECTION Standard>
+GstA2dpSinkClass
+GST_A2DP_SINK
+GST_A2DP_SINK_CAST
+GST_IS_A2DP_SINK
+GST_A2DP_SINK_CLASS
+GST_IS_A2DP_SINK_CLASS
+GST_TYPE_A2DP_SINK
+<SUBSECTION Private>
+gst_a2dp_sink_get_type
+</SECTION>
+
+<SECTION>
 <FILE>element-accurip</FILE>
 <TITLE>accurip</TITLE>
 GstAccurip
 <SUBSECTION Standard>
+GstAccuripClass
 GST_ACCURIP
-GST_ACCURIP_CLASS
+GST_ACCURIP_CAST
 GST_IS_ACCURIP
+GST_ACCURIP_CLASS
 GST_IS_ACCURIP_CLASS
 GST_TYPE_ACCURIP
-GstAccuripClass
+<SUBSECTION Private>
 gst_accurip_get_type
 </SECTION>
 
@@ -17,12 +99,14 @@
 <TITLE>aiffmux</TITLE>
 GstAiffMux
 <SUBSECTION Standard>
+GstAiffMuxClass
 GST_AIFF_MUX
-GST_AIFF_MUX_CLASS
+GST_AIFF_MUX_CAST
 GST_IS_AIFF_MUX
+GST_AIFF_MUX_CLASS
 GST_IS_AIFF_MUX_CLASS
 GST_TYPE_AIFF_MUX
-GstAiffMuxClass
+<SUBSECTION Private>
 gst_aiff_mux_get_type
 </SECTION>
 
@@ -31,41 +115,94 @@
 <TITLE>aiffparse</TITLE>
 GstAiffParse
 <SUBSECTION Standard>
+GstAiffParseClass
 GST_AIFF_PARSE
-GST_AIFF_PARSE_CLASS
+GST_AIFF_PARSE_CAST
 GST_IS_AIFF_PARSE
+GST_AIFF_PARSE_CLASS
 GST_IS_AIFF_PARSE_CLASS
 GST_TYPE_AIFF_PARSE
-GstAiffParseClass
-GstAiffParseState
+<SUBSECTION Private>
 gst_aiff_parse_get_type
 </SECTION>
 
 <SECTION>
+<FILE>element-asfmux</FILE>
+<TITLE>asfmux</TITLE>
+GstAsfMux
+<SUBSECTION Standard>
+GstAsfMuxClass
+GST_ASF_MUX
+GST_ASF_MUX_CAST
+GST_IS_ASF_MUX
+GST_ASF_MUX_CLASS
+GST_IS_ASF_MUX_CLASS
+GST_TYPE_ASF_MUX
+<SUBSECTION Private>
+gst_asf_mux_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-asfparse</FILE>
+<TITLE>asfparse</TITLE>
+GstAsfParse
+<SUBSECTION Standard>
+GstAsfParseClass
+GST_ASF_PARSE
+GST_ASF_PARSE_CAST
+GST_IS_ASF_PARSE
+GST_ASF_PARSE_CLASS
+GST_IS_ASF_PARSE_CLASS
+GST_TYPE_ASF_PARSE
+<SUBSECTION Private>
+gst_asf_parse_get_type
+</SECTION>
+
+<SECTION>
 <FILE>element-assrender</FILE>
 <TITLE>assrender</TITLE>
 GstAssRender
 <SUBSECTION Standard>
-GstAssRenderBlitFunction
 GstAssRenderClass
 GST_ASS_RENDER
-GST_ASS_RENDER_CLASS
+GST_ASS_RENDER_CAST
 GST_IS_ASS_RENDER
+GST_ASS_RENDER_CLASS
 GST_IS_ASS_RENDER_CLASS
+GST_TYPE_ASS_RENDER
+<SUBSECTION Private>
 gst_ass_render_get_type
 </SECTION>
 
 <SECTION>
+<FILE>element-audiochannelmix</FILE>
+<TITLE>audiochannelmix</TITLE>
+GstAudioChannelMix
+<SUBSECTION Standard>
+GstAudioChannelMixClass
+GST_AUDIO_CHANNEL_MIX
+GST_AUDIO_CHANNEL_MIX_CAST
+GST_IS_AUDIO_CHANNEL_MIX
+GST_AUDIO_CHANNEL_MIX_CLASS
+GST_IS_AUDIO_CHANNEL_MIX_CLASS
+GST_TYPE_AUDIO_CHANNEL_MIX
+<SUBSECTION Private>
+gst_audio_channel_mix_get_type
+</SECTION>
+
+<SECTION>
 <FILE>element-audiointerleave</FILE>
 <TITLE>audiointerleave</TITLE>
 GstAudioInterleave
 <SUBSECTION Standard>
 GstAudioInterleaveClass
 GST_AUDIO_INTERLEAVE
-GST_AUDIO_INTERLEAVE_CLASS
+GST_AUDIO_INTERLEAVE_CAST
 GST_IS_AUDIO_INTERLEAVE
+GST_AUDIO_INTERLEAVE_CLASS
 GST_IS_AUDIO_INTERLEAVE_CLASS
 GST_TYPE_AUDIO_INTERLEAVE
+<SUBSECTION Private>
 gst_audio_interleave_get_type
 </SECTION>
 
@@ -76,10 +213,12 @@
 <SUBSECTION Standard>
 GstAudioMixerClass
 GST_AUDIO_MIXER
-GST_AUDIO_MIXER_CLASS
+GST_AUDIO_MIXER_CAST
 GST_IS_AUDIO_MIXER
+GST_AUDIO_MIXER_CLASS
 GST_IS_AUDIO_MIXER_CLASS
 GST_TYPE_AUDIO_MIXER
+<SUBSECTION Private>
 gst_audio_mixer_get_type
 </SECTION>
 
@@ -87,27 +226,129 @@
 <FILE>element-audioparse</FILE>
 <TITLE>audioparse</TITLE>
 GstAudioParse
+GstAudioParseFormat
 <SUBSECTION Standard>
 GstAudioParseClass
 GST_AUDIO_PARSE
-GST_AUDIO_PARSE_CLASS
+GST_AUDIO_PARSE_CAST
 GST_IS_AUDIO_PARSE
+GST_AUDIO_PARSE_CLASS
 GST_IS_AUDIO_PARSE_CLASS
 GST_TYPE_AUDIO_PARSE
+<SUBSECTION Private>
 gst_audio_parse_get_type
 </SECTION>
 
 <SECTION>
+<FILE>element-audiosegmentclip</FILE>
+<TITLE>audiosegmentclip</TITLE>
+GstAudioSegmentClip
+<SUBSECTION Standard>
+GstAudioSegmentClipClass
+GST_AUDIO_SEGMENT_CLIP
+GST_AUDIO_SEGMENT_CLIP_CAST
+GST_IS_AUDIO_SEGMENT_CLIP
+GST_AUDIO_SEGMENT_CLIP_CLASS
+GST_IS_AUDIO_SEGMENT_CLIP_CLASS
+GST_TYPE_AUDIO_SEGMENT_CLIP
+<SUBSECTION Private>
+gst_audio_segment_clip_get_type
+</SECTION>
+
+<SECTION>
 <FILE>element-autoconvert</FILE>
 <TITLE>autoconvert</TITLE>
 GstAutoConvert
 <SUBSECTION Standard>
 GstAutoConvertClass
-GST_TYPE_AUTO_CONVERT
 GST_AUTO_CONVERT
-GST_AUTO_CONVERT_CLASS
+GST_AUTO_CONVERT_CAST
 GST_IS_AUTO_CONVERT
+GST_AUTO_CONVERT_CLASS
 GST_IS_AUTO_CONVERT_CLASS
+GST_TYPE_AUTO_CONVERT
+<SUBSECTION Private>
+gst_auto_convert_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-autovideoconvert</FILE>
+<TITLE>autovideoconvert</TITLE>
+GstAutoVideoConvert
+<SUBSECTION Standard>
+GstAutoVideoConvertClass
+GST_AUTO_VIDEO_CONVERT
+GST_AUTO_VIDEO_CONVERT_CAST
+GST_IS_AUTO_VIDEO_CONVERT
+GST_AUTO_VIDEO_CONVERT_CLASS
+GST_IS_AUTO_VIDEO_CONVERT_CLASS
+GST_TYPE_AUTO_VIDEO_CONVERT
+<SUBSECTION Private>
+gst_auto_video_convert_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-avdtpsink</FILE>
+<TITLE>avdtpsink</TITLE>
+GstAvdtpSink
+<SUBSECTION Standard>
+GstAvdtpSinkClass
+GST_AVDTP_SINK
+GST_AVDTP_SINK_CAST
+GST_IS_AVDTP_SINK
+GST_AVDTP_SINK_CLASS
+GST_IS_AVDTP_SINK_CLASS
+GST_TYPE_AVDTP_SINK
+<SUBSECTION Private>
+gst_avdtp_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-avdtpsrc</FILE>
+<TITLE>avdtpsrc</TITLE>
+GstAvdtpSrc
+<SUBSECTION Standard>
+GstAvdtpSrcClass
+GST_AVDTP_SRC
+GST_AVDTP_SRC_CAST
+GST_IS_AVDTP_SRC
+GST_AVDTP_SRC_CLASS
+GST_IS_AVDTP_SRC_CLASS
+GST_TYPE_AVDTP_SRC
+<SUBSECTION Private>
+gst_avdtp_src_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-bpmdetect</FILE>
+<TITLE>bpmdetect</TITLE>
+GstBPMDetect
+<SUBSECTION Standard>
+GstBPMDetectClass
+GST_BPM_DETECT
+GST_BPM_DETECT_CAST
+GST_IS_BPM_DETECT
+GST_BPM_DETECT_CLASS
+GST_IS_BPM_DETECT_CLASS
+GST_TYPE_BPM_DETECT
+<SUBSECTION Private>
+gst_bpm_detect_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-bayer2rgb</FILE>
+<TITLE>bayer2rgb</TITLE>
+GstBayer2RGB
+<SUBSECTION Standard>
+GstBayer2RGBClass
+GST_BAYER2_RGB
+GST_BAYER2_RGB_CAST
+GST_IS_BAYER2_RGB
+GST_BAYER2_RGB_CLASS
+GST_IS_BAYER2_RGB_CLASS
+GST_TYPE_BAYER2_RGB
+<SUBSECTION Private>
+gst_bayer2_rgb_get_type
 </SECTION>
 
 <SECTION>
@@ -118,12 +359,12 @@
 GstBs2bClass
 GST_BS2B
 GST_BS2B_CAST
-GST_BS2B_CLASS
 GST_IS_BS2B
+GST_BS2B_CLASS
 GST_IS_BS2B_CLASS
 GST_TYPE_BS2B
+<SUBSECTION Private>
 gst_bs2b_get_type
-gst_bs2b_plugin_init
 </SECTION>
 
 <SECTION>
@@ -134,12 +375,12 @@
 GstBulgeClass
 GST_BULGE
 GST_BULGE_CAST
-GST_BULGE_CLASS
 GST_IS_BULGE
+GST_BULGE_CLASS
 GST_IS_BULGE_CLASS
 GST_TYPE_BULGE
+<SUBSECTION Private>
 gst_bulge_get_type
-gst_bulge_plugin_init
 </SECTION>
 
 <SECTION>
@@ -149,42 +390,143 @@
 <SUBSECTION Standard>
 GstBurnClass
 GST_BURN
-GST_BURN_CLASS
+GST_BURN_CAST
 GST_IS_BURN
+GST_BURN_CLASS
 GST_IS_BURN_CLASS
 GST_TYPE_BURN
+<SUBSECTION Private>
 gst_burn_get_type
-gst_burn_plugin_init
+</SECTION>
+
+<SECTION>
+<FILE>element-bz2dec</FILE>
+<TITLE>bz2dec</TITLE>
+GstBz2dec
+<SUBSECTION Standard>
+GstBz2decClass
+GST_BZ2DEC
+GST_BZ2DEC_CAST
+GST_IS_BZ2DEC
+GST_BZ2DEC_CLASS
+GST_IS_BZ2DEC_CLASS
+GST_TYPE_BZ2DEC
+<SUBSECTION Private>
+gst_bz2dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-bz2enc</FILE>
+<TITLE>bz2enc</TITLE>
+GstBz2enc
+<SUBSECTION Standard>
+GstBz2encClass
+GST_BZ2ENC
+GST_BZ2ENC_CAST
+GST_IS_BZ2ENC
+GST_BZ2ENC_CLASS
+GST_IS_BZ2ENC_CLASS
+GST_TYPE_BZ2ENC
+<SUBSECTION Private>
+gst_bz2enc_get_type
 </SECTION>
 
 <SECTION>
 <FILE>element-camerabin</FILE>
 <TITLE>camerabin</TITLE>
 GstCameraBin
+GstCameraBin2Mode
 <SUBSECTION Standard>
 GstCameraBinClass
 GST_CAMERA_BIN
+GST_CAMERA_BIN_CAST
 GST_IS_CAMERA_BIN
-GST_TYPE_CAMERA_BIN
 GST_CAMERA_BIN_CLASS
 GST_IS_CAMERA_BIN_CLASS
+GST_TYPE_CAMERA_BIN
+<SUBSECTION Private>
 gst_camera_bin_get_type
 </SECTION>
 
+<SECTION>
+<FILE>element-checksumsink</FILE>
+<TITLE>checksumsink</TITLE>
+GstChecksumSink
+GstChecksumSinkHash
+<SUBSECTION Standard>
+GstChecksumSinkClass
+GST_CHECKSUM_SINK
+GST_CHECKSUM_SINK_CAST
+GST_IS_CHECKSUM_SINK
+GST_CHECKSUM_SINK_CLASS
+GST_IS_CHECKSUM_SINK_CLASS
+GST_TYPE_CHECKSUM_SINK
+<SUBSECTION Private>
+gst_checksum_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-chopmydata</FILE>
+<TITLE>chopmydata</TITLE>
+GstChopMyData
+<SUBSECTION Standard>
+GstChopMyDataClass
+GST_CHOP_MY_DATA
+GST_CHOP_MY_DATA_CAST
+GST_IS_CHOP_MY_DATA
+GST_CHOP_MY_DATA_CLASS
+GST_IS_CHOP_MY_DATA_CLASS
+GST_TYPE_CHOP_MY_DATA
+<SUBSECTION Private>
+gst_chop_my_data_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-chromahold</FILE>
+<TITLE>chromahold</TITLE>
+GstChromaHold
+<SUBSECTION Standard>
+GstChromaHoldClass
+GST_CHROMA_HOLD
+GST_CHROMA_HOLD_CAST
+GST_IS_CHROMA_HOLD
+GST_CHROMA_HOLD_CLASS
+GST_IS_CHROMA_HOLD_CLASS
+GST_TYPE_CHROMA_HOLD
+<SUBSECTION Private>
+gst_chroma_hold_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-chromaprint</FILE>
+<TITLE>chromaprint</TITLE>
+GstChromaprint
+<SUBSECTION Standard>
+GstChromaprintClass
+GST_CHROMAPRINT
+GST_CHROMAPRINT_CAST
+GST_IS_CHROMAPRINT
+GST_CHROMAPRINT_CLASS
+GST_IS_CHROMAPRINT_CLASS
+GST_TYPE_CHROMAPRINT
+<SUBSECTION Private>
+gst_chromaprint_get_type
+</SECTION>
 
 <SECTION>
 <FILE>element-chromium</FILE>
 <TITLE>chromium</TITLE>
-<SUBSECTION Standard>
 GstChromium
+<SUBSECTION Standard>
 GstChromiumClass
 GST_CHROMIUM
-GST_CHROMIUM_CLASS
+GST_CHROMIUM_CAST
 GST_IS_CHROMIUM
+GST_CHROMIUM_CLASS
 GST_IS_CHROMIUM_CLASS
 GST_TYPE_CHROMIUM
+<SUBSECTION Private>
 gst_chromium_get_type
-gst_chromium_plugin_init
 </SECTION>
 
 <SECTION>
@@ -195,40 +537,143 @@
 GstCircleClass
 GST_CIRCLE
 GST_CIRCLE_CAST
-GST_CIRCLE_CLASS
 GST_IS_CIRCLE
+GST_CIRCLE_CLASS
 GST_IS_CIRCLE_CLASS
 GST_TYPE_CIRCLE
+<SUBSECTION Private>
 gst_circle_get_type
-gst_circle_plugin_init
 </SECTION>
 
 <SECTION>
 <FILE>element-coloreffects</FILE>
 <TITLE>coloreffects</TITLE>
 GstColorEffects
+GstColorEffectsPreset
 <SUBSECTION Standard>
 GstColorEffectsClass
 GST_COLOR_EFFECTS
-GST_COLOR_EFFECTS_CLASS
+GST_COLOR_EFFECTS_CAST
 GST_IS_COLOR_EFFECTS
+GST_COLOR_EFFECTS_CLASS
 GST_IS_COLOR_EFFECTS_CLASS
 GST_TYPE_COLOR_EFFECTS
+<SUBSECTION Private>
 gst_color_effects_get_type
 </SECTION>
 
 <SECTION>
-<FILE>element-curlsink</FILE>
-<TITLE>curlsink</TITLE>
-GstCurlSink
+<FILE>element-combdetect</FILE>
+<TITLE>combdetect</TITLE>
+GstCombDetect
 <SUBSECTION Standard>
-GstCurlSinkClass
-GST_CURL_SINK
-GST_CURL_SINK_CLASS
-GST_IS_CURL_SINK
-GST_IS_CURL_SINK_CLASS
-GST_TYPE_CURL_SINK
-gst_curl_sink_get_type
+GstCombDetectClass
+GST_COMB_DETECT
+GST_COMB_DETECT_CAST
+GST_IS_COMB_DETECT
+GST_COMB_DETECT_CLASS
+GST_IS_COMB_DETECT_CLASS
+GST_TYPE_COMB_DETECT
+<SUBSECTION Private>
+gst_comb_detect_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-compare</FILE>
+<TITLE>compare</TITLE>
+GstCompare
+GstCompareMethod
+<SUBSECTION Standard>
+GstCompareClass
+GST_COMPARE
+GST_COMPARE_CAST
+GST_IS_COMPARE
+GST_COMPARE_CLASS
+GST_IS_COMPARE_CLASS
+GST_TYPE_COMPARE
+<SUBSECTION Private>
+gst_compare_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-compositor</FILE>
+<TITLE>compositor</TITLE>
+GstCompositor
+GstCompositorBackground
+<SUBSECTION Standard>
+GstCompositorClass
+GST_COMPOSITOR
+GST_COMPOSITOR_CAST
+GST_IS_COMPOSITOR
+GST_COMPOSITOR_CLASS
+GST_IS_COMPOSITOR_CLASS
+GST_TYPE_COMPOSITOR
+<SUBSECTION Private>
+gst_compositor_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-curlfilesink</FILE>
+<TITLE>curlfilesink</TITLE>
+GstCurlFileSink
+<SUBSECTION Standard>
+GstCurlFileSinkClass
+GST_CURL_FILE_SINK
+GST_CURL_FILE_SINK_CAST
+GST_IS_CURL_FILE_SINK
+GST_CURL_FILE_SINK_CLASS
+GST_IS_CURL_FILE_SINK_CLASS
+GST_TYPE_CURL_FILE_SINK
+<SUBSECTION Private>
+gst_curl_file_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-curlftpsink</FILE>
+<TITLE>curlftpsink</TITLE>
+GstCurlFtpSink
+<SUBSECTION Standard>
+GstCurlFtpSinkClass
+GST_CURL_FTP_SINK
+GST_CURL_FTP_SINK_CAST
+GST_IS_CURL_FTP_SINK
+GST_CURL_FTP_SINK_CLASS
+GST_IS_CURL_FTP_SINK_CLASS
+GST_TYPE_CURL_FTP_SINK
+<SUBSECTION Private>
+gst_curl_ftp_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-curlhttpsink</FILE>
+<TITLE>curlhttpsink</TITLE>
+GstCurlHttpSink
+<SUBSECTION Standard>
+GstCurlHttpSinkClass
+GST_CURL_HTTP_SINK
+GST_CURL_HTTP_SINK_CAST
+GST_IS_CURL_HTTP_SINK
+GST_CURL_HTTP_SINK_CLASS
+GST_IS_CURL_HTTP_SINK_CLASS
+GST_TYPE_CURL_HTTP_SINK
+<SUBSECTION Private>
+gst_curl_http_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-curlsmtpsink</FILE>
+<TITLE>curlsmtpsink</TITLE>
+GstCurlSmtpSink
+<SUBSECTION Standard>
+GstCurlSmtpSinkClass
+GST_CURL_SMTP_SINK
+GST_CURL_SMTP_SINK_CAST
+GST_IS_CURL_SMTP_SINK
+GST_CURL_SMTP_SINK_CLASS
+GST_IS_CURL_SMTP_SINK_CLASS
+GST_TYPE_CURL_SMTP_SINK
+<SUBSECTION Private>
+gst_curl_smtp_sink_get_type
 </SECTION>
 
 <SECTION>
@@ -238,27 +683,13 @@
 <SUBSECTION Standard>
 GstCvDilateClass
 GST_CV_DILATE
-GST_CV_DILATE_CLASS
+GST_CV_DILATE_CAST
 GST_IS_CV_DILATE
+GST_CV_DILATE_CLASS
 GST_IS_CV_DILATE_CLASS
 GST_TYPE_CV_DILATE
+<SUBSECTION Private>
 gst_cv_dilate_get_type
-gst_cv_dilate_plugin_init
-</SECTION>
-
-<SECTION>
-<FILE>element-cverode</FILE>
-<TITLE>cverode</TITLE>
-GstCvErode
-<SUBSECTION Standard>
-GstCvErodeClass
-GST_CV_ERODE
-GST_CV_ERODE_CLASS
-GST_IS_CV_ERODE
-GST_IS_CV_ERODE_CLASS
-GST_TYPE_CV_ERODE
-gst_cv_erode_get_type
-gst_cv_erode_plugin_init
 </SECTION>
 
 <SECTION>
@@ -268,12 +699,29 @@
 <SUBSECTION Standard>
 GstCvEqualizeHistClass
 GST_CV_EQUALIZE_HIST
-GST_CV_EQUALIZE_HIST_CLASS
+GST_CV_EQUALIZE_HIST_CAST
 GST_IS_CV_EQUALIZE_HIST
+GST_CV_EQUALIZE_HIST_CLASS
 GST_IS_CV_EQUALIZE_HIST_CLASS
 GST_TYPE_CV_EQUALIZE_HIST
+<SUBSECTION Private>
 gst_cv_equalize_hist_get_type
-gst_cv_equalize_hist_plugin_init
+</SECTION>
+
+<SECTION>
+<FILE>element-cverode</FILE>
+<TITLE>cverode</TITLE>
+GstCvErode
+<SUBSECTION Standard>
+GstCvErodeClass
+GST_CV_ERODE
+GST_CV_ERODE_CAST
+GST_IS_CV_ERODE
+GST_CV_ERODE_CLASS
+GST_IS_CV_ERODE_CLASS
+GST_TYPE_CV_ERODE
+<SUBSECTION Private>
+gst_cv_erode_get_type
 </SECTION>
 
 <SECTION>
@@ -283,27 +731,30 @@
 <SUBSECTION Standard>
 GstCvLaplaceClass
 GST_CV_LAPLACE
-GST_CV_LAPLACE_CLASS
+GST_CV_LAPLACE_CAST
 GST_IS_CV_LAPLACE
+GST_CV_LAPLACE_CLASS
 GST_IS_CV_LAPLACE_CLASS
 GST_TYPE_CV_LAPLACE
+<SUBSECTION Private>
 gst_cv_laplace_get_type
-gst_cv_laplace_plugin_init
 </SECTION>
 
 <SECTION>
 <FILE>element-cvsmooth</FILE>
 <TITLE>cvsmooth</TITLE>
 GstCvSmooth
+GstCvSmoothTypeType
 <SUBSECTION Standard>
 GstCvSmoothClass
 GST_CV_SMOOTH
-GST_CV_SMOOTH_CLASS
+GST_CV_SMOOTH_CAST
 GST_IS_CV_SMOOTH
+GST_CV_SMOOTH_CLASS
 GST_IS_CV_SMOOTH_CLASS
 GST_TYPE_CV_SMOOTH
+<SUBSECTION Private>
 gst_cv_smooth_get_type
-gst_cv_smooth_plugin_init
 </SECTION>
 
 <SECTION>
@@ -313,12 +764,61 @@
 <SUBSECTION Standard>
 GstCvSobelClass
 GST_CV_SOBEL
-GST_CV_SOBEL_CLASS
+GST_CV_SOBEL_CAST
 GST_IS_CV_SOBEL
+GST_CV_SOBEL_CLASS
 GST_IS_CV_SOBEL_CLASS
 GST_TYPE_CV_SOBEL
+<SUBSECTION Private>
 gst_cv_sobel_get_type
-gst_cv_sobel_plugin_init
+</SECTION>
+
+<SECTION>
+<FILE>element-dvbsuboverlay</FILE>
+<TITLE>dvbsuboverlay</TITLE>
+GstDVBSubOverlay
+<SUBSECTION Standard>
+GstDVBSubOverlayClass
+GST_DVB_SUB_OVERLAY
+GST_DVB_SUB_OVERLAY_CAST
+GST_IS_DVB_SUB_OVERLAY
+GST_DVB_SUB_OVERLAY_CLASS
+GST_IS_DVB_SUB_OVERLAY_CLASS
+GST_TYPE_DVB_SUB_OVERLAY
+<SUBSECTION Private>
+gst_dvb_sub_overlay_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-dvdspu</FILE>
+<TITLE>dvdspu</TITLE>
+GstDVDSpu
+<SUBSECTION Standard>
+GstDVDSpuClass
+GST_DVD_SPU
+GST_DVD_SPU_CAST
+GST_IS_DVD_SPU
+GST_DVD_SPU_CLASS
+GST_IS_DVD_SPU_CLASS
+GST_TYPE_DVD_SPU
+<SUBSECTION Private>
+gst_dvd_spu_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-dashdemux</FILE>
+<TITLE>dashdemux</TITLE>
+GstDashDemux
+<SUBSECTION Standard>
+GstDashDemuxClass
+GST_DASH_DEMUX
+GST_DASH_DEMUX_CAST
+GST_IS_DASH_DEMUX
+GST_DASH_DEMUX_CLASS
+GST_IS_DASH_DEMUX_CLASS
+GST_TYPE_DASH_DEMUX
+<SUBSECTION Private>
+gst_dash_demux_get_type
 </SECTION>
 
 <SECTION>
@@ -328,14 +828,15 @@
 <SUBSECTION Standard>
 GstDataURISrcClass
 GST_DATA_URI_SRC
-GST_DATA_URI_SRC_CLASS
+GST_DATA_URI_SRC_CAST
 GST_IS_DATA_URI_SRC
+GST_DATA_URI_SRC_CLASS
 GST_IS_DATA_URI_SRC_CLASS
 GST_TYPE_DATA_URI_SRC
+<SUBSECTION Private>
 gst_data_uri_src_get_type
 </SECTION>
 
-
 <SECTION>
 <FILE>element-dc1394</FILE>
 <TITLE>dc1394</TITLE>
@@ -407,6 +908,86 @@
 </SECTION>
 
 <SECTION>
+<FILE>element-debugspy</FILE>
+<TITLE>debugspy</TITLE>
+GstDebugSpy
+<SUBSECTION Standard>
+GstDebugSpyClass
+GST_DEBUG_SPY
+GST_DEBUG_SPY_CAST
+GST_IS_DEBUG_SPY
+GST_DEBUG_SPY_CLASS
+GST_IS_DEBUG_SPY_CLASS
+GST_TYPE_DEBUG_SPY
+<SUBSECTION Private>
+gst_debug_spy_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-decklinkaudiosink</FILE>
+<TITLE>decklinkaudiosink</TITLE>
+GstDecklinkAudioSink
+<SUBSECTION Standard>
+GstDecklinkAudioSinkClass
+GST_DECKLINK_AUDIO_SINK
+GST_DECKLINK_AUDIO_SINK_CAST
+GST_IS_DECKLINK_AUDIO_SINK
+GST_DECKLINK_AUDIO_SINK_CLASS
+GST_IS_DECKLINK_AUDIO_SINK_CLASS
+GST_TYPE_DECKLINK_AUDIO_SINK
+<SUBSECTION Private>
+gst_decklink_audio_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-decklinkaudiosrc</FILE>
+<TITLE>decklinkaudiosrc</TITLE>
+GstDecklinkAudioSrc
+<SUBSECTION Standard>
+GstDecklinkAudioSrcClass
+GST_DECKLINK_AUDIO_SRC
+GST_DECKLINK_AUDIO_SRC_CAST
+GST_IS_DECKLINK_AUDIO_SRC
+GST_DECKLINK_AUDIO_SRC_CLASS
+GST_IS_DECKLINK_AUDIO_SRC_CLASS
+GST_TYPE_DECKLINK_AUDIO_SRC
+<SUBSECTION Private>
+gst_decklink_audio_src_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-decklinkvideosink</FILE>
+<TITLE>decklinkvideosink</TITLE>
+GstDecklinkVideoSink
+<SUBSECTION Standard>
+GstDecklinkVideoSinkClass
+GST_DECKLINK_VIDEO_SINK
+GST_DECKLINK_VIDEO_SINK_CAST
+GST_IS_DECKLINK_VIDEO_SINK
+GST_DECKLINK_VIDEO_SINK_CLASS
+GST_IS_DECKLINK_VIDEO_SINK_CLASS
+GST_TYPE_DECKLINK_VIDEO_SINK
+<SUBSECTION Private>
+gst_decklink_video_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-decklinkvideosrc</FILE>
+<TITLE>decklinkvideosrc</TITLE>
+GstDecklinkVideoSrc
+<SUBSECTION Standard>
+GstDecklinkVideoSrcClass
+GST_DECKLINK_VIDEO_SRC
+GST_DECKLINK_VIDEO_SRC_CAST
+GST_IS_DECKLINK_VIDEO_SRC
+GST_DECKLINK_VIDEO_SRC_CLASS
+GST_IS_DECKLINK_VIDEO_SRC_CLASS
+GST_TYPE_DECKLINK_VIDEO_SRC
+<SUBSECTION Private>
+gst_decklink_video_src_get_type
+</SECTION>
+
+<SECTION>
 <FILE>element-dfbvideosink</FILE>
 <TITLE>dfbvideosink</TITLE>
 GstDfbVideoSink
@@ -434,12 +1015,12 @@
 GstDiffuseClass
 GST_DIFFUSE
 GST_DIFFUSE_CAST
-GST_DIFFUSE_CLASS
 GST_IS_DIFFUSE
+GST_DIFFUSE_CLASS
 GST_IS_DIFFUSE_CLASS
 GST_TYPE_DIFFUSE
+<SUBSECTION Private>
 gst_diffuse_get_type
-gst_diffuse_plugin_init
 </SECTION>
 
 <SECTION>
@@ -449,12 +1030,46 @@
 <SUBSECTION Standard>
 GstDilateClass
 GST_DILATE
-GST_DILATE_CLASS
+GST_DILATE_CAST
 GST_IS_DILATE
+GST_DILATE_CLASS
 GST_IS_DILATE_CLASS
 GST_TYPE_DILATE
+<SUBSECTION Private>
 gst_dilate_get_type
-gst_dilate_plugin_init
+</SECTION>
+
+<SECTION>
+<FILE>element-diracparse</FILE>
+<TITLE>diracparse</TITLE>
+GstDiracParse
+<SUBSECTION Standard>
+GstDiracParseClass
+GST_DIRAC_PARSE
+GST_DIRAC_PARSE_CAST
+GST_IS_DIRAC_PARSE
+GST_DIRAC_PARSE_CLASS
+GST_IS_DIRAC_PARSE_CLASS
+GST_TYPE_DIRAC_PARSE
+<SUBSECTION Private>
+gst_dirac_parse_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-disparity</FILE>
+<TITLE>disparity</TITLE>
+GstDisparity
+GstDisparityMethod
+<SUBSECTION Standard>
+GstDisparityClass
+GST_DISPARITY
+GST_DISPARITY_CAST
+GST_IS_DISPARITY
+GST_DISPARITY_CLASS
+GST_IS_DISPARITY_CLASS
+GST_TYPE_DISPARITY
+<SUBSECTION Private>
+gst_disparity_get_type
 </SECTION>
 
 <SECTION>
@@ -464,12 +1079,93 @@
 <SUBSECTION Standard>
 GstDodgeClass
 GST_DODGE
-GST_DODGE_CLASS
+GST_DODGE_CAST
 GST_IS_DODGE
+GST_DODGE_CLASS
 GST_IS_DODGE_CLASS
 GST_TYPE_DODGE
+<SUBSECTION Private>
 gst_dodge_get_type
-gst_dodge_plugin_init
+</SECTION>
+
+<SECTION>
+<FILE>element-dtlsdec</FILE>
+<TITLE>dtlsdec</TITLE>
+GstDtlsDec
+<SUBSECTION Standard>
+GstDtlsDecClass
+GST_DTLS_DEC
+GST_DTLS_DEC_CAST
+GST_IS_DTLS_DEC
+GST_DTLS_DEC_CLASS
+GST_IS_DTLS_DEC_CLASS
+GST_TYPE_DTLS_DEC
+<SUBSECTION Private>
+gst_dtls_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-dtlsenc</FILE>
+<TITLE>dtlsenc</TITLE>
+GstDtlsEnc
+<SUBSECTION Standard>
+GstDtlsEncClass
+GST_DTLS_ENC
+GST_DTLS_ENC_CAST
+GST_IS_DTLS_ENC
+GST_DTLS_ENC_CLASS
+GST_IS_DTLS_ENC_CLASS
+GST_TYPE_DTLS_ENC
+<SUBSECTION Private>
+gst_dtls_enc_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-dtlssrtpdec</FILE>
+<TITLE>dtlssrtpdec</TITLE>
+GstDtlsSrtpDec
+<SUBSECTION Standard>
+GstDtlsSrtpDecClass
+GST_DTLS_SRTP_DEC
+GST_DTLS_SRTP_DEC_CAST
+GST_IS_DTLS_SRTP_DEC
+GST_DTLS_SRTP_DEC_CLASS
+GST_IS_DTLS_SRTP_DEC_CLASS
+GST_TYPE_DTLS_SRTP_DEC
+<SUBSECTION Private>
+gst_dtls_srtp_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-dtlssrtpdemux</FILE>
+<TITLE>dtlssrtpdemux</TITLE>
+GstDtlsSrtpDemux
+<SUBSECTION Standard>
+GstDtlsSrtpDemuxClass
+GST_DTLS_SRTP_DEMUX
+GST_DTLS_SRTP_DEMUX_CAST
+GST_IS_DTLS_SRTP_DEMUX
+GST_DTLS_SRTP_DEMUX_CLASS
+GST_IS_DTLS_SRTP_DEMUX_CLASS
+GST_TYPE_DTLS_SRTP_DEMUX
+<SUBSECTION Private>
+gst_dtls_srtp_demux_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-dtlssrtpenc</FILE>
+<TITLE>dtlssrtpenc</TITLE>
+GstDtlsSrtpEnc
+<SUBSECTION Standard>
+GstDtlsSrtpEncClass
+GST_DTLS_SRTP_ENC
+GST_DTLS_SRTP_ENC_CAST
+GST_IS_DTLS_SRTP_ENC
+GST_DTLS_SRTP_ENC_CLASS
+GST_IS_DTLS_SRTP_ENC_CLASS
+GST_TYPE_DTLS_SRTP_ENC
+<SUBSECTION Private>
+gst_dtls_srtp_enc_get_type
 </SECTION>
 
 <SECTION>
@@ -478,16 +1174,14 @@
 GstDtmfDetect
 <SUBSECTION Standard>
 GstDtmfDetectClass
-GstDtmfDetectPrivate
-GST_TYPE_DTMF_DETECT
 GST_DTMF_DETECT
 GST_DTMF_DETECT_CAST
-GST_DTMF_DETECT_CLASS
-GST_DTMF_DETECT_GET_CLASS
 GST_IS_DTMF_DETECT
+GST_DTMF_DETECT_CLASS
 GST_IS_DTMF_DETECT_CLASS
+GST_TYPE_DTMF_DETECT
+<SUBSECTION Private>
 gst_dtmf_detect_get_type
-gst_dtmf_detect_plugin_init
 </SECTION>
 
 <SECTION>
@@ -496,75 +1190,80 @@
 GstDtsDec
 <SUBSECTION Standard>
 GstDtsDecClass
-gst_dtsdec_get_type
-GST_TYPE_DTSDEC
-GST_DTSDEC
-GST_DTSDEC_CLASS
-GST_IS_DTSDEC
-GST_IS_DTSDEC_CLASS
+GST_DTS_DEC
+GST_DTS_DEC_CAST
+GST_IS_DTS_DEC
+GST_DTS_DEC_CLASS
+GST_IS_DTS_DEC_CLASS
+GST_TYPE_DTS_DEC
+<SUBSECTION Private>
+gst_dts_dec_get_type
 </SECTION>
 
 <SECTION>
 <FILE>element-dvbsrc</FILE>
 <TITLE>dvbsrc</TITLE>
 GstDvbSrc
+GstDvbSrcBandwidth
+GstDvbSrcCode_Rate
+GstDvbSrcCode_Rate
+GstDvbSrcDelsys
+GstDvbSrcGuard
+GstDvbSrcHierarchy
+GstDvbSrcInterleaving
+GstDvbSrcInversion
+GstDvbSrcCode_Rate
+GstDvbSrcModulation
+GstDvbSrcCode_Rate
+GstDvbSrcModulation
+GstDvbSrcCode_Rate
+GstDvbSrcModulation
+GstDvbSrcModulation
+GstDvbSrcPilot
+GstDvbSrcRolloff
+GstDvbSrcTransmission_Mode
 <SUBSECTION Standard>
 GstDvbSrcClass
-GstDvbSrcParam
-GstDvbSrcPol
-GST_DVBSRC
-GST_DVBSRC_CLASS
-GST_IS_DVBSRC
-GST_IS_DVBSRC_CLASS
-GST_TYPE_DVBSRC
-gst_dvbsrc_get_type
-gst_dvbsrc_plugin_init
-DEFAULT_BUFFER_SIZE
-DEFAULT_DEVICE
-DEFAULT_DISEQC_SRC
-DEFAULT_SYMBOL_RATE
-MAX_FILTERS
-IPACKS
-IN_SIZE
-TS_SIZE
-</SECTION>
-
-<SECTION>
-<FILE>element-dvdspu</FILE>
-<TITLE>dvdspu</TITLE>
-GstDVDSpu
-<SUBSECTION Standard>
-GstDVDSpuClass
-GST_DVD_SPU
-GST_DVD_SPU_CLASS
-GST_IS_DVD_SPU
-GST_IS_DVD_SPU_CLASS
-GST_TYPE_DVD_SPU
-gst_dvd_spu_get_type
-SpuColour
-SpuLineCtrlI
-SpuPacket
-SpuPixCtrlI
-SpuRect
-SpuState
-DVD_SPU_LOCK
-DVD_SPU_UNLOCK
-SPU_STATE_FLAGS_MASK
+GST_DVB_SRC
+GST_DVB_SRC_CAST
+GST_IS_DVB_SRC
+GST_DVB_SRC_CLASS
+GST_IS_DVB_SRC_CLASS
+GST_TYPE_DVB_SRC
+<SUBSECTION Private>
+gst_dvb_src_get_type
 </SECTION>
 
 <SECTION>
 <FILE>element-edgedetect</FILE>
 <TITLE>edgedetect</TITLE>
-Gstedgedetect
+GstEdgeDetect
 <SUBSECTION Standard>
-GstedgedetectClass
-GST_EDGEDETECT
-GST_EDGEDETECT_CLASS
-GST_IS_EDGEDETECT
-GST_IS_EDGEDETECT_CLASS
-GST_TYPE_EDGEDETECT
-gst_edgedetect_get_type
-gst_edgedetect_plugin_init
+GstEdgeDetectClass
+GST_EDGE_DETECT
+GST_EDGE_DETECT_CAST
+GST_IS_EDGE_DETECT
+GST_EDGE_DETECT_CLASS
+GST_IS_EDGE_DETECT_CLASS
+GST_TYPE_EDGE_DETECT
+<SUBSECTION Private>
+gst_edge_detect_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-errorignore</FILE>
+<TITLE>errorignore</TITLE>
+GstErrorIgnore
+<SUBSECTION Standard>
+GstErrorIgnoreClass
+GST_ERROR_IGNORE
+GST_ERROR_IGNORE_CAST
+GST_IS_ERROR_IGNORE
+GST_ERROR_IGNORE_CLASS
+GST_IS_ERROR_IGNORE_CLASS
+GST_TYPE_ERROR_IGNORE
+<SUBSECTION Private>
+gst_error_ignore_get_type
 </SECTION>
 
 <SECTION>
@@ -574,25 +1273,62 @@
 <SUBSECTION Standard>
 GstExclusionClass
 GST_EXCLUSION
-GST_EXCLUSION_CLASS
+GST_EXCLUSION_CAST
 GST_IS_EXCLUSION
+GST_EXCLUSION_CLASS
 GST_IS_EXCLUSION_CLASS
 GST_TYPE_EXCLUSION
+<SUBSECTION Private>
 gst_exclusion_get_type
-gst_exclusion_plugin_init
+</SECTION>
+
+<SECTION>
+<FILE>element-fbdevsink</FILE>
+<TITLE>fbdevsink</TITLE>
+GstFBDEVSink
+<SUBSECTION Standard>
+GstFBDEVSinkClass
+GST_FBDEV_SINK
+GST_FBDEV_SINK_CAST
+GST_IS_FBDEV_SINK
+GST_FBDEV_SINK_CLASS
+GST_IS_FBDEV_SINK_CLASS
+GST_TYPE_FBDEV_SINK
+<SUBSECTION Private>
+gst_fbdev_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-fpsdisplaysink</FILE>
+<TITLE>fpsdisplaysink</TITLE>
+GstFPSDisplaySink
+<SUBSECTION Standard>
+GstFPSDisplaySinkClass
+GST_FPS_DISPLAY_SINK
+GST_FPS_DISPLAY_SINK_CAST
+GST_IS_FPS_DISPLAY_SINK
+GST_FPS_DISPLAY_SINK_CLASS
+GST_IS_FPS_DISPLAY_SINK_CLASS
+GST_TYPE_FPS_DISPLAY_SINK
+<SUBSECTION Private>
+gst_fps_display_sink_get_type
 </SECTION>
 
 <SECTION>
 <FILE>element-faac</FILE>
 <TITLE>faac</TITLE>
 GstFaac
+GstFaacBrtype
+GstFaacShortCtl
 <SUBSECTION Standard>
 GstFaacClass
-GST_TYPE_FAAC
 GST_FAAC
+GST_FAAC_CAST
 GST_IS_FAAC
 GST_FAAC_CLASS
 GST_IS_FAAC_CLASS
+GST_TYPE_FAAC
+<SUBSECTION Private>
 gst_faac_get_type
 </SECTION>
 
@@ -602,41 +1338,47 @@
 GstFaad
 <SUBSECTION Standard>
 GstFaadClass
-GST_TYPE_FAAD
 GST_FAAD
+GST_FAAD_CAST
 GST_IS_FAAD
 GST_FAAD_CLASS
 GST_IS_FAAD_CLASS
+GST_TYPE_FAAD
+<SUBSECTION Private>
 gst_faad_get_type
 </SECTION>
-<SECTION>
 
+<SECTION>
 <FILE>element-faceblur</FILE>
 <TITLE>faceblur</TITLE>
-Gstfaceblur
+GstFaceBlur
 <SUBSECTION Standard>
-GstfaceblurClass
-GST_FACEBLUR
-GST_FACEBLUR_CLASS
-GST_TYPE_FACEBLUR
-GST_IS_FACEBLUR
-GST_IS_FACEBLUR_CLASS
-gst_faceblur_get_type
-gst_faceblur_plugin_init
+GstFaceBlurClass
+GST_FACE_BLUR
+GST_FACE_BLUR_CAST
+GST_IS_FACE_BLUR
+GST_FACE_BLUR_CLASS
+GST_IS_FACE_BLUR_CLASS
+GST_TYPE_FACE_BLUR
+<SUBSECTION Private>
+gst_face_blur_get_type
 </SECTION>
 
+<SECTION>
 <FILE>element-facedetect</FILE>
 <TITLE>facedetect</TITLE>
-Gstfacedetect
+GstFaceDetect
+GstFaceDetectUpdates
 <SUBSECTION Standard>
-GstfacedetectClass
-GST_FACEDETECT
-GST_FACEDETECT_CLASS
-GST_TYPE_FACEDETECT
-GST_IS_FACEDETECT
-GST_IS_FACEDETECT_CLASS
-gst_facedetect_get_type
-gst_facedetect_plugin_init
+GstFaceDetectClass
+GST_FACE_DETECT
+GST_FACE_DETECT_CAST
+GST_IS_FACE_DETECT
+GST_FACE_DETECT_CLASS
+GST_IS_FACE_DETECT_CLASS
+GST_TYPE_FACE_DETECT
+<SUBSECTION Private>
+gst_face_detect_get_type
 </SECTION>
 
 <SECTION>
@@ -645,16 +1387,32 @@
 GstFestival
 <SUBSECTION Standard>
 GstFestivalClass
-GstFestivalFlags
 GST_FESTIVAL
-GST_FESTIVAL_CLASS
+GST_FESTIVAL_CAST
 GST_IS_FESTIVAL
+GST_FESTIVAL_CLASS
 GST_IS_FESTIVAL_CLASS
 GST_TYPE_FESTIVAL
+<SUBSECTION Private>
 gst_festival_get_type
-FESTIVAL_DEFAULT_SERVER_HOST
-FESTIVAL_DEFAULT_SERVER_PORT
-FESTIVAL_DEFAULT_TEXT_MODE
+</SECTION>
+
+<SECTION>
+<FILE>element-fieldanalysis</FILE>
+<TITLE>fieldanalysis</TITLE>
+GstFieldAnalysis
+GstFieldAnalysisFieldMetric
+GstFieldAnalysisFrameMetric
+<SUBSECTION Standard>
+GstFieldAnalysisClass
+GST_FIELD_ANALYSIS
+GST_FIELD_ANALYSIS_CAST
+GST_IS_FIELD_ANALYSIS
+GST_FIELD_ANALYSIS_CLASS
+GST_IS_FIELD_ANALYSIS_CLASS
+GST_TYPE_FIELD_ANALYSIS
+<SUBSECTION Private>
+gst_field_analysis_get_type
 </SECTION>
 
 <SECTION>
@@ -665,38 +1423,862 @@
 GstFisheyeClass
 GST_FISHEYE
 GST_FISHEYE_CAST
-GST_FISHEYE_CLASS
 GST_IS_FISHEYE
+GST_FISHEYE_CLASS
 GST_IS_FISHEYE_CLASS
 GST_TYPE_FISHEYE
+<SUBSECTION Private>
 gst_fisheye_get_type
-gst_fisheye_plugin_init
 </SECTION>
 
 <SECTION>
-<FILE>element-fpsdisplaysink</FILE>
-<TITLE>fpsdisplaysink</TITLE>
-GstFPSDisplaySink
+<FILE>element-fluiddec</FILE>
+<TITLE>fluiddec</TITLE>
+GstFluidDec
 <SUBSECTION Standard>
-GstFPSDisplaySinkClass
-GST_TYPE_FPS_DISPLAY_SINK
-GST_FPS_DISPLAY_SINK
-GST_IS_FPS_DISPLAY_SINK
-GST_FPS_DISPLAY_SINK_CLASS
-GST_IS_FPS_DISPLAY_SINK_CLASS
-fps_display_sink_get_type
+GstFluidDecClass
+GST_FLUID_DEC
+GST_FLUID_DEC_CAST
+GST_IS_FLUID_DEC
+GST_FLUID_DEC_CLASS
+GST_IS_FLUID_DEC_CLASS
+GST_TYPE_FLUID_DEC
+<SUBSECTION Private>
+gst_fluid_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-freeverb</FILE>
+<TITLE>freeverb</TITLE>
+GstFreeverb
+<SUBSECTION Standard>
+GstFreeverbClass
+GST_FREEVERB
+GST_FREEVERB_CAST
+GST_IS_FREEVERB
+GST_FREEVERB_CLASS
+GST_IS_FREEVERB_CLASS
+GST_TYPE_FREEVERB
+<SUBSECTION Private>
+gst_freeverb_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gdpdepay</FILE>
+<TITLE>gdpdepay</TITLE>
+GstGDPDepay
+<SUBSECTION Standard>
+GstGDPDepayClass
+GST_GDP_DEPAY
+GST_GDP_DEPAY_CAST
+GST_IS_GDP_DEPAY
+GST_GDP_DEPAY_CLASS
+GST_IS_GDP_DEPAY_CLASS
+GST_TYPE_GDP_DEPAY
+<SUBSECTION Private>
+gst_gdp_depay_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gdppay</FILE>
+<TITLE>gdppay</TITLE>
+GstGDPPay
+<SUBSECTION Standard>
+GstGDPPayClass
+GST_GDP_PAY
+GST_GDP_PAY_CAST
+GST_IS_GDP_PAY
+GST_GDP_PAY_CLASS
+GST_IS_GDP_PAY_CLASS
+GST_TYPE_GDP_PAY
+<SUBSECTION Private>
+gst_gdp_pay_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glcolorbalance</FILE>
+<TITLE>glcolorbalance</TITLE>
+GstGLColorBalance
+<SUBSECTION Standard>
+GstGLColorBalanceClass
+GST_GL_COLOR_BALANCE
+GST_GL_COLOR_BALANCE_CAST
+GST_IS_GL_COLOR_BALANCE
+GST_GL_COLOR_BALANCE_CLASS
+GST_IS_GL_COLOR_BALANCE_CLASS
+GST_TYPE_GL_COLOR_BALANCE
+<SUBSECTION Private>
+gst_gl_color_balance_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glcolorconvert</FILE>
+<TITLE>glcolorconvert</TITLE>
+GstGLColorConvertElement
+<SUBSECTION Standard>
+GstGLColorConvertElementClass
+GST_GL_COLOR_CONVERT_ELEMENT
+GST_GL_COLOR_CONVERT_ELEMENT_CAST
+GST_IS_GL_COLOR_CONVERT_ELEMENT
+GST_GL_COLOR_CONVERT_ELEMENT_CLASS
+GST_IS_GL_COLOR_CONVERT_ELEMENT_CLASS
+GST_TYPE_GL_COLOR_CONVERT_ELEMENT
+<SUBSECTION Private>
+gst_gl_color_convert_element_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glcolorscale</FILE>
+<TITLE>glcolorscale</TITLE>
+GstGLColorscale
+<SUBSECTION Standard>
+GstGLColorscaleClass
+GST_GL_COLORSCALE
+GST_GL_COLORSCALE_CAST
+GST_IS_GL_COLORSCALE
+GST_GL_COLORSCALE_CLASS
+GST_IS_GL_COLORSCALE_CLASS
+GST_TYPE_GL_COLORSCALE
+<SUBSECTION Private>
+gst_gl_colorscale_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gldeinterlace</FILE>
+<TITLE>gldeinterlace</TITLE>
+GstGLDeinterlace
+GstGLDeinterlaceMethod
+<SUBSECTION Standard>
+GstGLDeinterlaceClass
+GST_GL_DEINTERLACE
+GST_GL_DEINTERLACE_CAST
+GST_IS_GL_DEINTERLACE
+GST_GL_DEINTERLACE_CLASS
+GST_IS_GL_DEINTERLACE_CLASS
+GST_TYPE_GL_DEINTERLACE
+<SUBSECTION Private>
+gst_gl_deinterlace_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gldifferencematte</FILE>
+<TITLE>gldifferencematte</TITLE>
+GstGLDifferenceMatte
+<SUBSECTION Standard>
+GstGLDifferenceMatteClass
+GST_GL_DIFFERENCE_MATTE
+GST_GL_DIFFERENCE_MATTE_CAST
+GST_IS_GL_DIFFERENCE_MATTE
+GST_GL_DIFFERENCE_MATTE_CLASS
+GST_IS_GL_DIFFERENCE_MATTE_CLASS
+GST_TYPE_GL_DIFFERENCE_MATTE
+<SUBSECTION Private>
+gst_gl_difference_matte_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gldownload</FILE>
+<TITLE>gldownload</TITLE>
+GstGLDownloadElement
+<SUBSECTION Standard>
+GstGLDownloadElementClass
+GST_GL_DOWNLOAD_ELEMENT
+GST_GL_DOWNLOAD_ELEMENT_CAST
+GST_IS_GL_DOWNLOAD_ELEMENT
+GST_GL_DOWNLOAD_ELEMENT_CLASS
+GST_IS_GL_DOWNLOAD_ELEMENT_CLASS
+GST_TYPE_GL_DOWNLOAD_ELEMENT
+<SUBSECTION Private>
+gst_gl_download_element_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects</FILE>
+<TITLE>gleffects</TITLE>
+GstGLEffectsGeneric
+<SUBSECTION Standard>
+GstGLEffectsGenericClass
+GST_GL_EFFECTS_GENERIC
+GST_GL_EFFECTS_GENERIC_CAST
+GST_IS_GL_EFFECTS_GENERIC
+GST_GL_EFFECTS_GENERIC_CLASS
+GST_IS_GL_EFFECTS_GENERIC_CLASS
+GST_TYPE_GL_EFFECTS_GENERIC
+<SUBSECTION Private>
+gst_gl_effects_generic_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glfilterapp</FILE>
+<TITLE>glfilterapp</TITLE>
+GstGLFilterApp
+<SUBSECTION Standard>
+GstGLFilterAppClass
+GST_GL_FILTER_APP
+GST_GL_FILTER_APP_CAST
+GST_IS_GL_FILTER_APP
+GST_GL_FILTER_APP_CLASS
+GST_IS_GL_FILTER_APP_CLASS
+GST_TYPE_GL_FILTER_APP
+<SUBSECTION Private>
+gst_gl_filter_app_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glfilterbin</FILE>
+<TITLE>glfilterbin</TITLE>
+GstGLFilterBin
+<SUBSECTION Standard>
+GstGLFilterBinClass
+GST_GL_FILTER_BIN
+GST_GL_FILTER_BIN_CAST
+GST_IS_GL_FILTER_BIN
+GST_GL_FILTER_BIN_CLASS
+GST_IS_GL_FILTER_BIN_CLASS
+GST_TYPE_GL_FILTER_BIN
+<SUBSECTION Private>
+gst_gl_filter_bin_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glfiltercube</FILE>
+<TITLE>glfiltercube</TITLE>
+GstGLFilterCube
+<SUBSECTION Standard>
+GstGLFilterCubeClass
+GST_GL_FILTER_CUBE
+GST_GL_FILTER_CUBE_CAST
+GST_IS_GL_FILTER_CUBE
+GST_GL_FILTER_CUBE_CLASS
+GST_IS_GL_FILTER_CUBE_CLASS
+GST_TYPE_GL_FILTER_CUBE
+<SUBSECTION Private>
+gst_gl_filter_cube_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glfilterglass</FILE>
+<TITLE>glfilterglass</TITLE>
+GstGLFilterGlass
+<SUBSECTION Standard>
+GstGLFilterGlassClass
+GST_GL_FILTER_GLASS
+GST_GL_FILTER_GLASS_CAST
+GST_IS_GL_FILTER_GLASS
+GST_GL_FILTER_GLASS_CLASS
+GST_IS_GL_FILTER_GLASS_CLASS
+GST_TYPE_GL_FILTER_GLASS
+<SUBSECTION Private>
+gst_gl_filter_glass_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glshader</FILE>
+<TITLE>glshader</TITLE>
+GstGLFilterShader
+<SUBSECTION Standard>
+GstGLFilterShaderClass
+GST_GL_FILTER_SHADER
+GST_GL_FILTER_SHADER_CAST
+GST_IS_GL_FILTER_SHADER
+GST_GL_FILTER_SHADER_CLASS
+GST_IS_GL_FILTER_SHADER_CLASS
+GST_TYPE_GL_FILTER_SHADER
+<SUBSECTION Private>
+gst_gl_filter_shader_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glimagesinkelement</FILE>
+<TITLE>glimagesinkelement</TITLE>
+GstGLImageSink
+<SUBSECTION Standard>
+GstGLImageSinkClass
+GST_GL_IMAGE_SINK
+GST_GL_IMAGE_SINK_CAST
+GST_IS_GL_IMAGE_SINK
+GST_GL_IMAGE_SINK_CLASS
+GST_IS_GL_IMAGE_SINK_CLASS
+GST_TYPE_GL_IMAGE_SINK
+<SUBSECTION Private>
+gst_gl_image_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glimagesink</FILE>
+<TITLE>glimagesink</TITLE>
+GstGLImageSinkBin
+<SUBSECTION Standard>
+GstGLImageSinkBinClass
+GST_GL_IMAGE_SINK_BIN
+GST_GL_IMAGE_SINK_BIN_CAST
+GST_IS_GL_IMAGE_SINK_BIN
+GST_GL_IMAGE_SINK_BIN_CLASS
+GST_IS_GL_IMAGE_SINK_BIN_CLASS
+GST_TYPE_GL_IMAGE_SINK_BIN
+<SUBSECTION Private>
+gst_gl_image_sink_bin_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glmixerbin</FILE>
+<TITLE>glmixerbin</TITLE>
+GstGLMixerBin
+GstGLMixerBinStartTimeSelection
+<SUBSECTION Standard>
+GstGLMixerBinClass
+GST_GL_MIXER_BIN
+GST_GL_MIXER_BIN_CAST
+GST_IS_GL_MIXER_BIN
+GST_GL_MIXER_BIN_CLASS
+GST_IS_GL_MIXER_BIN_CLASS
+GST_TYPE_GL_MIXER_BIN
+<SUBSECTION Private>
+gst_gl_mixer_bin_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glmosaic</FILE>
+<TITLE>glmosaic</TITLE>
+GstGLMosaic
+<SUBSECTION Standard>
+GstGLMosaicClass
+GST_GL_MOSAIC
+GST_GL_MOSAIC_CAST
+GST_IS_GL_MOSAIC
+GST_GL_MOSAIC_CLASS
+GST_IS_GL_MOSAIC_CLASS
+GST_TYPE_GL_MOSAIC
+<SUBSECTION Private>
+gst_gl_mosaic_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gloverlay</FILE>
+<TITLE>gloverlay</TITLE>
+GstGLOverlay
+<SUBSECTION Standard>
+GstGLOverlayClass
+GST_GL_OVERLAY
+GST_GL_OVERLAY_CAST
+GST_IS_GL_OVERLAY
+GST_GL_OVERLAY_CLASS
+GST_IS_GL_OVERLAY_CLASS
+GST_TYPE_GL_OVERLAY
+<SUBSECTION Private>
+gst_gl_overlay_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glsinkbin</FILE>
+<TITLE>glsinkbin</TITLE>
+GstGLSinkBin
+<SUBSECTION Standard>
+GstGLSinkBinClass
+GST_GL_SINK_BIN
+GST_GL_SINK_BIN_CAST
+GST_IS_GL_SINK_BIN
+GST_GL_SINK_BIN_CLASS
+GST_IS_GL_SINK_BIN_CLASS
+GST_TYPE_GL_SINK_BIN
+<SUBSECTION Private>
+gst_gl_sink_bin_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glsrcbin</FILE>
+<TITLE>glsrcbin</TITLE>
+GstGLSrcBin
+<SUBSECTION Standard>
+GstGLSrcBinClass
+GST_GL_SRC_BIN
+GST_GL_SRC_BIN_CAST
+GST_IS_GL_SRC_BIN
+GST_GL_SRC_BIN_CLASS
+GST_IS_GL_SRC_BIN_CLASS
+GST_TYPE_GL_SRC_BIN
+<SUBSECTION Private>
+gst_gl_src_bin_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glstereomix</FILE>
+<TITLE>glstereomix</TITLE>
+GstGLStereoMix
+<SUBSECTION Standard>
+GstGLStereoMixClass
+GST_GL_STEREO_MIX
+GST_GL_STEREO_MIX_CAST
+GST_IS_GL_STEREO_MIX
+GST_GL_STEREO_MIX_CLASS
+GST_IS_GL_STEREO_MIX_CLASS
+GST_TYPE_GL_STEREO_MIX
+<SUBSECTION Private>
+gst_gl_stereo_mix_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glstereosplit</FILE>
+<TITLE>glstereosplit</TITLE>
+GstGLStereoSplit
+<SUBSECTION Standard>
+GstGLStereoSplitClass
+GST_GL_STEREO_SPLIT
+GST_GL_STEREO_SPLIT_CAST
+GST_IS_GL_STEREO_SPLIT
+GST_GL_STEREO_SPLIT_CLASS
+GST_IS_GL_STEREO_SPLIT_CLASS
+GST_TYPE_GL_STEREO_SPLIT
+<SUBSECTION Private>
+gst_gl_stereo_split_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gltestsrc</FILE>
+<TITLE>gltestsrc</TITLE>
+GstGLTestSrc
+GstGLTestSrcPattern
+<SUBSECTION Standard>
+GstGLTestSrcClass
+GST_GL_TEST_SRC
+GST_GL_TEST_SRC_CAST
+GST_IS_GL_TEST_SRC
+GST_GL_TEST_SRC_CLASS
+GST_IS_GL_TEST_SRC_CLASS
+GST_TYPE_GL_TEST_SRC
+<SUBSECTION Private>
+gst_gl_test_src_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gltransformation</FILE>
+<TITLE>gltransformation</TITLE>
+GstGLTransformation
+<SUBSECTION Standard>
+GstGLTransformationClass
+GST_GL_TRANSFORMATION
+GST_GL_TRANSFORMATION_CLASS
+GST_IS_GL_TRANSFORMATION
+GST_IS_GL_TRANSFORMATION_CLASS
+GST_TYPE_GL_TRANSFORMATION
+</SECTION>
+
+<SECTION>
+<FILE>element-glupload</FILE>
+<TITLE>glupload</TITLE>
+GstGLUploadElement
+<SUBSECTION Standard>
+GstGLUploadElementClass
+GST_GL_UPLOAD_ELEMENT
+GST_GL_UPLOAD_ELEMENT_CAST
+GST_IS_GL_UPLOAD_ELEMENT
+GST_GL_UPLOAD_ELEMENT_CLASS
+GST_IS_GL_UPLOAD_ELEMENT_CLASS
+GST_TYPE_GL_UPLOAD_ELEMENT
+<SUBSECTION Private>
+gst_gl_upload_element_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glvideomixerelement</FILE>
+<TITLE>glvideomixerelement</TITLE>
+GstGLVideoMixer
+GstGLVideoMixerBackground
+<SUBSECTION Standard>
+GstGLVideoMixerClass
+GST_GL_VIDEO_MIXER
+GST_GL_VIDEO_MIXER_CAST
+GST_IS_GL_VIDEO_MIXER
+GST_GL_VIDEO_MIXER_CLASS
+GST_IS_GL_VIDEO_MIXER_CLASS
+GST_TYPE_GL_VIDEO_MIXER
+<SUBSECTION Private>
+gst_gl_video_mixer_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glvideomixer</FILE>
+<TITLE>glvideomixer</TITLE>
+GstGLVideoMixerBin
+<SUBSECTION Standard>
+GstGLVideoMixerBinClass
+GST_GL_VIDEO_MIXER_BIN
+GST_GL_VIDEO_MIXER_BIN_CAST
+GST_IS_GL_VIDEO_MIXER_BIN
+GST_GL_VIDEO_MIXER_BIN_CLASS
+GST_IS_GL_VIDEO_MIXER_BIN_CLASS
+GST_TYPE_GL_VIDEO_MIXER_BIN
+<SUBSECTION Private>
+gst_gl_video_mixer_bin_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glviewconvert</FILE>
+<TITLE>glviewconvert</TITLE>
+GstGLViewConvertElement
+<SUBSECTION Standard>
+GstGLViewConvertElementClass
+GST_GL_VIEW_CONVERT_ELEMENT
+GST_GL_VIEW_CONVERT_ELEMENT_CAST
+GST_IS_GL_VIEW_CONVERT_ELEMENT
+GST_GL_VIEW_CONVERT_ELEMENT_CLASS
+GST_IS_GL_VIEW_CONVERT_ELEMENT_CLASS
+GST_TYPE_GL_VIEW_CONVERT_ELEMENT
+<SUBSECTION Private>
+gst_gl_view_convert_element_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gsmdec</FILE>
+<TITLE>gsmdec</TITLE>
+GstGSMDec
+<SUBSECTION Standard>
+GstGSMDecClass
+GST_GSM_DEC
+GST_GSM_DEC_CAST
+GST_IS_GSM_DEC
+GST_GSM_DEC_CLASS
+GST_IS_GSM_DEC_CLASS
+GST_TYPE_GSM_DEC
+<SUBSECTION Private>
+gst_gsm_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gsmenc</FILE>
+<TITLE>gsmenc</TITLE>
+GstGSMEnc
+<SUBSECTION Standard>
+GstGSMEncClass
+GST_GSM_ENC
+GST_GSM_ENC_CAST
+GST_IS_GSM_ENC
+GST_GSM_ENC_CLASS
+GST_IS_GSM_ENC_CLASS
+GST_TYPE_GSM_ENC
+<SUBSECTION Private>
+gst_gsm_enc_get_type
 </SECTION>
 
 <SECTION>
 <FILE>element-gaussianblur</FILE>
 <TITLE>gaussianblur</TITLE>
-GaussBlur
+GstGaussianBlur
 <SUBSECTION Standard>
-GaussBlurClass
-GAUSS_BLUR
-GST_TYPE_GAUSS_BLUR
-gauss_blur_get_type
-gst_gauss_blur_plugin_init
+GstGaussianBlurClass
+GST_GAUSSIAN_BLUR
+GST_GAUSSIAN_BLUR_CAST
+GST_IS_GAUSSIAN_BLUR
+GST_GAUSSIAN_BLUR_CLASS
+GST_IS_GAUSSIAN_BLUR_CLASS
+GST_TYPE_GAUSSIAN_BLUR
+<SUBSECTION Private>
+gst_gaussian_blur_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gmedec</FILE>
+<TITLE>gmedec</TITLE>
+GstGmeDec
+<SUBSECTION Standard>
+GstGmeDecClass
+GST_GME_DEC
+GST_GME_DEC_CAST
+GST_IS_GME_DEC
+GST_GME_DEC_CLASS
+GST_IS_GME_DEC_CLASS
+GST_TYPE_GME_DEC
+<SUBSECTION Private>
+gst_gme_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-grabcut</FILE>
+<TITLE>grabcut</TITLE>
+GstGrabcut
+<SUBSECTION Standard>
+GstGrabcutClass
+GST_GRABCUT
+GST_GRABCUT_CAST
+GST_IS_GRABCUT
+GST_GRABCUT_CLASS
+GST_IS_GRABCUT_CLASS
+GST_TYPE_GRABCUT
+<SUBSECTION Private>
+gst_grabcut_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gtkglsink</FILE>
+<TITLE>gtkglsink</TITLE>
+GstGtkGLSink
+<SUBSECTION Standard>
+GstGtkGLSinkClass
+GST_GTK_GL_SINK
+GST_GTK_GL_SINK_CAST
+GST_IS_GTK_GL_SINK
+GST_GTK_GL_SINK_CLASS
+GST_IS_GTK_GL_SINK_CLASS
+GST_TYPE_GTK_GL_SINK
+<SUBSECTION Private>
+gst_gtk_gl_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gtksink</FILE>
+<TITLE>gtksink</TITLE>
+GstGtkSink
+<SUBSECTION Standard>
+GstGtkSinkClass
+GST_GTK_SINK
+GST_GTK_SINK_CAST
+GST_IS_GTK_SINK
+GST_GTK_SINK_CLASS
+GST_IS_GTK_SINK_CLASS
+GST_TYPE_GTK_SINK
+<SUBSECTION Private>
+gst_gtk_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-h263parse</FILE>
+<TITLE>h263parse</TITLE>
+GstH263Parse
+<SUBSECTION Standard>
+GstH263ParseClass
+GST_H263_PARSE
+GST_H263_PARSE_CAST
+GST_IS_H263_PARSE
+GST_H263_PARSE_CLASS
+GST_IS_H263_PARSE_CLASS
+GST_TYPE_H263_PARSE
+<SUBSECTION Private>
+gst_h263_parse_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-h264parse</FILE>
+<TITLE>h264parse</TITLE>
+GstH264Parse
+<SUBSECTION Standard>
+GstH264ParseClass
+GST_H264_PARSE
+GST_H264_PARSE_CAST
+GST_IS_H264_PARSE
+GST_H264_PARSE_CLASS
+GST_IS_H264_PARSE_CLASS
+GST_TYPE_H264_PARSE
+<SUBSECTION Private>
+gst_h264_parse_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-h265parse</FILE>
+<TITLE>h265parse</TITLE>
+GstH265Parse
+<SUBSECTION Standard>
+GstH265ParseClass
+GST_H265_PARSE
+GST_H265_PARSE_CAST
+GST_IS_H265_PARSE
+GST_H265_PARSE_CLASS
+GST_IS_H265_PARSE_CLASS
+GST_TYPE_H265_PARSE
+<SUBSECTION Private>
+gst_h265_parse_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-hlsdemux</FILE>
+<TITLE>hlsdemux</TITLE>
+GstHLSDemux
+<SUBSECTION Standard>
+GstHLSDemuxClass
+GST_HLS_DEMUX
+GST_HLS_DEMUX_CAST
+GST_IS_HLS_DEMUX
+GST_HLS_DEMUX_CLASS
+GST_IS_HLS_DEMUX_CLASS
+GST_TYPE_HLS_DEMUX
+<SUBSECTION Private>
+gst_hls_demux_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-handdetect</FILE>
+<TITLE>handdetect</TITLE>
+GstHanddetect
+<SUBSECTION Standard>
+GstHanddetectClass
+GST_HANDDETECT
+GST_HANDDETECT_CAST
+GST_IS_HANDDETECT
+GST_HANDDETECT_CLASS
+GST_IS_HANDDETECT_CLASS
+GST_TYPE_HANDDETECT
+<SUBSECTION Private>
+gst_handdetect_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-hlssink</FILE>
+<TITLE>hlssink</TITLE>
+GstHlsSink
+<SUBSECTION Standard>
+GstHlsSinkClass
+GST_HLS_SINK
+GST_HLS_SINK_CAST
+GST_IS_HLS_SINK
+GST_HLS_SINK_CLASS
+GST_IS_HLS_SINK_CLASS
+GST_TYPE_HLS_SINK
+<SUBSECTION Private>
+gst_hls_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-irtspparse</FILE>
+<TITLE>irtspparse</TITLE>
+GstIRTSPParse
+<SUBSECTION Standard>
+GstIRTSPParseClass
+GST_IRTSP_PARSE
+GST_IRTSP_PARSE_CAST
+GST_IS_IRTSP_PARSE
+GST_IRTSP_PARSE_CLASS
+GST_IS_IRTSP_PARSE_CLASS
+GST_TYPE_IRTSP_PARSE
+<SUBSECTION Private>
+gst_irtsp_parse_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-id3mux</FILE>
+<TITLE>id3mux</TITLE>
+GstId3Mux
+<SUBSECTION Standard>
+GstId3MuxClass
+GST_ID3_MUX
+GST_ID3_MUX_CAST
+GST_IS_ID3_MUX
+GST_ID3_MUX_CLASS
+GST_IS_ID3_MUX_CLASS
+GST_TYPE_ID3_MUX
+<SUBSECTION Private>
+gst_id3_mux_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-interaudiosink</FILE>
+<TITLE>interaudiosink</TITLE>
+GstInterAudioSink
+<SUBSECTION Standard>
+GstInterAudioSinkClass
+GST_INTER_AUDIO_SINK
+GST_INTER_AUDIO_SINK_CAST
+GST_IS_INTER_AUDIO_SINK
+GST_INTER_AUDIO_SINK_CLASS
+GST_IS_INTER_AUDIO_SINK_CLASS
+GST_TYPE_INTER_AUDIO_SINK
+<SUBSECTION Private>
+gst_inter_audio_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-interaudiosrc</FILE>
+<TITLE>interaudiosrc</TITLE>
+GstInterAudioSrc
+<SUBSECTION Standard>
+GstInterAudioSrcClass
+GST_INTER_AUDIO_SRC
+GST_INTER_AUDIO_SRC_CAST
+GST_IS_INTER_AUDIO_SRC
+GST_INTER_AUDIO_SRC_CLASS
+GST_IS_INTER_AUDIO_SRC_CLASS
+GST_TYPE_INTER_AUDIO_SRC
+<SUBSECTION Private>
+gst_inter_audio_src_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-intersubsink</FILE>
+<TITLE>intersubsink</TITLE>
+GstInterSubSink
+<SUBSECTION Standard>
+GstInterSubSinkClass
+GST_INTER_SUB_SINK
+GST_INTER_SUB_SINK_CAST
+GST_IS_INTER_SUB_SINK
+GST_INTER_SUB_SINK_CLASS
+GST_IS_INTER_SUB_SINK_CLASS
+GST_TYPE_INTER_SUB_SINK
+<SUBSECTION Private>
+gst_inter_sub_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-intersubsrc</FILE>
+<TITLE>intersubsrc</TITLE>
+GstInterSubSrc
+<SUBSECTION Standard>
+GstInterSubSrcClass
+GST_INTER_SUB_SRC
+GST_INTER_SUB_SRC_CAST
+GST_IS_INTER_SUB_SRC
+GST_INTER_SUB_SRC_CLASS
+GST_IS_INTER_SUB_SRC_CLASS
+GST_TYPE_INTER_SUB_SRC
+<SUBSECTION Private>
+gst_inter_sub_src_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-intervideosink</FILE>
+<TITLE>intervideosink</TITLE>
+GstInterVideoSink
+<SUBSECTION Standard>
+GstInterVideoSinkClass
+GST_INTER_VIDEO_SINK
+GST_INTER_VIDEO_SINK_CAST
+GST_IS_INTER_VIDEO_SINK
+GST_INTER_VIDEO_SINK_CLASS
+GST_IS_INTER_VIDEO_SINK_CLASS
+GST_TYPE_INTER_VIDEO_SINK
+<SUBSECTION Private>
+gst_inter_video_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-intervideosrc</FILE>
+<TITLE>intervideosrc</TITLE>
+GstInterVideoSrc
+<SUBSECTION Standard>
+GstInterVideoSrcClass
+GST_INTER_VIDEO_SRC
+GST_INTER_VIDEO_SRC_CAST
+GST_IS_INTER_VIDEO_SRC
+GST_INTER_VIDEO_SRC_CLASS
+GST_IS_INTER_VIDEO_SRC_CLASS
+GST_TYPE_INTER_VIDEO_SRC
+<SUBSECTION Private>
+gst_inter_video_src_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-interlace</FILE>
+<TITLE>interlace</TITLE>
+GstInterlace
+GstInterlacePattern
+<SUBSECTION Standard>
+GstInterlaceClass
+GST_INTERLACE
+GST_INTERLACE_CAST
+GST_IS_INTERLACE
+GST_INTERLACE_CLASS
+GST_IS_INTERLACE_CLASS
+GST_TYPE_INTERLACE
+<SUBSECTION Private>
+gst_interlace_get_type
 </SECTION>
 
 <SECTION>
@@ -704,38 +2286,111 @@
 <TITLE>ivfparse</TITLE>
 GstIvfParse
 <SUBSECTION Standard>
-GstIvfParseState
 GstIvfParseClass
 GST_IVF_PARSE
-GST_IVF_PARSE_CLASS
+GST_IVF_PARSE_CAST
 GST_IS_IVF_PARSE
+GST_IVF_PARSE_CLASS
 GST_IS_IVF_PARSE_CLASS
 GST_TYPE_IVF_PARSE
+<SUBSECTION Private>
 gst_ivf_parse_get_type
 </SECTION>
 
 <SECTION>
+<FILE>element-ivtc</FILE>
+<TITLE>ivtc</TITLE>
+GstIvtc
+<SUBSECTION Standard>
+GstIvtcClass
+GST_IVTC
+GST_IVTC_CAST
+GST_IS_IVTC
+GST_IVTC_CLASS
+GST_IS_IVTC_CLASS
+GST_TYPE_IVTC
+<SUBSECTION Private>
+gst_ivtc_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-jp2kdecimator</FILE>
+<TITLE>jp2kdecimator</TITLE>
+GstJP2kDecimator
+<SUBSECTION Standard>
+GstJP2kDecimatorClass
+GST_J_P2K_DECIMATOR
+GST_J_P2K_DECIMATOR_CAST
+GST_IS_J_P2K_DECIMATOR
+GST_J_P2K_DECIMATOR_CLASS
+GST_IS_J_P2K_DECIMATOR_CLASS
+GST_TYPE_J_P2K_DECIMATOR
+<SUBSECTION Private>
+gst_j_p2k_decimator_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-jpeg2000parse</FILE>
+<TITLE>jpeg2000parse</TITLE>
+GstJPEG2000Parse
+<SUBSECTION Standard>
+GstJPEG2000ParseClass
+GST_JPE_G2000_PARSE
+GST_JPE_G2000_PARSE_CAST
+GST_IS_JPE_G2000_PARSE
+GST_JPE_G2000_PARSE_CLASS
+GST_IS_JPE_G2000_PARSE_CLASS
+GST_TYPE_JPE_G2000_PARSE
+<SUBSECTION Private>
+gst_jpe_g2000_parse_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-jifmux</FILE>
+<TITLE>jifmux</TITLE>
+GstJifMux
+<SUBSECTION Standard>
+GstJifMuxClass
+GST_JIF_MUX
+GST_JIF_MUX_CAST
+GST_IS_JIF_MUX
+GST_JIF_MUX_CLASS
+GST_IS_JIF_MUX_CLASS
+GST_TYPE_JIF_MUX
+<SUBSECTION Private>
+gst_jif_mux_get_type
+</SECTION>
+
+<SECTION>
 <FILE>element-jpegparse</FILE>
 <TITLE>jpegparse</TITLE>
 GstJpegParse
-<SUBSECTION Starndard>
+<SUBSECTION Standard>
 GstJpegParseClass
 GST_JPEG_PARSE
-GST_JPEG_PARSE_CLASS
+GST_JPEG_PARSE_CAST
 GST_IS_JPEG_PARSE
+GST_JPEG_PARSE_CLASS
 GST_IS_JPEG_PARSE_CLASS
 GST_TYPE_JPEG_PARSE
+<SUBSECTION Private>
 gst_jpeg_parse_get_type
 </SECTION>
 
 <SECTION>
-<FILE>element-liveadder</FILE>
-<TITLE>liveadder</TITLE>
-GstLiveAdder
+<FILE>element-kmssink</FILE>
+<TITLE>kmssink</TITLE>
+GstKMSSink
 <SUBSECTION Standard>
-GstLiveAdderClass
-GST_TYPE_LIVE_ADDER
-gst_live_adder_get_type
+GstKMSSinkClass
+GST_KMS_SINK
+GST_KMS_SINK_CAST
+GST_IS_KMS_SINK
+GST_KMS_SINK_CLASS
+GST_IS_KMS_SINK_CLASS
+GST_TYPE_KMS_SINK
+<SUBSECTION Private>
+gst_kms_sink_get_type
 </SECTION>
 
 <SECTION>
@@ -746,12 +2401,12 @@
 GstKaleidoscopeClass
 GST_KALEIDOSCOPE
 GST_KALEIDOSCOPE_CAST
-GST_KALEIDOSCOPE_CLASS
 GST_IS_KALEIDOSCOPE
+GST_KALEIDOSCOPE_CLASS
 GST_IS_KALEIDOSCOPE_CLASS
 GST_TYPE_KALEIDOSCOPE
+<SUBSECTION Private>
 gst_kaleidoscope_get_type
-gst_kaleidoscope_plugin_init
 </SECTION>
 
 <SECTION>
@@ -761,10 +2416,12 @@
 <SUBSECTION Standard>
 GstKateDecClass
 GST_KATE_DEC
-GST_KATE_DEC_CLASS
+GST_KATE_DEC_CAST
 GST_IS_KATE_DEC
+GST_KATE_DEC_CLASS
 GST_IS_KATE_DEC_CLASS
 GST_TYPE_KATE_DEC
+<SUBSECTION Private>
 gst_kate_dec_get_type
 </SECTION>
 
@@ -775,10 +2432,12 @@
 <SUBSECTION Standard>
 GstKateEncClass
 GST_KATE_ENC
-GST_KATE_ENC_CLASS
+GST_KATE_ENC_CAST
 GST_IS_KATE_ENC
+GST_KATE_ENC_CLASS
 GST_IS_KATE_ENC_CLASS
 GST_TYPE_KATE_ENC
+<SUBSECTION Private>
 gst_kate_enc_get_type
 </SECTION>
 
@@ -789,10 +2448,12 @@
 <SUBSECTION Standard>
 GstKateParseClass
 GST_KATE_PARSE
-GST_KATE_PARSE_CLASS
+GST_KATE_PARSE_CAST
 GST_IS_KATE_PARSE
+GST_KATE_PARSE_CLASS
 GST_IS_KATE_PARSE_CLASS
 GST_TYPE_KATE_PARSE
+<SUBSECTION Private>
 gst_kate_parse_get_type
 </SECTION>
 
@@ -803,10 +2464,12 @@
 <SUBSECTION Standard>
 GstKateTagClass
 GST_KATE_TAG
-GST_KATE_TAG_CLASS
+GST_KATE_TAG_CAST
 GST_IS_KATE_TAG
+GST_KATE_TAG_CLASS
 GST_IS_KATE_TAG_CLASS
 GST_TYPE_KATE_TAG
+<SUBSECTION Private>
 gst_kate_tag_get_type
 </SECTION>
 
@@ -825,6 +2488,22 @@
 </SECTION>
 
 <SECTION>
+<FILE>element-liveadder</FILE>
+<TITLE>liveadder</TITLE>
+GstLiveAdder
+<SUBSECTION Standard>
+GstLiveAdderClass
+GST_LIVE_ADDER
+GST_LIVE_ADDER_CAST
+GST_IS_LIVE_ADDER
+GST_LIVE_ADDER_CLASS
+GST_IS_LIVE_ADDER_CLASS
+GST_TYPE_LIVE_ADDER
+<SUBSECTION Private>
+gst_live_adder_get_type
+</SECTION>
+
+<SECTION>
 <FILE>element-ladspa</FILE>
 <TITLE>ladspa</TITLE>
 GstLADSPA
@@ -833,6 +2512,54 @@
 </SECTION>
 
 <SECTION>
+<FILE>element-mmssrc</FILE>
+<TITLE>mmssrc</TITLE>
+GstMMS
+<SUBSECTION Standard>
+GstMMSClass
+GST_MMS
+GST_MMS_CAST
+GST_IS_MMS
+GST_MMS_CLASS
+GST_IS_MMS_CLASS
+GST_TYPE_MMS
+<SUBSECTION Private>
+gst_mms_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-mxfdemux</FILE>
+<TITLE>mxfdemux</TITLE>
+GstMXFDemux
+<SUBSECTION Standard>
+GstMXFDemuxClass
+GST_MXF_DEMUX
+GST_MXF_DEMUX_CAST
+GST_IS_MXF_DEMUX
+GST_MXF_DEMUX_CLASS
+GST_IS_MXF_DEMUX_CLASS
+GST_TYPE_MXF_DEMUX
+<SUBSECTION Private>
+gst_mxf_demux_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-mxfmux</FILE>
+<TITLE>mxfmux</TITLE>
+GstMXFMux
+<SUBSECTION Standard>
+GstMXFMuxClass
+GST_MXF_MUX
+GST_MXF_MUX_CAST
+GST_IS_MXF_MUX
+GST_MXF_MUX_CLASS
+GST_IS_MXF_MUX_CLASS
+GST_TYPE_MXF_MUX
+<SUBSECTION Private>
+gst_mxf_mux_get_type
+</SECTION>
+
+<SECTION>
 <FILE>element-marble</FILE>
 <TITLE>marble</TITLE>
 GstMarble
@@ -840,12 +2567,28 @@
 GstMarbleClass
 GST_MARBLE
 GST_MARBLE_CAST
-GST_MARBLE_CLASS
 GST_IS_MARBLE
+GST_MARBLE_CLASS
 GST_IS_MARBLE_CLASS
 GST_TYPE_MARBLE
+<SUBSECTION Private>
 gst_marble_get_type
-gst_marble_plugin_init
+</SECTION>
+
+<SECTION>
+<FILE>element-midiparse</FILE>
+<TITLE>midiparse</TITLE>
+GstMidiParse
+<SUBSECTION Standard>
+GstMidiParseClass
+GST_MIDI_PARSE
+GST_MIDI_PARSE_CAST
+GST_IS_MIDI_PARSE
+GST_MIDI_PARSE_CLASS
+GST_IS_MIDI_PARSE_CLASS
+GST_TYPE_MIDI_PARSE
+<SUBSECTION Private>
+gst_midi_parse_get_type
 </SECTION>
 
 <SECTION>
@@ -854,12 +2597,14 @@
 GstMimDec
 <SUBSECTION Standard>
 GstMimDecClass
-GST_IS_MIMDEC
-GST_IS_MIMDEC_CLASS
-GST_MIMDEC
-GST_MIMDEC_CLASS
-GST_TYPE_MIMDEC
-gst_mimdec_get_type
+GST_MIM_DEC
+GST_MIM_DEC_CAST
+GST_IS_MIM_DEC
+GST_MIM_DEC_CLASS
+GST_IS_MIM_DEC_CLASS
+GST_TYPE_MIM_DEC
+<SUBSECTION Private>
+gst_mim_dec_get_type
 </SECTION>
 
 <SECTION>
@@ -868,28 +2613,31 @@
 GstMimEnc
 <SUBSECTION Standard>
 GstMimEncClass
-GST_IS_MIMENC
-GST_IS_MIMENC_CLASS
-GST_MIMENC
-GST_MIMENC_CLASS
-GST_TYPE_MIMENC
-gst_mimenc_get_type
+GST_MIM_ENC
+GST_MIM_ENC_CAST
+GST_IS_MIM_ENC
+GST_MIM_ENC_CLASS
+GST_IS_MIM_ENC_CLASS
+GST_TYPE_MIM_ENC
+<SUBSECTION Private>
+gst_mim_enc_get_type
 </SECTION>
 
 <SECTION>
 <FILE>element-mirror</FILE>
 <TITLE>mirror</TITLE>
 GstMirror
+GstMirrorMode
 <SUBSECTION Standard>
 GstMirrorClass
 GST_MIRROR
 GST_MIRROR_CAST
-GST_MIRROR_CLASS
 GST_IS_MIRROR
+GST_MIRROR_CLASS
 GST_IS_MIRROR_CLASS
 GST_TYPE_MIRROR
+<SUBSECTION Private>
 gst_mirror_get_type
-gst_mirror_plugin_init
 </SECTION>
 
 <SECTION>
@@ -898,97 +2646,137 @@
 GstModPlug
 <SUBSECTION Standard>
 GstModPlugClass
-GST_MODPLUG
-GST_MODPLUG_CLASS
-GST_IS_MODPLUG
-GST_IS_MODPLUG_CLASS
-GST_TYPE_MODPLUG
-gst_modplug_get_type
+GST_MOD_PLUG
+GST_MOD_PLUG_CAST
+GST_IS_MOD_PLUG
+GST_MOD_PLUG_CLASS
+GST_IS_MOD_PLUG_CLASS
+GST_TYPE_MOD_PLUG
+<SUBSECTION Private>
+gst_mod_plug_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-motioncells</FILE>
+<TITLE>motioncells</TITLE>
+GstMotioncells
+<SUBSECTION Standard>
+GstMotioncellsClass
+GST_MOTIONCELLS
+GST_MOTIONCELLS_CAST
+GST_IS_MOTIONCELLS
+GST_MOTIONCELLS_CLASS
+GST_IS_MOTIONCELLS_CLASS
+GST_TYPE_MOTIONCELLS
+<SUBSECTION Private>
+gst_motioncells_get_type
 </SECTION>
 
 <SECTION>
 <FILE>element-mpeg2enc</FILE>
 <TITLE>mpeg2enc</TITLE>
 GstMpeg2enc
+GstMpeg2encAspect
+GstMpeg2encFormat
+GstMpeg2encFramerate
+GstMpeg2encInterlaceMode
+GstMpeg2encVideoNorm
+GstMpeg2encPlaybackFieldOrders
+GstMpeg2encQuantisationMatrix
 <SUBSECTION Standard>
 GstMpeg2encClass
 GST_MPEG2ENC
-GST_MPEG2ENC_CLASS
+GST_MPEG2ENC_CAST
 GST_IS_MPEG2ENC
+GST_MPEG2ENC_CLASS
 GST_IS_MPEG2ENC_CLASS
 GST_TYPE_MPEG2ENC
-GST_MPEG2ENC_MUTEX_LOCK
-GST_MPEG2ENC_MUTEX_UNLOCK
-GST_MPEG2ENC_SIGNAL
-GST_MPEG2ENC_WAIT
+<SUBSECTION Private>
 gst_mpeg2enc_get_type
 </SECTION>
 
 <SECTION>
-<FILE>element-mpegpsmux</FILE>
-<TITLE>mpegpsmux</TITLE>
+<FILE>element-mpeg4videoparse</FILE>
+<TITLE>mpeg4videoparse</TITLE>
+GstMpeg4VParse
 <SUBSECTION Standard>
-MpegPsMux
-GST_MPEG_PSMUX
-GST_TYPE_MPEG_PSMUX
-MpegPsMuxClass
-mpegpsmux_get_type
+GstMpeg4VParseClass
+GST_MPEG4_V_PARSE
+GST_MPEG4_V_PARSE_CAST
+GST_IS_MPEG4_V_PARSE
+GST_MPEG4_V_PARSE_CLASS
+GST_IS_MPEG4_V_PARSE_CLASS
+GST_TYPE_MPEG4_V_PARSE
 <SUBSECTION Private>
-MpegPsPadData
-MpegPsPadDataPrepareFunction
-CLOCK_BASE
-CLOCK_FREQ
-GSTTIME_TO_MPEGTIME
-NORMAL_TS_PACKET_LENGTH
-M2TS_PACKET_LENGTH
-STANDARD_TIME_CLOCK
-TWO_POW_33_MINUS1
+gst_mpeg4_v_parse_get_type
 </SECTION>
 
 <SECTION>
-<FILE>element-mpegtsmux</FILE>
-<TITLE>mpegtsmux</TITLE>
+<FILE>element-mpegpsdemux</FILE>
+<TITLE>mpegpsdemux</TITLE>
+GstMpegPSDemux
 <SUBSECTION Standard>
-MpegTsMux
-GST_MPEG_TSMUX
-GST_TYPE_MPEG_TSMUX
-MpegTsMuxClass
-mpegtsmux_get_type
+GstMpegPSDemuxClass
+GST_MPEG_PS_DEMUX
+GST_MPEG_PS_DEMUX_CAST
+GST_IS_MPEG_PS_DEMUX
+GST_MPEG_PS_DEMUX_CLASS
+GST_IS_MPEG_PS_DEMUX_CLASS
+GST_TYPE_MPEG_PS_DEMUX
 <SUBSECTION Private>
-MpegTsPadData
-CLOCK_BASE
-CLOCK_FREQ
-CLOCK_FREQ_SCR
-MPEGTIME_TO_GSTTIME
-GSTTIME_TO_MPEGTIME
-MPEG_SYS_TIME_TO_GSTTIME
-GSTTIME_TO_MPEG_SYS_TIME
-NORMAL_TS_PACKET_LENGTH
-M2TS_PACKET_LENGTH
-MAX_PROG_NUMBER
-DEFAULT_PROG_ID
+gst_mpeg_ps_demux_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-mpegvideoparse</FILE>
+<TITLE>mpegvideoparse</TITLE>
+GstMpegvParse
+<SUBSECTION Standard>
+GstMpegvParseClass
+GST_MPEGV_PARSE
+GST_MPEGV_PARSE_CAST
+GST_IS_MPEGV_PARSE
+GST_MPEGV_PARSE_CLASS
+GST_IS_MPEGV_PARSE_CLASS
+GST_TYPE_MPEGV_PARSE
+<SUBSECTION Private>
+gst_mpegv_parse_get_type
 </SECTION>
 
 <SECTION>
 <FILE>element-mplex</FILE>
 <TITLE>mplex</TITLE>
 GstMplex
+GstMplexFormat
 <SUBSECTION Standard>
 GstMplexClass
 GST_MPLEX
-GST_MPLEX_CLASS
+GST_MPLEX_CAST
 GST_IS_MPLEX
+GST_MPLEX_CLASS
 GST_IS_MPLEX_CLASS
 GST_TYPE_MPLEX
-GST_MPLEX_MUTEX_LOCK
-GST_MPLEX_MUTEX_UNLOCK
-GST_MPLEX_SIGNAL
-GST_MPLEX_SIGNAL_ALL
-GST_MPLEX_WAIT
+<SUBSECTION Private>
 gst_mplex_get_type
 </SECTION>
 
 <SECTION>
+<FILE>element-mssdemux</FILE>
+<TITLE>mssdemux</TITLE>
+GstMssDemux
+<SUBSECTION Standard>
+GstMssDemuxClass
+GST_MSS_DEMUX
+GST_MSS_DEMUX_CAST
+GST_IS_MSS_DEMUX
+GST_MSS_DEMUX_CLASS
+GST_IS_MSS_DEMUX_CLASS
+GST_TYPE_MSS_DEMUX
+<SUBSECTION Private>
+gst_mss_demux_get_type
+</SECTION>
+
+<SECTION>
 <FILE>element-mxfdemux</FILE>
 <TITLE>mxfdemux</TITLE>
 GstMXFDemux
@@ -1018,6 +2806,22 @@
 </SECTION>
 
 <SECTION>
+<FILE>element-netsim</FILE>
+<TITLE>netsim</TITLE>
+GstNetSim
+<SUBSECTION Standard>
+GstNetSimClass
+GST_NET_SIM
+GST_NET_SIM_CAST
+GST_IS_NET_SIM
+GST_NET_SIM_CLASS
+GST_IS_NET_SIM_CLASS
+GST_TYPE_NET_SIM
+<SUBSECTION Private>
+gst_net_sim_get_type
+</SECTION>
+
+<SECTION>
 <FILE>element-nuvdemux</FILE>
 <TITLE>nuvdemux</TITLE>
 GstNuvDemux
@@ -1053,25 +2857,78 @@
 <SUBSECTION Standard>
 GstOFAClass
 GST_OFA
-GST_OFA_CLASS
+GST_OFA_CAST
 GST_IS_OFA
+GST_OFA_CLASS
 GST_IS_OFA_CLASS
 GST_TYPE_OFA
+<SUBSECTION Private>
 gst_ofa_get_type
 </SECTION>
 
 <SECTION>
 <FILE>element-openalsink</FILE>
 <TITLE>openalsink</TITLE>
-GstOpenalSink
+GstOpenALSink
 <SUBSECTION Standard>
-GstOpenalSinkClass
-GST_OPENAL_SINK
-GST_OPENAL_SINK_CLASS
-GST_IS_OPENAL_SINK
-GST_IS_OPENAL_SINK_CLASS
-GST_TYPE_OPENAL_SINK
-gst_openal_sink_get_type
+GstOpenALSinkClass
+GST_OPEN_AL_SINK
+GST_OPEN_AL_SINK_CAST
+GST_IS_OPEN_AL_SINK
+GST_OPEN_AL_SINK_CLASS
+GST_IS_OPEN_AL_SINK_CLASS
+GST_TYPE_OPEN_AL_SINK
+<SUBSECTION Private>
+gst_open_al_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-openexrdec</FILE>
+<TITLE>openexrdec</TITLE>
+GstOpenEXRDec
+<SUBSECTION Standard>
+GstOpenEXRDecClass
+GST_OPEN_EXR_DEC
+GST_OPEN_EXR_DEC_CAST
+GST_IS_OPEN_EXR_DEC
+GST_OPEN_EXR_DEC_CLASS
+GST_IS_OPEN_EXR_DEC_CLASS
+GST_TYPE_OPEN_EXR_DEC
+<SUBSECTION Private>
+gst_open_exr_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-openjpegdec</FILE>
+<TITLE>openjpegdec</TITLE>
+GstOpenJPEGDec
+<SUBSECTION Standard>
+GstOpenJPEGDecClass
+GST_OPEN_JPEG_DEC
+GST_OPEN_JPEG_DEC_CAST
+GST_IS_OPEN_JPEG_DEC
+GST_OPEN_JPEG_DEC_CLASS
+GST_IS_OPEN_JPEG_DEC_CLASS
+GST_TYPE_OPEN_JPEG_DEC
+<SUBSECTION Private>
+gst_open_jpeg_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-openjpegenc</FILE>
+<TITLE>openjpegenc</TITLE>
+GstOpenJPEGEnc
+GstOpenJPEGEncProgressionOrder
+<SUBSECTION Standard>
+GstOpenJPEGEncClass
+GST_OPEN_JPEG_ENC
+GST_OPEN_JPEG_ENC_CAST
+GST_IS_OPEN_JPEG_ENC
+GST_OPEN_JPEG_ENC_CLASS
+GST_IS_OPEN_JPEG_ENC_CLASS
+GST_TYPE_OPEN_JPEG_ENC
+<SUBSECTION Private>
+gst_open_jpeg_enc_get_type
 </SECTION>
 
 <SECTION>
@@ -1081,25 +2938,45 @@
 <SUBSECTION Standard>
 GstOpenalSrcClass
 GST_OPENAL_SRC
-GST_OPENAL_SRC_CLASS
+GST_OPENAL_SRC_CAST
 GST_IS_OPENAL_SRC
+GST_OPENAL_SRC_CLASS
 GST_IS_OPENAL_SRC_CLASS
 GST_TYPE_OPENAL_SRC
+<SUBSECTION Private>
 gst_openal_src_get_type
 </SECTION>
 
+<SECTION>
 <FILE>element-opencvtextoverlay</FILE>
 <TITLE>opencvtextoverlay</TITLE>
 GstOpencvTextOverlay
 <SUBSECTION Standard>
 GstOpencvTextOverlayClass
 GST_OPENCV_TEXT_OVERLAY
-GST_OPENCV_TEXT_OVERLAY_CLASS
-GST_TYPE_OPENCV_TEXT_OVERLAY
+GST_OPENCV_TEXT_OVERLAY_CAST
 GST_IS_OPENCV_TEXT_OVERLAY
+GST_OPENCV_TEXT_OVERLAY_CLASS
 GST_IS_OPENCV_TEXT_OVERLAY_CLASS
+GST_TYPE_OPENCV_TEXT_OVERLAY
+<SUBSECTION Private>
 gst_opencv_text_overlay_get_type
-gst_opencv_text_overlay_plugin_init
+</SECTION>
+
+<SECTION>
+<FILE>element-opusparse</FILE>
+<TITLE>opusparse</TITLE>
+GstOpusParse
+<SUBSECTION Standard>
+GstOpusParseClass
+GST_OPUS_PARSE
+GST_OPUS_PARSE_CAST
+GST_IS_OPUS_PARSE
+GST_OPUS_PARSE_CLASS
+GST_IS_OPUS_PARSE_CLASS
+GST_TYPE_OPUS_PARSE
+<SUBSECTION Private>
+gst_opus_parse_get_type
 </SECTION>
 
 <SECTION>
@@ -1109,15 +2986,32 @@
 <SUBSECTION Standard>
 GstPcapParseClass
 GST_PCAP_PARSE
-GST_PCAP_PARSE_CLASS
+GST_PCAP_PARSE_CAST
 GST_IS_PCAP_PARSE
+GST_PCAP_PARSE_CLASS
 GST_IS_PCAP_PARSE_CLASS
 GST_TYPE_PCAP_PARSE
-GstPcapParseState
+<SUBSECTION Private>
 gst_pcap_parse_get_type
 </SECTION>
 
 <SECTION>
+<FILE>element-perspective</FILE>
+<TITLE>perspective</TITLE>
+GstPerspective
+<SUBSECTION Standard>
+GstPerspectiveClass
+GST_PERSPECTIVE
+GST_PERSPECTIVE_CAST
+GST_IS_PERSPECTIVE
+GST_PERSPECTIVE_CLASS
+GST_IS_PERSPECTIVE_CLASS
+GST_TYPE_PERSPECTIVE
+<SUBSECTION Private>
+gst_perspective_get_type
+</SECTION>
+
+<SECTION>
 <FILE>element-pinch</FILE>
 <TITLE>pinch</TITLE>
 GstPinch
@@ -1125,68 +3019,108 @@
 GstPinchClass
 GST_PINCH
 GST_PINCH_CAST
-GST_PINCH_CLASS
 GST_IS_PINCH
+GST_PINCH_CLASS
 GST_IS_PINCH_CLASS
 GST_TYPE_PINCH
+<SUBSECTION Private>
 gst_pinch_get_type
-gst_pinch_plugin_init
-</SECTION>
-
-<FILE>element-pyramidsegment</FILE>
-<TITLE>pyramidsegment</TITLE>
-Gstpyramidsegment
-<SUBSECTION Standard>
-GstpyramidsegmentClass
-GST_PYRAMIDSEGMENT
-GST_PYRAMIDSEGMENT_CLASS
-GST_TYPE_PYRAMIDSEGMENT
-GST_IS_PYRAMIDSEGMENT
-GST_IS_PYRAMIDSEGMENT_CLASS
-gst_pyramidsegment_get_type
-gst_pyramidsegment_plugin_init
 </SECTION>
 
 <SECTION>
-<FILE>element-rfbsrc</FILE>
-<TITLE>rfbsrc</TITLE>
-GstRfbSrc
+<FILE>element-pitch</FILE>
+<TITLE>pitch</TITLE>
+GstPitch
 <SUBSECTION Standard>
-GstRfbSrcClass
-GST_RFB_SRC
-GST_RFB_SRC_CLASS
-GST_IS_RFB_SRC
-GST_IS_RFB_SRC_CLASS
-GST_TYPE_RFB_SRC
-gst_rfb_src_get_type
+GstPitchClass
+GST_PITCH
+GST_PITCH_CAST
+GST_IS_PITCH
+GST_PITCH_CLASS
+GST_IS_PITCH_CLASS
+GST_TYPE_PITCH
+<SUBSECTION Private>
+gst_pitch_get_type
 </SECTION>
 
 <SECTION>
-<FILE>element-rsvgoverlay</FILE>
-<TITLE>rsvgoverlay</TITLE>
-GstRsvgOverlay
+<FILE>element-pngparse</FILE>
+<TITLE>pngparse</TITLE>
+GstPngParse
 <SUBSECTION Standard>
-GstRsvgOverlayClass
-GST_RSVG_OVERLAY
-GST_RSVG_OVERLAY_CLASS
-GST_IS_RSVG_OVERLAY
-GST_IS_RSVG_OVERLAY_CLASS
-GST_TYPE_RSVG_OVERLAY
-gst_rsvg_overlay_get_type
+GstPngParseClass
+GST_PNG_PARSE
+GST_PNG_PARSE_CAST
+GST_IS_PNG_PARSE
+GST_PNG_PARSE_CLASS
+GST_IS_PNG_PARSE_CLASS
+GST_TYPE_PNG_PARSE
+<SUBSECTION Private>
+gst_png_parse_get_type
 </SECTION>
 
 <SECTION>
-<FILE>element-rsvgdec</FILE>
-<TITLE>rsvgdec</TITLE>
-GstRsvgDec
+<FILE>element-pnmdec</FILE>
+<TITLE>pnmdec</TITLE>
+GstPnmdec
 <SUBSECTION Standard>
-GstRsvgDecClass
-GST_RSVG_DEC
-GST_RSVG_DEC_CLASS
-GST_IS_RSVG_DEC
-GST_IS_RSVG_DEC_CLASS
-GST_TYPE_RSVG_DEC
-gst_rsvg_dec_get_type
+GstPnmdecClass
+GST_PNMDEC
+GST_PNMDEC_CAST
+GST_IS_PNMDEC
+GST_PNMDEC_CLASS
+GST_IS_PNMDEC_CLASS
+GST_TYPE_PNMDEC
+<SUBSECTION Private>
+gst_pnmdec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-pnmenc</FILE>
+<TITLE>pnmenc</TITLE>
+GstPnmenc
+<SUBSECTION Standard>
+GstPnmencClass
+GST_PNMENC
+GST_PNMENC_CAST
+GST_IS_PNMENC
+GST_PNMENC_CLASS
+GST_IS_PNMENC_CLASS
+GST_TYPE_PNMENC
+<SUBSECTION Private>
+gst_pnmenc_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-qmlglsink</FILE>
+<TITLE>qmlglsink</TITLE>
+GstQtSink
+<SUBSECTION Standard>
+GstQtSinkClass
+GST_QT_SINK
+GST_QT_SINK_CAST
+GST_IS_QT_SINK
+GST_QT_SINK_CLASS
+GST_IS_QT_SINK_CLASS
+GST_TYPE_QT_SINK
+<SUBSECTION Private>
+gst_qt_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-rgb2bayer</FILE>
+<TITLE>rgb2bayer</TITLE>
+GstRGB2Bayer
+<SUBSECTION Standard>
+GstRGB2BayerClass
+GST_RG_B2_BAYER
+GST_RG_B2_BAYER_CAST
+GST_IS_RG_B2_BAYER
+GST_RG_B2_BAYER_CLASS
+GST_IS_RG_B2_BAYER_CLASS
+GST_TYPE_RG_B2_BAYER
+<SUBSECTION Private>
+gst_rg_b2_bayer_get_type
 </SECTION>
 
 <SECTION>
@@ -1196,11 +3130,13 @@
 <SUBSECTION Standard>
 GstRTMPSinkClass
 GST_RTMP_SINK
+GST_RTMP_SINK_CAST
 GST_IS_RTMP_SINK
-GST_TYPE_RTMP_SINK
-gst_rtmp_sink_get_type
 GST_RTMP_SINK_CLASS
 GST_IS_RTMP_SINK_CLASS
+GST_TYPE_RTMP_SINK
+<SUBSECTION Private>
+gst_rtmp_sink_get_type
 </SECTION>
 
 <SECTION>
@@ -1210,11 +3146,158 @@
 <SUBSECTION Standard>
 GstRTMPSrcClass
 GST_RTMP_SRC
+GST_RTMP_SRC_CAST
 GST_IS_RTMP_SRC
-GST_TYPE_RTMP_SRC
-gst_rtmp_src_get_type
 GST_RTMP_SRC_CLASS
 GST_IS_RTMP_SRC_CLASS
+GST_TYPE_RTMP_SRC
+<SUBSECTION Private>
+gst_rtmp_src_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-removesilence</FILE>
+<TITLE>removesilence</TITLE>
+GstRemoveSilence
+<SUBSECTION Standard>
+GstRemoveSilenceClass
+GST_REMOVE_SILENCE
+GST_REMOVE_SILENCE_CAST
+GST_IS_REMOVE_SILENCE
+GST_REMOVE_SILENCE_CLASS
+GST_IS_REMOVE_SILENCE_CLASS
+GST_TYPE_REMOVE_SILENCE
+<SUBSECTION Private>
+gst_remove_silence_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-retinex</FILE>
+<TITLE>retinex</TITLE>
+GstRetinex
+GstRetinexMethod
+<SUBSECTION Standard>
+GstRetinexClass
+GST_RETINEX
+GST_RETINEX_CAST
+GST_IS_RETINEX
+GST_RETINEX_CLASS
+GST_IS_RETINEX_CLASS
+GST_TYPE_RETINEX
+<SUBSECTION Private>
+gst_retinex_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-rfbsrc</FILE>
+<TITLE>rfbsrc</TITLE>
+GstRfbSrc
+<SUBSECTION Standard>
+GstRfbSrcClass
+GST_RFB_SRC
+GST_RFB_SRC_CAST
+GST_IS_RFB_SRC
+GST_RFB_SRC_CLASS
+GST_IS_RFB_SRC_CLASS
+GST_TYPE_RFB_SRC
+<SUBSECTION Private>
+gst_rfb_src_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-rotate</FILE>
+<TITLE>rotate</TITLE>
+GstRotate
+<SUBSECTION Standard>
+GstRotateClass
+GST_ROTATE
+GST_ROTATE_CAST
+GST_IS_ROTATE
+GST_ROTATE_CLASS
+GST_IS_ROTATE_CLASS
+GST_TYPE_ROTATE
+<SUBSECTION Private>
+gst_rotate_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-rsvgdec</FILE>
+<TITLE>rsvgdec</TITLE>
+GstRsvgDec
+<SUBSECTION Standard>
+GstRsvgDecClass
+GST_RSVG_DEC
+GST_RSVG_DEC_CAST
+GST_IS_RSVG_DEC
+GST_RSVG_DEC_CLASS
+GST_IS_RSVG_DEC_CLASS
+GST_TYPE_RSVG_DEC
+<SUBSECTION Private>
+gst_rsvg_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-rsvgoverlay</FILE>
+<TITLE>rsvgoverlay</TITLE>
+GstRsvgOverlay
+<SUBSECTION Standard>
+GstRsvgOverlayClass
+GST_RSVG_OVERLAY
+GST_RSVG_OVERLAY_CAST
+GST_IS_RSVG_OVERLAY
+GST_RSVG_OVERLAY_CLASS
+GST_IS_RSVG_OVERLAY_CLASS
+GST_TYPE_RSVG_OVERLAY
+<SUBSECTION Private>
+gst_rsvg_overlay_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-rtpasfpay</FILE>
+<TITLE>rtpasfpay</TITLE>
+GstRtpAsfPay
+<SUBSECTION Standard>
+GstRtpAsfPayClass
+GST_RTP_ASF_PAY
+GST_RTP_ASF_PAY_CAST
+GST_IS_RTP_ASF_PAY
+GST_RTP_ASF_PAY_CLASS
+GST_IS_RTP_ASF_PAY_CLASS
+GST_TYPE_RTP_ASF_PAY
+<SUBSECTION Private>
+gst_rtp_asf_pay_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-rtponvifparse</FILE>
+<TITLE>rtponvifparse</TITLE>
+GstRtpOnvifParse
+<SUBSECTION Standard>
+GstRtpOnvifParseClass
+GST_RTP_ONVIF_PARSE
+GST_RTP_ONVIF_PARSE_CAST
+GST_IS_RTP_ONVIF_PARSE
+GST_RTP_ONVIF_PARSE_CLASS
+GST_IS_RTP_ONVIF_PARSE_CLASS
+GST_TYPE_RTP_ONVIF_PARSE
+<SUBSECTION Private>
+gst_rtp_onvif_parse_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-rtponviftimestamp</FILE>
+<TITLE>rtponviftimestamp</TITLE>
+GstRtpOnvifTimestamp
+<SUBSECTION Standard>
+GstRtpOnvifTimestampClass
+GST_RTP_ONVIF_TIMESTAMP
+GST_RTP_ONVIF_TIMESTAMP_CAST
+GST_IS_RTP_ONVIF_TIMESTAMP
+GST_RTP_ONVIF_TIMESTAMP_CLASS
+GST_IS_RTP_ONVIF_TIMESTAMP_CLASS
+GST_TYPE_RTP_ONVIF_TIMESTAMP
+<SUBSECTION Private>
+gst_rtp_onvif_timestamp_get_type
 </SECTION>
 
 <SECTION>
@@ -1254,17 +3337,111 @@
 GstSDPDemux
 <SUBSECTION Standard>
 GstSDPDemuxClass
-GstSDPStream
 GST_SDP_DEMUX
-GST_SDP_DEMUX_CLASS
+GST_SDP_DEMUX_CAST
 GST_IS_SDP_DEMUX
+GST_SDP_DEMUX_CLASS
 GST_IS_SDP_DEMUX_CLASS
 GST_TYPE_SDP_DEMUX
+<SUBSECTION Private>
 gst_sdp_demux_get_type
-GST_SDP_DEMUX_CAST
-GST_SDP_STREAM_GET_LOCK
-GST_SDP_STREAM_LOCK
-GST_SDP_STREAM_UNLOCK
+</SECTION>
+
+<SECTION>
+<FILE>element-sfdec</FILE>
+<TITLE>sfdec</TITLE>
+GstSFDec
+<SUBSECTION Standard>
+GstSFDecClass
+GST_SF_DEC
+GST_SF_DEC_CAST
+GST_IS_SF_DEC
+GST_SF_DEC_CLASS
+GST_IS_SF_DEC_CLASS
+GST_TYPE_SF_DEC
+<SUBSECTION Private>
+gst_sf_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-scenechange</FILE>
+<TITLE>scenechange</TITLE>
+GstSceneChange
+<SUBSECTION Standard>
+GstSceneChangeClass
+GST_SCENE_CHANGE
+GST_SCENE_CHANGE_CAST
+GST_IS_SCENE_CHANGE
+GST_SCENE_CHANGE_CLASS
+GST_IS_SCENE_CHANGE_CLASS
+GST_TYPE_SCENE_CHANGE
+<SUBSECTION Private>
+gst_scene_change_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-schrodec</FILE>
+<TITLE>schrodec</TITLE>
+GstSchroDec
+<SUBSECTION Standard>
+GstSchroDecClass
+GST_SCHRO_DEC
+GST_SCHRO_DEC_CAST
+GST_IS_SCHRO_DEC
+GST_SCHRO_DEC_CLASS
+GST_IS_SCHRO_DEC_CLASS
+GST_TYPE_SCHRO_DEC
+<SUBSECTION Private>
+gst_schro_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-schroenc</FILE>
+<TITLE>schroenc</TITLE>
+GstSchroEnc
+<SUBSECTION Standard>
+GstSchroEncClass
+GST_SCHRO_ENC
+GST_SCHRO_ENC_CAST
+GST_IS_SCHRO_ENC
+GST_SCHRO_ENC_CLASS
+GST_IS_SCHRO_ENC_CLASS
+GST_TYPE_SCHRO_ENC
+<SUBSECTION Private>
+gst_schro_enc_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-sdpsrc</FILE>
+<TITLE>sdpsrc</TITLE>
+GstSdpSrc
+<SUBSECTION Standard>
+GstSdpSrcClass
+GST_SDP_SRC
+GST_SDP_SRC_CAST
+GST_IS_SDP_SRC
+GST_SDP_SRC_CLASS
+GST_IS_SDP_SRC_CLASS
+GST_TYPE_SDP_SRC
+<SUBSECTION Private>
+gst_sdp_src_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-segmentation</FILE>
+<TITLE>segmentation</TITLE>
+GstSegmentation
+GstSegmentationMethod
+<SUBSECTION Standard>
+GstSegmentationClass
+GST_SEGMENTATION
+GST_SEGMENTATION_CAST
+GST_IS_SEGMENTATION
+GST_SEGMENTATION_CLASS
+GST_IS_SEGMENTATION_CLASS
+GST_TYPE_SEGMENTATION
+<SUBSECTION Private>
+gst_segmentation_get_type
 </SECTION>
 
 <SECTION>
@@ -1273,11 +3450,13 @@
 GstShmSink
 <SUBSECTION Standard>
 GstShmSinkClass
-GST_IS_SHM_SINK
-GST_IS_SHM_SINK_CLASS
 GST_SHM_SINK
+GST_SHM_SINK_CAST
+GST_IS_SHM_SINK
 GST_SHM_SINK_CLASS
+GST_IS_SHM_SINK_CLASS
 GST_TYPE_SHM_SINK
+<SUBSECTION Private>
 gst_shm_sink_get_type
 </SECTION>
 
@@ -1287,54 +3466,174 @@
 GstShmSrc
 <SUBSECTION Standard>
 GstShmSrcClass
-GST_IS_SHM_SRC
-GST_IS_SHM_SRC_CLASS
 GST_SHM_SRC
+GST_SHM_SRC_CAST
+GST_IS_SHM_SRC
 GST_SHM_SRC_CLASS
+GST_IS_SHM_SRC_CLASS
 GST_TYPE_SHM_SRC
+<SUBSECTION Private>
 gst_shm_src_get_type
 </SECTION>
 
 <SECTION>
+<FILE>element-simplevideomark</FILE>
+<TITLE>simplevideomark</TITLE>
+GstSimpleVideoMark
+<SUBSECTION Standard>
+GstSimpleVideoMarkClass
+GST_SIMPLE_VIDEO_MARK
+GST_SIMPLE_VIDEO_MARK_CAST
+GST_IS_SIMPLE_VIDEO_MARK
+GST_SIMPLE_VIDEO_MARK_CLASS
+GST_IS_SIMPLE_VIDEO_MARK_CLASS
+GST_TYPE_SIMPLE_VIDEO_MARK
+<SUBSECTION Private>
+gst_simple_video_mark_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-simplevideomarkdetect</FILE>
+<TITLE>simplevideomarkdetect</TITLE>
+GstSimpleVideoMarkDetect
+<SUBSECTION Standard>
+GstSimpleVideoMarkDetectClass
+GST_SIMPLE_VIDEO_MARK_DETECT
+GST_SIMPLE_VIDEO_MARK_DETECT_CAST
+GST_IS_SIMPLE_VIDEO_MARK_DETECT
+GST_SIMPLE_VIDEO_MARK_DETECT_CLASS
+GST_IS_SIMPLE_VIDEO_MARK_DETECT_CLASS
+GST_TYPE_SIMPLE_VIDEO_MARK_DETECT
+<SUBSECTION Private>
+gst_simple_video_mark_detect_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-sirendec</FILE>
+<TITLE>sirendec</TITLE>
+GstSirenDec
+<SUBSECTION Standard>
+GstSirenDecClass
+GST_SIREN_DEC
+GST_SIREN_DEC_CAST
+GST_IS_SIREN_DEC
+GST_SIREN_DEC_CLASS
+GST_IS_SIREN_DEC_CLASS
+GST_TYPE_SIREN_DEC
+<SUBSECTION Private>
+gst_siren_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-sirenenc</FILE>
+<TITLE>sirenenc</TITLE>
+GstSirenEnc
+<SUBSECTION Standard>
+GstSirenEncClass
+GST_SIREN_ENC
+GST_SIREN_ENC_CAST
+GST_IS_SIREN_ENC
+GST_SIREN_ENC_CLASS
+GST_IS_SIREN_ENC_CLASS
+GST_TYPE_SIREN_ENC
+<SUBSECTION Private>
+gst_siren_enc_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-skindetect</FILE>
+<TITLE>skindetect</TITLE>
+GstSkinDetect
+<SUBSECTION Standard>
+GstSkinDetectClass
+GST_SKIN_DETECT
+GST_SKIN_DETECT_CAST
+GST_IS_SKIN_DETECT
+GST_SKIN_DETECT_CLASS
+GST_IS_SKIN_DETECT_CLASS
+GST_TYPE_SKIN_DETECT
+<SUBSECTION Private>
+gst_skin_detect_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-smooth</FILE>
+<TITLE>smooth</TITLE>
+GstSmooth
+<SUBSECTION Standard>
+GstSmoothClass
+GST_SMOOTH
+GST_SMOOTH_CAST
+GST_IS_SMOOTH
+GST_SMOOTH_CLASS
+GST_IS_SMOOTH_CLASS
+GST_TYPE_SMOOTH
+<SUBSECTION Private>
+gst_smooth_get_type
+</SECTION>
+
+<SECTION>
 <FILE>element-solarize</FILE>
 <TITLE>solarize</TITLE>
 GstSolarize
 <SUBSECTION Standard>
 GstSolarizeClass
 GST_SOLARIZE
-GST_SOLARIZE_CLASS
+GST_SOLARIZE_CAST
 GST_IS_SOLARIZE
+GST_SOLARIZE_CLASS
 GST_IS_SOLARIZE_CLASS
 GST_TYPE_SOLARIZE
+<SUBSECTION Private>
 gst_solarize_get_type
-gst_solarize_plugin_init
 </SECTION>
 
 <SECTION>
 <FILE>element-spacescope</FILE>
 <TITLE>spacescope</TITLE>
 GstSpaceScope
+GstSpaceScopeStyle
 <SUBSECTION Standard>
 GstSpaceScopeClass
 GST_SPACE_SCOPE
-GST_SPACE_SCOPE_CLASS
+GST_SPACE_SCOPE_CAST
 GST_IS_SPACE_SCOPE
+GST_SPACE_SCOPE_CLASS
 GST_IS_SPACE_SCOPE_CLASS
 GST_TYPE_SPACE_SCOPE
+<SUBSECTION Private>
 gst_space_scope_get_type
 </SECTION>
 
 <SECTION>
+<FILE>element-spanplc</FILE>
+<TITLE>spanplc</TITLE>
+GstSpanPlc
+<SUBSECTION Standard>
+GstSpanPlcClass
+GST_SPAN_PLC
+GST_SPAN_PLC_CAST
+GST_IS_SPAN_PLC
+GST_SPAN_PLC_CLASS
+GST_IS_SPAN_PLC_CLASS
+GST_TYPE_SPAN_PLC
+<SUBSECTION Private>
+gst_span_plc_get_type
+</SECTION>
+
+<SECTION>
 <FILE>element-spectrascope</FILE>
 <TITLE>spectrascope</TITLE>
 GstSpectraScope
 <SUBSECTION Standard>
 GstSpectraScopeClass
 GST_SPECTRA_SCOPE
-GST_SPECTRA_SCOPE_CLASS
+GST_SPECTRA_SCOPE_CAST
 GST_IS_SPECTRA_SCOPE
+GST_SPECTRA_SCOPE_CLASS
 GST_IS_SPECTRA_SCOPE_CLASS
 GST_TYPE_SPECTRA_SCOPE
+<SUBSECTION Private>
 gst_spectra_scope_get_type
 </SECTION>
 
@@ -1344,12 +3643,13 @@
 GstSpeed
 <SUBSECTION Standard>
 GstSpeedClass
-GstSpeedFormat
 GST_SPEED
-GST_SPEED_CLASS
+GST_SPEED_CAST
 GST_IS_SPEED
+GST_SPEED_CLASS
 GST_IS_SPEED_CLASS
 GST_TYPE_SPEED
+<SUBSECTION Private>
 gst_speed_get_type
 </SECTION>
 
@@ -1361,12 +3661,12 @@
 GstSphereClass
 GST_SPHERE
 GST_SPHERE_CAST
-GST_SPHERE_CLASS
 GST_IS_SPHERE
+GST_SPHERE_CLASS
 GST_IS_SPHERE_CLASS
 GST_TYPE_SPHERE
+<SUBSECTION Private>
 gst_sphere_get_type
-gst_sphere_plugin_init
 </SECTION>
 
 <SECTION>
@@ -1377,12 +3677,60 @@
 GstSquareClass
 GST_SQUARE
 GST_SQUARE_CAST
-GST_SQUARE_CLASS
 GST_IS_SQUARE
+GST_SQUARE_CLASS
 GST_IS_SQUARE_CLASS
 GST_TYPE_SQUARE
+<SUBSECTION Private>
 gst_square_get_type
-gst_square_plugin_init
+</SECTION>
+
+<SECTION>
+<FILE>element-srtenc</FILE>
+<TITLE>srtenc</TITLE>
+GstSrtEnc
+<SUBSECTION Standard>
+GstSrtEncClass
+GST_SRT_ENC
+GST_SRT_ENC_CAST
+GST_IS_SRT_ENC
+GST_SRT_ENC_CLASS
+GST_IS_SRT_ENC_CLASS
+GST_TYPE_SRT_ENC
+<SUBSECTION Private>
+gst_srt_enc_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-srtpdec</FILE>
+<TITLE>srtpdec</TITLE>
+GstSrtpDec
+<SUBSECTION Standard>
+GstSrtpDecClass
+GST_SRTP_DEC
+GST_SRTP_DEC_CAST
+GST_IS_SRTP_DEC
+GST_SRTP_DEC_CLASS
+GST_IS_SRTP_DEC_CLASS
+GST_TYPE_SRTP_DEC
+<SUBSECTION Private>
+gst_srtp_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-srtpenc</FILE>
+<TITLE>srtpenc</TITLE>
+GstSrtpEnc
+<SUBSECTION Standard>
+GstSrtpEncClass
+GST_SRTP_ENC
+GST_SRTP_ENC_CAST
+GST_IS_SRTP_ENC
+GST_SRTP_ENC_CLASS
+GST_IS_SRTP_ENC_CLASS
+GST_TYPE_SRTP_ENC
+<SUBSECTION Private>
+gst_srtp_enc_get_type
 </SECTION>
 
 <SECTION>
@@ -1392,10 +3740,12 @@
 <SUBSECTION Standard>
 GstStereoClass
 GST_STEREO
-GST_STEREO_CLASS
+GST_STEREO_CAST
 GST_IS_STEREO
+GST_STEREO_CLASS
 GST_IS_STEREO_CLASS
 GST_TYPE_STEREO
+<SUBSECTION Private>
 gst_stereo_get_type
 </SECTION>
 
@@ -1407,12 +3757,12 @@
 GstStretchClass
 GST_STRETCH
 GST_STRETCH_CAST
-GST_STRETCH_CLASS
 GST_IS_STRETCH
+GST_STRETCH_CLASS
 GST_IS_STRETCH_CLASS
 GST_TYPE_STRETCH
+<SUBSECTION Private>
 gst_stretch_get_type
-gst_stretch_plugin_init
 </SECTION>
 
 <SECTION>
@@ -1422,25 +3772,77 @@
 <SUBSECTION Standard>
 GstSynaeScopeClass
 GST_SYNAE_SCOPE
-GST_SYNAE_SCOPE_CLASS
+GST_SYNAE_SCOPE_CAST
 GST_IS_SYNAE_SCOPE
+GST_SYNAE_SCOPE_CLASS
 GST_IS_SYNAE_SCOPE_CLASS
 GST_TYPE_SYNAE_SCOPE
+<SUBSECTION Private>
 gst_synae_scope_get_type
 </SECTION>
 
+<SECTION>
+<FILE>element-tsdemux</FILE>
+<TITLE>tsdemux</TITLE>
+GstTSDemux
+<SUBSECTION Standard>
+GstTSDemuxClass
+GST_TS_DEMUX
+GST_TS_DEMUX_CAST
+GST_IS_TS_DEMUX
+GST_TS_DEMUX_CLASS
+GST_IS_TS_DEMUX_CLASS
+GST_TYPE_TS_DEMUX
+<SUBSECTION Private>
+gst_ts_demux_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-teletextdec</FILE>
+<TITLE>teletextdec</TITLE>
+GstTeletextDec
+<SUBSECTION Standard>
+GstTeletextDecClass
+GST_TELETEXT_DEC
+GST_TELETEXT_DEC_CAST
+GST_IS_TELETEXT_DEC
+GST_TELETEXT_DEC_CLASS
+GST_IS_TELETEXT_DEC_CLASS
+GST_TYPE_TELETEXT_DEC
+<SUBSECTION Private>
+gst_teletext_dec_get_type
+</SECTION>
+
+<SECTION>
 <FILE>element-templatematch</FILE>
 <TITLE>templatematch</TITLE>
 GstTemplateMatch
 <SUBSECTION Standard>
 GstTemplateMatchClass
-GST_TEMPLATEMATCH
-GST_TEMPLATEMATCH_CLASS
-GST_TYPE_TEMPLATEMATCH
-GST_IS_TEMPLATEMATCH
-GST_IS_TEMPLATEMATCH_CLASS
-gst_templatematch_get_type
-gst_templatematch_plugin_init
+GST_TEMPLATE_MATCH
+GST_TEMPLATE_MATCH_CAST
+GST_IS_TEMPLATE_MATCH
+GST_TEMPLATE_MATCH_CLASS
+GST_IS_TEMPLATE_MATCH_CLASS
+GST_TYPE_TEMPLATE_MATCH
+<SUBSECTION Private>
+gst_template_match_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-tonegeneratesrc</FILE>
+<TITLE>tonegeneratesrc</TITLE>
+GstToneGenerateSrc
+<SUBSECTION Standard>
+GstToneGenerateSrcClass
+GST_TONE_GENERATE_SRC
+GST_TONE_GENERATE_SRC_CAST
+GST_IS_TONE_GENERATE_SRC
+GST_TONE_GENERATE_SRC_CLASS
+GST_IS_TONE_GENERATE_SRC_CLASS
+GST_TYPE_TONE_GENERATE_SRC
+<SUBSECTION Private>
+gst_tone_generate_src_get_type
 </SECTION>
 
 <SECTION>
@@ -1465,12 +3867,12 @@
 GstTunnelClass
 GST_TUNNEL
 GST_TUNNEL_CAST
-GST_TUNNEL_CLASS
 GST_IS_TUNNEL
+GST_TUNNEL_CLASS
 GST_IS_TUNNEL_CLASS
 GST_TYPE_TUNNEL
+<SUBSECTION Private>
 gst_tunnel_get_type
-gst_tunnel_plugin_init
 </SECTION>
 
 <SECTION>
@@ -1481,12 +3883,140 @@
 GstTwirlClass
 GST_TWIRL
 GST_TWIRL_CAST
-GST_TWIRL_CLASS
 GST_IS_TWIRL
+GST_TWIRL_CLASS
 GST_IS_TWIRL_CLASS
 GST_TYPE_TWIRL
+<SUBSECTION Private>
 gst_twirl_get_type
-gst_twirl_plugin_init
+</SECTION>
+
+<SECTION>
+<FILE>element-unalignedaudioparse</FILE>
+<TITLE>unalignedaudioparse</TITLE>
+GstUnalignedAudioParse
+<SUBSECTION Standard>
+GstUnalignedAudioParseClass
+GST_UNALIGNED_AUDIO_PARSE
+GST_UNALIGNED_AUDIO_PARSE_CAST
+GST_IS_UNALIGNED_AUDIO_PARSE
+GST_UNALIGNED_AUDIO_PARSE_CLASS
+GST_IS_UNALIGNED_AUDIO_PARSE_CLASS
+GST_TYPE_UNALIGNED_AUDIO_PARSE
+<SUBSECTION Private>
+gst_unaligned_audio_parse_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-unalignedvideoparse</FILE>
+<TITLE>unalignedvideoparse</TITLE>
+GstUnalignedVideoParse
+<SUBSECTION Standard>
+GstUnalignedVideoParseClass
+GST_UNALIGNED_VIDEO_PARSE
+GST_UNALIGNED_VIDEO_PARSE_CAST
+GST_IS_UNALIGNED_VIDEO_PARSE
+GST_UNALIGNED_VIDEO_PARSE_CLASS
+GST_IS_UNALIGNED_VIDEO_PARSE_CLASS
+GST_TYPE_UNALIGNED_VIDEO_PARSE
+<SUBSECTION Private>
+gst_unaligned_video_parse_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-uvch264mjpgdemux</FILE>
+<TITLE>uvch264mjpgdemux</TITLE>
+GstUvcH264MjpgDemux
+<SUBSECTION Standard>
+GstUvcH264MjpgDemuxClass
+GST_UVC_H264_MJPG_DEMUX
+GST_UVC_H264_MJPG_DEMUX_CAST
+GST_IS_UVC_H264_MJPG_DEMUX
+GST_UVC_H264_MJPG_DEMUX_CLASS
+GST_IS_UVC_H264_MJPG_DEMUX_CLASS
+GST_TYPE_UVC_H264_MJPG_DEMUX
+<SUBSECTION Private>
+gst_uvc_h264_mjpg_demux_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-uvch264src</FILE>
+<TITLE>uvch264src</TITLE>
+GstUvcH264Src
+<SUBSECTION Standard>
+GstUvcH264SrcClass
+GST_UVC_H264_SRC
+GST_UVC_H264_SRC_CAST
+GST_IS_UVC_H264_SRC
+GST_UVC_H264_SRC_CLASS
+GST_IS_UVC_H264_SRC_CLASS
+GST_TYPE_UVC_H264_SRC
+<SUBSECTION Private>
+gst_uvc_h264_src_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-vc1parse</FILE>
+<TITLE>vc1parse</TITLE>
+GstVC1Parse
+<SUBSECTION Standard>
+GstVC1ParseClass
+GST_V_C1_PARSE
+GST_V_C1_PARSE_CAST
+GST_IS_V_C1_PARSE
+GST_V_C1_PARSE_CLASS
+GST_IS_V_C1_PARSE_CLASS
+GST_TYPE_V_C1_PARSE
+<SUBSECTION Private>
+gst_v_c1_parse_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-vcdsrc</FILE>
+<TITLE>vcdsrc</TITLE>
+GstVCDSrc
+<SUBSECTION Standard>
+GstVCDSrcClass
+GST_VCD_SRC
+GST_VCD_SRC_CAST
+GST_IS_VCD_SRC
+GST_VCD_SRC_CLASS
+GST_IS_VCD_SRC_CLASS
+GST_TYPE_VCD_SRC
+<SUBSECTION Private>
+gst_vcd_src_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-vmncdec</FILE>
+<TITLE>vmncdec</TITLE>
+GstVMncDec
+<SUBSECTION Standard>
+GstVMncDecClass
+GST_V_MNC_DEC
+GST_V_MNC_DEC_CAST
+GST_IS_V_MNC_DEC
+GST_V_MNC_DEC_CLASS
+GST_IS_V_MNC_DEC_CLASS
+GST_TYPE_V_MNC_DEC
+<SUBSECTION Private>
+gst_v_mnc_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-vdpaumpegdec</FILE>
+<TITLE>vdpaumpegdec</TITLE>
+GstVdpMpegDec
+<SUBSECTION Standard>
+GstVdpMpegDecClass
+GST_VDP_MPEG_DEC
+GST_VDP_MPEG_DEC_CAST
+GST_IS_VDP_MPEG_DEC
+GST_VDP_MPEG_DEC_CLASS
+GST_IS_VDP_MPEG_DEC_CLASS
+GST_TYPE_VDP_MPEG_DEC
+<SUBSECTION Private>
+gst_vdp_mpeg_dec_get_type
 </SECTION>
 
 <SECTION>
@@ -1496,40 +4026,45 @@
 <SUBSECTION Standard>
 GstVideoAnalyseClass
 GST_VIDEO_ANALYSE
+GST_VIDEO_ANALYSE_CAST
 GST_IS_VIDEO_ANALYSE
-GST_TYPE_VIDEO_ANALYSE
-gst_video_analyse_get_type
 GST_VIDEO_ANALYSE_CLASS
 GST_IS_VIDEO_ANALYSE_CLASS
-gst_wildmidi_get_type
+GST_TYPE_VIDEO_ANALYSE
+<SUBSECTION Private>
+gst_video_analyse_get_type
 </SECTION>
 
 <SECTION>
-<FILE>element-videodetect</FILE>
-<TITLE>videodetect</TITLE>
-GstVideoDetect
+<FILE>element-videodiff</FILE>
+<TITLE>videodiff</TITLE>
+GstVideoDiff
 <SUBSECTION Standard>
-GstVideoDetectClass
-GST_VIDEO_DETECT
-GST_IS_VIDEO_DETECT
-GST_TYPE_VIDEO_DETECT
-gst_video_detect_get_type
-GST_VIDEO_DETECT_CLASS
-GST_IS_VIDEO_DETECT_CLASS
+GstVideoDiffClass
+GST_VIDEO_DIFF
+GST_VIDEO_DIFF_CAST
+GST_IS_VIDEO_DIFF
+GST_VIDEO_DIFF_CLASS
+GST_IS_VIDEO_DIFF_CLASS
+GST_TYPE_VIDEO_DIFF
+<SUBSECTION Private>
+gst_video_diff_get_type
 </SECTION>
 
 <SECTION>
-<FILE>element-videomark</FILE>
-<TITLE>videomark</TITLE>
-GstVideoMark
+<FILE>element-videoframe-audiolevel</FILE>
+<TITLE>videoframe-audiolevel</TITLE>
+GstVideoFrameAudioLevel
 <SUBSECTION Standard>
-GstVideoMarkClass
-GST_VIDEO_MARK
-GST_IS_VIDEO_MARK
-GST_TYPE_VIDEO_MARK
-gst_video_mark_get_type
-GST_VIDEO_MARK_CLASS
-GST_IS_VIDEO_MARK_CLASS
+GstVideoFrameAudioLevelClass
+GST_VIDEO_FRAME_AUDIO_LEVEL
+GST_VIDEO_FRAME_AUDIO_LEVEL_CAST
+GST_IS_VIDEO_FRAME_AUDIO_LEVEL
+GST_VIDEO_FRAME_AUDIO_LEVEL_CLASS
+GST_IS_VIDEO_FRAME_AUDIO_LEVEL_CLASS
+GST_TYPE_VIDEO_FRAME_AUDIO_LEVEL
+<SUBSECTION Private>
+gst_video_frame_audio_level_get_type
 </SECTION>
 
 <SECTION>
@@ -1539,14 +4074,113 @@
 <SUBSECTION Standard>
 GstVideoParseClass
 GST_VIDEO_PARSE
-GST_VIDEO_PARSE_CLASS
+GST_VIDEO_PARSE_CAST
 GST_IS_VIDEO_PARSE
+GST_VIDEO_PARSE_CLASS
 GST_IS_VIDEO_PARSE_CLASS
 GST_TYPE_VIDEO_PARSE
+<SUBSECTION Private>
 gst_video_parse_get_type
 </SECTION>
 
 <SECTION>
+<FILE>element-rawaudioparse</FILE>
+<TITLE>rawaudioparse</TITLE>
+GstRawAudioParse
+<SUBSECTION Standard>
+GstRawAudioParseClass
+GST_RAW_AUDIO_PARSE
+GST_RAW_AUDIO_PARSE_CAST
+GST_IS_AUDIO_PARSE
+GST_RAW_AUDIO_PARSE_CLASS
+GST_IS_AUDIO_PARSE_CLASS
+GST_TYPE_AUDIO_PARSE
+<SUBSECTION Private>
+gst_raw_audio_parse_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-rawvideoparse</FILE>
+<TITLE>rawvideoparse</TITLE>
+GstRawVideoParse
+<SUBSECTION Standard>
+GstRawVideoParseClass
+GST_RAW_VIDEO_PARSE
+GST_RAW_VIDEO_PARSE_CAST
+GST_IS_VIDEO_PARSE
+GST_RAW_VIDEO_PARSE_CLASS
+GST_IS_VIDEO_PARSE_CLASS
+GST_TYPE_VIDEO_PARSE
+<SUBSECTION Private>
+gst_raw_video_parse_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-videosegmentclip</FILE>
+<TITLE>videosegmentclip</TITLE>
+GstVideoSegmentClip
+<SUBSECTION Standard>
+GstVideoSegmentClipClass
+GST_VIDEO_SEGMENT_CLIP
+GST_VIDEO_SEGMENT_CLIP_CAST
+GST_IS_VIDEO_SEGMENT_CLIP
+GST_VIDEO_SEGMENT_CLIP_CLASS
+GST_IS_VIDEO_SEGMENT_CLIP_CLASS
+GST_TYPE_VIDEO_SEGMENT_CLIP
+<SUBSECTION Private>
+gst_video_segment_clip_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-viewfinderbin</FILE>
+<TITLE>viewfinderbin</TITLE>
+GstViewfinderBin
+<SUBSECTION Standard>
+GstViewfinderBinClass
+GST_VIEWFINDER_BIN
+GST_VIEWFINDER_BIN_CAST
+GST_IS_VIEWFINDER_BIN
+GST_VIEWFINDER_BIN_CLASS
+GST_IS_VIEWFINDER_BIN_CLASS
+GST_TYPE_VIEWFINDER_BIN
+<SUBSECTION Private>
+gst_viewfinder_bin_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-voamrwbenc</FILE>
+<TITLE>voamrwbenc</TITLE>
+GstVoAmrWbEnc
+GstVoAmrWbEncBandMode
+<SUBSECTION Standard>
+GstVoAmrWbEncClass
+GST_VO_AMR_WB_ENC
+GST_VO_AMR_WB_ENC_CAST
+GST_IS_VO_AMR_WB_ENC
+GST_VO_AMR_WB_ENC_CLASS
+GST_IS_VO_AMR_WB_ENC_CLASS
+GST_TYPE_VO_AMR_WB_ENC
+<SUBSECTION Private>
+gst_vo_amr_wb_enc_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-watchdog</FILE>
+<TITLE>watchdog</TITLE>
+GstWatchdog
+<SUBSECTION Standard>
+GstWatchdogClass
+GST_WATCHDOG
+GST_WATCHDOG_CAST
+GST_IS_WATCHDOG
+GST_WATCHDOG_CLASS
+GST_IS_WATCHDOG_CLASS
+GST_TYPE_WATCHDOG
+<SUBSECTION Private>
+gst_watchdog_get_type
+</SECTION>
+
+<SECTION>
 <FILE>element-waterripple</FILE>
 <TITLE>waterripple</TITLE>
 GstWaterRipple
@@ -1554,39 +4188,158 @@
 GstWaterRippleClass
 GST_WATER_RIPPLE
 GST_WATER_RIPPLE_CAST
-GST_WATER_RIPPLE_CLASS
 GST_IS_WATER_RIPPLE
+GST_WATER_RIPPLE_CLASS
 GST_IS_WATER_RIPPLE_CLASS
 GST_TYPE_WATER_RIPPLE
+<SUBSECTION Private>
 gst_water_ripple_get_type
-gst_water_ripple_plugin_init
 </SECTION>
 
 <SECTION>
 <FILE>element-wavescope</FILE>
 <TITLE>wavescope</TITLE>
 GstWaveScope
+GstWaveScopeStyle
 <SUBSECTION Standard>
 GstWaveScopeClass
 GST_WAVE_SCOPE
-GST_WAVE_SCOPE_CLASS
+GST_WAVE_SCOPE_CAST
 GST_IS_WAVE_SCOPE
+GST_WAVE_SCOPE_CLASS
 GST_IS_WAVE_SCOPE_CLASS
 GST_TYPE_WAVE_SCOPE
+<SUBSECTION Private>
 gst_wave_scope_get_type
 </SECTION>
 
 <SECTION>
+<FILE>element-waylandsink</FILE>
+<TITLE>waylandsink</TITLE>
+GstWaylandSink
+<SUBSECTION Standard>
+GstWaylandSinkClass
+GST_WAYLAND_SINK
+GST_WAYLAND_SINK_CAST
+GST_IS_WAYLAND_SINK
+GST_WAYLAND_SINK_CLASS
+GST_IS_WAYLAND_SINK_CLASS
+GST_TYPE_WAYLAND_SINK
+<SUBSECTION Private>
+gst_wayland_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-webpdec</FILE>
+<TITLE>webpdec</TITLE>
+GstWebPDec
+<SUBSECTION Standard>
+GstWebPDecClass
+GST_WEB_P_DEC
+GST_WEB_P_DEC_CAST
+GST_IS_WEB_P_DEC
+GST_WEB_P_DEC_CLASS
+GST_IS_WEB_P_DEC_CLASS
+GST_TYPE_WEB_P_DEC
+<SUBSECTION Private>
+gst_web_p_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-webpenc</FILE>
+<TITLE>webpenc</TITLE>
+GstWebpEnc
+GstWebpEncPreset
+<SUBSECTION Standard>
+GstWebpEncClass
+GST_WEBP_ENC
+GST_WEBP_ENC_CAST
+GST_IS_WEBP_ENC
+GST_WEBP_ENC_CLASS
+GST_IS_WEBP_ENC_CLASS
+GST_TYPE_WEBP_ENC
+<SUBSECTION Private>
+gst_webp_enc_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-webrtcdsp</FILE>
+<TITLE>webrtcdsp</TITLE>
+GstWebrtcDsp
+<SUBSECTION Standard>
+GstWebrtcDspClass
+GST_WEBRTC_DSP
+GST_WEBRTC_DSP_CAST
+GST_IS_WEBRTC_DSP
+GST_WEBRTC_DSP_CLASS
+GST_IS_WEBRTC_DSP_CLASS
+GST_TYPE_WEBRTC_DSP
+<SUBSECTION Private>
+gst_webrtc_dsp_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-webrtcechoprobe</FILE>
+<TITLE>webrtcechoprobe</TITLE>
+GstWebrtcEchoProbe
+<SUBSECTION Standard>
+GstWebrtcEchoProbeClass
+GST_WEBRTC_ECHO_PROBE
+GST_WEBRTC_ECHO_PROBE_CAST
+GST_IS_WEBRTC_ECHO_PROBE
+GST_WEBRTC_ECHO_PROBE_CLASS
+GST_IS_WEBRTC_ECHO_PROBE_CLASS
+GST_TYPE_WEBRTC_ECHO_PROBE
+<SUBSECTION Private>
+gst_webrtc_echo_probe_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-webvttenc</FILE>
+<TITLE>webvttenc</TITLE>
+GstWebvttEnc
+<SUBSECTION Standard>
+GstWebvttEncClass
+GST_WEBVTT_ENC
+GST_WEBVTT_ENC_CAST
+GST_IS_WEBVTT_ENC
+GST_WEBVTT_ENC_CLASS
+GST_IS_WEBVTT_ENC_CLASS
+GST_TYPE_WEBVTT_ENC
+<SUBSECTION Private>
+gst_webvtt_enc_get_type
+</SECTION>
+
+<SECTION>
 <FILE>element-wildmidi</FILE>
 <TITLE>wildmidi</TITLE>
 GstWildmidi
 <SUBSECTION Standard>
 GstWildmidiClass
 GST_WILDMIDI
-GST_WILDMIDI_CLASS
+GST_WILDMIDI_CAST
 GST_IS_WILDMIDI
+GST_WILDMIDI_CLASS
 GST_IS_WILDMIDI_CLASS
 GST_TYPE_WILDMIDI
+<SUBSECTION Private>
+gst_wildmidi_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-wrappercamerabinsrc</FILE>
+<TITLE>wrappercamerabinsrc</TITLE>
+GstWrapperCameraBinSrc
+<SUBSECTION Standard>
+GstWrapperCameraBinSrcClass
+GST_WRAPPER_CAMERA_BIN_SRC
+GST_WRAPPER_CAMERA_BIN_SRC_CAST
+GST_IS_WRAPPER_CAMERA_BIN_SRC
+GST_WRAPPER_CAMERA_BIN_SRC_CLASS
+GST_IS_WRAPPER_CAMERA_BIN_SRC_CLASS
+GST_TYPE_WRAPPER_CAMERA_BIN_SRC
+<SUBSECTION Private>
+gst_wrapper_camera_bin_src_get_type
 </SECTION>
 
 <SECTION>
@@ -1604,17 +4357,52 @@
 </SECTION>
 
 <SECTION>
-<FILE>element-voamrwbenc</FILE>
-<TITLE>voamrwbenc</TITLE>
-GstVoAmrwbEnc
+<FILE>element-x265enc</FILE>
+<TITLE>x265enc</TITLE>
+GstX265Enc
 <SUBSECTION Standard>
-GstVoAmrwbEncClass
-GST_VOAMRWBENC
-GST_VOAMRWBENC_CLASS
-GST_IS_VOAMRWBENC
-GST_IS_VOAMRWBENC_CLASS
-GST_TYPE_VOAMRWBENC
-gst_voamrwbenc_get_type
+GstX265EncClass
+GST_X265_ENC
+GST_X265_ENC_CAST
+GST_IS_X265_ENC
+GST_X265_ENC_CLASS
+GST_IS_X265_ENC_CLASS
+GST_TYPE_X265_ENC
+<SUBSECTION Private>
+gst_x265_enc_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-y4mdec</FILE>
+<TITLE>y4mdec</TITLE>
+GstY4mDec
+<SUBSECTION Standard>
+GstY4mDecClass
+GST_Y4M_DEC
+GST_Y4M_DEC_CAST
+GST_IS_Y4M_DEC
+GST_Y4M_DEC_CLASS
+GST_IS_Y4M_DEC_CLASS
+GST_TYPE_Y4M_DEC
+<SUBSECTION Private>
+gst_y4m_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-yadif</FILE>
+<TITLE>yadif</TITLE>
+GstYadif
+GstYadifModes
+<SUBSECTION Standard>
+GstYadifClass
+GST_YADIF
+GST_YADIF_CAST
+GST_IS_YADIF
+GST_YADIF_CLASS
+GST_IS_YADIF_CLASS
+GST_TYPE_YADIF
+<SUBSECTION Private>
+gst_yadif_get_type
 </SECTION>
 
 <SECTION>
@@ -1623,42 +4411,397 @@
 GstZBar
 <SUBSECTION Standard>
 GstZBarClass
-GST_ZBAR
-GST_ZBAR_CLASS
-GST_IS_ZBAR
-GST_IS_ZBAR_CLASS
-GST_TYPE_ZBAR
+GST_Z_BAR
+GST_Z_BAR_CAST
+GST_IS_Z_BAR
+GST_Z_BAR_CLASS
+GST_IS_Z_BAR_CLASS
+GST_TYPE_Z_BAR
+<SUBSECTION Private>
+gst_z_bar_get_type
 </SECTION>
 
 <SECTION>
-<FILE>element-gltransformation</FILE>
-<TITLE>gltransformation</TITLE>
-GstGLTransformation
+<FILE>element-zebrastripe</FILE>
+<TITLE>zebrastripe</TITLE>
+GstZebraStripe
 <SUBSECTION Standard>
-GstGLTransformationClass
-GST_GL_TRANSFORMATION
-GST_GL_TRANSFORMATION_CLASS
-GST_IS_GL_TRANSFORMATION
-GST_IS_GL_TRANSFORMATION_CLASS
-GST_TYPE_GL_TRANSFORMATION
+GstZebraStripeClass
+GST_ZEBRA_STRIPE
+GST_ZEBRA_STRIPE_CAST
+GST_IS_ZEBRA_STRIPE
+GST_ZEBRA_STRIPE_CLASS
+GST_IS_ZEBRA_STRIPE_CLASS
+GST_TYPE_ZEBRA_STRIPE
+<SUBSECTION Private>
+gst_zebra_stripe_get_type
 </SECTION>
 
 <SECTION>
-<FILE>element-compositor</FILE>
-<TITLE>compositor</TITLE>
+<FILE>element-mpegpsmux</FILE>
+<TITLE>mpegpsmux</TITLE>
+GstgPsMux
 <SUBSECTION Standard>
-GstCompositorClass
-GstCompositor
-GST_COMPOSITOR
-GST_COMPOSITOR_CLASS
-GST_IS_COMPOSITOR
-GST_IS_COMPOSITOR_CLASS
-GST_TYPE_COMPOSITOR
-GstCompositorPad
-GstCompositorPadClass
-GST_COMPOSITOR_PAD
-GST_COMPOSITOR_PAD_CLASS
-GST_IS_COMPOSITOR_PAD
-GST_IS_COMPOSITOR_PAD_CLASS
-GST_TYPE_COMPOSITOR_PAD
+GstgPsMuxClass
+GST_G_PS_MUX
+GST_G_PS_MUX_CAST
+GST_IS_G_PS_MUX
+GST_G_PS_MUX_CLASS
+GST_IS_G_PS_MUX_CLASS
+GST_TYPE_G_PS_MUX
+<SUBSECTION Private>
+gst_g_ps_mux_get_type
 </SECTION>
+
+<SECTION>
+<FILE>element-tsparse</FILE>
+<TITLE>tsparse</TITLE>
+GstgTSParse2
+<SUBSECTION Standard>
+GstgTSParse2Class
+GST_G_TS_PARSE2
+GST_G_TS_PARSE2_CAST
+GST_IS_G_TS_PARSE2
+GST_G_TS_PARSE2_CLASS
+GST_IS_G_TS_PARSE2_CLASS
+GST_TYPE_G_TS_PARSE2
+<SUBSECTION Private>
+gst_g_ts_parse2_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-mpegtsmux</FILE>
+<TITLE>mpegtsmux</TITLE>
+GstgTsMux
+<SUBSECTION Standard>
+GstgTsMuxClass
+GST_G_TS_MUX
+GST_G_TS_MUX_CAST
+GST_IS_G_TS_MUX
+GST_G_TS_MUX_CLASS
+GST_IS_G_TS_MUX_CLASS
+GST_TYPE_G_TS_MUX
+<SUBSECTION Private>
+gst_g_ts_mux_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-rsndvdbin</FILE>
+<TITLE>rsndvdbin</TITLE>
+GstDvdBin
+<SUBSECTION Standard>
+GstDvdBinClass
+GST_DVD_BIN
+GST_DVD_BIN_CAST
+GST_IS_DVD_BIN
+GST_DVD_BIN_CLASS
+GST_IS_DVD_BIN_CLASS
+GST_TYPE_DVD_BIN
+<SUBSECTION Private>
+gst_dvd_bin_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_blur</FILE>
+<TITLE>gleffects_blur</TITLE>
+Gstffects_blur
+<SUBSECTION Standard>
+Gstffects_blurClass
+GST_FFECTS_BLUR
+GST_FFECTS_BLUR_CAST
+GST_IS_FFECTS_BLUR
+GST_FFECTS_BLUR_CLASS
+GST_IS_FFECTS_BLUR_CLASS
+GST_TYPE_FFECTS_BLUR
+<SUBSECTION Private>
+gst_ffects_blur_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_bulge</FILE>
+<TITLE>gleffects_bulge</TITLE>
+Gstffects_bulge
+<SUBSECTION Standard>
+Gstffects_bulgeClass
+GST_FFECTS_BULGE
+GST_FFECTS_BULGE_CAST
+GST_IS_FFECTS_BULGE
+GST_FFECTS_BULGE_CLASS
+GST_IS_FFECTS_BULGE_CLASS
+GST_TYPE_FFECTS_BULGE
+<SUBSECTION Private>
+gst_ffects_bulge_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_fisheye</FILE>
+<TITLE>gleffects_fisheye</TITLE>
+Gstffects_fisheye
+<SUBSECTION Standard>
+Gstffects_fisheyeClass
+GST_FFECTS_FISHEYE
+GST_FFECTS_FISHEYE_CAST
+GST_IS_FFECTS_FISHEYE
+GST_FFECTS_FISHEYE_CLASS
+GST_IS_FFECTS_FISHEYE_CLASS
+GST_TYPE_FFECTS_FISHEYE
+<SUBSECTION Private>
+gst_ffects_fisheye_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_glow</FILE>
+<TITLE>gleffects_glow</TITLE>
+Gstffects_glow
+<SUBSECTION Standard>
+Gstffects_glowClass
+GST_FFECTS_GLOW
+GST_FFECTS_GLOW_CAST
+GST_IS_FFECTS_GLOW
+GST_FFECTS_GLOW_CLASS
+GST_IS_FFECTS_GLOW_CLASS
+GST_TYPE_FFECTS_GLOW
+<SUBSECTION Private>
+gst_ffects_glow_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_heat</FILE>
+<TITLE>gleffects_heat</TITLE>
+Gstffects_heat
+<SUBSECTION Standard>
+Gstffects_heatClass
+GST_FFECTS_HEAT
+GST_FFECTS_HEAT_CAST
+GST_IS_FFECTS_HEAT
+GST_FFECTS_HEAT_CLASS
+GST_IS_FFECTS_HEAT_CLASS
+GST_TYPE_FFECTS_HEAT
+<SUBSECTION Private>
+gst_ffects_heat_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_identity</FILE>
+<TITLE>gleffects_identity</TITLE>
+Gstffects_identity
+<SUBSECTION Standard>
+Gstffects_identityClass
+GST_FFECTS_IDENTITY
+GST_FFECTS_IDENTITY_CAST
+GST_IS_FFECTS_IDENTITY
+GST_FFECTS_IDENTITY_CLASS
+GST_IS_FFECTS_IDENTITY_CLASS
+GST_TYPE_FFECTS_IDENTITY
+<SUBSECTION Private>
+gst_ffects_identity_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_laplacian</FILE>
+<TITLE>gleffects_laplacian</TITLE>
+Gstffects_laplacian
+<SUBSECTION Standard>
+Gstffects_laplacianClass
+GST_FFECTS_LAPLACIAN
+GST_FFECTS_LAPLACIAN_CAST
+GST_IS_FFECTS_LAPLACIAN
+GST_FFECTS_LAPLACIAN_CLASS
+GST_IS_FFECTS_LAPLACIAN_CLASS
+GST_TYPE_FFECTS_LAPLACIAN
+<SUBSECTION Private>
+gst_ffects_laplacian_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_lumaxpro</FILE>
+<TITLE>gleffects_lumaxpro</TITLE>
+Gstffects_lumaxpro
+<SUBSECTION Standard>
+Gstffects_lumaxproClass
+GST_FFECTS_LUMAXPRO
+GST_FFECTS_LUMAXPRO_CAST
+GST_IS_FFECTS_LUMAXPRO
+GST_FFECTS_LUMAXPRO_CLASS
+GST_IS_FFECTS_LUMAXPRO_CLASS
+GST_TYPE_FFECTS_LUMAXPRO
+<SUBSECTION Private>
+gst_ffects_lumaxpro_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_mirror</FILE>
+<TITLE>gleffects_mirror</TITLE>
+Gstffects_mirror
+<SUBSECTION Standard>
+Gstffects_mirrorClass
+GST_FFECTS_MIRROR
+GST_FFECTS_MIRROR_CAST
+GST_IS_FFECTS_MIRROR
+GST_FFECTS_MIRROR_CLASS
+GST_IS_FFECTS_MIRROR_CLASS
+GST_TYPE_FFECTS_MIRROR
+<SUBSECTION Private>
+gst_ffects_mirror_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_sepia</FILE>
+<TITLE>gleffects_sepia</TITLE>
+Gstffects_sepia
+<SUBSECTION Standard>
+Gstffects_sepiaClass
+GST_FFECTS_SEPIA
+GST_FFECTS_SEPIA_CAST
+GST_IS_FFECTS_SEPIA
+GST_FFECTS_SEPIA_CLASS
+GST_IS_FFECTS_SEPIA_CLASS
+GST_TYPE_FFECTS_SEPIA
+<SUBSECTION Private>
+gst_ffects_sepia_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_sin</FILE>
+<TITLE>gleffects_sin</TITLE>
+Gstffects_sin
+<SUBSECTION Standard>
+Gstffects_sinClass
+GST_FFECTS_SIN
+GST_FFECTS_SIN_CAST
+GST_IS_FFECTS_SIN
+GST_FFECTS_SIN_CLASS
+GST_IS_FFECTS_SIN_CLASS
+GST_TYPE_FFECTS_SIN
+<SUBSECTION Private>
+gst_ffects_sin_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_sobel</FILE>
+<TITLE>gleffects_sobel</TITLE>
+Gstffects_sobel
+<SUBSECTION Standard>
+Gstffects_sobelClass
+GST_FFECTS_SOBEL
+GST_FFECTS_SOBEL_CAST
+GST_IS_FFECTS_SOBEL
+GST_FFECTS_SOBEL_CLASS
+GST_IS_FFECTS_SOBEL_CLASS
+GST_TYPE_FFECTS_SOBEL
+<SUBSECTION Private>
+gst_ffects_sobel_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_square</FILE>
+<TITLE>gleffects_square</TITLE>
+Gstffects_square
+<SUBSECTION Standard>
+Gstffects_squareClass
+GST_FFECTS_SQUARE
+GST_FFECTS_SQUARE_CAST
+GST_IS_FFECTS_SQUARE
+GST_FFECTS_SQUARE_CLASS
+GST_IS_FFECTS_SQUARE_CLASS
+GST_TYPE_FFECTS_SQUARE
+<SUBSECTION Private>
+gst_ffects_square_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_squeeze</FILE>
+<TITLE>gleffects_squeeze</TITLE>
+Gstffects_squeeze
+<SUBSECTION Standard>
+Gstffects_squeezeClass
+GST_FFECTS_SQUEEZE
+GST_FFECTS_SQUEEZE_CAST
+GST_IS_FFECTS_SQUEEZE
+GST_FFECTS_SQUEEZE_CLASS
+GST_IS_FFECTS_SQUEEZE_CLASS
+GST_TYPE_FFECTS_SQUEEZE
+<SUBSECTION Private>
+gst_ffects_squeeze_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_stretch</FILE>
+<TITLE>gleffects_stretch</TITLE>
+Gstffects_stretch
+<SUBSECTION Standard>
+Gstffects_stretchClass
+GST_FFECTS_STRETCH
+GST_FFECTS_STRETCH_CAST
+GST_IS_FFECTS_STRETCH
+GST_FFECTS_STRETCH_CLASS
+GST_IS_FFECTS_STRETCH_CLASS
+GST_TYPE_FFECTS_STRETCH
+<SUBSECTION Private>
+gst_ffects_stretch_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_tunnel</FILE>
+<TITLE>gleffects_tunnel</TITLE>
+Gstffects_tunnel
+<SUBSECTION Standard>
+Gstffects_tunnelClass
+GST_FFECTS_TUNNEL
+GST_FFECTS_TUNNEL_CAST
+GST_IS_FFECTS_TUNNEL
+GST_FFECTS_TUNNEL_CLASS
+GST_IS_FFECTS_TUNNEL_CLASS
+GST_TYPE_FFECTS_TUNNEL
+<SUBSECTION Private>
+gst_ffects_tunnel_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_twirl</FILE>
+<TITLE>gleffects_twirl</TITLE>
+Gstffects_twirl
+<SUBSECTION Standard>
+Gstffects_twirlClass
+GST_FFECTS_TWIRL
+GST_FFECTS_TWIRL_CAST
+GST_IS_FFECTS_TWIRL
+GST_FFECTS_TWIRL_CLASS
+GST_IS_FFECTS_TWIRL_CLASS
+GST_TYPE_FFECTS_TWIRL
+<SUBSECTION Private>
+gst_ffects_twirl_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_xpro</FILE>
+<TITLE>gleffects_xpro</TITLE>
+Gstffects_xpro
+<SUBSECTION Standard>
+Gstffects_xproClass
+GST_FFECTS_XPRO
+GST_FFECTS_XPRO_CAST
+GST_IS_FFECTS_XPRO
+GST_FFECTS_XPRO_CLASS
+GST_IS_FFECTS_XPRO_CLASS
+GST_TYPE_FFECTS_XPRO
+<SUBSECTION Private>
+gst_ffects_xpro_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_xray</FILE>
+<TITLE>gleffects_xray</TITLE>
+Gstffects_xray
+<SUBSECTION Standard>
+Gstffects_xrayClass
+GST_FFECTS_XRAY
+GST_FFECTS_XRAY_CAST
+GST_IS_FFECTS_XRAY
+GST_FFECTS_XRAY_CLASS
+GST_IS_FFECTS_XRAY_CLASS
+GST_TYPE_FFECTS_XRAY
+<SUBSECTION Private>
+gst_ffects_xray_get_type
+</SECTION>
+
diff --git a/docs/plugins/gst-plugins-bad-plugins.args b/docs/plugins/gst-plugins-bad-plugins.args
index 4d145e9..25b4ac0 100644
--- a/docs/plugins/gst-plugins-bad-plugins.args
+++ b/docs/plugins/gst-plugins-bad-plugins.args
@@ -1399,6 +1399,16 @@
 </ARG>
 
 <ARG>
+<NAME>GstGLImageSink::rotate-method</NAME>
+<TYPE>GstGLRotateMethod</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>rotate method</NICK>
+<BLURB>rotate method.</BLURB>
+<DEFAULT>Identity (no rotation)</DEFAULT>
+</ARG>
+
+<ARG>
 <NAME>GstRgAnalysis::forced</NAME>
 <TYPE>gboolean</TYPE>
 <RANGE></RANGE>
@@ -1704,7 +1714,7 @@
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>bandwidth-hz</NICK>
-<BLURB>(DVB-T) Bandwidth in Hz.</BLURB>
+<BLURB>Channel bandwidth in Hz.</BLURB>
 <DEFAULT>8000000</DEFAULT>
 </ARG>
 
@@ -1814,7 +1824,7 @@
 <RANGE></RANGE>
 <FLAGS>w</FLAGS>
 <NICK>pids</NICK>
-<BLURB>Colon seperated list of pids (eg. 110:120).</BLURB>
+<BLURB>Colon-separated list of PIDs (eg. 110:120) to capture. ACT and CAT are automatically included but PMT should be added explicitly. Special value 8192 gets full MPEG-TS.</BLURB>
 <DEFAULT>"8192"</DEFAULT>
 </ARG>
 
@@ -2003,7 +2013,7 @@
 <TYPE>guint</TYPE>
 <RANGE>[1,7]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>ISB-T layer enabled</NICK>
+<NICK>ISDB-T layer enabled</NICK>
 <BLURB>(ISDB-T) Layer Enabled (7 = All layers).</BLURB>
 <DEFAULT>7</DEFAULT>
 </ARG>
@@ -2033,7 +2043,7 @@
 <TYPE>gint</TYPE>
 <RANGE>[G_MAXULONG,13]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>ISB-T layer A segment count</NICK>
+<NICK>ISDB-T layer A segment count</NICK>
 <BLURB>(ISDB-T) Layer A segment count (-1 = AUTO).</BLURB>
 <DEFAULT>-1</DEFAULT>
 </ARG>
@@ -2043,7 +2053,7 @@
 <TYPE>gint</TYPE>
 <RANGE>[G_MAXULONG,8]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>ISB-T layer A time interleaving </NICK>
+<NICK>ISDB-T layer A time interleaving</NICK>
 <BLURB>(ISDB-T) Layer A time interleaving (-1 = AUTO).</BLURB>
 <DEFAULT>-1</DEFAULT>
 </ARG>
@@ -2073,7 +2083,7 @@
 <TYPE>gint</TYPE>
 <RANGE>[G_MAXULONG,13]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>ISB-T layer B segment count</NICK>
+<NICK>ISDB-T layer B segment count</NICK>
 <BLURB>(ISDB-T) Layer B segment count (-1 = AUTO).</BLURB>
 <DEFAULT>-1</DEFAULT>
 </ARG>
@@ -2083,7 +2093,7 @@
 <TYPE>gint</TYPE>
 <RANGE>[G_MAXULONG,8]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>ISB-T layer B time interleaving </NICK>
+<NICK>ISDB-T layer B time interleaving</NICK>
 <BLURB>(ISDB-T) Layer B time interleaving (-1 = AUTO).</BLURB>
 <DEFAULT>-1</DEFAULT>
 </ARG>
@@ -2113,7 +2123,7 @@
 <TYPE>gint</TYPE>
 <RANGE>[G_MAXULONG,13]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>ISB-T layer C segment count</NICK>
+<NICK>ISDB-T layer C segment count</NICK>
 <BLURB>(ISDB-T) Layer C segment count (-1 = AUTO).</BLURB>
 <DEFAULT>-1</DEFAULT>
 </ARG>
@@ -2123,7 +2133,7 @@
 <TYPE>gint</TYPE>
 <RANGE>[G_MAXULONG,8]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>ISB-T layer C time interleaving </NICK>
+<NICK>ISDB-T layer C time interleaving</NICK>
 <BLURB>(ISDB-T) Layer C time interleaving (-1 = AUTO).</BLURB>
 <DEFAULT>-1</DEFAULT>
 </ARG>
@@ -2133,7 +2143,7 @@
 <TYPE>gint</TYPE>
 <RANGE>[G_MAXULONG,1]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>ISB-T partial reception</NICK>
+<NICK>ISDB-T partial reception</NICK>
 <BLURB>(ISDB-T) Partial Reception (-1 = AUTO).</BLURB>
 <DEFAULT>1</DEFAULT>
 </ARG>
@@ -2143,7 +2153,7 @@
 <TYPE>guint</TYPE>
 <RANGE>[1,13]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>ISB-T SB segment count</NICK>
+<NICK>ISDB-T SB segment count</NICK>
 <BLURB>(ISDB-T) SB segment count.</BLURB>
 <DEFAULT>1</DEFAULT>
 </ARG>
@@ -2153,7 +2163,7 @@
 <TYPE>gint</TYPE>
 <RANGE>[0,12]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>ISB-T SB segment IDX</NICK>
+<NICK>ISDB-T SB segment IDX</NICK>
 <BLURB>(ISDB-T) SB segment IDX.</BLURB>
 <DEFAULT>0</DEFAULT>
 </ARG>
@@ -2163,7 +2173,7 @@
 <TYPE>gint</TYPE>
 <RANGE>[G_MAXULONG,41]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>ISB-T SB subchannel ID</NICK>
+<NICK>ISDB-T SB subchannel ID</NICK>
 <BLURB>(ISDB-T) SB Subchannel ID (-1 = AUTO).</BLURB>
 <DEFAULT>0</DEFAULT>
 </ARG>
@@ -2173,7 +2183,7 @@
 <TYPE>gint</TYPE>
 <RANGE>[0,1]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>ISB-T sound broadcasting</NICK>
+<NICK>ISDB-T sound broadcasting</NICK>
 <BLURB>(ISDB-T) Sound Broadcasting.</BLURB>
 <DEFAULT>0</DEFAULT>
 </ARG>
@@ -18174,7 +18184,7 @@
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>bandwidth-hz</NICK>
-<BLURB>(DVB-T) Bandwidth in Hz.</BLURB>
+<BLURB>Channel bandwidth in Hz.</BLURB>
 <DEFAULT>8000000</DEFAULT>
 </ARG>
 
@@ -18233,7 +18243,7 @@
 <TYPE>guint</TYPE>
 <RANGE>[1,7]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>ISB-T layer enabled</NICK>
+<NICK>ISDB-T layer enabled</NICK>
 <BLURB>(ISDB-T) Layer Enabled (7 = All layers).</BLURB>
 <DEFAULT>7</DEFAULT>
 </ARG>
@@ -18263,7 +18273,7 @@
 <TYPE>gint</TYPE>
 <RANGE>[G_MAXULONG,13]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>ISB-T layer A segment count</NICK>
+<NICK>ISDB-T layer A segment count</NICK>
 <BLURB>(ISDB-T) Layer A segment count (-1 = AUTO).</BLURB>
 <DEFAULT>-1</DEFAULT>
 </ARG>
@@ -18273,7 +18283,7 @@
 <TYPE>gint</TYPE>
 <RANGE>[G_MAXULONG,8]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>ISB-T layer A time interleaving </NICK>
+<NICK>ISDB-T layer A time interleaving</NICK>
 <BLURB>(ISDB-T) Layer A time interleaving (-1 = AUTO).</BLURB>
 <DEFAULT>-1</DEFAULT>
 </ARG>
@@ -18303,7 +18313,7 @@
 <TYPE>gint</TYPE>
 <RANGE>[G_MAXULONG,13]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>ISB-T layer B segment count</NICK>
+<NICK>ISDB-T layer B segment count</NICK>
 <BLURB>(ISDB-T) Layer B segment count (-1 = AUTO).</BLURB>
 <DEFAULT>-1</DEFAULT>
 </ARG>
@@ -18313,7 +18323,7 @@
 <TYPE>gint</TYPE>
 <RANGE>[G_MAXULONG,8]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>ISB-T layer B time interleaving </NICK>
+<NICK>ISDB-T layer B time interleaving</NICK>
 <BLURB>(ISDB-T) Layer B time interleaving (-1 = AUTO).</BLURB>
 <DEFAULT>-1</DEFAULT>
 </ARG>
@@ -18343,7 +18353,7 @@
 <TYPE>gint</TYPE>
 <RANGE>[G_MAXULONG,13]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>ISB-T layer C segment count</NICK>
+<NICK>ISDB-T layer C segment count</NICK>
 <BLURB>(ISDB-T) Layer C segment count (-1 = AUTO).</BLURB>
 <DEFAULT>-1</DEFAULT>
 </ARG>
@@ -18353,7 +18363,7 @@
 <TYPE>gint</TYPE>
 <RANGE>[G_MAXULONG,8]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>ISB-T layer C time interleaving </NICK>
+<NICK>ISDB-T layer C time interleaving</NICK>
 <BLURB>(ISDB-T) Layer C time interleaving (-1 = AUTO).</BLURB>
 <DEFAULT>-1</DEFAULT>
 </ARG>
@@ -18363,7 +18373,7 @@
 <TYPE>gint</TYPE>
 <RANGE>[G_MAXULONG,1]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>ISB-T partial reception</NICK>
+<NICK>ISDB-T partial reception</NICK>
 <BLURB>(ISDB-T) Partial Reception (-1 = AUTO).</BLURB>
 <DEFAULT>1</DEFAULT>
 </ARG>
@@ -18373,7 +18383,7 @@
 <TYPE>guint</TYPE>
 <RANGE>[1,13]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>ISB-T SB segment count</NICK>
+<NICK>ISDB-T SB segment count</NICK>
 <BLURB>(ISDB-T) SB segment count.</BLURB>
 <DEFAULT>1</DEFAULT>
 </ARG>
@@ -18383,7 +18393,7 @@
 <TYPE>gint</TYPE>
 <RANGE>[0,12]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>ISB-T SB segment IDX</NICK>
+<NICK>ISDB-T SB segment IDX</NICK>
 <BLURB>(ISDB-T) SB segment IDX.</BLURB>
 <DEFAULT>0</DEFAULT>
 </ARG>
@@ -18393,7 +18403,7 @@
 <TYPE>gint</TYPE>
 <RANGE>[G_MAXULONG,41]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>ISB-T SB subchannel ID</NICK>
+<NICK>ISDB-T SB subchannel ID</NICK>
 <BLURB>(ISDB-T) SB Subchannel ID (-1 = AUTO).</BLURB>
 <DEFAULT>0</DEFAULT>
 </ARG>
@@ -18403,7 +18413,7 @@
 <TYPE>gint</TYPE>
 <RANGE>[0,1]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>ISB-T sound broadcasting</NICK>
+<NICK>ISDB-T sound broadcasting</NICK>
 <BLURB>(ISDB-T) Sound Broadcasting.</BLURB>
 <DEFAULT>0</DEFAULT>
 </ARG>
@@ -18900,11 +18910,11 @@
 
 <ARG>
 <NAME>GstH264Parse::config-interval</NAME>
-<TYPE>guint</TYPE>
-<RANGE><= 3600</RANGE>
+<TYPE>gint</TYPE>
+<RANGE>[G_MAXULONG,3600]</RANGE>
 <FLAGS>rwx</FLAGS>
 <NICK>SPS PPS Send Interval</NICK>
-<BLURB>Send SPS and PPS Insertion Interval in seconds (sprop parameter sets will be multiplexed in the data stream when detected.) (0 = disabled).</BLURB>
+<BLURB>Send SPS and PPS Insertion Interval in seconds (sprop parameter sets will be multiplexed in the data stream when detected.) (0 = disabled, -1 = send with every IDR frame).</BLURB>
 <DEFAULT>0</DEFAULT>
 </ARG>
 
@@ -27264,8 +27274,8 @@
 <RANGE>[0,1]</RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>diffspace</NICK>
-<BLURB>difference space: a value from 0 to 256.</BLURB>
-<DEFAULT>1</DEFAULT>
+<BLURB>difference space: a value from 0 to 256 (mapped to [0,1]).</BLURB>
+<DEFAULT>0.00390625</DEFAULT>
 </ARG>
 
 <ARG>
@@ -27274,8 +27284,8 @@
 <RANGE>[0,1]</RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>triplevel</NICK>
-<BLURB>level of trip: use high numbers, incremented by 100.</BLURB>
-<DEFAULT>0</DEFAULT>
+<BLURB>level of trip: mapped to [0,1] asymptotical.</BLURB>
+<DEFAULT>1</DEFAULT>
 </ARG>
 
 <ARG>
@@ -27313,7 +27323,7 @@
 <TYPE>gdouble</TYPE>
 <RANGE>[0,1]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>brightness</NICK>
+<NICK>Brightness</NICK>
 <BLURB></BLURB>
 <DEFAULT>0.5</DEFAULT>
 </ARG>
@@ -27359,6 +27369,46 @@
 </ARG>
 
 <ARG>
+<NAME>frei0r-filter-lens-correction::correction-near-center</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Correction near center</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-lens-correction::correction-near-edges</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Correction near edges</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-lens-correction::x-center</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>X center</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-lens-correction::y-center</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Y center</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
 <NAME>frei0r-filter-brightness::brightness</NAME>
 <TYPE>gdouble</TYPE>
 <RANGE>[0,1]</RANGE>
@@ -27429,6 +27479,26 @@
 </ARG>
 
 <ARG>
+<NAME>frei0r-filter-pixeliz0r::block-height</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Block height</NICK>
+<BLURB>Vertical size of one "pixel".</BLURB>
+<DEFAULT>0.0291667</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pixeliz0r::block-width</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Block width</NICK>
+<BLURB>Horizontal size of one "pixel".</BLURB>
+<DEFAULT>0.021875</DEFAULT>
+</ARG>
+
+<ARG>
 <NAME>frei0r-filter-3dflippo::center-position--x-</NAME>
 <TYPE>gdouble</TYPE>
 <RANGE>[0,1]</RANGE>
@@ -27605,7 +27675,7 @@
 <FLAGS>rw</FLAGS>
 <NICK>Saturation</NICK>
 <BLURB>The saturation value.</BLURB>
-<DEFAULT>0</DEFAULT>
+<DEFAULT>0.125</DEFAULT>
 </ARG>
 
 <ARG>
@@ -27635,7 +27705,7 @@
 <FLAGS>rw</FLAGS>
 <NICK>lredscale</NICK>
 <BLURB>multiplier for downscaling non-edge brightness.</BLURB>
-<DEFAULT>5.48413e-322</DEFAULT>
+<DEFAULT>0</DEFAULT>
 </ARG>
 
 <ARG>
@@ -27645,7 +27715,7 @@
 <FLAGS>rw</FLAGS>
 <NICK>lthresh</NICK>
 <BLURB>threshold for edge lightening.</BLURB>
-<DEFAULT>8.00386e-321</DEFAULT>
+<DEFAULT>0</DEFAULT>
 </ARG>
 
 <ARG>
@@ -27655,7 +27725,7 @@
 <FLAGS>rw</FLAGS>
 <NICK>lupscale</NICK>
 <BLURB>multiplier for upscaling edge brightness.</BLURB>
-<DEFAULT>7.93469e-321</DEFAULT>
+<DEFAULT>0</DEFAULT>
 </ARG>
 
 <ARG>
@@ -27685,7 +27755,7 @@
 <FLAGS>rw</FLAGS>
 <NICK>Green Tint</NICK>
 <BLURB>Adjust the level of green.</BLURB>
-<DEFAULT>0</DEFAULT>
+<DEFAULT>0.133333</DEFAULT>
 </ARG>
 
 <ARG>
@@ -27825,7 +27895,7 @@
 <FLAGS>rw</FLAGS>
 <NICK>blend</NICK>
 <BLURB>blend factor.</BLURB>
-<DEFAULT>0</DEFAULT>
+<DEFAULT>7.49023e-11</DEFAULT>
 </ARG>
 
 <ARG>
@@ -28015,7 +28085,7 @@
 <FLAGS>rw</FLAGS>
 <NICK>HSync</NICK>
 <BLURB>the hsync offset.</BLURB>
-<DEFAULT>2.11543e-316</DEFAULT>
+<DEFAULT>0</DEFAULT>
 </ARG>
 
 <ARG>
@@ -33995,7 +34065,7 @@
 <FLAGS>rw</FLAGS>
 <NICK>Histogram position</NICK>
 <BLURB>Histogram position.</BLURB>
-<DEFAULT>0</DEFAULT>
+<DEFAULT>0.3</DEFAULT>
 </ARG>
 
 <ARG>
@@ -34125,7 +34195,7 @@
 <FLAGS>rw</FLAGS>
 <NICK>Color (G)</NICK>
 <BLURB>The color to make transparent (B G R).</BLURB>
-<DEFAULT>0</DEFAULT>
+<DEFAULT>0.94</DEFAULT>
 </ARG>
 
 <ARG>
@@ -34145,7 +34215,7 @@
 <FLAGS>rw</FLAGS>
 <NICK>Distance</NICK>
 <BLURB>Distance to Color (127 is good).</BLURB>
-<DEFAULT>0</DEFAULT>
+<DEFAULT>0.288</DEFAULT>
 </ARG>
 
 <ARG>
@@ -34345,7 +34415,7 @@
 <FLAGS>rw</FLAGS>
 <NICK>Zoomrate</NICK>
 <BLURB>Zoomrate.</BLURB>
-<DEFAULT>0</DEFAULT>
+<DEFAULT>0.202</DEFAULT>
 </ARG>
 
 <ARG>
@@ -34354,8 +34424,8 @@
 <RANGE>[0,1]</RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>Channel</NICK>
-<BLURB>Channel to adjust levels (1 = RED; 2 = GREEN; 3 = BLUE; 4 = LUMA).</BLURB>
-<DEFAULT>0</DEFAULT>
+<BLURB>Channel to adjust (0 = red, 0.1 = green, 0.2 = blue, 0.3 = alpha, 0.4 = luma, 0.5 = rgb, 0.6 = hue, 0.7 = saturation).</BLURB>
+<DEFAULT>0.5</DEFAULT>
 </ARG>
 
 <ARG>
@@ -34364,8 +34434,8 @@
 <RANGE>[0,1]</RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>Curve point number</NICK>
-<BLURB>Number of point to use to build curve.</BLURB>
-<DEFAULT>0</DEFAULT>
+<BLURB>Number of points to use to build curve (/10 to fit [0,1] parameter range). Minimum 2 (0.2), Maximum 5 (0.5). Not relevant for Bézier spline.</BLURB>
+<DEFAULT>0.2</DEFAULT>
 </ARG>
 
 <ARG>
@@ -34374,8 +34444,8 @@
 <RANGE>[0,1]</RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>Graph position</NICK>
-<BLURB>Output image corner where curve graph will be drawn (1 = TOP,LEFT; 2 = TOP,RIGHT; 3 = BOTTOM,LEFT; 4 = BOTTOM, RIGHT).</BLURB>
-<DEFAULT>0</DEFAULT>
+<BLURB>Output image corner where curve graph will be drawn (0.1 = TOP,LEFT; 0.2 = TOP,RIGHT; 0.3 = BOTTOM,LEFT; 0.4 = BOTTOM, RIGHT).</BLURB>
+<DEFAULT>0.3</DEFAULT>
 </ARG>
 
 <ARG>
@@ -34385,7 +34455,7 @@
 <FLAGS>rw</FLAGS>
 <NICK>Point 1 input value</NICK>
 <BLURB>Point 1 input value.</BLURB>
-<DEFAULT>1</DEFAULT>
+<DEFAULT>0</DEFAULT>
 </ARG>
 
 <ARG>
@@ -34395,7 +34465,7 @@
 <FLAGS>rw</FLAGS>
 <NICK>Point 1 output value</NICK>
 <BLURB>Point 1 output value.</BLURB>
-<DEFAULT>1</DEFAULT>
+<DEFAULT>0</DEFAULT>
 </ARG>
 
 <ARG>
@@ -34425,7 +34495,7 @@
 <FLAGS>rw</FLAGS>
 <NICK>Point 3 input value</NICK>
 <BLURB>Point 3 input value.</BLURB>
-<DEFAULT>1</DEFAULT>
+<DEFAULT>0</DEFAULT>
 </ARG>
 
 <ARG>
@@ -34435,7 +34505,7 @@
 <FLAGS>rw</FLAGS>
 <NICK>Point 3 output value</NICK>
 <BLURB>Point 3 output value.</BLURB>
-<DEFAULT>1</DEFAULT>
+<DEFAULT>0</DEFAULT>
 </ARG>
 
 <ARG>
@@ -34445,7 +34515,7 @@
 <FLAGS>rw</FLAGS>
 <NICK>Point 4 input value</NICK>
 <BLURB>Point 4 input value.</BLURB>
-<DEFAULT>1</DEFAULT>
+<DEFAULT>0</DEFAULT>
 </ARG>
 
 <ARG>
@@ -34455,7 +34525,7 @@
 <FLAGS>rw</FLAGS>
 <NICK>Point 4 output value</NICK>
 <BLURB>Point 4 output value.</BLURB>
-<DEFAULT>1</DEFAULT>
+<DEFAULT>0</DEFAULT>
 </ARG>
 
 <ARG>
@@ -34465,7 +34535,7 @@
 <FLAGS>rw</FLAGS>
 <NICK>Point 5 input value</NICK>
 <BLURB>Point 5 input value.</BLURB>
-<DEFAULT>1</DEFAULT>
+<DEFAULT>0</DEFAULT>
 </ARG>
 
 <ARG>
@@ -34475,7 +34545,7 @@
 <FLAGS>rw</FLAGS>
 <NICK>Point 5 output value</NICK>
 <BLURB>Point 5 output value.</BLURB>
-<DEFAULT>1</DEFAULT>
+<DEFAULT>0</DEFAULT>
 </ARG>
 
 <ARG>
@@ -34489,6 +34559,26 @@
 </ARG>
 
 <ARG>
+<NAME>frei0r-filter-curves::b--zier-spline</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Bézier spline</NICK>
+<BLURB>Use cubic Bézier spline. Has to be a sorted list of points in the format "handle1x;handle1y#pointx;pointy#handle2x;handle2y"(pointx = in, pointy = out). Points are separated by a "|".The values can have "double" precision. x, y for points should be in the range 0-1. x,y for handles might also be out of this range.</BLURB>
+<DEFAULT>""</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-curves::luma-formula</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Luma formula</NICK>
+<BLURB>Use Rec. 601 (false) or Rec. 709 (true).</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
 <NAME>VdpSink::display</NAME>
 <TYPE>gchar*</TYPE>
 <RANGE></RANGE>
@@ -46409,6 +46499,16 @@
 </ARG>
 
 <ARG>
+<NAME>GstRTMPSrc::timeout</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= 0</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>RTMP Timeout</NICK>
+<BLURB>Time without receiving any data from the server to wait before to timeout the session.</BLURB>
+<DEFAULT>120</DEFAULT>
+</ARG>
+
+<ARG>
 <NAME>GstFliteTestSrc::samplesperbuffer</NAME>
 <TYPE>gint</TYPE>
 <RANGE>>= 1</RANGE>
@@ -46909,46 +47009,6 @@
 </ARG>
 
 <ARG>
-<NAME>Gstpyramidsegment::level</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[0,4]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Level</NICK>
-<BLURB>Maximum level of the pyramid segmentation.</BLURB>
-<DEFAULT>4</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>Gstpyramidsegment::silent</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Silent</NICK>
-<BLURB>Produce verbose output ?.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>Gstpyramidsegment::threshold1</NAME>
-<TYPE>gdouble</TYPE>
-<RANGE>[0,1000]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Threshold1</NICK>
-<BLURB>Error threshold for establishing links.</BLURB>
-<DEFAULT>50</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>Gstpyramidsegment::threshold2</NAME>
-<TYPE>gdouble</TYPE>
-<RANGE>[0,1000]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Threshold2</NICK>
-<BLURB>Error threshold for segment clustering.</BLURB>
-<DEFAULT>60</DEFAULT>
-</ARG>
-
-<ARG>
 <NAME>Gstfacedetect::display</NAME>
 <TYPE>gboolean</TYPE>
 <RANGE></RANGE>
@@ -59981,11 +60041,11 @@
 <ARG>
 <NAME>GstDashDemux::max-bitrate</NAME>
 <TYPE>guint</TYPE>
-<RANGE>>= 1000</RANGE>
+<RANGE></RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>Max bitrate</NICK>
-<BLURB>Max of bitrate supported by target decoder.</BLURB>
-<DEFAULT>24000000</DEFAULT>
+<BLURB>Max of bitrate supported by target video decoder (0 = no maximum).</BLURB>
+<DEFAULT>0</DEFAULT>
 </ARG>
 
 <ARG>
@@ -60009,6 +60069,36 @@
 </ARG>
 
 <ARG>
+<NAME>GstDashDemux::max-video-framerate</NAME>
+<TYPE>GstFraction</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max video framerate</NICK>
+<BLURB>Max video framerate to select (0/1 = no maximum).</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDashDemux::max-video-height</NAME>
+<TYPE>guint</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max video height</NICK>
+<BLURB>Max video height to select (0 = no maximum).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDashDemux::max-video-width</NAME>
+<TYPE>guint</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max video width</NICK>
+<BLURB>Max video width to select (0 = no maximum).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
 <NAME>GstSkinDetect::method</NAME>
 <TYPE>GstSkindetectMethod</TYPE>
 <RANGE></RANGE>
@@ -66743,6 +66833,16 @@
 </ARG>
 
 <ARG>
+<NAME>GstSrtpEnc::stats</NAME>
+<TYPE>GstStructure*</TYPE>
+<RANGE></RANGE>
+<FLAGS>r</FLAGS>
+<NICK>Statistics</NICK>
+<BLURB>Various statistics.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
 <NAME>GstSegmentation::learning-rate</NAME>
 <TYPE>gfloat</TYPE>
 <RANGE>[0,1]</RANGE>
@@ -67672,11 +67772,11 @@
 
 <ARG>
 <NAME>GstRtpH265Pay::config-interval</NAME>
-<TYPE>guint</TYPE>
-<RANGE><= 3600</RANGE>
+<TYPE>gint</TYPE>
+<RANGE>[G_MAXULONG,3600]</RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>VPS SPS PPS Send Interval</NICK>
-<BLURB>Send VPS, SPS and PPS Insertion Interval in seconds (sprop parameter sets will be multiplexed in the data stream when detected.) (0 = disabled).</BLURB>
+<BLURB>Send VPS, SPS and PPS Insertion Interval in seconds (sprop parameter sets will be multiplexed in the data stream when detected.) (0 = disabled, -1 = send with every IDR frame).</BLURB>
 <DEFAULT>0</DEFAULT>
 </ARG>
 
@@ -67737,7 +67837,7 @@
 <FLAGS>rwx</FLAGS>
 <NICK>Connection</NICK>
 <BLURB>Video input connection to use.</BLURB>
-<DEFAULT>auto</DEFAULT>
+<DEFAULT>Auto</DEFAULT>
 </ARG>
 
 <ARG>
@@ -67757,7 +67857,27 @@
 <FLAGS>rwx</FLAGS>
 <NICK>Playback Mode</NICK>
 <BLURB>Video Mode to use for playback.</BLURB>
-<DEFAULT>auto</DEFAULT>
+<DEFAULT>Automatic detection</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDecklinkVideoSrc::video-format</NAME>
+<TYPE>GstDecklinkVideoFormat</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Video format</NICK>
+<BLURB>Video format type to use for input (Only use auto for mode=auto).</BLURB>
+<DEFAULT>Auto</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDecklinkVideoSrc::timecode-format</NAME>
+<TYPE>GstDecklinkTimecodeFormat</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Timecode format</NICK>
+<BLURB>Timecode format type to use for input.</BLURB>
+<DEFAULT>bmdTimecodeRP188Any</DEFAULT>
 </ARG>
 
 <ARG>
@@ -67777,7 +67897,27 @@
 <FLAGS>rwx</FLAGS>
 <NICK>Playback Mode</NICK>
 <BLURB>Video Mode to use for playback.</BLURB>
-<DEFAULT>ntsc</DEFAULT>
+<DEFAULT>NTSC SD 60i</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDecklinkVideoSink::video-format</NAME>
+<TYPE>GstDecklinkVideoFormat</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Video format</NICK>
+<BLURB>Video format type to use for playback.</BLURB>
+<DEFAULT>bmdFormat8BitYUV</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDecklinkVideoSink::timecode-format</NAME>
+<TYPE>GstDecklinkTimecodeFormat</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Timecode format</NICK>
+<BLURB>Timecode format type to use for playback.</BLURB>
+<DEFAULT>bmdTimecodeRP188Any</DEFAULT>
 </ARG>
 
 <ARG>
@@ -67807,7 +67947,7 @@
 <FLAGS>rwx</FLAGS>
 <NICK>Connection</NICK>
 <BLURB>Audio input connection to use.</BLURB>
-<DEFAULT>auto</DEFAULT>
+<DEFAULT>Automatic</DEFAULT>
 </ARG>
 
 <ARG>
@@ -67962,7 +68102,7 @@
 
 <ARG>
 <NAME>GstOpenh264Enc::slice-mode</NAME>
-<TYPE>GstOpenh264EncSliceMode</TYPE>
+<TYPE>GstOpenh264EncSliceModes</TYPE>
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>Slice mode</NICK>
@@ -67991,6 +68131,16 @@
 </ARG>
 
 <ARG>
+<NAME>GstOpenh264Enc::max-bitrate</NAME>
+<TYPE>guint</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max Bitrate</NICK>
+<BLURB>Maximum Bitrate (in bits per second).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
 <NAME>GstLibde265Dec::max-threads</NAME>
 <TYPE>gint</TYPE>
 <RANGE>>= 0</RANGE>
@@ -68211,6 +68361,26 @@
 </ARG>
 
 <ARG>
+<NAME>GstGLMixerBin::start-time</NAME>
+<TYPE>guint64</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Start Time</NICK>
+<BLURB>Start time to use if start-time-selection=set.</BLURB>
+<DEFAULT>18446744073709551615</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstGLMixerBin::start-time-selection</NAME>
+<TYPE>GstGLMixerBinStartTimeSelection</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Start Time Selection</NICK>
+<BLURB>Decides which start time is output.</BLURB>
+<DEFAULT>Start at 0 running time (default)</DEFAULT>
+</ARG>
+
+<ARG>
 <NAME>GstGLImageSinkBin::async</NAME>
 <TYPE>gboolean</TYPE>
 <RANGE></RANGE>
@@ -68411,6 +68581,16 @@
 </ARG>
 
 <ARG>
+<NAME>GstGLImageSinkBin::rotate-method</NAME>
+<TYPE>GstGLRotateMethod</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>rotate method</NICK>
+<BLURB>rotate method.</BLURB>
+<DEFAULT>Identity (no rotation)</DEFAULT>
+</ARG>
+
+<ARG>
 <NAME>GstGLFilterBin::filter</NAME>
 <TYPE>GstElement*</TYPE>
 <RANGE></RANGE>
@@ -69361,6 +69541,2606 @@
 </ARG>
 
 <ARG>
+<NAME>GstChecksumSink::hash</NAME>
+<TYPE>GstChecksumSinkHash</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Hash</NICK>
+<BLURB>Checksum type.</BLURB>
+<DEFAULT>SHA-1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstSdpSrc::location</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Location</NICK>
+<BLURB>URI to SDP file (sdp:///path/to/file).</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstSdpSrc::sdp</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>SDP</NICK>
+<BLURB>SDP description used instead of location.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstGLDeinterlace::method</NAME>
+<TYPE>GstGLDeinterlaceMethod</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Deinterlace Method</NICK>
+<BLURB>Select which deinterlace method apply to GL video texture.</BLURB>
+<DEFAULT>Blur Vertical</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-r::amplitude</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Amplitude</NICK>
+<BLURB>Amplitude (contrast) of the pattern.</BLURB>
+<DEFAULT>0.8</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-r::aspect-type</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Aspect type</NICK>
+<BLURB>Pixel aspect ratio presets.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-r::channel</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Channel</NICK>
+<BLURB>Into which color channel to draw.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-r::freq-1</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Freq 1</NICK>
+<BLURB>Pattern 7 H frequency.</BLURB>
+<DEFAULT>0.03</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-r::freq-2</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Freq 2</NICK>
+<BLURB>Pattern 7 V frequency.</BLURB>
+<DEFAULT>0.03</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-r::lin-p-swp</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Lin P swp</NICK>
+<BLURB>Use linear period sweep.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-r::manual-aspect</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Manual aspect</NICK>
+<BLURB>Manual pixel aspect ratio.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-r::type</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Type</NICK>
+<BLURB>Type of test pattern.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-l::channel</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Channel</NICK>
+<BLURB>Into which color channel to draw.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-l::type</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Type</NICK>
+<BLURB>Type of test pattern.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-i::amplitude</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Amplitude</NICK>
+<BLURB>Amplitude (contrast) of the pattern.</BLURB>
+<DEFAULT>0.8</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-i::channel</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Channel</NICK>
+<BLURB>Into which color channel to draw.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-i::negative</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Negative</NICK>
+<BLURB>Change polarity of impulse/step.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-i::tilt</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Tilt</NICK>
+<BLURB>Angle of step function.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-i::type</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Type</NICK>
+<BLURB>Type of test pattern.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-i::width</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Width</NICK>
+<BLURB>Width of impulse.</BLURB>
+<DEFAULT>0.040404</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-g::aspect-type</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Aspect type</NICK>
+<BLURB>Pixel aspect ratio presets.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-g::manual-aspect</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Manual Aspect</NICK>
+<BLURB>Manual pixel aspect ratio.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-g::negative</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Negative</NICK>
+<BLURB>Polarity of image.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-g::size-1</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Size 1</NICK>
+<BLURB>Size of major features.</BLURB>
+<DEFAULT>0.28125</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-g::size-2</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Size 2</NICK>
+<BLURB>Size of minor features.</BLURB>
+<DEFAULT>0.0625</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-g::type</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Type</NICK>
+<BLURB>Type of test pattern.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-c::color-space</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Color space</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-c::cross-section</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Cross section</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-c::fullscreen</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Fullscreen</NICK>
+<BLURB></BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-c::third-axis-value</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Third axis value</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-b::aspect-type</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Aspect type</NICK>
+<BLURB>7 choices, pixel aspect ratio.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-b::manual-aspect</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Manual Aspect</NICK>
+<BLURB>Manual pixel aspect ratio (Aspect type 6).</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-b::type</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Type</NICK>
+<BLURB>8 choices, select test pattern.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-mixer-cairoblend::blend-mode</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>blend mode</NICK>
+<BLURB>Blend mode used to compose image. Accepted values: 'normal', 'add', 'saturate', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'colordodge', 'colorburn', 'hardlight', 'softlight', 'difference', 'exclusion', 'hslhue', 'hslsaturation', 'hslcolor', 'hslluminosity'.</BLURB>
+<DEFAULT>"normal"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-mixer-cairoblend::opacity</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>opacity</NICK>
+<BLURB>Opacity of composited image.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-mixer-cairoaffineblend::anchor-x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>anchor x</NICK>
+<BLURB>X position of rotation center within the second input.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-mixer-cairoaffineblend::anchor-y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>anchor y</NICK>
+<BLURB>Y position of rotation center within the second input.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-mixer-cairoaffineblend::blend-mode</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>blend mode</NICK>
+<BLURB>Blend mode used to compose image. Accepted values: 'normal', 'add', 'saturate', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'colordodge', 'colorburn', 'hardlight', 'softlight', 'difference', 'exclusion', 'hslhue', 'hslsaturation', 'hslcolor', 'hslluminosity'.</BLURB>
+<DEFAULT>"normal"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-mixer-cairoaffineblend::opacity</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>opacity</NICK>
+<BLURB>Opacity of second input.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-mixer-cairoaffineblend::rotation</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>rotation</NICK>
+<BLURB>Rotation of second input, value interperted as range 0 - 360.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-mixer-cairoaffineblend::x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>x</NICK>
+<BLURB>X position of second input, value interperted as range -2*width - 3*width.</BLURB>
+<DEFAULT>0.4</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-mixer-cairoaffineblend::x-scale</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>x scale</NICK>
+<BLURB>X scale of second input, value interperted as range 0 - 5.</BLURB>
+<DEFAULT>0.2</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-mixer-cairoaffineblend::y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>y</NICK>
+<BLURB>Y position of second input, value interperted as range -2*height - 3*height.</BLURB>
+<DEFAULT>0.4</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-mixer-cairoaffineblend::y-scale</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>y scale</NICK>
+<BLURB>Y scale of second input, value interperted as range 0 - 5.</BLURB>
+<DEFAULT>0.2</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-white-balance--lms-space-::color-temperature</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Color Temperature</NICK>
+<BLURB>Choose an output color temperature, if different from 6500 K.</BLURB>
+<DEFAULT>0.433333</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-white-balance--lms-space-::neutral-color-b</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Neutral Color (B)</NICK>
+<BLURB>Choose a color from the source image that should be white.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-white-balance--lms-space-::neutral-color-g</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Neutral Color (G)</NICK>
+<BLURB>Choose a color from the source image that should be white.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-white-balance--lms-space-::neutral-color-r</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Neutral Color (R)</NICK>
+<BLURB>Choose a color from the source image that should be white.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-vignette::aspect</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>aspect</NICK>
+<BLURB>Aspect ratio.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-vignette::clearcenter</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>clearCenter</NICK>
+<BLURB>Size of the unaffected center.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-vignette::soft</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>soft</NICK>
+<BLURB>Softness.</BLURB>
+<DEFAULT>0.6</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-vectorscope::mix</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>mix</NICK>
+<BLURB>The amount of source image mixed into background of display.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-vectorscope::overlay-sides</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>overlay sides</NICK>
+<BLURB>If false, the sides of image are shown without overlay.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-timeout-indicator::color-b</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>color (B)</NICK>
+<BLURB>Indicator colour.</BLURB>
+<DEFAULT>6.44597e-44</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-timeout-indicator::color-g</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>color (G)</NICK>
+<BLURB>Indicator colour.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-timeout-indicator::color-r</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>color (R)</NICK>
+<BLURB>Indicator colour.</BLURB>
+<DEFAULT>1.28487e-37</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-timeout-indicator::time</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>time</NICK>
+<BLURB>Current time.</BLURB>
+<DEFAULT>1.80984e-316</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-timeout-indicator::transparency</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>transparency</NICK>
+<BLURB>Indicator transparency.</BLURB>
+<DEFAULT>1.80984e-316</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-spillsupress::supresstype</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>supresstype</NICK>
+<BLURB>Defines if green or blue screen spill supress is applied.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::aoffset</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>aOffset</NICK>
+<BLURB>Offset of the alpha component.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::apower</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>aPower</NICK>
+<BLURB>Power (Gamma) of the alpha component.</BLURB>
+<DEFAULT>0.05</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::aslope</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>aSlope</NICK>
+<BLURB>Slope of the alpha component.</BLURB>
+<DEFAULT>0.05</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::boffset</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>bOffset</NICK>
+<BLURB>Offset of the blue color component.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::bpower</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>bPower</NICK>
+<BLURB>Power (Gamma) of the blue color component.</BLURB>
+<DEFAULT>0.05</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::bslope</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>bSlope</NICK>
+<BLURB>Slope of the blue color component.</BLURB>
+<DEFAULT>0.05</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::goffset</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>gOffset</NICK>
+<BLURB>Offset of the green color component.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::gpower</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>gPower</NICK>
+<BLURB>Power (Gamma) of the green color component.</BLURB>
+<DEFAULT>0.05</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::gslope</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>gSlope</NICK>
+<BLURB>Slope of the green color component.</BLURB>
+<DEFAULT>0.05</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::roffset</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>rOffset</NICK>
+<BLURB>Offset of the red color component.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::rpower</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>rPower</NICK>
+<BLURB>Power (Gamma) of the red color component.</BLURB>
+<DEFAULT>0.05</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::rslope</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>rSlope</NICK>
+<BLURB>Slope of the red color component.</BLURB>
+<DEFAULT>0.05</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::saturation</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>saturation</NICK>
+<BLURB>Overall saturation.</BLURB>
+<DEFAULT>0.1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-softglow::blur</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>blur</NICK>
+<BLURB>Blur of the glow.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-softglow::blurblend</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>blurblend</NICK>
+<BLURB>Blend mode used to blend highlight blur with input image.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-softglow::brightness</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>brightness</NICK>
+<BLURB>Brightness of highlight areas.</BLURB>
+<DEFAULT>0.75</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-softglow::sharpness</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>sharpness</NICK>
+<BLURB>Sharpness of highlight areas.</BLURB>
+<DEFAULT>0.85</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sigmoidaltransfer::brightness</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>brightness</NICK>
+<BLURB>Brightnesss of image.</BLURB>
+<DEFAULT>0.75</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sigmoidaltransfer::sharpness</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>sharpness</NICK>
+<BLURB>Sharpness of transfer.</BLURB>
+<DEFAULT>0.85</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sharpness::amount</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Amount</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.3</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sharpness::size</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Size</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-select0r::color-to-select-b</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Color to select (B)</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-select0r::color-to-select-g</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Color to select (G)</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.8</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-select0r::color-to-select-r</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Color to select (R)</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-select0r::delta-b---i---i</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Delta B / I / I</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.2</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-select0r::delta-g---b---chroma</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Delta G / B / Chroma</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.2</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-select0r::delta-r---a---hue</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Delta R / A / Hue</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.2</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-select0r::edge-mode</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Edge mode</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-select0r::invert-selection</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Invert selection</NICK>
+<BLURB></BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-select0r::operation</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Operation</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-select0r::selection-subspace</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Selection subspace</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-select0r::slope</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Slope</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-select0r::subspace-shape</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Subspace shape</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-rgbnoise::noise</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>noise</NICK>
+<BLURB>Amount of noise added.</BLURB>
+<DEFAULT>0.2</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-rgb-parade::mix</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>mix</NICK>
+<BLURB>The amount of source image mixed into background of display.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-rgb-parade::overlay-sides</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>overlay sides</NICK>
+<BLURB>If false, the sides of image are shown without overlay.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::alpha-trace</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Alpha trace</NICK>
+<BLURB>Show Alpha trace on scope.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::b-trace</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>B trace</NICK>
+<BLURB>Show B trace on scope.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::channel</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Channel</NICK>
+<BLURB>Channel to numerically display.</BLURB>
+<DEFAULT>0.375005</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::color</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Color</NICK>
+<BLURB>rec 601 or rec 709.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::crosshair-color</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Crosshair color</NICK>
+<BLURB>Color of the profile marker.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::display-average</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Display average</NICK>
+<BLURB>e.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::display-maximum</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Display maximum</NICK>
+<BLURB></BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::display-minimum</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Display minimum</NICK>
+<BLURB></BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::display-rms</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Display RMS</NICK>
+<BLURB></BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::g-trace</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>G trace</NICK>
+<BLURB>Show G trace on scope.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::length</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Length</NICK>
+<BLURB>Length of profile.</BLURB>
+<DEFAULT>0.589744</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::marker-1</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Marker 1</NICK>
+<BLURB>Position of marker 1.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::marker-2</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Marker 2</NICK>
+<BLURB>Position of marker 2.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::param-256-scale</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>256 scale</NICK>
+<BLURB>use 0-255 instead of 0.0-1.0.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::pb-trace</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Pb trace</NICK>
+<BLURB>Show Pb trace on scope.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::pr-trace</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Pr trace</NICK>
+<BLURB>Show Pr trace on scope.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::r-trace</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>R trace</NICK>
+<BLURB>Show R trace on scope.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::tilt</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Tilt</NICK>
+<BLURB>Tilt of profile.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>X</NICK>
+<BLURB>X position of profile.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Y</NICK>
+<BLURB>Y position of profile.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::y-trace</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Y trace</NICK>
+<BLURB>Show Y' trace on scope.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0be::big-window</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Big window</NICK>
+<BLURB>Display more data.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0be::measurement</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Measurement</NICK>
+<BLURB>What measurement to display.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0be::param-256-scale</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>256 scale</NICK>
+<BLURB>use 0-255 instead of 0.0-1.0.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0be::show-alpha</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Show alpha</NICK>
+<BLURB>Display alpha value too.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0be::x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>X</NICK>
+<BLURB>X position of probe.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0be::x-size</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>X size</NICK>
+<BLURB>X size of probe.</BLURB>
+<DEFAULT>0.25</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0be::y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Y</NICK>
+<BLURB>Y position of probe.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0be::y-size</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Y size</NICK>
+<BLURB>Y size of probe.</BLURB>
+<DEFAULT>0.25</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-posterize::levels</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>levels</NICK>
+<BLURB>Number of values per channel.</BLURB>
+<DEFAULT>0.104167</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-ndvi-filter::color-map</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Color Map</NICK>
+<BLURB>The color map to use. One of 'earth', 'grayscale', 'heat' or 'rainbow'.</BLURB>
+<DEFAULT>"grayscale"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-ndvi-filter::index-calculation</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Index Calculation</NICK>
+<BLURB>The index calculation to use. One of 'ndvi' or 'vi'.</BLURB>
+<DEFAULT>"ndvi"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-ndvi-filter::legend</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Legend</NICK>
+<BLURB>Control legend display. One of 'off' or 'bottom'.</BLURB>
+<DEFAULT>"off"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-ndvi-filter::levels</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Levels</NICK>
+<BLURB>The number of color levels to use in the false image (divided by 1000).</BLURB>
+<DEFAULT>0.256</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-ndvi-filter::nir-channel</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>NIR Channel</NICK>
+<BLURB>The channel to use for the near-infrared component. One of 'r', 'g', or 'b'.</BLURB>
+<DEFAULT>"r"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-ndvi-filter::nir-offset</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>NIR Offset</NICK>
+<BLURB>An offset to be applied to the near-infrared component (mapped to [-100%, 100%].</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-ndvi-filter::nir-scale</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>NIR Scale</NICK>
+<BLURB>A scaling factor to be applied to the near-infrared component (divided by 10).</BLURB>
+<DEFAULT>0.1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-ndvi-filter::vis-offset</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>VIS Offset</NICK>
+<BLURB>An offset to be applied to the visible component (mapped to [-100%, 100%].</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-ndvi-filter::vis-scale</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>VIS Scale</NICK>
+<BLURB>A scaling factor to be applied to the visible component (divided by 10).</BLURB>
+<DEFAULT>0.1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-ndvi-filter::visible-channel</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Visible Channel</NICK>
+<BLURB>The channel to use for the visible component. One of 'r', 'g', or 'b'.</BLURB>
+<DEFAULT>"b"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-medians::size</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Size</NICK>
+<BLURB>Size for 'var size' type filter.</BLURB>
+<DEFAULT>0.1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-medians::type</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Type</NICK>
+<BLURB>Choose type of median: Cross5, Square3x3, Bilevel, Diamond3x3, Square5x5, Temp3, Temp5, ArceBI, ML3D, ML3dEX, VarSize.</BLURB>
+<DEFAULT>"Square3x3"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::backgroundweight</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>backgroundWeight</NICK>
+<BLURB>Describes how strong the (accumulated) background should shine through.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::blackreference</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>blackReference</NICK>
+<BLURB>Uses black as background image instead of the first frame.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::dim</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>dim</NICK>
+<BLURB>Dimming of the light mask.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::longalpha</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>longAlpha</NICK>
+<BLURB>Alpha value for moving average.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::loweroverexposure</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>lowerOverexposure</NICK>
+<BLURB>Prevents some overexposure if the light source stays steady too long (varying speed).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::nonlineardim</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>nonlinearDim</NICK>
+<BLURB>Nonlinear dimming (may look more natural).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::reset</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>reset</NICK>
+<BLURB>Reset filter masks.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::saturation</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>saturation</NICK>
+<BLURB>Saturation of lights.</BLURB>
+<DEFAULT>0.25</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::sensitivity</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>sensitivity</NICK>
+<BLURB>Sensitivity of the effect for light (higher sensitivity will lead to brighter lights).</BLURB>
+<DEFAULT>0.2</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::statsbrightness</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>statsBrightness</NICK>
+<BLURB>Display the brightness and threshold, for adjusting the brightness threshold parameter.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::statsdifference</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>statsDifference</NICK>
+<BLURB>Display the background difference and threshold.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::statsdiffsum</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>statsDiffSum</NICK>
+<BLURB>Display the sum of the background difference and the threshold.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::thresholdbrightness</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>thresholdBrightness</NICK>
+<BLURB>Brightness threshold to distinguish between foreground and background.</BLURB>
+<DEFAULT>0.588235</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::thresholddifference</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>thresholdDifference</NICK>
+<BLURB>Threshold: Difference to background to distinguish between fore- and background.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::thresholddiffsum</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>thresholdDiffSum</NICK>
+<BLURB>Threshold for sum of differences. Can in most cases be ignored (set to 0).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::transparentbackground</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>transparentBackground</NICK>
+<BLURB>Make the background transparent.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::amount-1</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Amount 1</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.55</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::amount-2</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Amount 2</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::hue-gate</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Hue gate</NICK>
+<BLURB>Restrict mask to hues close to key.</BLURB>
+<DEFAULT>0.25</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::key-color-b</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Key color (B)</NICK>
+<BLURB>Key color that was used for chroma keying.</BLURB>
+<DEFAULT>0.1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::key-color-g</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Key color (G)</NICK>
+<BLURB>Key color that was used for chroma keying.</BLURB>
+<DEFAULT>0.8</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::key-color-r</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Key color (R)</NICK>
+<BLURB>Key color that was used for chroma keying.</BLURB>
+<DEFAULT>0.1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::mask-to-alpha</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Mask to Alpha</NICK>
+<BLURB>Replace alpha channel with the mask.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::mask-type</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Mask type</NICK>
+<BLURB>Which mask to apply [0,1,2,3].</BLURB>
+<DEFAULT>"0"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::operation-1</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Operation 1</NICK>
+<BLURB>First operation 1 [0,1,2].</BLURB>
+<DEFAULT>"1"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::operation-2</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Operation 2</NICK>
+<BLURB>Second operation 2 [0,1,2].</BLURB>
+<DEFAULT>"0"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::saturation-threshold</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Saturation threshold</NICK>
+<BLURB>Restrict mask to saturated colors.</BLURB>
+<DEFAULT>0.15</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::show-mask</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Show mask</NICK>
+<BLURB>Replace image with the mask.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::slope</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Slope</NICK>
+<BLURB>Range of colors around the key where effect gradually decreases.</BLURB>
+<DEFAULT>0.4</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::target-color-b</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Target color (B)</NICK>
+<BLURB>Desired color to replace key residue with.</BLURB>
+<DEFAULT>0.4</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::target-color-g</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Target color (G)</NICK>
+<BLURB>Desired color to replace key residue with.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::target-color-r</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Target color (R)</NICK>
+<BLURB>Desired color to replace key residue with.</BLURB>
+<DEFAULT>0.78</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::tolerance</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Tolerance</NICK>
+<BLURB>Range of colors around the key, where effect is full strength.</BLURB>
+<DEFAULT>0.24</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-iir-blur::amount</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Amount</NICK>
+<BLURB>Amount of blur.</BLURB>
+<DEFAULT>0.2</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-iir-blur::edge</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Edge</NICK>
+<BLURB>Edge compensation.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-iir-blur::type</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Type</NICK>
+<BLURB>Blur type.</BLURB>
+<DEFAULT>0.333344</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-hqdn3d::spatial</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Spatial</NICK>
+<BLURB>Amount of spatial filtering.</BLURB>
+<DEFAULT>0.04</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-hqdn3d::temporal</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Temporal</NICK>
+<BLURB>Amount of temporal filtering.</BLURB>
+<DEFAULT>0.06</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-emboss::azimuth</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>azimuth</NICK>
+<BLURB>Light direction.</BLURB>
+<DEFAULT>0.375</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-emboss::elevation</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>elevation</NICK>
+<BLURB>Background lightness.</BLURB>
+<DEFAULT>0.333333</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-emboss::width45</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>width45</NICK>
+<BLURB>Bump height.</BLURB>
+<DEFAULT>0.25</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-dither::levels</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>levels</NICK>
+<BLURB>Number of values per channel.</BLURB>
+<DEFAULT>0.104167</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-dither::matrixid</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>matrixid</NICK>
+<BLURB>Id of matrix used for dithering.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-defish0r::amount</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Amount</NICK>
+<BLURB>Focal Ratio.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-defish0r::aspect-type</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Aspect type</NICK>
+<BLURB>Pixel aspect ratio presets.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-defish0r::defish</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>DeFish</NICK>
+<BLURB>Fish or Defish.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-defish0r::interpolator</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Interpolator</NICK>
+<BLURB>Quality of interpolation.</BLURB>
+<DEFAULT>0.166667</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-defish0r::manual-aspect</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Manual Aspect</NICK>
+<BLURB>Manual Pixel Aspect ratio.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-defish0r::manual-scale</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Manual Scale</NICK>
+<BLURB>Manual Scale.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-defish0r::scaling</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Scaling</NICK>
+<BLURB>Scaling method.</BLURB>
+<DEFAULT>0.666667</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-defish0r::type</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Type</NICK>
+<BLURB>Mapping function.</BLURB>
+<DEFAULT>0.666667</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-colortap::table</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>table</NICK>
+<BLURB>Lookup table used to filter colors. One of: xpro, sepia, heat, red_green, old_photo, xray, esses, yellow_blue.</BLURB>
+<DEFAULT>"esses"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-colorize::hue</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>hue</NICK>
+<BLURB>Color shade of the colorized image.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-colorize::lightness</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>lightness</NICK>
+<BLURB>Lightness of the colorized image.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-colorize::saturation</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>saturation</NICK>
+<BLURB>Amount of color in the colorized image.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-colorhalftone::cyan-angle</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>cyan angle</NICK>
+<BLURB>Cyan dots angle.</BLURB>
+<DEFAULT>0.3</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-colorhalftone::dot-radius</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>dot radius</NICK>
+<BLURB>Halftone pattern dot size.</BLURB>
+<DEFAULT>0.4</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-colorhalftone::magenta-angle</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>magenta angle</NICK>
+<BLURB>Magenta dots angle.</BLURB>
+<DEFAULT>0.45</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-colorhalftone::yellow-angle</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>yellow angle</NICK>
+<BLURB>Yellow dots angle.</BLURB>
+<DEFAULT>0.25</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-coloradj-rgb::action</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Action</NICK>
+<BLURB>Type of color adjustment.</BLURB>
+<DEFAULT>0.333344</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-coloradj-rgb::alpha-controlled</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Alpha controlled</NICK>
+<BLURB>Adjust only areas with nonzero alpha.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-coloradj-rgb::b</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>B</NICK>
+<BLURB>Amount of blue.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-coloradj-rgb::g</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>G</NICK>
+<BLURB>Amount of green.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-coloradj-rgb::keep-luma</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Keep luma</NICK>
+<BLURB>Don't change brightness.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-coloradj-rgb::luma-formula</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Luma formula</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.500025</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-coloradj-rgb::r</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>R</NICK>
+<BLURB>Amount of red.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairoimagegrid::columns</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>columns</NICK>
+<BLURB>Number of columns in the image grid. Input range 0 - 1 is interpreted as range 1 - 20.</BLURB>
+<DEFAULT>0.105263</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairoimagegrid::rows</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>rows</NICK>
+<BLURB>Number of rows in the image grid. Input range 0 - 1 is interpreted as range 1 - 20.</BLURB>
+<DEFAULT>0.105263</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::blend-mode</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>blend mode</NICK>
+<BLURB>Blend mode used to compose gradient on image. Accepted values: 'normal', 'add', 'saturate', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'colordodge', 'colorburn', 'hardlight', 'softlight', 'difference', 'exclusion', 'hslhue', 'hslsaturation', 'hslcolor', 'hslluminosity'.</BLURB>
+<DEFAULT>"normal"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::end-color-b</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>end color (B)</NICK>
+<BLURB>Second color of the gradient.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::end-color-g</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>end color (G)</NICK>
+<BLURB>Second color of the gradient.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::end-color-r</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>end color (R)</NICK>
+<BLURB>Second color of the gradient.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::end-opacity</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>end opacity</NICK>
+<BLURB>Opacity of the second color of the gradient.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::end-x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>end x</NICK>
+<BLURB>X position of the end point of the gradient.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::end-y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>end y</NICK>
+<BLURB>Y position of the end point of the gradient.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::offset</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>offset</NICK>
+<BLURB>Position of first color in the line connecting gradient ends, really useful only for radial gradient.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::pattern</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>pattern</NICK>
+<BLURB>Linear or radial gradient.</BLURB>
+<DEFAULT>"gradient_linear"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::start-color-b</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>start color (B)</NICK>
+<BLURB>First color of the gradient.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::start-color-g</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>start color (G)</NICK>
+<BLURB>First color of the gradient.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::start-color-r</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>start color (R)</NICK>
+<BLURB>First color of the gradient.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::start-opacity</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>start opacity</NICK>
+<BLURB>Opacity of the first color of the gradient.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::start-x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>start x</NICK>
+<BLURB>X position of the start point of the gradient.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::start-y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>start y</NICK>
+<BLURB>Y position of the start point of the gradient.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::alpha-operation</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Alpha operation</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::corner-1-x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Corner 1 X</NICK>
+<BLURB>X coordinate of corner 1.</BLURB>
+<DEFAULT>0.333333</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::corner-1-y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Corner 1 Y</NICK>
+<BLURB>Y coordinate of corner 1.</BLURB>
+<DEFAULT>0.333333</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::corner-2-x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Corner 2 X</NICK>
+<BLURB>X coordinate of corner 2.</BLURB>
+<DEFAULT>0.666666</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::corner-2-y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Corner 2 Y</NICK>
+<BLURB>Y coordinate of corner 2.</BLURB>
+<DEFAULT>0.333333</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::corner-3-x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Corner 3 X</NICK>
+<BLURB>X coordinate of corner 3.</BLURB>
+<DEFAULT>0.666666</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::corner-3-y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Corner 3 Y</NICK>
+<BLURB>Y coordinate of corner 3.</BLURB>
+<DEFAULT>0.666666</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::corner-4-x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Corner 4 X</NICK>
+<BLURB>X coordinate of corner 4.</BLURB>
+<DEFAULT>0.333333</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::corner-4-y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Corner 4 Y</NICK>
+<BLURB>Y coordinate of corner 4.</BLURB>
+<DEFAULT>0.666666</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::enable-stretch</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Enable Stretch</NICK>
+<BLURB>Enable stretching.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::feather-alpha</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Feather Alpha</NICK>
+<BLURB>Makes smooth transition into transparent.</BLURB>
+<DEFAULT>0.01</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::interpolator</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Interpolator</NICK>
+<BLURB>Quality of interpolation.</BLURB>
+<DEFAULT>0.166667</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::stretch-x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Stretch X</NICK>
+<BLURB>Amount of stretching in X direction.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::stretch-y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Stretch Y</NICK>
+<BLURB>Amount of stretching in Y direction.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::transparent-background</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Transparent Background</NICK>
+<BLURB>Makes background transparent.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphaspot::max</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max</NICK>
+<BLURB></BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphaspot::min</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Min</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphaspot::operation</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Operation</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphaspot::position-x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Position X</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphaspot::position-y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Position Y</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphaspot::shape</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Shape</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphaspot::size-x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Size X</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphaspot::size-y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Size Y</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphaspot::tilt</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Tilt</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphaspot::transition-width</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Transition width</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.2</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphagrad::max</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max</NICK>
+<BLURB></BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphagrad::min</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Min</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphagrad::operation</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Operation</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphagrad::position</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Position</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphagrad::tilt</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Tilt</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphagrad::transition-width</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Transition width</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alpha0ps::display</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Display</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alpha0ps::display-input-alpha</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Display input alpha</NICK>
+<BLURB></BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alpha0ps::invert</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Invert</NICK>
+<BLURB></BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alpha0ps::operation</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Operation</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alpha0ps::shrink-grow-blur-amount</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Shrink/Grow/Blur amount</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.333344</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alpha0ps::threshold</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Threshold</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstKMSSink::connector-id</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= G_MAXULONG</RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Connector ID</NICK>
+<BLURB>DRM connector id.</BLURB>
+<DEFAULT>-1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstKMSSink::driver-name</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>device name</NICK>
+<BLURB>DRM device driver name.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstKMSSink::plane-id</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= G_MAXULONG</RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Plane ID</NICK>
+<BLURB>DRM plane id.</BLURB>
+<DEFAULT>-1</DEFAULT>
+</ARG>
+
+<ARG>
 <NAME>GstBs2b::fcut</NAME>
 <TYPE>gint</TYPE>
 <RANGE>[300,2000]</RANGE>
@@ -69380,3 +72160,393 @@
 <DEFAULT>45</DEFAULT>
 </ARG>
 
+<ARG>
+<NAME>GstWebrtcDsp::echo-cancel</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Echo Cancel</NICK>
+<BLURB>Enable or disable echo canceller, note that it will be disabled if no webrtcechoprobe has been found.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstWebrtcDsp::experimental-agc</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Experimental AGC</NICK>
+<BLURB>Enable or disable experimental automatic gain control.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstWebrtcDsp::extended-filter</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Extended Filter</NICK>
+<BLURB>Enable or disable the extended filter.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstWebrtcDsp::gain-control</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Gain Control</NICK>
+<BLURB>Enable or disable automatic digital gain control.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstWebrtcDsp::high-pass-filter</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>High Pass Filter</NICK>
+<BLURB>Enable or disable high pass filtering.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstWebrtcDsp::noise-suppression</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Noise Suppression</NICK>
+<BLURB>Enable or disable noise suppression.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstWebrtcDsp::probe</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Echo Probe</NICK>
+<BLURB>The name of the webrtcechoprobe element that record the audio being played through loud speakers. Must be set before PAUSED state.</BLURB>
+<DEFAULT>"webrtcechoprobe0"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstWebrtcDsp::echo-suppression-level</NAME>
+<TYPE>GstWebrtcEchoSuppressionLevel</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Echo Suppression Level</NICK>
+<BLURB>Controls the aggressiveness of the suppressor. A higher level trades off double-talk performance for increased echo suppression.</BLURB>
+<DEFAULT>Moderate Suppression</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstWebrtcDsp::noise-suppression-level</NAME>
+<TYPE>GstWebrtcNoiseSuppressionLevel</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Noise Suppression Level</NICK>
+<BLURB>Controls the aggressiveness of the suppression. Increasing the level will reduce the noise level at the expense of a higher speech distortion.</BLURB>
+<DEFAULT>Moderate Suppression</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstWebrtcDsp::delay-agnostic</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Delay Agnostic</NICK>
+<BLURB>Enable or disable the delay agnostic mode.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDC1394Src::dma</NAME>
+<TYPE>guint</TYPE>
+<RANGE>>= 1</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>DMA ring buffer size</NICK>
+<BLURB>The number of frames in the Direct Memory Access ring buffer.</BLURB>
+<DEFAULT>10</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDC1394Src::guid</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Camera GUID</NICK>
+<BLURB>The hexadecimal representation of the GUID of the camera (use first camera available if null).</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDC1394Src::iso</NAME>
+<TYPE>GstDC1394ISOSpeed</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>ISO bandwidth</NICK>
+<BLURB>The ISO bandwidth in Mbps.</BLURB>
+<DEFAULT>DC1394 ISO speed 400</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDC1394Src::unit</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= G_MAXULONG</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Camera unit</NICK>
+<BLURB>The unit number of the camera (-1 if no unit number is used).</BLURB>
+<DEFAULT>-1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTimeCodeWait::target-timecode</NAME>
+<TYPE>GstVideoTimeCode*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Target timecode (object)</NICK>
+<BLURB>Timecode to wait for (object).</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTimeCodeWait::target-timecode-string</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Target timecode (string)</NICK>
+<BLURB>Timecode to wait for (string). Must take the form 00:00:00:00.</BLURB>
+<DEFAULT>"00:00:00:00"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTimeCodeStamper::daily-jam</NAME>
+<TYPE>GDateTime*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Daily jam</NICK>
+<BLURB>The daily jam of the timecode.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTimeCodeStamper::drop-frame</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Override existing timecode</NICK>
+<BLURB>Use drop-frame timecodes for 29.97 and 59.94 FPS.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTimeCodeStamper::override-existing</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Override existing timecode</NICK>
+<BLURB>If set to true, any existing timecode will be overridden.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstTimeCodeStamper::source-clock</NAME>
+<TYPE>GstClock*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Source clock to use for first timecode</NICK>
+<BLURB>If unset, the timecode will refer to the stream time.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstRawVideoParse::format</NAME>
+<TYPE>GstVideoFormat</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Format</NICK>
+<BLURB>Format of frames in raw stream.</BLURB>
+<DEFAULT>GST_VIDEO_FORMAT_I420</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstRawVideoParse::frame-stride</NAME>
+<TYPE>guint</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Frame stride</NICK>
+<BLURB>Stride between whole frames (0 = frames are tightly packed together).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstRawVideoParse::framerate</NAME>
+<TYPE>GstFraction</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Frame rate</NICK>
+<BLURB>Rate of frames in raw stream.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstRawVideoParse::height</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= 0</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Height</NICK>
+<BLURB>Height of frames in raw stream.</BLURB>
+<DEFAULT>240</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstRawVideoParse::interlaced</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Interlaced flag</NICK>
+<BLURB>True if frames in raw stream are interlaced.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstRawVideoParse::pixel-aspect-ratio</NAME>
+<TYPE>GstFraction</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Pixel aspect ratio</NICK>
+<BLURB>Pixel aspect ratio of frames in raw stream.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstRawVideoParse::plane-offsets</NAME>
+<TYPE>GValueArray*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Plane offsets</NICK>
+<BLURB>Offsets of the planets in bytes.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstRawVideoParse::plane-strides</NAME>
+<TYPE>GValueArray*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Plane strides</NICK>
+<BLURB>Strides of the planets in bytes.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstRawVideoParse::top-field-first</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Top field first</NICK>
+<BLURB>True if top field in frames in raw stream come first (not used if frames aren't interlaced).</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstRawVideoParse::width</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= 0</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Width</NICK>
+<BLURB>Width of frames in raw stream.</BLURB>
+<DEFAULT>320</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstRawAudioParse::channel-positions</NAME>
+<TYPE>GValueArray*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Channel positions</NICK>
+<BLURB>Channel positions used on the output.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstRawAudioParse::format</NAME>
+<TYPE>GstRawAudioParseFormat</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Format</NICK>
+<BLURB>Format of the raw audio stream.</BLURB>
+<DEFAULT>PCM</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstRawAudioParse::interleaved</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Interleaved layout</NICK>
+<BLURB>True if audio has interleaved layout.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstRawAudioParse::num-channels</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= 1</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Number of channels</NICK>
+<BLURB>Number of channels in raw stream.</BLURB>
+<DEFAULT>2</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstRawAudioParse::pcm-format</NAME>
+<TYPE>GstAudioFormat</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>PCM format</NICK>
+<BLURB>Format of audio samples in PCM stream (ignored if format property is not set to pcm).</BLURB>
+<DEFAULT>GST_AUDIO_FORMAT_UNKNOWN</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstRawAudioParse::sample-rate</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= 1</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Sample rate</NICK>
+<BLURB>Rate of audio samples in raw stream.</BLURB>
+<DEFAULT>44100</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstQtSrc::use-default-fbo</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>If use default fbo</NICK>
+<BLURB>When set TRUE, it will not create new fbo for qml render thread.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstQtSrc::window</NAME>
+<TYPE>gpointer</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>QQuickWindow</NICK>
+<BLURB>The QQuickWindow to place in the object heirachy.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstFdkAacEnc::bitrate</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= 0</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Bitrate</NICK>
+<BLURB>Target Audio Bitrate (0 = fixed value based on  sample rate and channel count).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
diff --git a/docs/plugins/gst-plugins-bad-plugins.hierarchy b/docs/plugins/gst-plugins-bad-plugins.hierarchy
index c961f7f..2a879f1 100644
--- a/docs/plugins/gst-plugins-bad-plugins.hierarchy
+++ b/docs/plugins/gst-plugins-bad-plugins.hierarchy
@@ -36,12 +36,14 @@
           ADPCMDec
           GstDtsDec
           GstFaad
+          GstFdkAacDec
           GstGSMDec
           GstSbcDec
           GstSirenDec
         GstAudioEncoder
           ADPCMEnc
           GstFaac
+          GstFdkAacEnc
           GstGSMEnc
           GstSbcEnc
           GstSirenEnc
@@ -60,11 +62,15 @@
           GstH265Parse
           GstIRTSPParse
           GstIvfParse
+          GstJPEG2000Parse
           GstJpegParse
           GstMpeg4VParse
           GstMpegvParse
           GstOpusParse
           GstPngParse
+          GstRawBaseParse
+            GstRawAudioParse
+            GstRawVideoParse
           GstVC1Parse
         GstBaseSink
           GstAudioBaseSink
@@ -108,11 +114,13 @@
             GstAudioBaseSrc
               GstAudioSrc
                 GstOpenalSrc
+            GstDC1394Src
             GstDecklinkAudioSrc
             GstDecklinkVideoSrc
             GstDvbSrc
             GstGLTestSrc
             GstMMS
+            GstQtSrc
             GstRTMPSrc
             GstRfbSrc
             GstShmSrc
@@ -136,6 +144,8 @@
               ladspa-sine-so-sine-fcaa
             GstOFA
             GstStereo
+            GstWebrtcDsp
+            GstWebrtcEchoProbe
           GstBayer2RGB
           GstDebugSpy
           GstDtmfDetect
@@ -179,6 +189,7 @@
           GstIvtc
           GstRGB2Bayer
           GstRemoveSilence
+          GstTimeCodeStamper
           GstVideoFilter
             GstBurn
             GstChromaHold
@@ -222,7 +233,6 @@
               GstHanddetect
               GstMotioncells
               GstOpencvTextOverlay
-              GstPyramidSegment
               GstSkinDetect
               GstTemplateMatch
             GstRetinex
@@ -246,6 +256,7 @@
             GstDashDemux
             GstHLSDemux
             GstMssDemux
+          GstAudioParse
           GstAutoConvert
           GstAutoVideoConvert
           GstBaseCameraSrc
@@ -265,6 +276,10 @@
           GstPipeline
             GstCameraBin
           GstSDPDemux
+          GstSdpSrc
+          GstUnalignedAudioParse
+          GstUnalignedVideoParse
+          GstVideoParse
           GstViewfinderBin
           RsnDvdBin
         GstBz2dec
@@ -300,14 +315,12 @@
         GstMpeg2enc
         GstMpegPSDemux
         GstMplex
+        GstMusepackDec
         GstNetSim
         GstPcapParse
         GstPitch
         GstRTPBasePayload
           GstRtpAsfPay
-        GstRawParse
-          GstAudioParse
-          GstVideoParse
         GstRtpOnvifParse
         GstRtpOnvifTimestamp
         GstSFDec
@@ -322,6 +335,7 @@
         GstTagMux
           GstId3Mux
         GstTeletextDec
+        GstTimeCodeWait
         GstUvcH264MjpgDemux
         GstVideoDecoder
           GstLibde265Dec
diff --git a/docs/plugins/gst-plugins-bad-plugins.interfaces b/docs/plugins/gst-plugins-bad-plugins.interfaces
index d8aedb8..53b47ca 100644
--- a/docs/plugins/gst-plugins-bad-plugins.interfaces
+++ b/docs/plugins/gst-plugins-bad-plugins.interfaces
@@ -8,6 +8,7 @@
 GstAudioEncoder GstPreset
 GstAudioInterleave GstChildProxy
 GstAudioMixer GstChildProxy
+GstAudioParse GstChildProxy
 GstAutoConvert GstChildProxy
 GstAutoVideoConvert GstChildProxy
 GstBaseCameraSrc GstChildProxy
@@ -32,6 +33,7 @@
 GstFPSDisplaySink GstChildProxy
 GstFaac GstPreset
 GstFaceOverlay GstChildProxy
+GstFdkAacEnc GstPreset
 GstFreeverb GstPreset
 GstGLBaseMixer GstChildProxy
 GstGLColorBalance GstColorBalance
@@ -78,14 +80,18 @@
 GstSDPDemux GstChildProxy
 GstSbcEnc GstPreset
 GstSchroEnc GstPreset
+GstSdpSrc GstChildProxy GstURIHandler
 GstSirenEnc GstPreset
 GstTagMux GstTagSetter
+GstUnalignedAudioParse GstChildProxy
+GstUnalignedVideoParse GstChildProxy
 GstUvcH264Src GstChildProxy
 GstVCDSrc GstURIHandler
 GstVP8Enc GstPreset GstTagSetter
 GstVP8Enc GstTagSetter GstPreset
 GstVideoAggregator GstChildProxy
 GstVideoEncoder GstPreset
+GstVideoParse GstChildProxy
 GstViewfinderBin GstChildProxy
 GstVoAacEnc GstPreset
 GstVoAmrWbEnc GstPreset
diff --git a/docs/plugins/html/ch01.html b/docs/plugins/html/ch01.html
index db8e432..1c001f7 100644
--- a/docs/plugins/html/ch01.html
+++ b/docs/plugins/html/ch01.html
@@ -42,6 +42,9 @@
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-audiomixer.html">audiomixer</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-audioparse.html">audioparse</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-autoconvert.html">autoconvert</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
@@ -99,7 +102,7 @@
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-dodge.html">dodge</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-dtmfdetect.html">dtmfdetect</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-dtmfdetect.html">dtmfdetect</a></span><span class="refpurpose"> — Detects DTMF tones</span>
 </dt>
 <dt>
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-dtsdec.html">dtsdec</a></span><span class="refpurpose"></span>
@@ -141,6 +144,144 @@
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-gaussianblur.html">gaussianblur</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glcolorbalance.html">glcolorbalance</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glcolorconvert.html">glcolorconvert</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glcolorscale.html">glcolorscale</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gldeinterlace.html">gldeinterlace</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gldifferencematte.html">gldifferencematte</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gldownload.html">gldownload</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-blur.html">gleffects_blur</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-bulge.html">gleffects_bulge</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-fisheye.html">gleffects_fisheye</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-glow.html">gleffects_glow</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-heat.html">gleffects_heat</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-identity.html">gleffects_identity</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-laplacian.html">gleffects_laplacian</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-lumaxpro.html">gleffects_lumaxpro</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-mirror.html">gleffects_mirror</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-sepia.html">gleffects_sepia</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-sin.html">gleffects_sin</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-sobel.html">gleffects_sobel</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-square.html">gleffects_square</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-squeeze.html">gleffects_squeeze</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-stretch.html">gleffects_stretch</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-tunnel.html">gleffects_tunnel</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-twirl.html">gleffects_twirl</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects.html">gleffects</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-xpro.html">gleffects_xpro</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-xray.html">gleffects_xray</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glfilterapp.html">glfilterapp</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glfilterbin.html">glfilterbin</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glfiltercube.html">glfiltercube</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glfilterglass.html">glfilterglass</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glimagesinkelement.html">glimagesinkelement</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glimagesink.html">glimagesink</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glmixerbin.html">glmixerbin</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glmosaic.html">glmosaic</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gloverlay.html">gloverlay</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glshader.html">glshader</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glsinkbin.html">glsinkbin</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glsrcbin.html">glsrcbin</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glstereomix.html">glstereomix</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glstereosplit.html">glstereosplit</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gltestsrc.html">gltestsrc</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gltransformation.html">gltransformation</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glupload.html">glupload</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glvideomixerelement.html">glvideomixerelement</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glvideomixer.html">glvideomixer</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glviewconvert.html">glviewconvert</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-jpegparse.html">jpegparse</a></span><span class="refpurpose"> — JPEG parser</span>
 </dt>
 <dt>
@@ -183,10 +324,10 @@
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-ofa.html">ofa</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-openalsrc.html">openalsrc</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-openalsrc.html">openalsrc</a></span><span class="refpurpose"> — capture raw audio samples through OpenAL</span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-openalsink.html">openalsink</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-openalsink.html">openalsink</a></span><span class="refpurpose"> — capture raw audio samples through OpenAL</span>
 </dt>
 <dt>
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-pcapparse.html">pcapparse</a></span><span class="refpurpose"></span>
@@ -195,7 +336,10 @@
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-pinch.html">pinch</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-pyramidsegment.html">pyramidsegment</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-rawaudioparse.html">rawaudioparse</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-rawvideoparse.html">rawvideoparse</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-rfbsrc.html">rfbsrc</a></span><span class="refpurpose"></span>
@@ -252,6 +396,12 @@
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-twirl.html">twirl</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-unalignedaudioparse.html">unalignedaudioparse</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-unalignedvideoparse.html">unalignedvideoparse</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-videoparse.html">videoparse</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
@@ -269,6 +419,12 @@
 <dt>
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-wavescope.html">wavescope</a></span><span class="refpurpose"></span>
 </dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-webrtcdsp.html">webrtcdsp</a></span><span class="refpurpose"> — Audio Filter using WebRTC Audio Processing library</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-webrtcechoprobe.html">webrtcechoprobe</a></span><span class="refpurpose"></span>
+</dt>
 </dl></div>
 </div>
 <div class="footer">
diff --git a/docs/plugins/html/ch02.html b/docs/plugins/html/ch02.html
index e4a6f00..276d2eb 100644
--- a/docs/plugins/html/ch02.html
+++ b/docs/plugins/html/ch02.html
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
-<link rel="prev" href="gst-plugins-bad-plugins-wavescope.html" title="wavescope">
+<link rel="prev" href="gst-plugins-bad-plugins-webrtcechoprobe.html" title="webrtcechoprobe">
 <link rel="next" href="gst-plugins-bad-plugins-plugin-aiff.html" title="aiff">
 <meta name="generator" content="GTK-Doc V1.25 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
@@ -16,7 +16,7 @@
 <td width="100%" align="left" class="shortcuts"></td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
-<td><a accesskey="p" href="gst-plugins-bad-plugins-wavescope.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-webrtcechoprobe.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="gst-plugins-bad-plugins-plugin-aiff.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="chapter">
@@ -123,6 +123,9 @@
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-openal.html">openal</a></span><span class="refpurpose"> — OpenAL plugin library</span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-opengl.html">opengl</a></span><span class="refpurpose"> — OpenGL plugin</span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-opencv.html">opencv</a></span><span class="refpurpose"> — GStreamer OpenCV Plugins</span>
 </dt>
 <dt>
@@ -156,6 +159,9 @@
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-voamrwbenc.html">voamrwbenc</a></span><span class="refpurpose"> — Adaptive Multi-Rate Wide-Band Encoder</span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-webrtcdsp.html">webrtcdsp</a></span><span class="refpurpose"> — Voice pre-processing using WebRTC Audio Processing Library</span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-zbar.html">zbar</a></span><span class="refpurpose"> — zbar barcode scanner</span>
 </dt>
 </dl></div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-1.0.devhelp2 b/docs/plugins/html/gst-plugins-bad-plugins-1.0.devhelp2
index 3db072a..0741f2b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-1.0.devhelp2
+++ b/docs/plugins/html/gst-plugins-bad-plugins-1.0.devhelp2
@@ -8,6 +8,7 @@
       <sub name="assrender" link="gst-plugins-bad-plugins-assrender.html"/>
       <sub name="audiointerleave" link="gst-plugins-bad-plugins-audiointerleave.html"/>
       <sub name="audiomixer" link="gst-plugins-bad-plugins-audiomixer.html"/>
+      <sub name="audioparse" link="gst-plugins-bad-plugins-audioparse.html"/>
       <sub name="autoconvert" link="gst-plugins-bad-plugins-autoconvert.html"/>
       <sub name="bs2b" link="gst-plugins-bad-plugins-bs2b.html"/>
       <sub name="bulge" link="gst-plugins-bad-plugins-bulge.html"/>
@@ -41,6 +42,52 @@
       <sub name="fisheye" link="gst-plugins-bad-plugins-fisheye.html"/>
       <sub name="fpsdisplaysink" link="gst-plugins-bad-plugins-fpsdisplaysink.html"/>
       <sub name="gaussianblur" link="gst-plugins-bad-plugins-gaussianblur.html"/>
+      <sub name="glcolorbalance" link="gst-plugins-bad-plugins-glcolorbalance.html"/>
+      <sub name="glcolorconvert" link="gst-plugins-bad-plugins-glcolorconvert.html"/>
+      <sub name="glcolorscale" link="gst-plugins-bad-plugins-glcolorscale.html"/>
+      <sub name="gldeinterlace" link="gst-plugins-bad-plugins-gldeinterlace.html"/>
+      <sub name="gldifferencematte" link="gst-plugins-bad-plugins-gldifferencematte.html"/>
+      <sub name="gldownload" link="gst-plugins-bad-plugins-gldownload.html"/>
+      <sub name="gleffects_blur" link="gst-plugins-bad-plugins-gleffects-blur.html"/>
+      <sub name="gleffects_bulge" link="gst-plugins-bad-plugins-gleffects-bulge.html"/>
+      <sub name="gleffects_fisheye" link="gst-plugins-bad-plugins-gleffects-fisheye.html"/>
+      <sub name="gleffects_glow" link="gst-plugins-bad-plugins-gleffects-glow.html"/>
+      <sub name="gleffects_heat" link="gst-plugins-bad-plugins-gleffects-heat.html"/>
+      <sub name="gleffects_identity" link="gst-plugins-bad-plugins-gleffects-identity.html"/>
+      <sub name="gleffects_laplacian" link="gst-plugins-bad-plugins-gleffects-laplacian.html"/>
+      <sub name="gleffects_lumaxpro" link="gst-plugins-bad-plugins-gleffects-lumaxpro.html"/>
+      <sub name="gleffects_mirror" link="gst-plugins-bad-plugins-gleffects-mirror.html"/>
+      <sub name="gleffects_sepia" link="gst-plugins-bad-plugins-gleffects-sepia.html"/>
+      <sub name="gleffects_sin" link="gst-plugins-bad-plugins-gleffects-sin.html"/>
+      <sub name="gleffects_sobel" link="gst-plugins-bad-plugins-gleffects-sobel.html"/>
+      <sub name="gleffects_square" link="gst-plugins-bad-plugins-gleffects-square.html"/>
+      <sub name="gleffects_squeeze" link="gst-plugins-bad-plugins-gleffects-squeeze.html"/>
+      <sub name="gleffects_stretch" link="gst-plugins-bad-plugins-gleffects-stretch.html"/>
+      <sub name="gleffects_tunnel" link="gst-plugins-bad-plugins-gleffects-tunnel.html"/>
+      <sub name="gleffects_twirl" link="gst-plugins-bad-plugins-gleffects-twirl.html"/>
+      <sub name="gleffects" link="gst-plugins-bad-plugins-gleffects.html"/>
+      <sub name="gleffects_xpro" link="gst-plugins-bad-plugins-gleffects-xpro.html"/>
+      <sub name="gleffects_xray" link="gst-plugins-bad-plugins-gleffects-xray.html"/>
+      <sub name="glfilterapp" link="gst-plugins-bad-plugins-glfilterapp.html"/>
+      <sub name="glfilterbin" link="gst-plugins-bad-plugins-glfilterbin.html"/>
+      <sub name="glfiltercube" link="gst-plugins-bad-plugins-glfiltercube.html"/>
+      <sub name="glfilterglass" link="gst-plugins-bad-plugins-glfilterglass.html"/>
+      <sub name="glimagesinkelement" link="gst-plugins-bad-plugins-glimagesinkelement.html"/>
+      <sub name="glimagesink" link="gst-plugins-bad-plugins-glimagesink.html"/>
+      <sub name="glmixerbin" link="gst-plugins-bad-plugins-glmixerbin.html"/>
+      <sub name="glmosaic" link="gst-plugins-bad-plugins-glmosaic.html"/>
+      <sub name="gloverlay" link="gst-plugins-bad-plugins-gloverlay.html"/>
+      <sub name="glshader" link="gst-plugins-bad-plugins-glshader.html"/>
+      <sub name="glsinkbin" link="gst-plugins-bad-plugins-glsinkbin.html"/>
+      <sub name="glsrcbin" link="gst-plugins-bad-plugins-glsrcbin.html"/>
+      <sub name="glstereomix" link="gst-plugins-bad-plugins-glstereomix.html"/>
+      <sub name="glstereosplit" link="gst-plugins-bad-plugins-glstereosplit.html"/>
+      <sub name="gltestsrc" link="gst-plugins-bad-plugins-gltestsrc.html"/>
+      <sub name="gltransformation" link="gst-plugins-bad-plugins-gltransformation.html"/>
+      <sub name="glupload" link="gst-plugins-bad-plugins-glupload.html"/>
+      <sub name="glvideomixerelement" link="gst-plugins-bad-plugins-glvideomixerelement.html"/>
+      <sub name="glvideomixer" link="gst-plugins-bad-plugins-glvideomixer.html"/>
+      <sub name="glviewconvert" link="gst-plugins-bad-plugins-glviewconvert.html"/>
       <sub name="jpegparse" link="gst-plugins-bad-plugins-jpegparse.html"/>
       <sub name="kaleidoscope" link="gst-plugins-bad-plugins-kaleidoscope.html"/>
       <sub name="liveadder" link="gst-plugins-bad-plugins-liveadder.html"/>
@@ -59,7 +106,8 @@
       <sub name="openalsink" link="gst-plugins-bad-plugins-openalsink.html"/>
       <sub name="pcapparse" link="gst-plugins-bad-plugins-pcapparse.html"/>
       <sub name="pinch" link="gst-plugins-bad-plugins-pinch.html"/>
-      <sub name="pyramidsegment" link="gst-plugins-bad-plugins-pyramidsegment.html"/>
+      <sub name="rawaudioparse" link="gst-plugins-bad-plugins-rawaudioparse.html"/>
+      <sub name="rawvideoparse" link="gst-plugins-bad-plugins-rawvideoparse.html"/>
       <sub name="rfbsrc" link="gst-plugins-bad-plugins-rfbsrc.html"/>
       <sub name="rtmpsink" link="gst-plugins-bad-plugins-rtmpsink.html"/>
       <sub name="rtmpsrc" link="gst-plugins-bad-plugins-rtmpsrc.html"/>
@@ -78,12 +126,16 @@
       <sub name="opencvtextoverlay" link="gst-plugins-bad-plugins-opencvtextoverlay.html"/>
       <sub name="tunnel" link="gst-plugins-bad-plugins-tunnel.html"/>
       <sub name="twirl" link="gst-plugins-bad-plugins-twirl.html"/>
+      <sub name="unalignedaudioparse" link="gst-plugins-bad-plugins-unalignedaudioparse.html"/>
+      <sub name="unalignedvideoparse" link="gst-plugins-bad-plugins-unalignedvideoparse.html"/>
       <sub name="videoparse" link="gst-plugins-bad-plugins-videoparse.html"/>
       <sub name="waterripple" link="gst-plugins-bad-plugins-waterripple.html"/>
       <sub name="zbar" link="gst-plugins-bad-plugins-zbar.html"/>
       <sub name="voaacenc" link="gst-plugins-bad-plugins-voaacenc.html"/>
       <sub name="voamrwbenc" link="gst-plugins-bad-plugins-voamrwbenc.html"/>
       <sub name="wavescope" link="gst-plugins-bad-plugins-wavescope.html"/>
+      <sub name="webrtcdsp" link="gst-plugins-bad-plugins-webrtcdsp.html"/>
+      <sub name="webrtcechoprobe" link="gst-plugins-bad-plugins-webrtcechoprobe.html"/>
     </sub>
     <sub name="gst-plugins-bad Plugins" link="ch02.html">
       <sub name="aiff" link="gst-plugins-bad-plugins-plugin-aiff.html"/>
@@ -119,6 +171,7 @@
       <sub name="neon" link="gst-plugins-bad-plugins-plugin-neon.html"/>
       <sub name="ofa" link="gst-plugins-bad-plugins-plugin-ofa.html"/>
       <sub name="openal" link="gst-plugins-bad-plugins-plugin-openal.html"/>
+      <sub name="opengl" link="gst-plugins-bad-plugins-plugin-opengl.html"/>
       <sub name="opencv" link="gst-plugins-bad-plugins-plugin-opencv.html"/>
       <sub name="pcapparse" link="gst-plugins-bad-plugins-plugin-pcapparse.html"/>
       <sub name="rawparse" link="gst-plugins-bad-plugins-plugin-rawparse.html"/>
@@ -130,6 +183,7 @@
       <sub name="speed" link="gst-plugins-bad-plugins-plugin-speed.html"/>
       <sub name="voaacenc" link="gst-plugins-bad-plugins-plugin-voaacenc.html"/>
       <sub name="voamrwbenc" link="gst-plugins-bad-plugins-plugin-voamrwbenc.html"/>
+      <sub name="webrtcdsp" link="gst-plugins-bad-plugins-plugin-webrtcdsp.html"/>
       <sub name="zbar" link="gst-plugins-bad-plugins-plugin-zbar.html"/>
     </sub>
   </chapters>
@@ -152,6 +206,18 @@
     <keyword type="property" name="The “discont-wait” property" link="gst-plugins-bad-plugins-audiomixer.html#GstAudioMixer--discont-wait"/>
     <keyword type="property" name="The “blocksize” property" link="gst-plugins-bad-plugins-audiomixer.html#GstAudioMixer--blocksize"/>
     <keyword type="property" name="The “output-buffer-duration” property" link="gst-plugins-bad-plugins-audiomixer.html#GstAudioMixer--output-buffer-duration"/>
+    <keyword type="struct" name="struct GstAudioParse" link="gst-plugins-bad-plugins-audioparse.html#GstAudioParse-struct"/>
+    <keyword type="property" name="The “channels” property" link="gst-plugins-bad-plugins-audioparse.html#GstAudioParse--channels"/>
+    <keyword type="property" name="The “depth” property" link="gst-plugins-bad-plugins-audioparse.html#GstAudioParse--depth"/>
+    <keyword type="property" name="The “endianness” property" link="gst-plugins-bad-plugins-audioparse.html#GstAudioParse--endianness"/>
+    <keyword type="property" name="The “format” property" link="gst-plugins-bad-plugins-audioparse.html#GstAudioParse--format"/>
+    <keyword type="property" name="The “rate” property" link="gst-plugins-bad-plugins-audioparse.html#GstAudioParse--rate"/>
+    <keyword type="property" name="The “signed” property" link="gst-plugins-bad-plugins-audioparse.html#GstAudioParse--signed"/>
+    <keyword type="property" name="The “width” property" link="gst-plugins-bad-plugins-audioparse.html#GstAudioParse--width"/>
+    <keyword type="property" name="The “channel-positions” property" link="gst-plugins-bad-plugins-audioparse.html#GstAudioParse--channel-positions"/>
+    <keyword type="property" name="The “interleaved” property" link="gst-plugins-bad-plugins-audioparse.html#GstAudioParse--interleaved"/>
+    <keyword type="property" name="The “raw-format” property" link="gst-plugins-bad-plugins-audioparse.html#GstAudioParse--raw-format"/>
+    <keyword type="property" name="The “use-sink-caps” property" link="gst-plugins-bad-plugins-audioparse.html#GstAudioParse--use-sink-caps"/>
     <keyword type="struct" name="struct GstAutoConvert" link="gst-plugins-bad-plugins-autoconvert.html#GstAutoConvert-struct"/>
     <keyword type="property" name="The “factories” property" link="gst-plugins-bad-plugins-autoconvert.html#GstAutoConvert--factories"/>
     <keyword type="property" name="The “initial-identity” property" link="gst-plugins-bad-plugins-autoconvert.html#GstAutoConvert--initial-identity"/>
@@ -163,6 +229,7 @@
     <keyword type="struct" name="struct GstBurn" link="gst-plugins-bad-plugins-burn.html#GstBurn-struct"/>
     <keyword type="property" name="The “silent” property" link="gst-plugins-bad-plugins-burn.html#GstBurn--silent"/>
     <keyword type="property" name="The “adjustment” property" link="gst-plugins-bad-plugins-burn.html#GstBurn--adjustment"/>
+    <keyword type="struct" name="struct GstChromium" link="gst-plugins-bad-plugins-chromium.html#GstChromium-struct"/>
     <keyword type="property" name="The “silent” property" link="gst-plugins-bad-plugins-chromium.html#GstChromium--silent"/>
     <keyword type="property" name="The “edge-a” property" link="gst-plugins-bad-plugins-chromium.html#GstChromium--edge-a"/>
     <keyword type="property" name="The “edge-b” property" link="gst-plugins-bad-plugins-chromium.html#GstChromium--edge-b"/>
@@ -171,7 +238,10 @@
     <keyword type="property" name="The “height” property" link="gst-plugins-bad-plugins-circle.html#GstCircle--height"/>
     <keyword type="property" name="The “spread-angle” property" link="gst-plugins-bad-plugins-circle.html#GstCircle--spread-angle"/>
     <keyword type="struct" name="struct GstColorEffects" link="gst-plugins-bad-plugins-coloreffects.html#GstColorEffects-struct"/>
+    <keyword type="enum" name="enum GstColorEffectsPreset" link="gst-plugins-bad-plugins-coloreffects.html#GstColorEffectsPreset"/>
     <keyword type="property" name="The “preset” property" link="gst-plugins-bad-plugins-coloreffects.html#GstColorEffects--preset"/>
+    <keyword type="struct" name="struct GstCompositor" link="gst-plugins-bad-plugins-compositor.html#GstCompositor-struct"/>
+    <keyword type="enum" name="enum GstCompositorBackground" link="gst-plugins-bad-plugins-compositor.html#GstCompositorBackground"/>
     <keyword type="property" name="The “background” property" link="gst-plugins-bad-plugins-compositor.html#GstCompositor--background"/>
     <keyword type="struct" name="struct GstCvDilate" link="gst-plugins-bad-plugins-cvdilate.html#GstCvDilate-struct"/>
     <keyword type="struct" name="struct GstCvErode" link="gst-plugins-bad-plugins-cverode.html#GstCvErode-struct"/>
@@ -269,6 +339,11 @@
     <keyword type="struct" name="struct GstExclusion" link="gst-plugins-bad-plugins-exclusion.html#GstExclusion-struct"/>
     <keyword type="property" name="The “silent” property" link="gst-plugins-bad-plugins-exclusion.html#GstExclusion--silent"/>
     <keyword type="property" name="The “factor” property" link="gst-plugins-bad-plugins-exclusion.html#GstExclusion--factor"/>
+    <keyword type="struct" name="struct GstEdgeDetect" link="gst-plugins-bad-plugins-edgedetect.html#GstEdgeDetect-struct"/>
+    <keyword type="property" name="The “aperture” property" link="gst-plugins-bad-plugins-edgedetect.html#GstEdgeDetect--aperture"/>
+    <keyword type="property" name="The “mask” property" link="gst-plugins-bad-plugins-edgedetect.html#GstEdgeDetect--mask"/>
+    <keyword type="property" name="The “threshold1” property" link="gst-plugins-bad-plugins-edgedetect.html#GstEdgeDetect--threshold1"/>
+    <keyword type="property" name="The “threshold2” property" link="gst-plugins-bad-plugins-edgedetect.html#GstEdgeDetect--threshold2"/>
     <keyword type="struct" name="struct GstFaac" link="gst-plugins-bad-plugins-faac.html#GstFaac-struct"/>
     <keyword type="property" name="The “bitrate” property" link="gst-plugins-bad-plugins-faac.html#GstFaac--bitrate"/>
     <keyword type="property" name="The “midside” property" link="gst-plugins-bad-plugins-faac.html#GstFaac--midside"/>
@@ -279,6 +354,27 @@
     <keyword type="property" name="The “quality” property" link="gst-plugins-bad-plugins-faac.html#GstFaac--quality"/>
     <keyword type="property" name="The “rate-control” property" link="gst-plugins-bad-plugins-faac.html#GstFaac--rate-control"/>
     <keyword type="struct" name="GstFaad" link="gst-plugins-bad-plugins-faad.html#GstFaad-struct"/>
+    <keyword type="struct" name="struct GstFaceBlur" link="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur-struct"/>
+    <keyword type="property" name="The “profile” property" link="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur--profile"/>
+    <keyword type="property" name="The “flags” property" link="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur--flags"/>
+    <keyword type="property" name="The “min-neighbors” property" link="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur--min-neighbors"/>
+    <keyword type="property" name="The “min-size-height” property" link="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur--min-size-height"/>
+    <keyword type="property" name="The “min-size-width” property" link="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur--min-size-width"/>
+    <keyword type="property" name="The “scale-factor” property" link="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur--scale-factor"/>
+    <keyword type="struct" name="struct GstFaceDetect" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect-struct"/>
+    <keyword type="enum" name="enum GstFaceDetectUpdates" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetectUpdates"/>
+    <keyword type="property" name="The “display” property" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--display"/>
+    <keyword type="property" name="The “eyes-profile” property" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--eyes-profile"/>
+    <keyword type="property" name="The “flags” property" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--flags"/>
+    <keyword type="property" name="The “min-neighbors” property" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--min-neighbors"/>
+    <keyword type="property" name="The “min-size-height” property" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--min-size-height"/>
+    <keyword type="property" name="The “min-size-width” property" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--min-size-width"/>
+    <keyword type="property" name="The “mouth-profile” property" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--mouth-profile"/>
+    <keyword type="property" name="The “nose-profile” property" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--nose-profile"/>
+    <keyword type="property" name="The “profile” property" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--profile"/>
+    <keyword type="property" name="The “scale-factor” property" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--scale-factor"/>
+    <keyword type="property" name="The “updates” property" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--updates"/>
+    <keyword type="property" name="The “min-stddev” property" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--min-stddev"/>
     <keyword type="struct" name="struct GstFestival" link="gst-plugins-bad-plugins-festival.html#GstFestival-struct"/>
     <keyword type="struct" name="struct GstFisheye" link="gst-plugins-bad-plugins-fisheye.html#GstFisheye-struct"/>
     <keyword type="struct" name="struct GstFPSDisplaySink" link="gst-plugins-bad-plugins-fpsdisplaysink.html#GstFPSDisplaySink-struct"/>
@@ -294,14 +390,134 @@
     <keyword type="property" name="The “last-message” property" link="gst-plugins-bad-plugins-fpsdisplaysink.html#GstFPSDisplaySink--last-message"/>
     <keyword type="property" name="The “silent” property" link="gst-plugins-bad-plugins-fpsdisplaysink.html#GstFPSDisplaySink--silent"/>
     <keyword type="signal" name="The “fps-measurements” signal" link="gst-plugins-bad-plugins-fpsdisplaysink.html#GstFPSDisplaySink-fps-measurements"/>
-    <keyword type="macro" name="GST_JPEG_PARSE()" link="gst-plugins-bad-plugins-jpegparse.html#GST-JPEG-PARSE:CAPS"/>
-    <keyword type="macro" name="GST_JPEG_PARSE_CLASS()" link="gst-plugins-bad-plugins-jpegparse.html#GST-JPEG-PARSE-CLASS:CAPS"/>
-    <keyword type="macro" name="GST_IS_JPEG_PARSE()" link="gst-plugins-bad-plugins-jpegparse.html#GST-IS-JPEG-PARSE:CAPS"/>
-    <keyword type="macro" name="GST_IS_JPEG_PARSE_CLASS()" link="gst-plugins-bad-plugins-jpegparse.html#GST-IS-JPEG-PARSE-CLASS:CAPS"/>
-    <keyword type="function" name="gst_jpeg_parse_get_type ()" link="gst-plugins-bad-plugins-jpegparse.html#gst-jpeg-parse-get-type"/>
+    <keyword type="struct" name="struct GstGaussianBlur" link="gst-plugins-bad-plugins-gaussianblur.html#GstGaussianBlur-struct"/>
+    <keyword type="property" name="The “sigma” property" link="gst-plugins-bad-plugins-gaussianblur.html#GstGaussianBlur--sigma"/>
+    <keyword type="struct" name="struct GstGLColorBalance" link="gst-plugins-bad-plugins-glcolorbalance.html#GstGLColorBalance-struct"/>
+    <keyword type="property" name="The “brightness” property" link="gst-plugins-bad-plugins-glcolorbalance.html#GstGLColorBalance--brightness"/>
+    <keyword type="property" name="The “contrast” property" link="gst-plugins-bad-plugins-glcolorbalance.html#GstGLColorBalance--contrast"/>
+    <keyword type="property" name="The “hue” property" link="gst-plugins-bad-plugins-glcolorbalance.html#GstGLColorBalance--hue"/>
+    <keyword type="property" name="The “saturation” property" link="gst-plugins-bad-plugins-glcolorbalance.html#GstGLColorBalance--saturation"/>
+    <keyword type="struct" name="struct GstGLColorConvertElement" link="gst-plugins-bad-plugins-glcolorconvert.html#GstGLColorConvertElement-struct"/>
+    <keyword type="struct" name="struct GstGLColorscale" link="gst-plugins-bad-plugins-glcolorscale.html#GstGLColorscale-struct"/>
+    <keyword type="struct" name="struct GstGLDeinterlace" link="gst-plugins-bad-plugins-gldeinterlace.html#GstGLDeinterlace-struct"/>
+    <keyword type="property" name="The “method” property" link="gst-plugins-bad-plugins-gldeinterlace.html#GstGLDeinterlace--method"/>
+    <keyword type="struct" name="struct GstGLDifferenceMatte" link="gst-plugins-bad-plugins-gldifferencematte.html#GstGLDifferenceMatte-struct"/>
+    <keyword type="property" name="The “location” property" link="gst-plugins-bad-plugins-gldifferencematte.html#GstGLDifferenceMatte--location"/>
+    <keyword type="struct" name="struct GstGLDownloadElement" link="gst-plugins-bad-plugins-gldownload.html#GstGLDownloadElement-struct"/>
+    <keyword type="struct" name="struct GstGLFilterApp" link="gst-plugins-bad-plugins-glfilterapp.html#GstGLFilterApp-struct"/>
+    <keyword type="property" name="The “client-data” property" link="gst-plugins-bad-plugins-glfilterapp.html#GstGLFilterApp--client-data"/>
+    <keyword type="property" name="The “client-draw-callback” property" link="gst-plugins-bad-plugins-glfilterapp.html#GstGLFilterApp--client-draw-callback"/>
+    <keyword type="property" name="The “client-reshape-callback” property" link="gst-plugins-bad-plugins-glfilterapp.html#GstGLFilterApp--client-reshape-callback"/>
+    <keyword type="signal" name="The “client-draw” signal" link="gst-plugins-bad-plugins-glfilterapp.html#GstGLFilterApp-client-draw"/>
+    <keyword type="struct" name="struct GstGLFilterBin" link="gst-plugins-bad-plugins-glfilterbin.html#GstGLFilterBin-struct"/>
+    <keyword type="property" name="The “filter” property" link="gst-plugins-bad-plugins-glfilterbin.html#GstGLFilterBin--filter"/>
+    <keyword type="signal" name="The “create-element” signal" link="gst-plugins-bad-plugins-glfilterbin.html#GstGLFilterBin-create-element"/>
+    <keyword type="struct" name="struct GstGLFilterCube" link="gst-plugins-bad-plugins-glfiltercube.html#GstGLFilterCube-struct"/>
+    <keyword type="property" name="The “aspect” property" link="gst-plugins-bad-plugins-glfiltercube.html#GstGLFilterCube--aspect"/>
+    <keyword type="property" name="The “blue” property" link="gst-plugins-bad-plugins-glfiltercube.html#GstGLFilterCube--blue"/>
+    <keyword type="property" name="The “fovy” property" link="gst-plugins-bad-plugins-glfiltercube.html#GstGLFilterCube--fovy"/>
+    <keyword type="property" name="The “green” property" link="gst-plugins-bad-plugins-glfiltercube.html#GstGLFilterCube--green"/>
+    <keyword type="property" name="The “red” property" link="gst-plugins-bad-plugins-glfiltercube.html#GstGLFilterCube--red"/>
+    <keyword type="property" name="The “zfar” property" link="gst-plugins-bad-plugins-glfiltercube.html#GstGLFilterCube--zfar"/>
+    <keyword type="property" name="The “znear” property" link="gst-plugins-bad-plugins-glfiltercube.html#GstGLFilterCube--znear"/>
+    <keyword type="struct" name="struct GstGLFilterGlass" link="gst-plugins-bad-plugins-glfilterglass.html#GstGLFilterGlass-struct"/>
+    <keyword type="struct" name="struct GstGLImageSink" link="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink-struct"/>
+    <keyword type="property" name="The “display” property" link="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--display"/>
+    <keyword type="property" name="The “client-data” property" link="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--client-data"/>
+    <keyword type="property" name="The “client-draw-callback” property" link="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--client-draw-callback"/>
+    <keyword type="property" name="The “client-reshape-callback” property" link="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--client-reshape-callback"/>
+    <keyword type="property" name="The “force-aspect-ratio” property" link="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--force-aspect-ratio"/>
+    <keyword type="property" name="The “other-context” property" link="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--other-context"/>
+    <keyword type="property" name="The “pixel-aspect-ratio” property" link="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--pixel-aspect-ratio"/>
+    <keyword type="property" name="The “context” property" link="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--context"/>
+    <keyword type="property" name="The “handle-events” property" link="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--handle-events"/>
+    <keyword type="property" name="The “ignore-alpha” property" link="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--ignore-alpha"/>
+    <keyword type="property" name="The “output-multiview-downmix-mode” property" link="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--output-multiview-downmix-mode"/>
+    <keyword type="property" name="The “output-multiview-flags” property" link="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--output-multiview-flags"/>
+    <keyword type="property" name="The “output-multiview-mode” property" link="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--output-multiview-mode"/>
+    <keyword type="property" name="The “rotate-method” property" link="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--rotate-method"/>
+    <keyword type="signal" name="The “client-draw” signal" link="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink-client-draw"/>
+    <keyword type="signal" name="The “client-reshape” signal" link="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink-client-reshape"/>
+    <keyword type="struct" name="struct GstGLMixerBin" link="gst-plugins-bad-plugins-glmixerbin.html#GstGLMixerBin-struct"/>
+    <keyword type="property" name="The “latency” property" link="gst-plugins-bad-plugins-glmixerbin.html#GstGLMixerBin--latency"/>
+    <keyword type="property" name="The “mixer” property" link="gst-plugins-bad-plugins-glmixerbin.html#GstGLMixerBin--mixer"/>
+    <keyword type="property" name="The “start-time” property" link="gst-plugins-bad-plugins-glmixerbin.html#GstGLMixerBin--start-time"/>
+    <keyword type="property" name="The “start-time-selection” property" link="gst-plugins-bad-plugins-glmixerbin.html#GstGLMixerBin--start-time-selection"/>
+    <keyword type="signal" name="The “create-element” signal" link="gst-plugins-bad-plugins-glmixerbin.html#GstGLMixerBin-create-element"/>
+    <keyword type="struct" name="struct GstGLMosaic" link="gst-plugins-bad-plugins-glmosaic.html#GstGLMosaic-struct"/>
+    <keyword type="struct" name="struct GstGLOverlay" link="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay-struct"/>
+    <keyword type="property" name="The “angle-png” property" link="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--angle-png"/>
+    <keyword type="property" name="The “angle-video” property" link="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--angle-video"/>
+    <keyword type="property" name="The “location” property" link="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--location"/>
+    <keyword type="property" name="The “proportion-png” property" link="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--proportion-png"/>
+    <keyword type="property" name="The “proportion-video” property" link="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--proportion-video"/>
+    <keyword type="property" name="The “ratio-video” property" link="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--ratio-video"/>
+    <keyword type="property" name="The “rotate-png” property" link="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--rotate-png"/>
+    <keyword type="property" name="The “rotate-video” property" link="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--rotate-video"/>
+    <keyword type="property" name="The “video-top” property" link="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--video-top"/>
+    <keyword type="property" name="The “xpos-png” property" link="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--xpos-png"/>
+    <keyword type="property" name="The “xpos-video” property" link="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--xpos-video"/>
+    <keyword type="property" name="The “ypos-png” property" link="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--ypos-png"/>
+    <keyword type="property" name="The “ypos-video” property" link="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--ypos-video"/>
+    <keyword type="property" name="The “alpha” property" link="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--alpha"/>
+    <keyword type="property" name="The “offset-x” property" link="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--offset-x"/>
+    <keyword type="property" name="The “offset-y” property" link="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--offset-y"/>
+    <keyword type="property" name="The “overlay-height” property" link="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--overlay-height"/>
+    <keyword type="property" name="The “overlay-width” property" link="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--overlay-width"/>
+    <keyword type="property" name="The “relative-x” property" link="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--relative-x"/>
+    <keyword type="property" name="The “relative-y” property" link="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--relative-y"/>
+    <keyword type="struct" name="struct GstGLFilterShader" link="gst-plugins-bad-plugins-glshader.html#GstGLFilterShader-struct"/>
+    <keyword type="property" name="The “location” property" link="gst-plugins-bad-plugins-glshader.html#GstGLFilterShader--location"/>
+    <keyword type="property" name="The “preset” property" link="gst-plugins-bad-plugins-glshader.html#GstGLFilterShader--preset"/>
+    <keyword type="property" name="The “vars” property" link="gst-plugins-bad-plugins-glshader.html#GstGLFilterShader--vars"/>
+    <keyword type="property" name="The “fragment” property" link="gst-plugins-bad-plugins-glshader.html#GstGLFilterShader--fragment"/>
+    <keyword type="property" name="The “shader” property" link="gst-plugins-bad-plugins-glshader.html#GstGLFilterShader--shader"/>
+    <keyword type="property" name="The “uniforms” property" link="gst-plugins-bad-plugins-glshader.html#GstGLFilterShader--uniforms"/>
+    <keyword type="property" name="The “update-shader” property" link="gst-plugins-bad-plugins-glshader.html#GstGLFilterShader--update-shader"/>
+    <keyword type="property" name="The “vertex” property" link="gst-plugins-bad-plugins-glshader.html#GstGLFilterShader--vertex"/>
+    <keyword type="signal" name="The “create-shader” signal" link="gst-plugins-bad-plugins-glshader.html#GstGLFilterShader-create-shader"/>
+    <keyword type="struct" name="struct GstGLSinkBin" link="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin-struct"/>
+    <keyword type="property" name="The “force-aspect-ratio” property" link="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--force-aspect-ratio"/>
+    <keyword type="property" name="The “sink” property" link="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--sink"/>
+    <keyword type="property" name="The “async” property" link="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--async"/>
+    <keyword type="property" name="The “blocksize” property" link="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--blocksize"/>
+    <keyword type="property" name="The “enable-last-sample” property" link="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--enable-last-sample"/>
+    <keyword type="property" name="The “last-sample” property" link="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--last-sample"/>
+    <keyword type="property" name="The “max-bitrate” property" link="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--max-bitrate"/>
+    <keyword type="property" name="The “max-lateness” property" link="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--max-lateness"/>
+    <keyword type="property" name="The “qos” property" link="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--qos"/>
+    <keyword type="property" name="The “render-delay” property" link="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--render-delay"/>
+    <keyword type="property" name="The “sync” property" link="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--sync"/>
+    <keyword type="property" name="The “throttle-time” property" link="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--throttle-time"/>
+    <keyword type="property" name="The “ts-offset” property" link="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--ts-offset"/>
+    <keyword type="property" name="The “brightness” property" link="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--brightness"/>
+    <keyword type="property" name="The “contrast” property" link="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--contrast"/>
+    <keyword type="property" name="The “hue” property" link="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--hue"/>
+    <keyword type="property" name="The “saturation” property" link="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--saturation"/>
+    <keyword type="signal" name="The “create-element” signal" link="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin-create-element"/>
+    <keyword type="struct" name="struct GstGLSrcBin" link="gst-plugins-bad-plugins-glsrcbin.html#GstGLSrcBin-struct"/>
+    <keyword type="property" name="The “src” property" link="gst-plugins-bad-plugins-glsrcbin.html#GstGLSrcBin--src"/>
+    <keyword type="signal" name="The “create-element” signal" link="gst-plugins-bad-plugins-glsrcbin.html#GstGLSrcBin-create-element"/>
+    <keyword type="struct" name="struct GstGLStereoMix" link="gst-plugins-bad-plugins-glstereomix.html#GstGLStereoMix-struct"/>
+    <keyword type="property" name="The “downmix-mode” property" link="gst-plugins-bad-plugins-glstereomix.html#GstGLStereoMix--downmix-mode"/>
+    <keyword type="struct" name="struct GstGLStereoSplit" link="gst-plugins-bad-plugins-glstereosplit.html#GstGLStereoSplit-struct"/>
+    <keyword type="struct" name="GstGLTestSrc" link="gst-plugins-bad-plugins-gltestsrc.html#GstGLTestSrc-struct"/>
+    <keyword type="enum" name="enum GstGLTestSrcPattern" link="gst-plugins-bad-plugins-gltestsrc.html#GstGLTestSrcPattern"/>
+    <keyword type="property" name="The “is-live” property" link="gst-plugins-bad-plugins-gltestsrc.html#GstGLTestSrc--is-live"/>
+    <keyword type="property" name="The “pattern” property" link="gst-plugins-bad-plugins-gltestsrc.html#GstGLTestSrc--pattern"/>
+    <keyword type="property" name="The “timestamp-offset” property" link="gst-plugins-bad-plugins-gltestsrc.html#GstGLTestSrc--timestamp-offset"/>
+    <keyword type="struct" name="struct GstGLTransformation" link="gst-plugins-bad-plugins-gltransformation.html#GstGLTransformation"/>
+    <keyword type="struct" name="struct GstGLUploadElement" link="gst-plugins-bad-plugins-glupload.html#GstGLUploadElement-struct"/>
+    <keyword type="struct" name="struct GstGLVideoMixer" link="gst-plugins-bad-plugins-glvideomixerelement.html#GstGLVideoMixer-struct"/>
+    <keyword type="enum" name="enum GstGLVideoMixerBackground" link="gst-plugins-bad-plugins-glvideomixerelement.html#GstGLVideoMixerBackground"/>
+    <keyword type="property" name="The “background” property" link="gst-plugins-bad-plugins-glvideomixerelement.html#GstGLVideoMixer--background"/>
+    <keyword type="struct" name="struct GstGLViewConvertElement" link="gst-plugins-bad-plugins-glviewconvert.html#GstGLViewConvertElement-struct"/>
+    <keyword type="property" name="The “downmix-mode” property" link="gst-plugins-bad-plugins-glviewconvert.html#GstGLViewConvertElement--downmix-mode"/>
+    <keyword type="property" name="The “input-flags-override” property" link="gst-plugins-bad-plugins-glviewconvert.html#GstGLViewConvertElement--input-flags-override"/>
+    <keyword type="property" name="The “input-mode-override” property" link="gst-plugins-bad-plugins-glviewconvert.html#GstGLViewConvertElement--input-mode-override"/>
+    <keyword type="property" name="The “output-flags-override” property" link="gst-plugins-bad-plugins-glviewconvert.html#GstGLViewConvertElement--output-flags-override"/>
+    <keyword type="property" name="The “output-mode-override” property" link="gst-plugins-bad-plugins-glviewconvert.html#GstGLViewConvertElement--output-mode-override"/>
     <keyword type="struct" name="struct GstJpegParse" link="gst-plugins-bad-plugins-jpegparse.html#GstJpegParse-struct"/>
-    <keyword type="struct" name="struct GstJpegParseClass" link="gst-plugins-bad-plugins-jpegparse.html#GstJpegParseClass"/>
-    <keyword type="macro" name="GST_TYPE_JPEG_PARSE" link="gst-plugins-bad-plugins-jpegparse.html#GST-TYPE-JPEG-PARSE:CAPS"/>
     <keyword type="struct" name="struct GstKaleidoscope" link="gst-plugins-bad-plugins-kaleidoscope.html#GstKaleidoscope-struct"/>
     <keyword type="property" name="The “angle” property" link="gst-plugins-bad-plugins-kaleidoscope.html#GstKaleidoscope--angle"/>
     <keyword type="property" name="The “angle2” property" link="gst-plugins-bad-plugins-kaleidoscope.html#GstKaleidoscope--angle2"/>
@@ -315,6 +531,7 @@
     <keyword type="property" name="The “paused-mode” property" link="gst-plugins-bad-plugins-mimenc.html#GstMimEnc--paused-mode"/>
     <keyword type="struct" name="struct GstMimDec" link="gst-plugins-bad-plugins-mimdec.html#GstMimDec-struct"/>
     <keyword type="struct" name="struct GstMirror" link="gst-plugins-bad-plugins-mirror.html#GstMirror-struct"/>
+    <keyword type="enum" name="enum GstMirrorMode" link="gst-plugins-bad-plugins-mirror.html#GstMirrorMode"/>
     <keyword type="property" name="The “mode” property" link="gst-plugins-bad-plugins-mirror.html#GstMirror--mode"/>
     <keyword type="struct" name="GstModPlug" link="gst-plugins-bad-plugins-modplug.html#GstModPlug-struct"/>
     <keyword type="property" name="The “megabass” property" link="gst-plugins-bad-plugins-modplug.html#GstModPlug--megabass"/>
@@ -364,13 +581,6 @@
     <keyword type="property" name="The “sequence-length” property" link="gst-plugins-bad-plugins-mpeg2enc.html#GstMpeg2enc--sequence-length"/>
     <keyword type="property" name="The “unit-coeff-elim” property" link="gst-plugins-bad-plugins-mpeg2enc.html#GstMpeg2enc--unit-coeff-elim"/>
     <keyword type="property" name="The “vcd-still-size” property" link="gst-plugins-bad-plugins-mpeg2enc.html#GstMpeg2enc--vcd-still-size"/>
-    <keyword type="property" name="The “aggregate-gops” property" link="gst-plugins-bad-plugins-mpegpsmux.html#MpegPsMux--aggregate-gops"/>
-    <keyword type="property" name="The “m2ts-mode” property" link="gst-plugins-bad-plugins-mpegtsmux.html#MpegTsMux--m2ts-mode"/>
-    <keyword type="property" name="The “prog-map” property" link="gst-plugins-bad-plugins-mpegtsmux.html#MpegTsMux--prog-map"/>
-    <keyword type="property" name="The “pat-interval” property" link="gst-plugins-bad-plugins-mpegtsmux.html#MpegTsMux--pat-interval"/>
-    <keyword type="property" name="The “pmt-interval” property" link="gst-plugins-bad-plugins-mpegtsmux.html#MpegTsMux--pmt-interval"/>
-    <keyword type="property" name="The “alignment” property" link="gst-plugins-bad-plugins-mpegtsmux.html#MpegTsMux--alignment"/>
-    <keyword type="property" name="The “si-interval” property" link="gst-plugins-bad-plugins-mpegtsmux.html#MpegTsMux--si-interval"/>
     <keyword type="struct" name="GstMplex" link="gst-plugins-bad-plugins-mplex.html#GstMplex-struct"/>
     <keyword type="property" name="The “bufsize” property" link="gst-plugins-bad-plugins-mplex.html#GstMplex--bufsize"/>
     <keyword type="property" name="The “format” property" link="gst-plugins-bad-plugins-mplex.html#GstMplex--format"/>
@@ -399,6 +609,15 @@
     <keyword type="struct" name="struct GstOpenalSrc" link="gst-plugins-bad-plugins-openalsrc.html#GstOpenalSrc-struct"/>
     <keyword type="property" name="The “device” property" link="gst-plugins-bad-plugins-openalsrc.html#GstOpenalSrc--device"/>
     <keyword type="property" name="The “device-name” property" link="gst-plugins-bad-plugins-openalsrc.html#GstOpenalSrc--device-name"/>
+    <keyword type="struct" name="struct GstOpenALSink" link="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink-struct"/>
+    <keyword type="property" name="The “context-handle” property" link="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--context-handle"/>
+    <keyword type="property" name="The “device” property" link="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--device"/>
+    <keyword type="property" name="The “device-handle” property" link="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--device-handle"/>
+    <keyword type="property" name="The “device-name” property" link="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--device-name"/>
+    <keyword type="property" name="The “source-id” property" link="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--source-id"/>
+    <keyword type="property" name="The “user-context” property" link="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--user-context"/>
+    <keyword type="property" name="The “user-device” property" link="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--user-device"/>
+    <keyword type="property" name="The “user-source” property" link="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--user-source"/>
     <keyword type="struct" name="struct GstPcapParse" link="gst-plugins-bad-plugins-pcapparse.html#GstPcapParse-struct"/>
     <keyword type="property" name="The “dst-ip” property" link="gst-plugins-bad-plugins-pcapparse.html#GstPcapParse--dst-ip"/>
     <keyword type="property" name="The “dst-port” property" link="gst-plugins-bad-plugins-pcapparse.html#GstPcapParse--dst-port"/>
@@ -408,6 +627,24 @@
     <keyword type="property" name="The “ts-offset” property" link="gst-plugins-bad-plugins-pcapparse.html#GstPcapParse--ts-offset"/>
     <keyword type="struct" name="struct GstPinch" link="gst-plugins-bad-plugins-pinch.html#GstPinch-struct"/>
     <keyword type="property" name="The “intensity” property" link="gst-plugins-bad-plugins-pinch.html#GstPinch--intensity"/>
+    <keyword type="struct" name="struct GstRawAudioParse" link="gst-plugins-bad-plugins-rawaudioparse.html#GstRawAudioParse-struct"/>
+    <keyword type="property" name="The “channel-positions” property" link="gst-plugins-bad-plugins-rawaudioparse.html#GstRawAudioParse--channel-positions"/>
+    <keyword type="property" name="The “format” property" link="gst-plugins-bad-plugins-rawaudioparse.html#GstRawAudioParse--format"/>
+    <keyword type="property" name="The “interleaved” property" link="gst-plugins-bad-plugins-rawaudioparse.html#GstRawAudioParse--interleaved"/>
+    <keyword type="property" name="The “num-channels” property" link="gst-plugins-bad-plugins-rawaudioparse.html#GstRawAudioParse--num-channels"/>
+    <keyword type="property" name="The “pcm-format” property" link="gst-plugins-bad-plugins-rawaudioparse.html#GstRawAudioParse--pcm-format"/>
+    <keyword type="property" name="The “sample-rate” property" link="gst-plugins-bad-plugins-rawaudioparse.html#GstRawAudioParse--sample-rate"/>
+    <keyword type="struct" name="struct GstRawVideoParse" link="gst-plugins-bad-plugins-rawvideoparse.html#GstRawVideoParse-struct"/>
+    <keyword type="property" name="The “format” property" link="gst-plugins-bad-plugins-rawvideoparse.html#GstRawVideoParse--format"/>
+    <keyword type="property" name="The “frame-stride” property" link="gst-plugins-bad-plugins-rawvideoparse.html#GstRawVideoParse--frame-stride"/>
+    <keyword type="property" name="The “framerate” property" link="gst-plugins-bad-plugins-rawvideoparse.html#GstRawVideoParse--framerate"/>
+    <keyword type="property" name="The “height” property" link="gst-plugins-bad-plugins-rawvideoparse.html#GstRawVideoParse--height"/>
+    <keyword type="property" name="The “interlaced” property" link="gst-plugins-bad-plugins-rawvideoparse.html#GstRawVideoParse--interlaced"/>
+    <keyword type="property" name="The “pixel-aspect-ratio” property" link="gst-plugins-bad-plugins-rawvideoparse.html#GstRawVideoParse--pixel-aspect-ratio"/>
+    <keyword type="property" name="The “plane-offsets” property" link="gst-plugins-bad-plugins-rawvideoparse.html#GstRawVideoParse--plane-offsets"/>
+    <keyword type="property" name="The “plane-strides” property" link="gst-plugins-bad-plugins-rawvideoparse.html#GstRawVideoParse--plane-strides"/>
+    <keyword type="property" name="The “top-field-first” property" link="gst-plugins-bad-plugins-rawvideoparse.html#GstRawVideoParse--top-field-first"/>
+    <keyword type="property" name="The “width” property" link="gst-plugins-bad-plugins-rawvideoparse.html#GstRawVideoParse--width"/>
     <keyword type="struct" name="struct GstRfbSrc" link="gst-plugins-bad-plugins-rfbsrc.html#GstRfbSrc-struct"/>
     <keyword type="property" name="The “host” property" link="gst-plugins-bad-plugins-rfbsrc.html#GstRfbSrc--host"/>
     <keyword type="property" name="The “port” property" link="gst-plugins-bad-plugins-rfbsrc.html#GstRfbSrc--port"/>
@@ -425,6 +662,7 @@
     <keyword type="property" name="The “location” property" link="gst-plugins-bad-plugins-rtmpsink.html#GstRTMPSink--location"/>
     <keyword type="struct" name="struct GstRTMPSrc" link="gst-plugins-bad-plugins-rtmpsrc.html#GstRTMPSrc-struct"/>
     <keyword type="property" name="The “location” property" link="gst-plugins-bad-plugins-rtmpsrc.html#GstRTMPSrc--location"/>
+    <keyword type="property" name="The “timeout” property" link="gst-plugins-bad-plugins-rtmpsrc.html#GstRTMPSrc--timeout"/>
     <keyword type="struct" name="struct GstShmSink" link="gst-plugins-bad-plugins-shmsink.html#GstShmSink-struct"/>
     <keyword type="property" name="The “perms” property" link="gst-plugins-bad-plugins-shmsink.html#GstShmSink--perms"/>
     <keyword type="property" name="The “shm-size” property" link="gst-plugins-bad-plugins-shmsink.html#GstShmSink--shm-size"/>
@@ -478,6 +716,8 @@
     <keyword type="struct" name="struct GstTunnel" link="gst-plugins-bad-plugins-tunnel.html#GstTunnel-struct"/>
     <keyword type="struct" name="struct GstTwirl" link="gst-plugins-bad-plugins-twirl.html#GstTwirl-struct"/>
     <keyword type="property" name="The “angle” property" link="gst-plugins-bad-plugins-twirl.html#GstTwirl--angle"/>
+    <keyword type="struct" name="GstUnalignedAudioParse" link="gst-plugins-bad-plugins-unalignedaudioparse.html#GstUnalignedAudioParse-struct"/>
+    <keyword type="struct" name="GstUnalignedVideoParse" link="gst-plugins-bad-plugins-unalignedvideoparse.html#GstUnalignedVideoParse-struct"/>
     <keyword type="struct" name="struct GstVideoParse" link="gst-plugins-bad-plugins-videoparse.html#GstVideoParse-struct"/>
     <keyword type="property" name="The “alpha-mask” property" link="gst-plugins-bad-plugins-videoparse.html#GstVideoParse--alpha-mask"/>
     <keyword type="property" name="The “blue-mask” property" link="gst-plugins-bad-plugins-videoparse.html#GstVideoParse--blue-mask"/>
@@ -506,7 +746,57 @@
     <keyword type="property" name="The “attach-frame” property" link="gst-plugins-bad-plugins-zbar.html#GstZBar--attach-frame"/>
     <keyword type="struct" name="struct GstVoAacEnc" link="gst-plugins-bad-plugins-voaacenc.html#GstVoAacEnc-struct"/>
     <keyword type="property" name="The “bitrate” property" link="gst-plugins-bad-plugins-voaacenc.html#GstVoAacEnc--bitrate"/>
+    <keyword type="struct" name="struct GstVoAmrWbEnc" link="gst-plugins-bad-plugins-voamrwbenc.html#GstVoAmrWbEnc-struct"/>
+    <keyword type="property" name="The “band-mode” property" link="gst-plugins-bad-plugins-voamrwbenc.html#GstVoAmrWbEnc--band-mode"/>
     <keyword type="struct" name="struct GstWaveScope" link="gst-plugins-bad-plugins-wavescope.html#GstWaveScope-struct"/>
     <keyword type="property" name="The “style” property" link="gst-plugins-bad-plugins-wavescope.html#GstWaveScope--style"/>
+    <keyword type="struct" name="GstWebrtcDsp" link="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp-struct"/>
+    <keyword type="property" name="The “echo-cancel” property" link="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--echo-cancel"/>
+    <keyword type="property" name="The “experimental-agc” property" link="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--experimental-agc"/>
+    <keyword type="property" name="The “extended-filter” property" link="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--extended-filter"/>
+    <keyword type="property" name="The “gain-control” property" link="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--gain-control"/>
+    <keyword type="property" name="The “high-pass-filter” property" link="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--high-pass-filter"/>
+    <keyword type="property" name="The “noise-suppression” property" link="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--noise-suppression"/>
+    <keyword type="property" name="The “probe” property" link="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--probe"/>
+    <keyword type="property" name="The “echo-suppression-level” property" link="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--echo-suppression-level"/>
+    <keyword type="property" name="The “noise-suppression-level” property" link="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--noise-suppression-level"/>
+    <keyword type="property" name="The “delay-agnostic” property" link="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--delay-agnostic"/>
+    <keyword type="struct" name="struct GstWebrtcEchoProbe" link="gst-plugins-bad-plugins-webrtcechoprobe.html#GstWebrtcEchoProbe-struct"/>
+    <keyword type="constant" name="GST_COLOR_EFFECTS_PRESET_NONE" link="gst-plugins-bad-plugins-coloreffects.html#GST-COLOR-EFFECTS-PRESET-NONE:CAPS"/>
+    <keyword type="constant" name="GST_COLOR_EFFECTS_PRESET_HEAT" link="gst-plugins-bad-plugins-coloreffects.html#GST-COLOR-EFFECTS-PRESET-HEAT:CAPS"/>
+    <keyword type="constant" name="GST_COLOR_EFFECTS_PRESET_SEPIA" link="gst-plugins-bad-plugins-coloreffects.html#GST-COLOR-EFFECTS-PRESET-SEPIA:CAPS"/>
+    <keyword type="constant" name="GST_COLOR_EFFECTS_PRESET_XRAY" link="gst-plugins-bad-plugins-coloreffects.html#GST-COLOR-EFFECTS-PRESET-XRAY:CAPS"/>
+    <keyword type="constant" name="GST_COLOR_EFFECTS_PRESET_XPRO" link="gst-plugins-bad-plugins-coloreffects.html#GST-COLOR-EFFECTS-PRESET-XPRO:CAPS"/>
+    <keyword type="constant" name="GST_COLOR_EFFECTS_PRESET_YELLOWBLUE" link="gst-plugins-bad-plugins-coloreffects.html#GST-COLOR-EFFECTS-PRESET-YELLOWBLUE:CAPS"/>
+    <keyword type="constant" name="COMPOSITOR_BACKGROUND_CHECKER" link="gst-plugins-bad-plugins-compositor.html#COMPOSITOR-BACKGROUND-CHECKER:CAPS"/>
+    <keyword type="constant" name="COMPOSITOR_BACKGROUND_BLACK" link="gst-plugins-bad-plugins-compositor.html#COMPOSITOR-BACKGROUND-BLACK:CAPS"/>
+    <keyword type="constant" name="COMPOSITOR_BACKGROUND_WHITE" link="gst-plugins-bad-plugins-compositor.html#COMPOSITOR-BACKGROUND-WHITE:CAPS"/>
+    <keyword type="constant" name="COMPOSITOR_BACKGROUND_TRANSPARENT" link="gst-plugins-bad-plugins-compositor.html#COMPOSITOR-BACKGROUND-TRANSPARENT:CAPS"/>
+    <keyword type="constant" name="GST_FACEDETECT_UPDATES_EVERY_FRAME" link="gst-plugins-bad-plugins-facedetect.html#GST-FACEDETECT-UPDATES-EVERY-FRAME:CAPS"/>
+    <keyword type="constant" name="GST_FACEDETECT_UPDATES_ON_CHANGE" link="gst-plugins-bad-plugins-facedetect.html#GST-FACEDETECT-UPDATES-ON-CHANGE:CAPS"/>
+    <keyword type="constant" name="GST_FACEDETECT_UPDATES_ON_FACE" link="gst-plugins-bad-plugins-facedetect.html#GST-FACEDETECT-UPDATES-ON-FACE:CAPS"/>
+    <keyword type="constant" name="GST_FACEDETECT_UPDATES_NONE" link="gst-plugins-bad-plugins-facedetect.html#GST-FACEDETECT-UPDATES-NONE:CAPS"/>
+    <keyword type="constant" name="GST_GL_TEST_SRC_SMPTE" link="gst-plugins-bad-plugins-gltestsrc.html#GST-GL-TEST-SRC-SMPTE:CAPS"/>
+    <keyword type="constant" name="GST_GL_TEST_SRC_SNOW" link="gst-plugins-bad-plugins-gltestsrc.html#GST-GL-TEST-SRC-SNOW:CAPS"/>
+    <keyword type="constant" name="GST_GL_TEST_SRC_BLACK" link="gst-plugins-bad-plugins-gltestsrc.html#GST-GL-TEST-SRC-BLACK:CAPS"/>
+    <keyword type="constant" name="GST_GL_TEST_SRC_WHITE" link="gst-plugins-bad-plugins-gltestsrc.html#GST-GL-TEST-SRC-WHITE:CAPS"/>
+    <keyword type="constant" name="GST_GL_TEST_SRC_RED" link="gst-plugins-bad-plugins-gltestsrc.html#GST-GL-TEST-SRC-RED:CAPS"/>
+    <keyword type="constant" name="GST_GL_TEST_SRC_GREEN" link="gst-plugins-bad-plugins-gltestsrc.html#GST-GL-TEST-SRC-GREEN:CAPS"/>
+    <keyword type="constant" name="GST_GL_TEST_SRC_BLUE" link="gst-plugins-bad-plugins-gltestsrc.html#GST-GL-TEST-SRC-BLUE:CAPS"/>
+    <keyword type="constant" name="GST_GL_TEST_SRC_CHECKERS1" link="gst-plugins-bad-plugins-gltestsrc.html#GST-GL-TEST-SRC-CHECKERS1:CAPS"/>
+    <keyword type="constant" name="GST_GL_TEST_SRC_CHECKERS2" link="gst-plugins-bad-plugins-gltestsrc.html#GST-GL-TEST-SRC-CHECKERS2:CAPS"/>
+    <keyword type="constant" name="GST_GL_TEST_SRC_CHECKERS4" link="gst-plugins-bad-plugins-gltestsrc.html#GST-GL-TEST-SRC-CHECKERS4:CAPS"/>
+    <keyword type="constant" name="GST_GL_TEST_SRC_CHECKERS8" link="gst-plugins-bad-plugins-gltestsrc.html#GST-GL-TEST-SRC-CHECKERS8:CAPS"/>
+    <keyword type="constant" name="GST_GL_TEST_SRC_CIRCULAR" link="gst-plugins-bad-plugins-gltestsrc.html#GST-GL-TEST-SRC-CIRCULAR:CAPS"/>
+    <keyword type="constant" name="GST_GL_TEST_SRC_BLINK" link="gst-plugins-bad-plugins-gltestsrc.html#GST-GL-TEST-SRC-BLINK:CAPS"/>
+    <keyword type="constant" name="GST_GL_TEST_SRC_MANDELBROT" link="gst-plugins-bad-plugins-gltestsrc.html#GST-GL-TEST-SRC-MANDELBROT:CAPS"/>
+    <keyword type="constant" name="GST_GL_VIDEO_MIXER_BACKGROUND_CHECKER" link="gst-plugins-bad-plugins-glvideomixerelement.html#GST-GL-VIDEO-MIXER-BACKGROUND-CHECKER:CAPS"/>
+    <keyword type="constant" name="GST_GL_VIDEO_MIXER_BACKGROUND_BLACK" link="gst-plugins-bad-plugins-glvideomixerelement.html#GST-GL-VIDEO-MIXER-BACKGROUND-BLACK:CAPS"/>
+    <keyword type="constant" name="GST_GL_VIDEO_MIXER_BACKGROUND_WHITE" link="gst-plugins-bad-plugins-glvideomixerelement.html#GST-GL-VIDEO-MIXER-BACKGROUND-WHITE:CAPS"/>
+    <keyword type="constant" name="GST_GL_VIDEO_MIXER_BACKGROUND_TRANSPARENT" link="gst-plugins-bad-plugins-glvideomixerelement.html#GST-GL-VIDEO-MIXER-BACKGROUND-TRANSPARENT:CAPS"/>
+    <keyword type="constant" name="GST_MIRROR_MODE_LEFT" link="gst-plugins-bad-plugins-mirror.html#GST-MIRROR-MODE-LEFT:CAPS"/>
+    <keyword type="constant" name="GST_MIRROR_MODE_RIGHT" link="gst-plugins-bad-plugins-mirror.html#GST-MIRROR-MODE-RIGHT:CAPS"/>
+    <keyword type="constant" name="GST_MIRROR_MODE_TOP" link="gst-plugins-bad-plugins-mirror.html#GST-MIRROR-MODE-TOP:CAPS"/>
+    <keyword type="constant" name="GST_MIRROR_MODE_BOTTOM" link="gst-plugins-bad-plugins-mirror.html#GST-MIRROR-MODE-BOTTOM:CAPS"/>
   </functions>
 </book>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-assrender.html b/docs/plugins/html/gst-plugins-bad-plugins-assrender.html
index 1246a6c..3d042c0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-assrender.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-assrender.html
@@ -84,10 +84,25 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-assrender.description"></a><h2>Description</h2>
+<p>Renders timestamped SSA/ASS subtitles on top of a video stream.</p>
+<div class="refsect2">
+<a name="id-1.2.5.7.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v filesrc location<span class="gtkdoc opt">=/</span>path<span class="gtkdoc opt">/</span>to<span class="gtkdoc opt">/</span>mkv <span class="gtkdoc opt">!</span> matroskademux name<span class="gtkdoc opt">=</span>d <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> mpegaudioparse <span class="gtkdoc opt">!</span> mad <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> autoaudiosink  d<span class="gtkdoc opt">. !</span> queue <span class="gtkdoc opt">!</span> h264parse <span class="gtkdoc opt">!</span> avdec_h264 <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> r<span class="gtkdoc opt">.</span>   d<span class="gtkdoc opt">. !</span> queue <span class="gtkdoc opt">!</span> <span class="string">&quot;application/x-ass&quot;</span> <span class="gtkdoc opt">!</span> assrender name<span class="gtkdoc opt">=</span>r <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ This pipeline demuxes a Matroska file with h.264 video, MP3 audio and embedded ASS subtitles and renders the subtitles on top of the video.
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.5.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.5.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -113,7 +128,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.5.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.5.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -166,7 +181,7 @@
 </tr>
 <tr>
 <td><p><span class="term"></span></p></td>
-<td> video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+<td> video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
 </tr>
 </tbody>
 </table></div>
@@ -194,7 +209,7 @@
 </tr>
 <tr>
 <td><p><span class="term"></span></p></td>
-<td> video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+<td> video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
 </tr>
 </tbody>
 </table></div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-audiomixer.html b/docs/plugins/html/gst-plugins-bad-plugins-audiomixer.html
index efa9fd0..ce7e6d8 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-audiomixer.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-audiomixer.html
@@ -7,7 +7,7 @@
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-audiointerleave.html" title="audiointerleave">
-<link rel="next" href="gst-plugins-bad-plugins-autoconvert.html" title="autoconvert">
+<link rel="next" href="gst-plugins-bad-plugins-audioparse.html" title="audioparse">
 <meta name="generator" content="GTK-Doc V1.25 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -23,7 +23,7 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="gst-plugins-bad-plugins-audiointerleave.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-bad-plugins-autoconvert.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-audioparse.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="gst-plugins-bad-plugins-audiomixer"></a><div class="titlepage"></div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-audioparse.html b/docs/plugins/html/gst-plugins-bad-plugins-audioparse.html
new file mode 100644
index 0000000..24c8141
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-audioparse.html
@@ -0,0 +1,339 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>audioparse: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-audiomixer.html" title="audiomixer">
+<link rel="next" href="gst-plugins-bad-plugins-autoconvert.html" title="autoconvert">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-audioparse.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-audioparse.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-audioparse.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-audioparse.properties" class="shortcut">Properties</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-audiomixer.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-autoconvert.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-audioparse"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-audioparse.top_of_page"></a>audioparse</span></h2>
+<p>audioparse</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-audioparse.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-audioparse.html#GstAudioParse--channels" title="The “channels” property">channels</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-audioparse.html#GstAudioParse--depth" title="The “depth” property">depth</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><span class="type">GstAudioParseEndianness</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-audioparse.html#GstAudioParse--endianness" title="The “endianness” property">endianness</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><span class="type">GstAudioParseFormat</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-audioparse.html#GstAudioParse--format" title="The “format” property">format</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-audioparse.html#GstAudioParse--rate" title="The “rate” property">rate</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-audioparse.html#GstAudioParse--signed" title="The “signed” property">signed</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-audioparse.html#GstAudioParse--width" title="The “width” property">width</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/gobjectgobject-Value-arrays.html#GValueArray"><span class="type">GValueArray</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-audioparse.html#GstAudioParse--channel-positions" title="The “channel-positions” property">channel-positions</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-audioparse.html#GstAudioParse--interleaved" title="The “interleaved” property">interleaved</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstaudio.html#GstAudioFormat"><span class="type">GstAudioFormat</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-audioparse.html#GstAudioParse--raw-format" title="The “raw-format” property">raw-format</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-audioparse.html#GstAudioParse--use-sink-caps" title="The “use-sink-caps” property">use-sink-caps</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="GstAudioParse"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-audioparse.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-audioparse.html#GstAudioParse-struct" title="struct GstAudioParse">GstAudioParse</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-audioparse.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBin.html#GstBin-struct">GstBin</a>
+                    <span class="lineart">╰──</span> GstAudioParse
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-audioparse.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstAudioParse implements
+ <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstChildProxy.html#GstChildProxy-struct">GstChildProxy</a>.</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-audioparse.description"></a><h2>Description</h2>
+<p>Converts a byte stream into audio frames.</p>
+<div class="note">This element is deprecated. Use <a class="link" href="gst-plugins-bad-plugins-rawaudioparse.html#GstRawAudioParse"><span class="type">GstRawAudioParse</span></a> instead.</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.8.8.4.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-rawparse.html#plugin-rawparse">rawparse</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Sebastian Dröge &lt;sebastian.droege@collabora.co.uk&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Audio</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.8.8.4.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>ANY</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-raw, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ], layout=(string){ interleaved, non-interleaved }</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> audio/x-unaligned-raw, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ], layout=(string){ interleaved, non-interleaved }</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> audio/x-alaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> audio/x-mulaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-audioparse.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-audioparse.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstAudioParse-struct"></a><h3>struct GstAudioParse</h3>
+<pre class="programlisting">struct GstAudioParse;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-audioparse.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstAudioParse--channels"></a><h3>The <code class="literal">“channels”</code> property</h3>
+<pre class="programlisting">  “channels”                 <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Number of channels in raw stream.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [1,64]</p>
+<p>Default value: 2</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstAudioParse--depth"></a><h3>The <code class="literal">“depth”</code> property</h3>
+<pre class="programlisting">  “depth”                    <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Depth of audio samples in raw stream.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &gt;= 1</p>
+<p>Default value: 16</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstAudioParse--endianness"></a><h3>The <code class="literal">“endianness”</code> property</h3>
+<pre class="programlisting">  “endianness”               <span class="type">GstAudioParseEndianness</span></pre>
+<p>Endianness of audio samples in raw stream.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: Little Endian</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstAudioParse--format"></a><h3>The <code class="literal">“format”</code> property</h3>
+<pre class="programlisting">  “format”                   <span class="type">GstAudioParseFormat</span></pre>
+<p>Format of audio samples in raw stream.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: Raw</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstAudioParse--rate"></a><h3>The <code class="literal">“rate”</code> property</h3>
+<pre class="programlisting">  “rate”                     <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Rate of audio samples in raw stream.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &gt;= 1</p>
+<p>Default value: 44100</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstAudioParse--signed"></a><h3>The <code class="literal">“signed”</code> property</h3>
+<pre class="programlisting">  “signed”                   <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Sign of audio samples in raw stream.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstAudioParse--width"></a><h3>The <code class="literal">“width”</code> property</h3>
+<pre class="programlisting">  “width”                    <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Width of audio samples in raw stream.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &gt;= 1</p>
+<p>Default value: 16</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstAudioParse--channel-positions"></a><h3>The <code class="literal">“channel-positions”</code> property</h3>
+<pre class="programlisting">  “channel-positions”        <a href="/usr/share/gtk-doc/html/gobjectgobject-Value-arrays.html#GValueArray"><span class="type">GValueArray</span></a> *</pre>
+<p>Channel positions used on the output.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstAudioParse--interleaved"></a><h3>The <code class="literal">“interleaved”</code> property</h3>
+<pre class="programlisting">  “interleaved”              <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>True if audio has interleaved layout.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstAudioParse--raw-format"></a><h3>The <code class="literal">“raw-format”</code> property</h3>
+<pre class="programlisting">  “raw-format”               <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstaudio.html#GstAudioFormat"><span class="type">GstAudioFormat</span></a></pre>
+<p>Format of audio samples in raw stream.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: GST_AUDIO_FORMAT_S16LE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstAudioParse--use-sink-caps"></a><h3>The <code class="literal">“use-sink-caps”</code> property</h3>
+<pre class="programlisting">  “use-sink-caps”            <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Use the sink caps for the format, only performing timestamping.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: FALSE</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-autoconvert.html b/docs/plugins/html/gst-plugins-bad-plugins-autoconvert.html
index b352b06..2432e32 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-autoconvert.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-autoconvert.html
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
-<link rel="prev" href="gst-plugins-bad-plugins-audiomixer.html" title="audiomixer">
+<link rel="prev" href="gst-plugins-bad-plugins-audioparse.html" title="audioparse">
 <link rel="next" href="gst-plugins-bad-plugins-bs2b.html" title="bs2b">
 <meta name="generator" content="GTK-Doc V1.25 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
@@ -22,7 +22,7 @@
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-bad-plugins-audiomixer.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-audioparse.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="gst-plugins-bad-plugins-bs2b.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
@@ -98,7 +98,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.8.8.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.9.8.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -124,7 +124,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.8.8.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.9.8.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-bs2b.html b/docs/plugins/html/gst-plugins-bad-plugins-bs2b.html
index e457fc0..610db8d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-bs2b.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-bs2b.html
@@ -88,10 +88,27 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-bs2b.description"></a><h2>Description</h2>
+<p>Improve headphone listening of stereo audio records using the bs2b library. 
+It does so by mixing the left and right channel in a way that simulates
+a stereo speaker setup while using headphones.</p>
+<div class="refsect2">
+<a name="id-1.2.10.8.3"></a><h3>Example pipelines</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> audiotestsrc <span class="gtkdoc opt">!</span> <span class="string">&quot;audio/x-raw,channel-mask=(bitmask)0x1&quot;</span> <span class="gtkdoc opt">!</span> interleave name<span class="gtkdoc opt">=</span>i <span class="gtkdoc opt">!</span> bs2b <span class="gtkdoc opt">!</span> autoaudiosink audiotestsrc freq<span class="gtkdoc opt">=</span><span class="number">330</span> <span class="gtkdoc opt">!</span> <span class="string">&quot;audio/x-raw,channel-mask=(bitmask)0x2&quot;</span> <span class="gtkdoc opt">!</span> i<span class="gtkdoc opt">.</span></pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Play two independent sine test sources and crossfeed them.
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.9.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.10.8.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -117,7 +134,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.9.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.10.8.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-bulge.html b/docs/plugins/html/gst-plugins-bad-plugins-bulge.html
index 0c63bd8..63ec883 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-bulge.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-bulge.html
@@ -79,7 +79,7 @@
 <p>Bugle is a geometric image transform element. It adds a protuberance in the
 center point.</p>
 <div class="refsect2">
-<a name="id-1.2.10.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.11.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -95,7 +95,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.10.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.11.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -121,7 +121,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.10.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.11.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-burn.html b/docs/plugins/html/gst-plugins-bad-plugins-burn.html
index b073437..5a1242b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-burn.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-burn.html
@@ -83,7 +83,7 @@
 <a name="gst-plugins-bad-plugins-burn.description"></a><h2>Description</h2>
 <p>Burn adjusts the colors of a video stream in realtime.</p>
 <div class="refsect2">
-<a name="id-1.2.11.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.12.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -99,7 +99,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.11.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.12.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -125,7 +125,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.11.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.12.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-camerabin.html b/docs/plugins/html/gst-plugins-bad-plugins-camerabin.html
index f0def8f..0236422 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-camerabin.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-camerabin.html
@@ -33,10 +33,126 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-camerabin.description"></a><h2>Description</h2>
+<p>CameraBin is a high-level camera object that encapsulates gstreamer
+elements, providing an API for controlling a digital camera.</p>
+<div class="note">
+Note that camerabin is still UNSTABLE and under development.
+</div>
+<p>CameraBin has the following main features:</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+Record videos
+</li>
+<li class="listitem">
+Capture pictures
+</li>
+<li class="listitem">
+Display a viewfinder
+</li>
+<li class="listitem">
+Post preview images for each capture (video and image)
+</li>
+</ul></div>
+<div class="refsect2">
+<a name="id-1.2.13.3.6"></a><h3>Usage</h3>
+<p>
+Camerabin can be created using <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElementFactory.html#gst-element-factory-make"><code class="function">gst_element_factory_make()</code></a> just like
+any other element. Video or image capture mode can be selected using
+the <span class="type">“mode”</span> property and the file to save the capture is
+selected using <span class="type">“location”</span> property.
+
+After creating camerabin, applications might want to do some
+customization (there's a section about this below), then select
+the desired mode and start capturing.
+
+In image capture mode, just send a <span class="type">“start-capture”</span> and a
+picture will be captured. When the picture is stored on the selected
+location, a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMessage.html#GST-MESSAGE-ELEMENT:CAPS"><code class="literal">GST_MESSAGE_ELEMENT</code></a> named 'image-done' will be posted on
+the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBus.html#GstBus-struct"><span class="type">GstBus</span></a>.
+
+In video capture mode, send a <span class="type">“start-capture”</span> to start
+recording, then send a <span class="type">“stop-capture”</span> to stop recording.
+Note that both signals are asynchronous, so, calling
+<span class="type">“stop-capture”</span> doesn't guarantee that the video has been
+properly finished yet. Applications should wait for the 'video-done'
+message to be posted on the bus.
+
+In both modes, if <span class="type">“post-previews”</span> is <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a>
+will be post to the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBus.html#GstBus-struct"><span class="type">GstBus</span></a> in a field named 'buffer', in a
+'preview-image' message of type <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMessage.html#GST-MESSAGE-ELEMENT:CAPS"><code class="literal">GST_MESSAGE_ELEMENT</code></a>.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.13.3.7"></a><h3>Customization</h3>
+<p>
+Camerabin provides various customization properties, allowing the user
+to set custom filters, selecting the viewfinder sink and formats to
+use to encode the captured images/videos.
+
+<a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-encoding-profile.html#GstEncodingProfile-struct"><span class="type">GstEncodingProfile</span></a>s are used to tell camerabin which formats it
+should encode the captures to, those should be set to
+<span class="type">“image-profile”</span> and <span class="type">“video-profile”</span>. Default is
+jpeg for images, and ogg (theora and vorbis) for video. If a profile without
+an audio stream is set for video, audio will be disabled on recordings.
+
+<span class="type">“preview-caps”</span> can be used to select which format preview
+images should be posted on the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBus.html#GstBus-struct"><span class="type">GstBus</span></a>. It has to be a raw video format.
+
+Camerabin has a <span class="type">“camera-source”</span> property so applications can
+set their source that will provide buffers for the viewfinder and for
+captures. This camera source is a special type of source that has 3 pads.
+To use a 'regular' source with a single pad you should use
+<span class="type">GstWrapperCameraBinSource</span>, it will adapt your source and provide 3 pads.
+
+Applications can also select the desired viewfinder sink using
+<span class="type">“viewfinder-sink”</span>, it is also possible to select the audio
+source using <span class="type">“audio-source”</span>.
+
+The viewfinder resolution can be configured using
+<span class="type">“viewfinder-caps”</span>, these <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> should be a subset of
+<span class="type">“viewfinder-supported-caps”</span>.
+
+To select the desired resolution for captures, camerabin provides
+<span class="type">“image-capture-caps”</span> and <span class="type">“video-capture-caps”</span>,
+these caps must be a subset of what the source can produce. The allowed
+caps can be probed using <span class="type">“image-capture-supported-caps”</span> and
+<span class="type">“video-capture-supported-caps”</span>. In an analogous way, there
+are <span class="type">“audio-capture-caps”</span> and
+<span class="type">“audio-capture-supported-caps”</span>.
+
+Camerabin also allows applications to insert custom <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElements</span></a> on any
+of its branches: video capture, image capture, viewfinder and preview.
+Check <span class="type">“video-filter”</span>, <span class="type">“image-filter”</span>,
+<span class="type">“viewfinder-filter”</span> and <span class="type">“preview-filter”</span>.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.13.3.8"></a><h3>Example launch line</h3>
+<p>
+Unfortunately, camerabin can't be really used from gst-launch-1.0, as you
+need to send signals to control it. The following pipeline might be able
+to show the viewfinder using all the default elements.
+</p>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v <span class="gtkdoc opt">-</span>m camerabin</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+<p>
+</p>
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.12.3.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.13.3.9.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -62,7 +178,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.12.3.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.13.3.9.2"></a><h3>Element Pads</h3>
 </div>
 </div>
 </div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-chromium.html b/docs/plugins/html/gst-plugins-bad-plugins-chromium.html
index 35591c3..4b76f1e 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-chromium.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-chromium.html
@@ -61,6 +61,19 @@
 </table></div>
 </div>
 <a name="GstChromium"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-chromium.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-chromium.html#GstChromium-struct" title="struct GstChromium">GstChromium</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
 <a name="gst-plugins-bad-plugins-chromium.object-hierarchy"></a><h2>Object Hierarchy</h2>
 <pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
     <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
@@ -75,7 +88,7 @@
 <a name="gst-plugins-bad-plugins-chromium.description"></a><h2>Description</h2>
 <p>Chromium breaks the colors of a video stream in realtime.</p>
 <div class="refsect2">
-<a name="id-1.2.13.6.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.14.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -91,7 +104,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.13.6.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.14.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -117,7 +130,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.13.6.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.14.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -175,6 +188,10 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-chromium.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstChromium-struct"></a><h3>struct GstChromium</h3>
+<pre class="programlisting">struct GstChromium;</pre>
+</div>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-chromium.property-details"></a><h2>Property Details</h2>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-circle.html b/docs/plugins/html/gst-plugins-bad-plugins-circle.html
index 868ec80..a025dde 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-circle.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-circle.html
@@ -91,7 +91,7 @@
 <p>Circle is a geometric image transform element. It warps the picture into an
 arc shaped form.</p>
 <div class="refsect2">
-<a name="id-1.2.14.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.15.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -107,7 +107,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.14.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.15.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -133,7 +133,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.14.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.15.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-coloreffects.html b/docs/plugins/html/gst-plugins-bad-plugins-coloreffects.html
index c7b755b..0cc39c4 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-coloreffects.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-coloreffects.html
@@ -42,7 +42,7 @@
 <col width="200px" class="properties_flags">
 </colgroup>
 <tbody><tr>
-<td class="property_type"><span class="type">GstColorEffectsPreset</span></td>
+<td class="property_type"><a class="link" href="gst-plugins-bad-plugins-coloreffects.html#GstColorEffectsPreset" title="enum GstColorEffectsPreset"><span class="type">GstColorEffectsPreset</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-bad-plugins-coloreffects.html#GstColorEffects--preset" title="The “preset” property">preset</a></td>
 <td class="property_flags">Read / Write</td>
 </tr></tbody>
@@ -55,10 +55,16 @@
 <col width="150px" class="name">
 <col class="description">
 </colgroup>
-<tbody><tr>
+<tbody>
+<tr>
 <td class="datatype_keyword">struct</td>
 <td class="function_name"><a class="link" href="gst-plugins-bad-plugins-coloreffects.html#GstColorEffects-struct" title="struct GstColorEffects">GstColorEffects</a></td>
-</tr></tbody>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-coloreffects.html#GstColorEffectsPreset" title="enum GstColorEffectsPreset">GstColorEffectsPreset</a></td>
+</tr>
+</tbody>
 </table></div>
 </div>
 <div class="refsect1">
@@ -76,7 +82,7 @@
 <a name="gst-plugins-bad-plugins-coloreffects.description"></a><h2>Description</h2>
 <p>Map colors of the video input to a lookup table</p>
 <div class="refsect2">
-<a name="id-1.2.15.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.16.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -94,7 +100,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.15.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.16.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -120,7 +126,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.15.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.16.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -183,12 +189,59 @@
 <pre class="programlisting">struct GstColorEffects;</pre>
 <p>Opaque datastructure.</p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GstColorEffectsPreset"></a><h3>enum GstColorEffectsPreset</h3>
+<p>How to split the video frame and which side reflect</p>
+<div class="refsect3">
+<a name="GstColorEffectsPreset.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-COLOR-EFFECTS-PRESET-NONE:CAPS"></a>GST_COLOR_EFFECTS_PRESET_NONE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-COLOR-EFFECTS-PRESET-HEAT:CAPS"></a>GST_COLOR_EFFECTS_PRESET_HEAT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-COLOR-EFFECTS-PRESET-SEPIA:CAPS"></a>GST_COLOR_EFFECTS_PRESET_SEPIA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-COLOR-EFFECTS-PRESET-XRAY:CAPS"></a>GST_COLOR_EFFECTS_PRESET_XRAY</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-COLOR-EFFECTS-PRESET-XPRO:CAPS"></a>GST_COLOR_EFFECTS_PRESET_XPRO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-COLOR-EFFECTS-PRESET-YELLOWBLUE:CAPS"></a>GST_COLOR_EFFECTS_PRESET_YELLOWBLUE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-coloreffects.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
 <a name="GstColorEffects--preset"></a><h3>The <code class="literal">“preset”</code> property</h3>
-<pre class="programlisting">  “preset”                   <span class="type">GstColorEffectsPreset</span></pre>
+<pre class="programlisting">  “preset”                   <a class="link" href="gst-plugins-bad-plugins-coloreffects.html#GstColorEffectsPreset" title="enum GstColorEffectsPreset"><span class="type">GstColorEffectsPreset</span></a></pre>
 <p>Color effect preset to use.</p>
 <p>Flags: Read / Write</p>
 <p>Default value: Do nothing preset</p>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-compositor.html b/docs/plugins/html/gst-plugins-bad-plugins-compositor.html
index 13e52d4..47d9e71 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-compositor.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-compositor.html
@@ -16,7 +16,8 @@
 <td width="100%" align="left" class="shortcuts">
 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
                   <a href="#gst-plugins-bad-plugins-compositor.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
-                  <a href="#gst-plugins-bad-plugins-compositor.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-compositor.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-compositor.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties">  <span class="dim">|</span> 
                   <a href="#gst-plugins-bad-plugins-compositor.properties" class="shortcut">Properties</a></span>
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
@@ -42,28 +43,49 @@
 <col width="200px" class="properties_flags">
 </colgroup>
 <tbody><tr>
-<td class="property_type"><span class="type">GstCompositorBackground</span></td>
+<td class="property_type"><a class="link" href="gst-plugins-bad-plugins-compositor.html#GstCompositorBackground" title="enum GstCompositorBackground"><span class="type">GstCompositorBackground</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-bad-plugins-compositor.html#GstCompositor--background" title="The “background” property">background</a></td>
 <td class="property_flags">Read / Write</td>
 </tr></tbody>
 </table></div>
 </div>
-<a name="GstCompositor"></a><a name="GstCompositorPad"></a><div class="refsect1">
+<a name="GstCompositor"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-compositor.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-compositor.html#GstCompositor-struct" title="struct GstCompositor">GstCompositor</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-compositor.html#GstCompositorBackground" title="enum GstCompositorBackground">GstCompositorBackground</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
 <a name="gst-plugins-bad-plugins-compositor.object-hierarchy"></a><h2>Object Hierarchy</h2>
 <pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
     <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
         <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
-            <span class="lineart">├──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
-            <span class="lineart">│</span>   <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstAggregator.html#GstAggregator">GstAggregator</a>
-            <span class="lineart">│</span>       <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstVideoAggregator.html#GstVideoAggregator">GstVideoAggregator</a>
-            <span class="lineart">│</span>           <span class="lineart">╰──</span> GstCompositor
-            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstPad.html#GstPad-struct">GstPad</a>
-                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstAggregatorPad.html#GstAggregatorPad">GstAggregatorPad</a>
-                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstVideoAggregatorPad.html#GstVideoAggregatorPad">GstVideoAggregatorPad</a>
-                        <span class="lineart">╰──</span> GstCompositorPad
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstAggregator.html#GstAggregator">GstAggregator</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstVideoAggregator.html#GstVideoAggregator">GstVideoAggregator</a>
+                        <span class="lineart">╰──</span> GstCompositor
 </pre>
 </div>
 <div class="refsect1">
+<a name="gst-plugins-bad-plugins-compositor.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstCompositor implements
+ <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstChildProxy.html#GstChildProxy-struct">GstChildProxy</a>.</p>
+</div>
+<div class="refsect1">
 <a name="gst-plugins-bad-plugins-compositor.description"></a><h2>Description</h2>
 <p>Compositor can accept AYUV, ARGB and BGRA video streams. For each of the requested
 sink pads it will compare the incoming geometry and framerate to define the
@@ -71,7 +93,7 @@
 biggest incoming video stream and the framerate of the fastest incoming one.</p>
 <p>Compositor will do colorspace conversion.</p>
 <p>Individual parameters for each input stream can be configured on the
-<a class="link" href="gst-plugins-bad-plugins-compositor.html#GstCompositorPad"><span class="type">GstCompositorPad</span></a>:</p>
+<span class="type">GstCompositorPad</span>:</p>
 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
 <li class="listitem">
 "xpos": The x-coordinate position of the top-left corner of the picture
@@ -100,7 +122,7 @@
 </li>
 </ul></div>
 <div class="refsect2">
-<a name="id-1.2.16.7.6"></a><h3>Sample pipelines</h3>
+<a name="id-1.2.17.8.6"></a><h3>Sample pipelines</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -128,7 +150,7 @@
  A pipeline to demonstrate compositor used together with videobox.
 This should show a 320x240 pixels video test source with some transparency
 showing the background checker pattern. Another video test source with just
-the snow pattern of 100x100 pixels is overlayed on top of the first one on
+the snow pattern of 100x100 pixels is overlaid on top of the first one on
 the left vertically centered with a small transparency showing the first
 video test source behind and the checker pattern under it. Note that the
 framerate of the output video is 10 frames per second.
@@ -199,7 +221,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.16.7.7.1"></a><h3>Element Information</h3>
+<a name="id-1.2.17.8.7.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -225,7 +247,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.16.7.7.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.17.8.7.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -283,12 +305,53 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-compositor.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstCompositor-struct"></a><h3>struct GstCompositor</h3>
+<pre class="programlisting">struct GstCompositor;</pre>
+<p>The opaque <a class="link" href="gst-plugins-bad-plugins-compositor.html#GstCompositor"><span class="type">GstCompositor</span></a> structure.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstCompositorBackground"></a><h3>enum GstCompositorBackground</h3>
+<div class="refsect3">
+<a name="GstCompositorBackground.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="COMPOSITOR-BACKGROUND-CHECKER:CAPS"></a>COMPOSITOR_BACKGROUND_CHECKER</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="COMPOSITOR-BACKGROUND-BLACK:CAPS"></a>COMPOSITOR_BACKGROUND_BLACK</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="COMPOSITOR-BACKGROUND-WHITE:CAPS"></a>COMPOSITOR_BACKGROUND_WHITE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="COMPOSITOR-BACKGROUND-TRANSPARENT:CAPS"></a>COMPOSITOR_BACKGROUND_TRANSPARENT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-compositor.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
 <a name="GstCompositor--background"></a><h3>The <code class="literal">“background”</code> property</h3>
-<pre class="programlisting">  “background”               <span class="type">GstCompositorBackground</span></pre>
+<pre class="programlisting">  “background”               <a class="link" href="gst-plugins-bad-plugins-compositor.html#GstCompositorBackground" title="enum GstCompositorBackground"><span class="type">GstCompositorBackground</span></a></pre>
 <p>Background type.</p>
 <p>Flags: Read / Write</p>
 <p>Default value: Checker pattern</p>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-cvdilate.html b/docs/plugins/html/gst-plugins-bad-plugins-cvdilate.html
index 42110b0..e740efd 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-cvdilate.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-cvdilate.html
@@ -60,10 +60,25 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-cvdilate.description"></a><h2>Description</h2>
+<p>Dilates the image with the cvDilate OpenCV function.</p>
+<div class="refsect2">
+<a name="id-1.2.18.6.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> cvdilate <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.17.6.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.18.6.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -89,7 +104,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.17.6.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.18.6.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-cvequalizehist.html b/docs/plugins/html/gst-plugins-bad-plugins-cvequalizehist.html
index 46ddef6..cabaa3c 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-cvequalizehist.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-cvequalizehist.html
@@ -59,10 +59,26 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-cvequalizehist.description"></a><h2>Description</h2>
+<p>Equalizes the histogram of a grayscale image with the cvEqualizeHist OpenCV
+function.</p>
+<div class="refsect2">
+<a name="id-1.2.20.6.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc pattern<span class="gtkdoc opt">=</span><span class="number">23</span> <span class="gtkdoc opt">!</span> cvequalizehist <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.19.6.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.20.6.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -88,7 +104,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.19.6.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.20.6.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-cverode.html b/docs/plugins/html/gst-plugins-bad-plugins-cverode.html
index 90c28fb..b2fe282 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-cverode.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-cverode.html
@@ -60,10 +60,25 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-cverode.description"></a><h2>Description</h2>
+<p>Erodes the image with the cvErode OpenCV function.</p>
+<div class="refsect2">
+<a name="id-1.2.19.6.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> cverode <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.18.6.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.19.6.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -89,7 +104,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.18.6.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.19.6.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-cvlaplace.html b/docs/plugins/html/gst-plugins-bad-plugins-cvlaplace.html
index 692e54b..22d241c 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-cvlaplace.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-cvlaplace.html
@@ -92,10 +92,25 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-cvlaplace.description"></a><h2>Description</h2>
+<p>Applies cvLaplace OpenCV function to the image.</p>
+<div class="refsect2">
+<a name="id-1.2.21.7.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> cvlaplace <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.20.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.21.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -121,7 +136,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.20.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.21.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-cvsmooth.html b/docs/plugins/html/gst-plugins-bad-plugins-cvsmooth.html
index 1bea917..271f3ab 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-cvsmooth.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-cvsmooth.html
@@ -117,10 +117,25 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-cvsmooth.description"></a><h2>Description</h2>
+<p>Smooths the image using thes cvSmooth OpenCV function.</p>
+<div class="refsect2">
+<a name="id-1.2.22.7.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> cvsmooth <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.21.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.22.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -146,7 +161,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.21.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.22.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-cvsobel.html b/docs/plugins/html/gst-plugins-bad-plugins-cvsobel.html
index b1ad4da..b761de3 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-cvsobel.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-cvsobel.html
@@ -92,10 +92,25 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-cvsobel.description"></a><h2>Description</h2>
+<p>Applies the cvSobel OpenCV function to the image.</p>
+<div class="refsect2">
+<a name="id-1.2.23.7.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> cvsobel <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.22.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.23.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -121,7 +136,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.22.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.23.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dataurisrc.html b/docs/plugins/html/gst-plugins-bad-plugins-dataurisrc.html
index baa0ce1..2365ca4 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dataurisrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dataurisrc.html
@@ -83,7 +83,7 @@
 <a name="gst-plugins-bad-plugins-dataurisrc.description"></a><h2>Description</h2>
 <p>dataurisrc handles data: URIs, see <a class="ulink" href="http://tools.ietf.org/html/rfc2397" target="_top">RFC 2397</a> for more information.</p>
 <div class="refsect2">
-<a name="id-1.2.23.8.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.24.8.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -99,7 +99,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.23.8.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.24.8.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -125,7 +125,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.23.8.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.24.8.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-diffuse.html b/docs/plugins/html/gst-plugins-bad-plugins-diffuse.html
index 81a0a83..4713000 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-diffuse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-diffuse.html
@@ -78,7 +78,7 @@
 <p>Diffuse is a geometric image transform element. It diffuses the image by
 moving its pixels in random directions.</p>
 <div class="refsect2">
-<a name="id-1.2.24.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.25.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -94,7 +94,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.24.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.25.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -120,7 +120,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.24.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.25.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dilate.html b/docs/plugins/html/gst-plugins-bad-plugins-dilate.html
index 85a5b4d..6d8d482 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dilate.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dilate.html
@@ -83,7 +83,7 @@
 <a name="gst-plugins-bad-plugins-dilate.description"></a><h2>Description</h2>
 <p>Dilate adjusts the colors of a video stream in realtime.</p>
 <div class="refsect2">
-<a name="id-1.2.25.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.26.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -99,7 +99,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.25.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.26.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -125,7 +125,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.25.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.26.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dodge.html b/docs/plugins/html/gst-plugins-bad-plugins-dodge.html
index 21a0ec1..0b69182 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dodge.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dodge.html
@@ -76,7 +76,7 @@
 <a name="gst-plugins-bad-plugins-dodge.description"></a><h2>Description</h2>
 <p>Dodge saturates the colors of a video stream in realtime.</p>
 <div class="refsect2">
-<a name="id-1.2.26.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.27.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -92,7 +92,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.26.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.27.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -118,7 +118,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.26.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.27.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dtmfdetect.html b/docs/plugins/html/gst-plugins-bad-plugins-dtmfdetect.html
index 29c6103..f804dd8 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dtmfdetect.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dtmfdetect.html
@@ -28,7 +28,7 @@
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-dtmfdetect.top_of_page"></a>dtmfdetect</span></h2>
-<p>dtmfdetect</p>
+<p>dtmfdetect — Detects DTMF tones</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
@@ -57,10 +57,31 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-dtmfdetect.description"></a><h2>Description</h2>
+<p>This element will detect DTMF tones and emit messages.</p>
+<p>The message is called <code class="classname">"dtmf-event"</code> and has
+the following fields:</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+  gint <code class="classname">type</code> (0-1):
+  The application uses this field to specify which of the two methods
+  specified in RFC 2833 to use. The value should be 0 for tones and 1 for
+  named events. Tones are specified by their frequencies and events are
+  specfied by their number. This element can only take events as input.
+  Do not confuse with "method" which specified the output.
+  </p></li>
+<li class="listitem"><p>
+  gint <code class="classname">number</code> (0-16):
+  The event number.
+  </p></li>
+<li class="listitem"><p>
+  gint <code class="classname">method</code> (2):
+  This field will always been 2 (ie sound) from this element.
+  </p></li>
+</ul></div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.27.6.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.28.6.5.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -86,7 +107,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.27.6.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.28.6.5.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dtsdec.html b/docs/plugins/html/gst-plugins-bad-plugins-dtsdec.html
index 5924ce1..d67f234 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dtsdec.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dtsdec.html
@@ -73,10 +73,36 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-dtsdec.description"></a><h2>Description</h2>
+<p>Digital Theatre System (DTS) audio decoder</p>
+<div class="refsect2">
+<a name="id-1.2.29.7.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> dvdreadsrc title<span class="gtkdoc opt">=</span><span class="number">1</span> <span class="gtkdoc opt">!</span> mpegpsdemux <span class="gtkdoc opt">!</span> dtsdec <span class="gtkdoc opt">!</span> audioresample <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> alsasink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Play a DTS audio track from a dvd.
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> filesrc location<span class="gtkdoc opt">=</span>abc<span class="gtkdoc opt">.</span>dts <span class="gtkdoc opt">!</span> dtsdec <span class="gtkdoc opt">!</span> audioresample <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> alsasink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Decode a standalone file and play it.
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.28.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.29.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -102,7 +128,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.28.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.29.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dvbsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-dvbsrc.html
index d431f36..200f335 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dvbsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dvbsrc.html
@@ -366,10 +366,70 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-dvbsrc.description"></a><h2>Description</h2>
+<p>dvbsrc can be used to capture media from DVB cards. Supported DTV
+broadcasting standards include DVB-T/C/S, ATSC, ISDB-T and DTMB.</p>
+<div class="refsect2">
+<a name="id-1.2.30.8.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> dvbsrc modulation<span class="gtkdoc opt">=</span><span class="string">&quot;QAM 64&quot;</span> trans<span class="gtkdoc opt">-</span>mode<span class="gtkdoc opt">=</span><span class="number">8</span>k bandwidth<span class="gtkdoc opt">=</span><span class="number">8</span> frequency<span class="gtkdoc opt">=</span><span class="number">514000000</span> code<span class="gtkdoc opt">-</span>rate<span class="gtkdoc opt">-</span>lp<span class="gtkdoc opt">=</span>AUTO code<span class="gtkdoc opt">-</span>rate<span class="gtkdoc opt">-</span>hp<span class="gtkdoc opt">=</span><span class="number">2</span><span class="gtkdoc opt">/</span><span class="number">3</span> guard<span class="gtkdoc opt">=</span><span class="number">4</span>  hierarchy<span class="gtkdoc opt">=</span><span class="number">0</span> <span class="gtkdoc opt">!</span> mpegtsdemux name<span class="gtkdoc opt">=</span>demux <span class="gtkdoc opt">!</span> queue max<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">0</span> max<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>time<span class="gtkdoc opt">=</span><span class="number">0</span> <span class="gtkdoc opt">!</span> mpeg2dec <span class="gtkdoc opt">!</span> xvimagesink demux<span class="gtkdoc opt">. !</span> queue max<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">0</span> max<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>time<span class="gtkdoc opt">=</span><span class="number">0</span> <span class="gtkdoc opt">!</span> mad <span class="gtkdoc opt">!</span> alsasink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Captures a full transport stream from DVB card 0 that is a DVB-T card at tuned frequency 514000000 Hz with other parameters as seen in the pipeline and renders the first TV program on the transport stream.
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> dvbsrc modulation<span class="gtkdoc opt">=</span><span class="string">&quot;QAM 64&quot;</span> trans<span class="gtkdoc opt">-</span>mode<span class="gtkdoc opt">=</span><span class="number">8</span>k bandwidth<span class="gtkdoc opt">=</span><span class="number">8</span> frequency<span class="gtkdoc opt">=</span><span class="number">514000000</span> code<span class="gtkdoc opt">-</span>rate<span class="gtkdoc opt">-</span>lp<span class="gtkdoc opt">=</span>AUTO code<span class="gtkdoc opt">-</span>rate<span class="gtkdoc opt">-</span>hp<span class="gtkdoc opt">=</span><span class="number">2</span><span class="gtkdoc opt">/</span><span class="number">3</span> guard<span class="gtkdoc opt">=</span><span class="number">4</span>  hierarchy<span class="gtkdoc opt">=</span><span class="number">0</span> pids<span class="gtkdoc opt">=</span><span class="number">100</span><span class="gtkdoc opt">:</span><span class="number">256</span><span class="gtkdoc opt">:</span><span class="number">257</span> <span class="gtkdoc opt">!</span> mpegtsdemux name<span class="gtkdoc opt">=</span>demux <span class="gtkdoc opt">!</span> queue max<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">0</span> max<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>time<span class="gtkdoc opt">=</span><span class="number">0</span> <span class="gtkdoc opt">!</span> mpeg2dec <span class="gtkdoc opt">!</span> xvimagesink demux<span class="gtkdoc opt">. !</span> queue max<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">0</span> max<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>time<span class="gtkdoc opt">=</span><span class="number">0</span> <span class="gtkdoc opt">!</span> mad <span class="gtkdoc opt">!</span> alsasink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Captures and renders a transport stream from DVB card 0 that is a DVB-T card for a program at tuned frequency 514000000 Hz with PMT PID 100 and elementary stream PIDs of 256, 257 with other parameters as seen in the pipeline.
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> dvbsrc polarity<span class="gtkdoc opt">=</span><span class="string">&quot;h&quot;</span> frequency<span class="gtkdoc opt">=</span><span class="number">11302000</span> symbol<span class="gtkdoc opt">-</span>rate<span class="gtkdoc opt">=</span><span class="number">27500</span> diseqc<span class="gtkdoc opt">-</span>source<span class="gtkdoc opt">=</span><span class="number">0</span> pids<span class="gtkdoc opt">=</span><span class="number">50</span><span class="gtkdoc opt">:</span><span class="number">102</span><span class="gtkdoc opt">:</span><span class="number">103</span> <span class="gtkdoc opt">!</span> mpegtsdemux name<span class="gtkdoc opt">=</span>demux <span class="gtkdoc opt">!</span> queue max<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">0</span> max<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>time<span class="gtkdoc opt">=</span><span class="number">0</span> <span class="gtkdoc opt">!</span> mpeg2dec <span class="gtkdoc opt">!</span> xvimagesink demux<span class="gtkdoc opt">. !</span> queue max<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">0</span> max<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>time<span class="gtkdoc opt">=</span><span class="number">0</span> <span class="gtkdoc opt">!</span> mad <span class="gtkdoc opt">!</span> alsasink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Captures and renders a transport stream from DVB card 0 that is a DVB-S card for a program at tuned frequency 11302000 kHz, symbol rate of 27500 kBd (kilo bauds) with PMT PID of 50 and elementary stream PIDs of 102 and 103.
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> dvbsrc frequency<span class="gtkdoc opt">=</span><span class="number">515142857</span> guard<span class="gtkdoc opt">=</span><span class="number">16</span> trans<span class="gtkdoc opt">-</span>mode<span class="gtkdoc opt">=</span><span class="string">&quot;8k&quot;</span> isdbt<span class="gtkdoc opt">-</span>layer<span class="gtkdoc opt">-</span>enabled<span class="gtkdoc opt">=</span><span class="number">7</span> isdbt<span class="gtkdoc opt">-</span>partial<span class="gtkdoc opt">-</span>reception<span class="gtkdoc opt">=</span><span class="number">1</span> isdbt<span class="gtkdoc opt">-</span>layera<span class="gtkdoc opt">-</span>fec<span class="gtkdoc opt">=</span><span class="string">&quot;2/3&quot;</span> isdbt<span class="gtkdoc opt">-</span>layera<span class="gtkdoc opt">-</span>modulation<span class="gtkdoc opt">=</span><span class="string">&quot;QPSK&quot;</span> isdbt<span class="gtkdoc opt">-</span>layera<span class="gtkdoc opt">-</span>segment<span class="gtkdoc opt">-</span>count<span class="gtkdoc opt">=</span><span class="number">1</span> isdbt<span class="gtkdoc opt">-</span>layera<span class="gtkdoc opt">-</span>time<span class="gtkdoc opt">-</span>interleaving<span class="gtkdoc opt">=</span><span class="number">4</span> isdbt<span class="gtkdoc opt">-</span>layerb<span class="gtkdoc opt">-</span>fec<span class="gtkdoc opt">=</span><span class="string">&quot;3/4&quot;</span> isdbt<span class="gtkdoc opt">-</span>layerb<span class="gtkdoc opt">-</span>modulation<span class="gtkdoc opt">=</span><span class="string">&quot;qam-64&quot;</span> isdbt<span class="gtkdoc opt">-</span>layerb<span class="gtkdoc opt">-</span>segment<span class="gtkdoc opt">-</span>count<span class="gtkdoc opt">=</span><span class="number">12</span> isdbt<span class="gtkdoc opt">-</span>layerb<span class="gtkdoc opt">-</span>time<span class="gtkdoc opt">-</span>interleaving<span class="gtkdoc opt">=</span><span class="number">2</span> isdbt<span class="gtkdoc opt">-</span>layerc<span class="gtkdoc opt">-</span>fec<span class="gtkdoc opt">=</span><span class="string">&quot;1/2&quot;</span> isdbt<span class="gtkdoc opt">-</span>layerc<span class="gtkdoc opt">-</span>modulation<span class="gtkdoc opt">=</span><span class="string">&quot;qam-64&quot;</span> isdbt<span class="gtkdoc opt">-</span>layerc<span class="gtkdoc opt">-</span>segment<span class="gtkdoc opt">-</span>count<span class="gtkdoc opt">=</span><span class="number">0</span> isdbt<span class="gtkdoc opt">-</span>layerc<span class="gtkdoc opt">-</span>time<span class="gtkdoc opt">-</span>interleaving<span class="gtkdoc opt">=</span><span class="number">0</span> delsys<span class="gtkdoc opt">=</span><span class="string">&quot;isdb-t&quot;</span> <span class="gtkdoc opt">!</span> tsdemux <span class="gtkdoc opt">!</span> <span class="string">&quot;video/x-h264&quot;</span> <span class="gtkdoc opt">!</span> h264parse <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> avdec_h264 <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Captures and renders the video track of TV Paraíba HD (Globo affiliate) in Campina Grande, Brazil. This is an ISDB-T (Brazilian ISDB-Tb variant) broadcast.
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> dvbsrc frequency<span class="gtkdoc opt">=</span><span class="number">503000000</span> delsys<span class="gtkdoc opt">=</span><span class="string">&quot;atsc&quot;</span> modulation<span class="gtkdoc opt">=</span><span class="string">&quot;8vsb&quot;</span> pids<span class="gtkdoc opt">=</span><span class="number">48</span><span class="gtkdoc opt">:</span><span class="number">49</span><span class="gtkdoc opt">:</span><span class="number">52</span> <span class="gtkdoc opt">!</span> decodebin name<span class="gtkdoc opt">=</span>dec dec<span class="gtkdoc opt">. !</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink dec<span class="gtkdoc opt">. !</span> audioconvert <span class="gtkdoc opt">!</span> autoaudiosink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Captures and renders KOFY-HD in San Jose, California. This is an ATSC broadcast, PMT ID 48, Audio/Video elementary stream PIDs 49 and 52 respectively.
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.29.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.30.8.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -396,7 +456,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.29.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.30.8.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -440,7 +500,7 @@
 <div class="refsect2">
 <a name="GstDvbSrc--bandwidth-hz"></a><h3>The <code class="literal">“bandwidth-hz”</code> property</h3>
 <pre class="programlisting">  “bandwidth-hz”             <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
-<p>(DVB-T) Bandwidth in Hz.</p>
+<p>Channel bandwidth in Hz.</p>
 <p>Flags: Read / Write</p>
 <p>Default value: 8000000</p>
 </div>
@@ -530,7 +590,7 @@
 <div class="refsect2">
 <a name="GstDvbSrc--pids"></a><h3>The <code class="literal">“pids”</code> property</h3>
 <pre class="programlisting">  “pids”                     <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
-<p>Colon seperated list of pids (eg. 110:120).</p>
+<p>Colon-separated list of PIDs (eg. 110:120) to capture. ACT and CAT are automatically included but PMT should be added explicitly. Special value 8192 gets full MPEG-TS.</p>
 <p>Flags: Write</p>
 <p>Default value: "8192"</p>
 </div>
@@ -878,6 +938,29 @@
 <pre class="programlisting"><span class="returnvalue">void</span>
 user_function (<a class="link" href="gst-plugins-bad-plugins-dvbsrc.html#GstDvbSrc"><span class="type">GstDvbSrc</span></a> *gstdvbsrc,
                <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>   user_data)</pre>
+<p>Signal emited when the tunner has successfully got a lock on a signal.</p>
+<div class="refsect3">
+<a name="GstDvbSrc-tuning-done.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>gstdvbsrc</p></td>
+<td class="parameter_description"><p>the element on which the signal is emitted</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
 <p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
 </div>
 <hr>
@@ -886,6 +969,30 @@
 <pre class="programlisting"><span class="returnvalue">void</span>
 user_function (<a class="link" href="gst-plugins-bad-plugins-dvbsrc.html#GstDvbSrc"><span class="type">GstDvbSrc</span></a> *gstdvbsrc,
                <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>   user_data)</pre>
+<p>Signal emited when the tunner failed to get a lock on the
+signal.</p>
+<div class="refsect3">
+<a name="GstDvbSrc-tuning-fail.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>gstdvbsrc</p></td>
+<td class="parameter_description"><p>the element on which the signal is emitted</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
 <p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
 </div>
 <hr>
@@ -894,6 +1001,30 @@
 <pre class="programlisting"><span class="returnvalue">void</span>
 user_function (<a class="link" href="gst-plugins-bad-plugins-dvbsrc.html#GstDvbSrc"><span class="type">GstDvbSrc</span></a> *gstdvbsrc,
                <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>   user_data)</pre>
+<p>Signal emited when the element first attempts to tune the
+frontend tunner to a given frequency.</p>
+<div class="refsect3">
+<a name="GstDvbSrc-tuning-start.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>gstdvbsrc</p></td>
+<td class="parameter_description"><p>the element on which the signal is emitted</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
 <p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
 </div>
 <hr>
@@ -902,6 +1033,30 @@
 <pre class="programlisting"><span class="returnvalue">void</span>
 user_function (<a class="link" href="gst-plugins-bad-plugins-dvbsrc.html#GstDvbSrc"><span class="type">GstDvbSrc</span></a> *gstdvbsrc,
                <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>   user_data)</pre>
+<p>Signal emited from the application to the element, instructing it
+to tune.</p>
+<div class="refsect3">
+<a name="GstDvbSrc-tune.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>gstdvbsrc</p></td>
+<td class="parameter_description"><p>the element on which the signal is emitted</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
 <p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></p>
 </div>
 </div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dvdspu.html b/docs/plugins/html/gst-plugins-bad-plugins-dvdspu.html
index 3c2c75c..17629d0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dvdspu.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dvdspu.html
@@ -58,7 +58,7 @@
 <a name="gst-plugins-bad-plugins-dvdspu.description"></a><h2>Description</h2>
 <p>DVD sub picture overlay element.</p>
 <div class="refsect2">
-<a name="id-1.2.30.6.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.31.6.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -74,7 +74,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.30.6.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.31.6.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -100,7 +100,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.30.6.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.31.6.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-edgedetect.html b/docs/plugins/html/gst-plugins-bad-plugins-edgedetect.html
index 9e781a7..f105b6a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-edgedetect.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-edgedetect.html
@@ -15,7 +15,9 @@
 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
 <td width="100%" align="left" class="shortcuts">
 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
-                  <a href="#gst-plugins-bad-plugins-edgedetect.description" class="shortcut">Description</a></span>
+                  <a href="#gst-plugins-bad-plugins-edgedetect.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-edgedetect.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-edgedetect.properties" class="shortcut">Properties</a></span>
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -32,11 +34,83 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
+<a name="gst-plugins-bad-plugins-edgedetect.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-edgedetect.html#GstEdgeDetect--aperture" title="The “aperture” property">aperture</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-edgedetect.html#GstEdgeDetect--mask" title="The “mask” property">mask</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-edgedetect.html#GstEdgeDetect--threshold1" title="The “threshold1” property">threshold1</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-edgedetect.html#GstEdgeDetect--threshold2" title="The “threshold2” property">threshold2</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="GstEdgeDetect"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-edgedetect.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-edgedetect.html#GstEdgeDetect-struct" title="struct GstEdgeDetect">GstEdgeDetect</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-edgedetect.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideofilter.html#GstVideoFilter-struct">GstVideoFilter</a>
+                        <span class="lineart">╰──</span> GstOpencvVideoFilter
+                            <span class="lineart">╰──</span> GstEdgeDetect
+</pre>
+</div>
+<div class="refsect1">
 <a name="gst-plugins-bad-plugins-edgedetect.description"></a><h2>Description</h2>
+<p>Performs canny edge detection on videos and images</p>
+<div class="refsect2">
+<a name="id-1.2.33.7.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> decodebin <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> edgedetect <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> xvimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.32.3.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.33.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -62,7 +136,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.32.3.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.33.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -120,6 +194,47 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-edgedetect.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstEdgeDetect-struct"></a><h3>struct GstEdgeDetect</h3>
+<pre class="programlisting">struct GstEdgeDetect;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-edgedetect.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstEdgeDetect--aperture"></a><h3>The <code class="literal">“aperture”</code> property</h3>
+<pre class="programlisting">  “aperture”                 <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Aperture size for Sobel operator (Must be either 3, 5 or 7.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [3,7]</p>
+<p>Default value: 3</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstEdgeDetect--mask"></a><h3>The <code class="literal">“mask”</code> property</h3>
+<pre class="programlisting">  “mask”                     <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Sets whether the detected edges should be used as a mask on the original input or not.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstEdgeDetect--threshold1"></a><h3>The <code class="literal">“threshold1”</code> property</h3>
+<pre class="programlisting">  “threshold1”               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Threshold value for canny edge detection.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,1000]</p>
+<p>Default value: 50</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstEdgeDetect--threshold2"></a><h3>The <code class="literal">“threshold2”</code> property</h3>
+<pre class="programlisting">  “threshold2”               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Second threshold value for canny edge detection.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,1000]</p>
+<p>Default value: 150</p>
+</div>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-exclusion.html b/docs/plugins/html/gst-plugins-bad-plugins-exclusion.html
index 23fac6e..d34c0e9 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-exclusion.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-exclusion.html
@@ -83,7 +83,7 @@
 <a name="gst-plugins-bad-plugins-exclusion.description"></a><h2>Description</h2>
 <p>Exclusion saturates the colors of a video stream in realtime.</p>
 <div class="refsect2">
-<a name="id-1.2.31.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.32.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -99,7 +99,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.31.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.32.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -125,7 +125,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.31.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.32.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-faac.html b/docs/plugins/html/gst-plugins-bad-plugins-faac.html
index 7c1c563..082180e 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-faac.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-faac.html
@@ -117,10 +117,25 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-faac.description"></a><h2>Description</h2>
+<p>faac encodes raw audio to AAC (MPEG-4 part 3) streams.</p>
+<div class="refsect2">
+<a name="id-1.2.34.8.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> audiotestsrc wave<span class="gtkdoc opt">=</span>sine num<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">100</span> <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> faac <span class="gtkdoc opt">!</span> matroskamux <span class="gtkdoc opt">!</span> filesink location<span class="gtkdoc opt">=</span>sine<span class="gtkdoc opt">.</span>mkv</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Encode a sine beep as aac and write to matroska container.
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.33.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.34.8.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -146,7 +161,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.33.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.34.8.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -301,6 +316,10 @@
 <p>Default value: VBR</p>
 </div>
 </div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-faac.see-also"></a><h2>See Also</h2>
+<p>faad</p>
+</div>
 </div>
 <div class="footer">
 <hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-faad.html b/docs/plugins/html/gst-plugins-bad-plugins-faad.html
index cb2f509..b29896b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-faad.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-faad.html
@@ -57,10 +57,36 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-faad.description"></a><h2>Description</h2>
+<p>faad decodes AAC (MPEG-4 part 3) stream.</p>
+<div class="refsect2">
+<a name="id-1.2.35.6.3"></a><h3>Example launch lines</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> filesrc location<span class="gtkdoc opt">=</span>example<span class="gtkdoc opt">.</span>mp4 <span class="gtkdoc opt">!</span> qtdemux <span class="gtkdoc opt">!</span> faad <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> audioresample <span class="gtkdoc opt">!</span> autoaudiosink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Play aac from mp4 file.
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> filesrc location<span class="gtkdoc opt">=</span>example<span class="gtkdoc opt">.</span>adts <span class="gtkdoc opt">!</span> faad <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> audioresample <span class="gtkdoc opt">!</span> autoaudiosink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Play standalone aac bitstream.
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.34.6.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.35.6.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -86,7 +112,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.34.6.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.35.6.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-faceblur.html b/docs/plugins/html/gst-plugins-bad-plugins-faceblur.html
index 814a222..c51e369 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-faceblur.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-faceblur.html
@@ -15,7 +15,9 @@
 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
 <td width="100%" align="left" class="shortcuts">
 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
-                  <a href="#gst-plugins-bad-plugins-faceblur.description" class="shortcut">Description</a></span>
+                  <a href="#gst-plugins-bad-plugins-faceblur.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-faceblur.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-faceblur.properties" class="shortcut">Properties</a></span>
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -32,11 +34,94 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
+<a name="gst-plugins-bad-plugins-faceblur.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur--profile" title="The “profile” property">profile</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><span class="type">GstOpencvFaceBlurFlags</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur--flags" title="The “flags” property">flags</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur--min-neighbors" title="The “min-neighbors” property">min-neighbors</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur--min-size-height" title="The “min-size-height” property">min-size-height</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur--min-size-width" title="The “min-size-width” property">min-size-width</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur--scale-factor" title="The “scale-factor” property">scale-factor</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="GstFaceBlur"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-faceblur.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur-struct" title="struct GstFaceBlur">GstFaceBlur</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-faceblur.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideofilter.html#GstVideoFilter-struct">GstVideoFilter</a>
+                        <span class="lineart">╰──</span> GstOpencvVideoFilter
+                            <span class="lineart">╰──</span> GstFaceBlur
+</pre>
+</div>
+<div class="refsect1">
 <a name="gst-plugins-bad-plugins-faceblur.description"></a><h2>Description</h2>
+<p>Blurs faces in images and videos.</p>
+<div class="refsect2">
+<a name="id-1.2.36.7.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> autovideosrc <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> faceblur <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.35.3.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.36.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -62,7 +147,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.35.3.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.36.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -120,6 +205,64 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-faceblur.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstFaceBlur-struct"></a><h3>struct GstFaceBlur</h3>
+<pre class="programlisting">struct GstFaceBlur;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-faceblur.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstFaceBlur--profile"></a><h3>The <code class="literal">“profile”</code> property</h3>
+<pre class="programlisting">  “profile”                  <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Location of Haar cascade file to use for face blurion.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: "/usr/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml"</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceBlur--flags"></a><h3>The <code class="literal">“flags”</code> property</h3>
+<pre class="programlisting">  “flags”                    <span class="type">GstOpencvFaceBlurFlags</span></pre>
+<p>Flags to cvHaarDetectObjects.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: Do Canny edge detection to discard some regions</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceBlur--min-neighbors"></a><h3>The <code class="literal">“min-neighbors”</code> property</h3>
+<pre class="programlisting">  “min-neighbors”            <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Minimum number (minus 1) of neighbor rectangles that makes up an object.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &gt;= 0</p>
+<p>Default value: 3</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceBlur--min-size-height"></a><h3>The <code class="literal">“min-size-height”</code> property</h3>
+<pre class="programlisting">  “min-size-height”          <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Minimum window height size.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &gt;= 0</p>
+<p>Default value: 30</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceBlur--min-size-width"></a><h3>The <code class="literal">“min-size-width”</code> property</h3>
+<pre class="programlisting">  “min-size-width”           <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Minimum window width size.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &gt;= 0</p>
+<p>Default value: 30</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceBlur--scale-factor"></a><h3>The <code class="literal">“scale-factor”</code> property</h3>
+<pre class="programlisting">  “scale-factor”             <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>Factor by which the windows is scaled after each scan.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [1.1,10]</p>
+<p>Default value: 1.25</p>
+</div>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-facedetect.html b/docs/plugins/html/gst-plugins-bad-plugins-facedetect.html
index b997939..b2e77fa 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-facedetect.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-facedetect.html
@@ -15,7 +15,9 @@
 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
 <td width="100%" align="left" class="shortcuts">
 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
-                  <a href="#gst-plugins-bad-plugins-facedetect.description" class="shortcut">Description</a></span>
+                  <a href="#gst-plugins-bad-plugins-facedetect.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-facedetect.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-facedetect.properties" class="shortcut">Properties</a></span>
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -32,11 +34,149 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
+<a name="gst-plugins-bad-plugins-facedetect.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--display" title="The “display” property">display</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--eyes-profile" title="The “eyes-profile” property">eyes-profile</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><span class="type">GstOpencvFaceDetectFlags</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--flags" title="The “flags” property">flags</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--min-neighbors" title="The “min-neighbors” property">min-neighbors</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--min-size-height" title="The “min-size-height” property">min-size-height</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--min-size-width" title="The “min-size-width” property">min-size-width</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--mouth-profile" title="The “mouth-profile” property">mouth-profile</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--nose-profile" title="The “nose-profile” property">nose-profile</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--profile" title="The “profile” property">profile</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--scale-factor" title="The “scale-factor” property">scale-factor</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetectUpdates" title="enum GstFaceDetectUpdates"><span class="type">GstFaceDetectUpdates</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--updates" title="The “updates” property">updates</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--min-stddev" title="The “min-stddev” property">min-stddev</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="GstFaceDetect"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-facedetect.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect-struct" title="struct GstFaceDetect">GstFaceDetect</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetectUpdates" title="enum GstFaceDetectUpdates">GstFaceDetectUpdates</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-facedetect.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideofilter.html#GstVideoFilter-struct">GstVideoFilter</a>
+                        <span class="lineart">╰──</span> GstOpencvVideoFilter
+                            <span class="lineart">╰──</span> GstFaceDetect
+</pre>
+</div>
+<div class="refsect1">
 <a name="gst-plugins-bad-plugins-facedetect.description"></a><h2>Description</h2>
+<p>Performs face detection on videos and images.
+If you have high cpu load you need to use videoscale with capsfilter and reduce the video resolution.</p>
+<p>The image is scaled down multiple times using the GstFaceDetect::scale-factor
+until the size is &lt;= GstFaceDetect::min-size-width or
+GstFaceDetect::min-size-height.</p>
+<div class="refsect2">
+<a name="id-1.2.37.7.4"></a><h3>Example launch line</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> autovideosrc <span class="gtkdoc opt">!</span> decodebin <span class="gtkdoc opt">!</span> colorspace <span class="gtkdoc opt">!</span> facedetect <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> xvimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Detect and show faces
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> autovideosrc <span class="gtkdoc opt">!</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span>width<span class="gtkdoc opt">=</span><span class="number">320</span><span class="gtkdoc opt">,</span>height<span class="gtkdoc opt">=</span><span class="number">240</span> <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> facedetect min<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>width<span class="gtkdoc opt">=</span><span class="number">60</span> min<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>height<span class="gtkdoc opt">=</span><span class="number">60</span> <span class="gtkdoc opt">!</span> colorspace <span class="gtkdoc opt">!</span> xvimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Detect large faces on a smaller image
+
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.36.3.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.37.7.5.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -62,7 +202,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.36.3.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.37.7.5.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -120,6 +260,158 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-facedetect.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstFaceDetect-struct"></a><h3>struct GstFaceDetect</h3>
+<pre class="programlisting">struct GstFaceDetect;</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceDetectUpdates"></a><h3>enum GstFaceDetectUpdates</h3>
+<p>Bus messages update scheme</p>
+<div class="refsect3">
+<a name="GstFaceDetectUpdates.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-FACEDETECT-UPDATES-EVERY-FRAME:CAPS"></a>GST_FACEDETECT_UPDATES_EVERY_FRAME</p></td>
+<td class="enum_member_description">
+<p>Send bus update messages for every frame</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-FACEDETECT-UPDATES-ON-CHANGE:CAPS"></a>GST_FACEDETECT_UPDATES_ON_CHANGE</p></td>
+<td class="enum_member_description">
+<p>Send bus update messages on change (face detected/not detected)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-FACEDETECT-UPDATES-ON-FACE:CAPS"></a>GST_FACEDETECT_UPDATES_ON_FACE</p></td>
+<td class="enum_member_description">
+<p>Send bus update messages when a face is detected</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-FACEDETECT-UPDATES-NONE:CAPS"></a>GST_FACEDETECT_UPDATES_NONE</p></td>
+<td class="enum_member_description">
+<p>No bus update messages</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-facedetect.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstFaceDetect--display"></a><h3>The <code class="literal">“display”</code> property</h3>
+<pre class="programlisting">  “display”                  <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Sets whether the detected faces should be highlighted in the output.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceDetect--eyes-profile"></a><h3>The <code class="literal">“eyes-profile”</code> property</h3>
+<pre class="programlisting">  “eyes-profile”             <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Location of Haar cascade file to use for eye-pair detection.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: "/usr/share/OpenCV/haarcascades/haarcascade_mcs_eyepair_small.xml"</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceDetect--flags"></a><h3>The <code class="literal">“flags”</code> property</h3>
+<pre class="programlisting">  “flags”                    <span class="type">GstOpencvFaceDetectFlags</span></pre>
+<p>Flags to cvHaarDetectObjects.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: Do Canny edge detection to discard some regions</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceDetect--min-neighbors"></a><h3>The <code class="literal">“min-neighbors”</code> property</h3>
+<pre class="programlisting">  “min-neighbors”            <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Minimum number (minus 1) of neighbor rectangles that makes up an object.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &gt;= 0</p>
+<p>Default value: 3</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceDetect--min-size-height"></a><h3>The <code class="literal">“min-size-height”</code> property</h3>
+<pre class="programlisting">  “min-size-height”          <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Minimum area height to be recognized as a face.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &gt;= 0</p>
+<p>Default value: 30</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceDetect--min-size-width"></a><h3>The <code class="literal">“min-size-width”</code> property</h3>
+<pre class="programlisting">  “min-size-width”           <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Minimum area width to be recognized as a face.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &gt;= 0</p>
+<p>Default value: 30</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceDetect--mouth-profile"></a><h3>The <code class="literal">“mouth-profile”</code> property</h3>
+<pre class="programlisting">  “mouth-profile”            <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Location of Haar cascade file to use for mouth detection.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: "/usr/share/OpenCV/haarcascades/haarcascade_mcs_mouth.xml"</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceDetect--nose-profile"></a><h3>The <code class="literal">“nose-profile”</code> property</h3>
+<pre class="programlisting">  “nose-profile”             <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Location of Haar cascade file to use for nose detection.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: "/usr/share/OpenCV/haarcascades/haarcascade_mcs_nose.xml"</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceDetect--profile"></a><h3>The <code class="literal">“profile”</code> property</h3>
+<pre class="programlisting">  “profile”                  <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Location of Haar cascade file to use for face detection.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: "/usr/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml"</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceDetect--scale-factor"></a><h3>The <code class="literal">“scale-factor”</code> property</h3>
+<pre class="programlisting">  “scale-factor”             <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>Factor by which the frame is scaled after each object scan.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [1.1,10]</p>
+<p>Default value: 1.25</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceDetect--updates"></a><h3>The <code class="literal">“updates”</code> property</h3>
+<pre class="programlisting">  “updates”                  <a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetectUpdates" title="enum GstFaceDetectUpdates"><span class="type">GstFaceDetectUpdates</span></a></pre>
+<p>When send update bus messages, if at all.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: Send update messages on every frame</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceDetect--min-stddev"></a><h3>The <code class="literal">“min-stddev”</code> property</h3>
+<pre class="programlisting">  “min-stddev”               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Minimum image average standard deviation: on images with standard deviation lesser than this value facedetection will not be performed. Setting this property help to save cpu and reduce false positives not performing face detection on images with little changes.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,255]</p>
+<p>Default value: 0</p>
+</div>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-festival.html b/docs/plugins/html/gst-plugins-bad-plugins-festival.html
index 367e450..7c970e5 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-festival.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-festival.html
@@ -61,7 +61,7 @@
 in server mode, started as </p>
 <pre class="screen">festival --server</pre>
 <div class="refsect2">
-<a name="id-1.2.37.6.5"></a><h3>Example pipeline</h3>
+<a name="id-1.2.38.6.5"></a><h3>Example pipeline</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -77,7 +77,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.37.6.6.1"></a><h3>Element Information</h3>
+<a name="id-1.2.38.6.6.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -103,7 +103,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.37.6.6.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.38.6.6.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-fisheye.html b/docs/plugins/html/gst-plugins-bad-plugins-fisheye.html
index f6ed0e8..2de95f9 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-fisheye.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-fisheye.html
@@ -62,7 +62,7 @@
 <p>Fisheye is a geometric image transform element. It simulates a fisheye lens
 by zooming on the center of the image and compressing the edges.</p>
 <div class="refsect2">
-<a name="id-1.2.38.6.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.39.6.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -78,7 +78,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.38.6.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.39.6.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -104,7 +104,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.38.6.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.39.6.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-fpsdisplaysink.html b/docs/plugins/html/gst-plugins-bad-plugins-fpsdisplaysink.html
index 0955f02..68b482a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-fpsdisplaysink.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-fpsdisplaysink.html
@@ -152,7 +152,7 @@
 <a name="gst-plugins-bad-plugins-fpsdisplaysink.description"></a><h2>Description</h2>
 <p>Can display the current and average framerate as a testoverlay or on stdout.</p>
 <div class="refsect2">
-<a name="id-1.2.39.9.3"></a><h3>Example launch lines</h3>
+<a name="id-1.2.40.9.3"></a><h3>Example launch lines</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -174,7 +174,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.39.9.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.40.9.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -200,7 +200,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.39.9.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.40.9.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gaussianblur.html b/docs/plugins/html/gst-plugins-bad-plugins-gaussianblur.html
index da74357..e56bb7c 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-gaussianblur.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gaussianblur.html
@@ -7,7 +7,7 @@
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-fpsdisplaysink.html" title="fpsdisplaysink">
-<link rel="next" href="gst-plugins-bad-plugins-jpegparse.html" title="jpegparse">
+<link rel="next" href="gst-plugins-bad-plugins-glcolorbalance.html" title="glcolorbalance">
 <meta name="generator" content="GTK-Doc V1.25 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -15,12 +15,14 @@
 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
 <td width="100%" align="left" class="shortcuts">
 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
-                  <a href="#gst-plugins-bad-plugins-gaussianblur.description" class="shortcut">Description</a></span>
+                  <a href="#gst-plugins-bad-plugins-gaussianblur.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gaussianblur.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gaussianblur.properties" class="shortcut">Properties</a></span>
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="gst-plugins-bad-plugins-fpsdisplaysink.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-bad-plugins-jpegparse.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-glcolorbalance.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="gst-plugins-bad-plugins-gaussianblur"></a><div class="titlepage"></div>
@@ -32,10 +34,49 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
+<a name="gst-plugins-bad-plugins-gaussianblur.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody><tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gaussianblur.html#GstGaussianBlur--sigma" title="The “sigma” property">sigma</a></td>
+<td class="property_flags">Read / Write</td>
+</tr></tbody>
+</table></div>
+</div>
+<a name="GstGaussianBlur"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-gaussianblur.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-gaussianblur.html#GstGaussianBlur-struct" title="struct GstGaussianBlur">GstGaussianBlur</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gaussianblur.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideofilter.html#GstVideoFilter-struct">GstVideoFilter</a>
+                        <span class="lineart">╰──</span> GstGaussianBlur
+</pre>
+</div>
+<div class="refsect1">
 <a name="gst-plugins-bad-plugins-gaussianblur.description"></a><h2>Description</h2>
 <p>Gaussianblur blurs the video stream in realtime.</p>
 <div class="refsect2">
-<a name="id-1.2.40.3.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.41.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -51,7 +92,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.40.3.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.41.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -77,7 +118,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.40.3.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.41.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -135,6 +176,21 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-gaussianblur.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGaussianBlur-struct"></a><h3>struct GstGaussianBlur</h3>
+<pre class="programlisting">struct GstGaussianBlur;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gaussianblur.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstGaussianBlur--sigma"></a><h3>The <code class="literal">“sigma”</code> property</h3>
+<pre class="programlisting">  “sigma”                    <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>Sigma value for gaussian blur (negative for sharpen).</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [-20,20]</p>
+<p>Default value: 1.2</p>
+</div>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-glcolorbalance.html b/docs/plugins/html/gst-plugins-bad-plugins-glcolorbalance.html
new file mode 100644
index 0000000..39f9b61
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-glcolorbalance.html
@@ -0,0 +1,261 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>glcolorbalance: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gaussianblur.html" title="gaussianblur">
+<link rel="next" href="gst-plugins-bad-plugins-glcolorconvert.html" title="glcolorconvert">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glcolorbalance.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glcolorbalance.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glcolorbalance.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glcolorbalance.properties" class="shortcut">Properties</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gaussianblur.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-glcolorconvert.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-glcolorbalance"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-glcolorbalance.top_of_page"></a>glcolorbalance</span></h2>
+<p>glcolorbalance</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glcolorbalance.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glcolorbalance.html#GstGLColorBalance--brightness" title="The “brightness” property">brightness</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glcolorbalance.html#GstGLColorBalance--contrast" title="The “contrast” property">contrast</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glcolorbalance.html#GstGLColorBalance--hue" title="The “hue” property">hue</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glcolorbalance.html#GstGLColorBalance--saturation" title="The “saturation” property">saturation</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="GstGLColorBalance"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-glcolorbalance.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-glcolorbalance.html#GstGLColorBalance-struct" title="struct GstGLColorBalance">GstGLColorBalance</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glcolorbalance.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLBaseFilter.html#GstGLBaseFilter-struct">GstGLBaseFilter</a>
+                        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLFilter.html#GstGLFilter-struct">GstGLFilter</a>
+                            <span class="lineart">╰──</span> GstGLColorBalance
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glcolorbalance.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstGLColorBalance implements
+ <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstcolorbalance.html#GstColorBalance-struct">GstColorBalance</a>.</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glcolorbalance.description"></a><h2>Description</h2>
+<p>Adjusts brightness, contrast, hue, saturation on a video stream.</p>
+<div class="refsect2">
+<a name="id-1.2.42.8.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> glupload <span class="gtkdoc opt">!</span> glcolorbalance saturation<span class="gtkdoc opt">=</span><span class="number">0.0</span> <span class="gtkdoc opt">!</span> glcolorconvert <span class="gtkdoc opt">!</span> gldownload <span class="gtkdoc opt">!</span> ximagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ This pipeline converts the image to black and white by setting the
+saturation to 0.0.
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.42.8.4.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Matthew Waters &lt;matthew@centricular.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.42.8.4.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glcolorbalance.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glcolorbalance.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLColorBalance-struct"></a><h3>struct GstGLColorBalance</h3>
+<pre class="programlisting">struct GstGLColorBalance;</pre>
+<p>Opaque data structure.</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glcolorbalance.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstGLColorBalance--brightness"></a><h3>The <code class="literal">“brightness”</code> property</h3>
+<pre class="programlisting">  “brightness”               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>brightness.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [-1,1]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLColorBalance--contrast"></a><h3>The <code class="literal">“contrast”</code> property</h3>
+<pre class="programlisting">  “contrast”                 <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>contrast.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,2]</p>
+<p>Default value: 1</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLColorBalance--hue"></a><h3>The <code class="literal">“hue”</code> property</h3>
+<pre class="programlisting">  “hue”                      <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>hue.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [-1,1]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLColorBalance--saturation"></a><h3>The <code class="literal">“saturation”</code> property</h3>
+<pre class="programlisting">  “saturation”               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>saturation.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,2]</p>
+<p>Default value: 1</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-glcolorconvert.html b/docs/plugins/html/gst-plugins-bad-plugins-glcolorconvert.html
new file mode 100644
index 0000000..5734d16
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-glcolorconvert.html
@@ -0,0 +1,165 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>glcolorconvert: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-glcolorbalance.html" title="glcolorbalance">
+<link rel="next" href="gst-plugins-bad-plugins-glcolorscale.html" title="glcolorscale">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glcolorconvert.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glcolorconvert.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-glcolorbalance.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-glcolorscale.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-glcolorconvert"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-glcolorconvert.top_of_page"></a>glcolorconvert</span></h2>
+<p>glcolorconvert</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<a name="GstGLColorConvertElement"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-glcolorconvert.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-glcolorconvert.html#GstGLColorConvertElement-struct" title="struct GstGLColorConvertElement">GstGLColorConvertElement</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glcolorconvert.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLBaseFilter.html#GstGLBaseFilter-struct">GstGLBaseFilter</a>
+                        <span class="lineart">╰──</span> GstGLColorConvertElement
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glcolorconvert.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.43.6.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Matthew Waters &lt;matthew@centricular.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Converter/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.43.6.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string){ RGBA, RGB, RGBx, BGR, BGRx, BGRA, xRGB, xBGR, ARGB, ABGR, Y444, I420, YV12, Y42B, Y41B, NV12, NV21, YUY2, UYVY, AYUV, GRAY8, GRAY16_LE, GRAY16_BE, RGB16, BGR16 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string){ 2D, rectangle, external-oes }</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, RGB, RGBx, BGR, BGRx, BGRA, xRGB, xBGR, ARGB, ABGR, Y444, I420, YV12, Y42B, Y41B, NV12, NV21, YUY2, UYVY, AYUV, GRAY8, GRAY16_LE, GRAY16_BE, RGB16, BGR16 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string){ 2D, rectangle, external-oes }</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string){ RGBA, RGB, RGBx, BGR, BGRx, BGRA, xRGB, xBGR, ARGB, ABGR, Y444, I420, YV12, Y42B, Y41B, NV12, NV21, YUY2, UYVY, AYUV, GRAY8, GRAY16_LE, GRAY16_BE, RGB16, BGR16 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string){ 2D, rectangle, external-oes }</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, RGB, RGBx, BGR, BGRx, BGRA, xRGB, xBGR, ARGB, ABGR, Y444, I420, YV12, Y42B, Y41B, NV12, NV21, YUY2, UYVY, AYUV, GRAY8, GRAY16_LE, GRAY16_BE, RGB16, BGR16 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string){ 2D, rectangle, external-oes }</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glcolorconvert.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glcolorconvert.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLColorConvertElement-struct"></a><h3>struct GstGLColorConvertElement</h3>
+<pre class="programlisting">struct GstGLColorConvertElement;</pre>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-glcolorscale.html b/docs/plugins/html/gst-plugins-bad-plugins-glcolorscale.html
new file mode 100644
index 0000000..8de053d
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-glcolorscale.html
@@ -0,0 +1,204 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>glcolorscale: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-glcolorconvert.html" title="glcolorconvert">
+<link rel="next" href="gst-plugins-bad-plugins-gldeinterlace.html" title="gldeinterlace">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glcolorscale.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glcolorscale.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-glcolorconvert.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gldeinterlace.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-glcolorscale"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-glcolorscale.top_of_page"></a>glcolorscale</span></h2>
+<p>glcolorscale</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<a name="GstGLColorscale"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-glcolorscale.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-glcolorscale.html#GstGLColorscale-struct" title="struct GstGLColorscale">GstGLColorscale</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glcolorscale.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLBaseFilter.html#GstGLBaseFilter-struct">GstGLBaseFilter</a>
+                        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLFilter.html#GstGLFilter-struct">GstGLFilter</a>
+                            <span class="lineart">╰──</span> GstGLColorscale
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glcolorscale.description"></a><h2>Description</h2>
+<p>video frame scaling and colorspace conversion.</p>
+<div class="refsect2">
+<a name="id-1.2.44.6.3"></a><h3>Scaling and Color space conversion</h3>
+<p>
+Equivalent to glupload ! gldownload.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.44.6.4"></a><h3>Examples</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v videotestsrc <span class="gtkdoc opt">!</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw <span class="gtkdoc opt">!</span> glcolorscale <span class="gtkdoc opt">!</span> ximagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ A pipeline to test colorspace conversion.
+FBO is required.
+  <div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1
+2</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v videotestsrc <span class="gtkdoc opt">!</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span> width<span class="gtkdoc opt">=</span><span class="number">640</span><span class="gtkdoc opt">,</span> height<span class="gtkdoc opt">=</span><span class="number">480</span><span class="gtkdoc opt">,</span> format<span class="gtkdoc opt">=</span>AYUV <span class="gtkdoc opt">!</span> glcolorscale <span class="gtkdoc opt">!</span> \
+  video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span> width<span class="gtkdoc opt">=</span><span class="number">320</span><span class="gtkdoc opt">,</span> height<span class="gtkdoc opt">=</span><span class="number">240</span><span class="gtkdoc opt">,</span> format<span class="gtkdoc opt">=</span>YV12 <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ A pipeline to test hardware scaling and colorspace conversion.
+FBO and GLSL are required.
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.44.6.5.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Julien Isorce &lt;julien.isorce@gmail.com&gt;
+Matthew Waters &lt;matthew@centricular.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.44.6.5.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glcolorscale.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glcolorscale.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLColorscale-struct"></a><h3>struct GstGLColorscale</h3>
+<pre class="programlisting">struct GstGLColorscale;</pre>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gldeinterlace.html b/docs/plugins/html/gst-plugins-bad-plugins-gldeinterlace.html
new file mode 100644
index 0000000..6ef5cd8
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gldeinterlace.html
@@ -0,0 +1,192 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gldeinterlace: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-glcolorscale.html" title="glcolorscale">
+<link rel="next" href="gst-plugins-bad-plugins-gldifferencematte.html" title="gldifferencematte">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gldeinterlace.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gldeinterlace.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gldeinterlace.properties" class="shortcut">Properties</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-glcolorscale.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gldifferencematte.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gldeinterlace"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gldeinterlace.top_of_page"></a>gldeinterlace</span></h2>
+<p>gldeinterlace</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gldeinterlace.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody><tr>
+<td class="property_type"><span class="type">GstGLDeinterlaceMethod</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gldeinterlace.html#GstGLDeinterlace--method" title="The “method” property">method</a></td>
+<td class="property_flags">Read / Write</td>
+</tr></tbody>
+</table></div>
+</div>
+<a name="GstGLDeinterlace"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-gldeinterlace.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-gldeinterlace.html#GstGLDeinterlace-struct" title="struct GstGLDeinterlace">GstGLDeinterlace</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gldeinterlace.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLBaseFilter.html#GstGLBaseFilter-struct">GstGLBaseFilter</a>
+                        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLFilter.html#GstGLFilter-struct">GstGLFilter</a>
+                            <span class="lineart">╰──</span> GstGLDeinterlace
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gldeinterlace.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.45.7.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Julien Isorce &lt;julien.isorce@mail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Deinterlace</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.45.7.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gldeinterlace.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gldeinterlace.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLDeinterlace-struct"></a><h3>struct GstGLDeinterlace</h3>
+<pre class="programlisting">struct GstGLDeinterlace;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gldeinterlace.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstGLDeinterlace--method"></a><h3>The <code class="literal">“method”</code> property</h3>
+<pre class="programlisting">  “method”                   <span class="type">GstGLDeinterlaceMethod</span></pre>
+<p>Select which deinterlace method apply to GL video texture.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: Blur Vertical</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gldifferencematte.html b/docs/plugins/html/gst-plugins-bad-plugins-gldifferencematte.html
new file mode 100644
index 0000000..b07fa82
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gldifferencematte.html
@@ -0,0 +1,193 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gldifferencematte: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gldeinterlace.html" title="gldeinterlace">
+<link rel="next" href="gst-plugins-bad-plugins-gldownload.html" title="gldownload">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gldifferencematte.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gldifferencematte.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gldifferencematte.properties" class="shortcut">Properties</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gldeinterlace.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gldownload.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gldifferencematte"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gldifferencematte.top_of_page"></a>gldifferencematte</span></h2>
+<p>gldifferencematte</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gldifferencematte.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody><tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gldifferencematte.html#GstGLDifferenceMatte--location" title="The “location” property">location</a></td>
+<td class="property_flags">Read / Write</td>
+</tr></tbody>
+</table></div>
+</div>
+<a name="GstGLDifferenceMatte"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-gldifferencematte.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-gldifferencematte.html#GstGLDifferenceMatte-struct" title="struct GstGLDifferenceMatte">GstGLDifferenceMatte</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gldifferencematte.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLBaseFilter.html#GstGLBaseFilter-struct">GstGLBaseFilter</a>
+                        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLFilter.html#GstGLFilter-struct">GstGLFilter</a>
+                            <span class="lineart">╰──</span> GstGLDifferenceMatte
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gldifferencematte.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.46.7.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Filippo Argiolas &lt;filippo.argiolas@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.46.7.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gldifferencematte.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gldifferencematte.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLDifferenceMatte-struct"></a><h3>struct GstGLDifferenceMatte</h3>
+<pre class="programlisting">struct GstGLDifferenceMatte;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gldifferencematte.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstGLDifferenceMatte--location"></a><h3>The <code class="literal">“location”</code> property</h3>
+<pre class="programlisting">  “location”                 <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Background image location.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: NULL</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gldownload.html b/docs/plugins/html/gst-plugins-bad-plugins-gldownload.html
new file mode 100644
index 0000000..56f2e65
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gldownload.html
@@ -0,0 +1,165 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gldownload: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gldifferencematte.html" title="gldifferencematte">
+<link rel="next" href="gst-plugins-bad-plugins-gleffects-blur.html" title="gleffects_blur">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gldownload.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gldownload.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gldifferencematte.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gleffects-blur.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gldownload"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gldownload.top_of_page"></a>gldownload</span></h2>
+<p>gldownload</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<a name="GstGLDownloadElement"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-gldownload.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-gldownload.html#GstGLDownloadElement-struct" title="struct GstGLDownloadElement">GstGLDownloadElement</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gldownload.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLBaseFilter.html#GstGLBaseFilter-struct">GstGLBaseFilter</a>
+                        <span class="lineart">╰──</span> GstGLDownloadElement
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gldownload.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.47.6.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Matthew Waters &lt;matthew@centricular.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.47.6.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory)</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory)</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gldownload.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gldownload.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLDownloadElement-struct"></a><h3>struct GstGLDownloadElement</h3>
+<pre class="programlisting">struct GstGLDownloadElement;</pre>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gleffects-blur.html b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-blur.html
new file mode 100644
index 0000000..0ed343a
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-blur.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gleffects_blur: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gldownload.html" title="gldownload">
+<link rel="next" href="gst-plugins-bad-plugins-gleffects-bulge.html" title="gleffects_bulge">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gleffects-blur.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gldownload.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gleffects-bulge.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gleffects-blur"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gleffects-blur.top_of_page"></a>gleffects_blur</span></h2>
+<p>gleffects_blur</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-blur.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.48.3.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Filippo Argiolas &lt;filippo.argiolas@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.48.3.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-blur.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-blur.other_details"></a><h2>Types and Values</h2>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gleffects-bulge.html b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-bulge.html
new file mode 100644
index 0000000..4ff2f7a
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-bulge.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gleffects_bulge: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gleffects-blur.html" title="gleffects_blur">
+<link rel="next" href="gst-plugins-bad-plugins-gleffects-fisheye.html" title="gleffects_fisheye">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gleffects-bulge.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gleffects-blur.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gleffects-fisheye.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gleffects-bulge"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gleffects-bulge.top_of_page"></a>gleffects_bulge</span></h2>
+<p>gleffects_bulge</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-bulge.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.49.3.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Filippo Argiolas &lt;filippo.argiolas@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.49.3.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-bulge.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-bulge.other_details"></a><h2>Types and Values</h2>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gleffects-fisheye.html b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-fisheye.html
new file mode 100644
index 0000000..e586924
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-fisheye.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gleffects_fisheye: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gleffects-bulge.html" title="gleffects_bulge">
+<link rel="next" href="gst-plugins-bad-plugins-gleffects-glow.html" title="gleffects_glow">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gleffects-fisheye.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gleffects-bulge.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gleffects-glow.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gleffects-fisheye"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gleffects-fisheye.top_of_page"></a>gleffects_fisheye</span></h2>
+<p>gleffects_fisheye</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-fisheye.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.50.3.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Filippo Argiolas &lt;filippo.argiolas@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.50.3.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-fisheye.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-fisheye.other_details"></a><h2>Types and Values</h2>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gleffects-glow.html b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-glow.html
new file mode 100644
index 0000000..1101a65
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-glow.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gleffects_glow: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gleffects-fisheye.html" title="gleffects_fisheye">
+<link rel="next" href="gst-plugins-bad-plugins-gleffects-heat.html" title="gleffects_heat">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gleffects-glow.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gleffects-fisheye.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gleffects-heat.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gleffects-glow"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gleffects-glow.top_of_page"></a>gleffects_glow</span></h2>
+<p>gleffects_glow</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-glow.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.51.3.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Filippo Argiolas &lt;filippo.argiolas@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.51.3.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-glow.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-glow.other_details"></a><h2>Types and Values</h2>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gleffects-heat.html b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-heat.html
new file mode 100644
index 0000000..9028b1e
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-heat.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gleffects_heat: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gleffects-glow.html" title="gleffects_glow">
+<link rel="next" href="gst-plugins-bad-plugins-gleffects-identity.html" title="gleffects_identity">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gleffects-heat.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gleffects-glow.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gleffects-identity.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gleffects-heat"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gleffects-heat.top_of_page"></a>gleffects_heat</span></h2>
+<p>gleffects_heat</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-heat.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.52.3.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Filippo Argiolas &lt;filippo.argiolas@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.52.3.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-heat.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-heat.other_details"></a><h2>Types and Values</h2>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gleffects-identity.html b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-identity.html
new file mode 100644
index 0000000..2996e5f
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-identity.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gleffects_identity: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gleffects-heat.html" title="gleffects_heat">
+<link rel="next" href="gst-plugins-bad-plugins-gleffects-laplacian.html" title="gleffects_laplacian">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gleffects-identity.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gleffects-heat.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gleffects-laplacian.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gleffects-identity"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gleffects-identity.top_of_page"></a>gleffects_identity</span></h2>
+<p>gleffects_identity</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-identity.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.53.3.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Filippo Argiolas &lt;filippo.argiolas@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.53.3.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-identity.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-identity.other_details"></a><h2>Types and Values</h2>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gleffects-laplacian.html b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-laplacian.html
new file mode 100644
index 0000000..27ee98a
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-laplacian.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gleffects_laplacian: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gleffects-identity.html" title="gleffects_identity">
+<link rel="next" href="gst-plugins-bad-plugins-gleffects-lumaxpro.html" title="gleffects_lumaxpro">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gleffects-laplacian.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gleffects-identity.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gleffects-lumaxpro.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gleffects-laplacian"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gleffects-laplacian.top_of_page"></a>gleffects_laplacian</span></h2>
+<p>gleffects_laplacian</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-laplacian.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.54.3.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Filippo Argiolas &lt;filippo.argiolas@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.54.3.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-laplacian.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-laplacian.other_details"></a><h2>Types and Values</h2>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gleffects-lumaxpro.html b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-lumaxpro.html
new file mode 100644
index 0000000..c9d4d29
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-lumaxpro.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gleffects_lumaxpro: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gleffects-laplacian.html" title="gleffects_laplacian">
+<link rel="next" href="gst-plugins-bad-plugins-gleffects-mirror.html" title="gleffects_mirror">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gleffects-lumaxpro.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gleffects-laplacian.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gleffects-mirror.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gleffects-lumaxpro"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gleffects-lumaxpro.top_of_page"></a>gleffects_lumaxpro</span></h2>
+<p>gleffects_lumaxpro</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-lumaxpro.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.55.3.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Filippo Argiolas &lt;filippo.argiolas@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.55.3.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-lumaxpro.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-lumaxpro.other_details"></a><h2>Types and Values</h2>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gleffects-mirror.html b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-mirror.html
new file mode 100644
index 0000000..a77116b
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-mirror.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gleffects_mirror: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gleffects-lumaxpro.html" title="gleffects_lumaxpro">
+<link rel="next" href="gst-plugins-bad-plugins-gleffects-sepia.html" title="gleffects_sepia">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gleffects-mirror.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gleffects-lumaxpro.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gleffects-sepia.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gleffects-mirror"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gleffects-mirror.top_of_page"></a>gleffects_mirror</span></h2>
+<p>gleffects_mirror</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-mirror.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.56.3.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Filippo Argiolas &lt;filippo.argiolas@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.56.3.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-mirror.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-mirror.other_details"></a><h2>Types and Values</h2>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gleffects-sepia.html b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-sepia.html
new file mode 100644
index 0000000..5ada4f9
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-sepia.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gleffects_sepia: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gleffects-mirror.html" title="gleffects_mirror">
+<link rel="next" href="gst-plugins-bad-plugins-gleffects-sin.html" title="gleffects_sin">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gleffects-sepia.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gleffects-mirror.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gleffects-sin.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gleffects-sepia"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gleffects-sepia.top_of_page"></a>gleffects_sepia</span></h2>
+<p>gleffects_sepia</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-sepia.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.57.3.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Filippo Argiolas &lt;filippo.argiolas@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.57.3.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-sepia.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-sepia.other_details"></a><h2>Types and Values</h2>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gleffects-sin.html b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-sin.html
new file mode 100644
index 0000000..5fd68f9
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-sin.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gleffects_sin: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gleffects-sepia.html" title="gleffects_sepia">
+<link rel="next" href="gst-plugins-bad-plugins-gleffects-sobel.html" title="gleffects_sobel">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gleffects-sin.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gleffects-sepia.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gleffects-sobel.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gleffects-sin"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gleffects-sin.top_of_page"></a>gleffects_sin</span></h2>
+<p>gleffects_sin</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-sin.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.58.3.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Filippo Argiolas &lt;filippo.argiolas@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.58.3.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-sin.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-sin.other_details"></a><h2>Types and Values</h2>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gleffects-sobel.html b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-sobel.html
new file mode 100644
index 0000000..796814c
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-sobel.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gleffects_sobel: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gleffects-sin.html" title="gleffects_sin">
+<link rel="next" href="gst-plugins-bad-plugins-gleffects-square.html" title="gleffects_square">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gleffects-sobel.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gleffects-sin.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gleffects-square.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gleffects-sobel"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gleffects-sobel.top_of_page"></a>gleffects_sobel</span></h2>
+<p>gleffects_sobel</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-sobel.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.59.3.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Filippo Argiolas &lt;filippo.argiolas@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.59.3.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-sobel.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-sobel.other_details"></a><h2>Types and Values</h2>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gleffects-square.html b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-square.html
new file mode 100644
index 0000000..e7c9315
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-square.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gleffects_square: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gleffects-sobel.html" title="gleffects_sobel">
+<link rel="next" href="gst-plugins-bad-plugins-gleffects-squeeze.html" title="gleffects_squeeze">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gleffects-square.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gleffects-sobel.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gleffects-squeeze.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gleffects-square"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gleffects-square.top_of_page"></a>gleffects_square</span></h2>
+<p>gleffects_square</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-square.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.60.3.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Filippo Argiolas &lt;filippo.argiolas@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.60.3.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-square.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-square.other_details"></a><h2>Types and Values</h2>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gleffects-squeeze.html b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-squeeze.html
new file mode 100644
index 0000000..b12ba9d
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-squeeze.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gleffects_squeeze: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gleffects-square.html" title="gleffects_square">
+<link rel="next" href="gst-plugins-bad-plugins-gleffects-stretch.html" title="gleffects_stretch">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gleffects-squeeze.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gleffects-square.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gleffects-stretch.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gleffects-squeeze"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gleffects-squeeze.top_of_page"></a>gleffects_squeeze</span></h2>
+<p>gleffects_squeeze</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-squeeze.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.61.3.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Filippo Argiolas &lt;filippo.argiolas@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.61.3.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-squeeze.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-squeeze.other_details"></a><h2>Types and Values</h2>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gleffects-stretch.html b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-stretch.html
new file mode 100644
index 0000000..95c6e4f
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-stretch.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gleffects_stretch: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gleffects-squeeze.html" title="gleffects_squeeze">
+<link rel="next" href="gst-plugins-bad-plugins-gleffects-tunnel.html" title="gleffects_tunnel">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gleffects-stretch.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gleffects-squeeze.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gleffects-tunnel.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gleffects-stretch"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gleffects-stretch.top_of_page"></a>gleffects_stretch</span></h2>
+<p>gleffects_stretch</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-stretch.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.62.3.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Filippo Argiolas &lt;filippo.argiolas@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.62.3.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-stretch.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-stretch.other_details"></a><h2>Types and Values</h2>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gleffects-tunnel.html b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-tunnel.html
new file mode 100644
index 0000000..2141769
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-tunnel.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gleffects_tunnel: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gleffects-stretch.html" title="gleffects_stretch">
+<link rel="next" href="gst-plugins-bad-plugins-gleffects-twirl.html" title="gleffects_twirl">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gleffects-tunnel.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gleffects-stretch.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gleffects-twirl.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gleffects-tunnel"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gleffects-tunnel.top_of_page"></a>gleffects_tunnel</span></h2>
+<p>gleffects_tunnel</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-tunnel.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.63.3.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Filippo Argiolas &lt;filippo.argiolas@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.63.3.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-tunnel.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-tunnel.other_details"></a><h2>Types and Values</h2>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gleffects-twirl.html b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-twirl.html
new file mode 100644
index 0000000..5750612
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-twirl.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gleffects_twirl: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gleffects-tunnel.html" title="gleffects_tunnel">
+<link rel="next" href="gst-plugins-bad-plugins-gleffects.html" title="gleffects">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gleffects-twirl.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gleffects-tunnel.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gleffects.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gleffects-twirl"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gleffects-twirl.top_of_page"></a>gleffects_twirl</span></h2>
+<p>gleffects_twirl</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-twirl.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.64.3.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Filippo Argiolas &lt;filippo.argiolas@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.64.3.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-twirl.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-twirl.other_details"></a><h2>Types and Values</h2>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gleffects-xpro.html b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-xpro.html
new file mode 100644
index 0000000..ac5b6ab
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-xpro.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gleffects_xpro: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gleffects.html" title="gleffects">
+<link rel="next" href="gst-plugins-bad-plugins-gleffects-xray.html" title="gleffects_xray">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gleffects-xpro.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gleffects.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gleffects-xray.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gleffects-xpro"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gleffects-xpro.top_of_page"></a>gleffects_xpro</span></h2>
+<p>gleffects_xpro</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-xpro.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.66.3.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Filippo Argiolas &lt;filippo.argiolas@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.66.3.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-xpro.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-xpro.other_details"></a><h2>Types and Values</h2>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gleffects-xray.html b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-xray.html
new file mode 100644
index 0000000..d5b93fa
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gleffects-xray.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gleffects_xray: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gleffects-xpro.html" title="gleffects_xpro">
+<link rel="next" href="gst-plugins-bad-plugins-glfilterapp.html" title="glfilterapp">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gleffects-xray.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gleffects-xpro.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-glfilterapp.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gleffects-xray"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gleffects-xray.top_of_page"></a>gleffects_xray</span></h2>
+<p>gleffects_xray</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-xray.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.67.3.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Filippo Argiolas &lt;filippo.argiolas@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.67.3.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-xray.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects-xray.other_details"></a><h2>Types and Values</h2>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gleffects.html b/docs/plugins/html/gst-plugins-bad-plugins-gleffects.html
new file mode 100644
index 0000000..55c21dd
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gleffects.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gleffects: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gleffects-twirl.html" title="gleffects_twirl">
+<link rel="next" href="gst-plugins-bad-plugins-gleffects-xpro.html" title="gleffects_xpro">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gleffects.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gleffects-twirl.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gleffects-xpro.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gleffects"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gleffects.top_of_page"></a>gleffects</span></h2>
+<p>gleffects</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.65.3.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Filippo Argiolas &lt;filippo.argiolas@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.65.3.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gleffects.other_details"></a><h2>Types and Values</h2>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-glfilterapp.html b/docs/plugins/html/gst-plugins-bad-plugins-glfilterapp.html
new file mode 100644
index 0000000..ccfd928
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-glfilterapp.html
@@ -0,0 +1,306 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>glfilterapp: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gleffects-xray.html" title="gleffects_xray">
+<link rel="next" href="gst-plugins-bad-plugins-glfilterbin.html" title="glfilterbin">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glfilterapp.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glfilterapp.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glfilterapp.properties" class="shortcut">Properties</a></span><span id="nav_signals">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glfilterapp.signals" class="shortcut">Signals</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gleffects-xray.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-glfilterbin.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-glfilterapp"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-glfilterapp.top_of_page"></a>glfilterapp</span></h2>
+<p>glfilterapp</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfilterapp.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glfilterapp.html#GstGLFilterApp--client-data" title="The “client-data” property">client-data</a></td>
+<td class="property_flags">Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glfilterapp.html#GstGLFilterApp--client-draw-callback" title="The “client-draw-callback” property">client-draw-callback</a></td>
+<td class="property_flags">Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glfilterapp.html#GstGLFilterApp--client-reshape-callback" title="The “client-reshape-callback” property">client-reshape-callback</a></td>
+<td class="property_flags">Write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfilterapp.signals"></a><h2>Signals</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="signals_return">
+<col width="300px" class="signals_name">
+<col width="200px" class="signals_flags">
+</colgroup>
+<tbody><tr>
+<td class="signal_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a></td>
+<td class="signal_name"><a class="link" href="gst-plugins-bad-plugins-glfilterapp.html#GstGLFilterApp-client-draw" title="The “client-draw” signal">client-draw</a></td>
+<td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<a name="GstGLFilterApp"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfilterapp.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-glfilterapp.html#GstGLFilterApp-struct" title="struct GstGLFilterApp">GstGLFilterApp</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfilterapp.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLBaseFilter.html#GstGLBaseFilter-struct">GstGLBaseFilter</a>
+                        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLFilter.html#GstGLFilter-struct">GstGLFilter</a>
+                            <span class="lineart">╰──</span> GstGLFilterApp
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfilterapp.description"></a><h2>Description</h2>
+<p>The resize and redraw callbacks can be set from a client code.</p>
+<div class="refsect2">
+<a name="id-1.2.68.8.3"></a><h3>CLient callbacks</h3>
+<p>
+The graphic scene can be written from a client code through the 
+two glfilterapp properties.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.68.8.4"></a><h3>Examples</h3>
+see gst-plugins-gl/tests/examples/generic/recordgraphic
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.68.8.5.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Julien Isorce &lt;julien.isorce@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.68.8.5.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfilterapp.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfilterapp.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLFilterApp-struct"></a><h3>struct GstGLFilterApp</h3>
+<pre class="programlisting">struct GstGLFilterApp;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfilterapp.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstGLFilterApp--client-data"></a><h3>The <code class="literal">“client-data”</code> property</h3>
+<pre class="programlisting">  “client-data”              <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></pre>
+<p>Pass data to the draw and reshape callbacks.</p>
+<p>Flags: Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLFilterApp--client-draw-callback"></a><h3>The <code class="literal">“client-draw-callback”</code> property</h3>
+<pre class="programlisting">  “client-draw-callback”     <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></pre>
+<p>Define a custom draw callback in a client code.</p>
+<p>Flags: Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLFilterApp--client-reshape-callback"></a><h3>The <code class="literal">“client-reshape-callback”</code> property</h3>
+<pre class="programlisting">  “client-reshape-callback”  <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></pre>
+<p>Define a custom reshape callback in a client code.</p>
+<p>Flags: Write</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfilterapp.signal-details"></a><h2>Signal Details</h2>
+<div class="refsect2">
+<a name="GstGLFilterApp-client-draw"></a><h3>The <code class="literal">“client-draw”</code> signal</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+user_function (<a class="link" href="gst-plugins-bad-plugins-glfilterapp.html#GstGLFilterApp"><span class="type">GstGLFilterApp</span></a> *object,
+               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a>           texture,
+               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a>           width,
+               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a>           height,
+               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
+<p>Will be emitted before to draw the texture.  The client should
+redraw the surface/contents with the <em class="parameter"><code>texture</code></em>
+, <em class="parameter"><code>width</code></em>
+ and <em class="parameter"><code>height</code></em>
+.</p>
+<div class="refsect3">
+<a name="GstGLFilterApp-client-draw.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>object</p></td>
+<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink"><span class="type">GstGLImageSink</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>texture</p></td>
+<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> id of the texture.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>width</p></td>
+<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> width of the texture.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>height</p></td>
+<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> height of the texture.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="GstGLFilterApp-client-draw.returns"></a><h4>Returns</h4>
+<p> whether the texture was redrawn by the signal.  If not, a
+default redraw will occur.</p>
+</div>
+<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-glfilterbin.html b/docs/plugins/html/gst-plugins-bad-plugins-glfilterbin.html
new file mode 100644
index 0000000..f258653
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-glfilterbin.html
@@ -0,0 +1,247 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>glfilterbin: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-glfilterapp.html" title="glfilterapp">
+<link rel="next" href="gst-plugins-bad-plugins-glfiltercube.html" title="glfiltercube">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glfilterbin.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glfilterbin.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glfilterbin.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glfilterbin.properties" class="shortcut">Properties</a></span><span id="nav_signals">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glfilterbin.signals" class="shortcut">Signals</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-glfilterapp.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-glfiltercube.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-glfilterbin"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-glfilterbin.top_of_page"></a>glfilterbin</span></h2>
+<p>glfilterbin</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfilterbin.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody><tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glfilterbin.html#GstGLFilterBin--filter" title="The “filter” property">filter</a></td>
+<td class="property_flags">Read / Write</td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfilterbin.signals"></a><h2>Signals</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="signals_return">
+<col width="300px" class="signals_name">
+<col width="200px" class="signals_flags">
+</colgroup>
+<tbody><tr>
+<td class="signal_type">
+<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="returnvalue">GstElement</span></a>*</td>
+<td class="signal_name"><a class="link" href="gst-plugins-bad-plugins-glfilterbin.html#GstGLFilterBin-create-element" title="The “create-element” signal">create-element</a></td>
+<td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<a name="GstGLFilterBin"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfilterbin.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-glfilterbin.html#GstGLFilterBin-struct" title="struct GstGLFilterBin">GstGLFilterBin</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfilterbin.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBin.html#GstBin-struct">GstBin</a>
+                    <span class="lineart">╰──</span> GstGLFilterBin
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfilterbin.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstGLFilterBin implements
+ <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstChildProxy.html#GstChildProxy-struct">GstChildProxy</a>.</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfilterbin.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.69.9.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Matthew Waters &lt;matthew@centricular.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.69.9.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY)</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfilterbin.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfilterbin.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLFilterBin-struct"></a><h3>struct GstGLFilterBin</h3>
+<pre class="programlisting">struct GstGLFilterBin;</pre>
+<div class="refsect3">
+<a name="GstGLFilterBin.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="struct_members_name">
+<col class="struct_members_description">
+<col width="200px" class="struct_members_annotations">
+</colgroup>
+<tbody></tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfilterbin.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstGLFilterBin--filter"></a><h3>The <code class="literal">“filter”</code> property</h3>
+<pre class="programlisting">  “filter”                   <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *</pre>
+<p>The GL filter chain to use.</p>
+<p>Flags: Read / Write</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfilterbin.signal-details"></a><h2>Signal Details</h2>
+<div class="refsect2">
+<a name="GstGLFilterBin-create-element"></a><h3>The <code class="literal">“create-element”</code> signal</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="returnvalue">GstElement</span></a>*
+user_function (<a class="link" href="gst-plugins-bad-plugins-glfilterbin.html#GstGLFilterBin"><span class="type">GstGLFilterBin</span></a> *gstglfilterbin,
+               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
+<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-glfiltercube.html b/docs/plugins/html/gst-plugins-bad-plugins-glfiltercube.html
new file mode 100644
index 0000000..e201760
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-glfiltercube.html
@@ -0,0 +1,319 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>glfiltercube: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-glfilterbin.html" title="glfilterbin">
+<link rel="next" href="gst-plugins-bad-plugins-glfilterglass.html" title="glfilterglass">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glfiltercube.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glfiltercube.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glfiltercube.properties" class="shortcut">Properties</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-glfilterbin.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-glfilterglass.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-glfiltercube"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-glfiltercube.top_of_page"></a>glfiltercube</span></h2>
+<p>glfiltercube</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfiltercube.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glfiltercube.html#GstGLFilterCube--aspect" title="The “aspect” property">aspect</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glfiltercube.html#GstGLFilterCube--blue" title="The “blue” property">blue</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glfiltercube.html#GstGLFilterCube--fovy" title="The “fovy” property">fovy</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glfiltercube.html#GstGLFilterCube--green" title="The “green” property">green</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glfiltercube.html#GstGLFilterCube--red" title="The “red” property">red</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glfiltercube.html#GstGLFilterCube--zfar" title="The “zfar” property">zfar</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glfiltercube.html#GstGLFilterCube--znear" title="The “znear” property">znear</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="GstGLFilterCube"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfiltercube.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-glfiltercube.html#GstGLFilterCube-struct" title="struct GstGLFilterCube">GstGLFilterCube</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfiltercube.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLBaseFilter.html#GstGLBaseFilter-struct">GstGLBaseFilter</a>
+                        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLFilter.html#GstGLFilter-struct">GstGLFilter</a>
+                            <span class="lineart">╰──</span> GstGLFilterCube
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfiltercube.description"></a><h2>Description</h2>
+<p>The resize and redraw callbacks can be set from a client code.</p>
+<div class="refsect2">
+<a name="id-1.2.70.7.3"></a><h3>Examples</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v videotestsrc <span class="gtkdoc opt">!</span> glfiltercube <span class="gtkdoc opt">!</span> glimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ A pipeline to mpa textures on the 6 cube faces..
+FBO is required.
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v videotestsrc <span class="gtkdoc opt">!</span> glfiltercube <span class="gtkdoc opt">!</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span> width<span class="gtkdoc opt">=</span><span class="number">640</span><span class="gtkdoc opt">,</span> height<span class="gtkdoc opt">=</span><span class="number">480</span> <span class="gtkdoc opt">!</span> glimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Resize scene after drawing the cube.
+The scene size is greater than the input video size.
+  <div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v videotestsrc <span class="gtkdoc opt">!</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span> width<span class="gtkdoc opt">=</span><span class="number">640</span><span class="gtkdoc opt">,</span> height<span class="gtkdoc opt">=</span><span class="number">480</span>  <span class="gtkdoc opt">!</span> glfiltercube <span class="gtkdoc opt">!</span> glimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Resize scene before drawing the cube.
+The scene size is greater than the input video size.
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.70.7.4.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Julien Isorce &lt;julien.isorce@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.70.7.4.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfiltercube.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfiltercube.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLFilterCube-struct"></a><h3>struct GstGLFilterCube</h3>
+<pre class="programlisting">struct GstGLFilterCube;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfiltercube.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstGLFilterCube--aspect"></a><h3>The <code class="literal">“aspect”</code> property</h3>
+<pre class="programlisting">  “aspect”                   <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>Field of view in the x direction.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,100]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLFilterCube--blue"></a><h3>The <code class="literal">“blue”</code> property</h3>
+<pre class="programlisting">  “blue”                     <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a></pre>
+<p>Background blue color.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,1]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLFilterCube--fovy"></a><h3>The <code class="literal">“fovy”</code> property</h3>
+<pre class="programlisting">  “fovy”                     <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>Field of view angle in degrees.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,180]</p>
+<p>Default value: 45</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLFilterCube--green"></a><h3>The <code class="literal">“green”</code> property</h3>
+<pre class="programlisting">  “green”                    <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a></pre>
+<p>Background green color.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,1]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLFilterCube--red"></a><h3>The <code class="literal">“red”</code> property</h3>
+<pre class="programlisting">  “red”                      <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a></pre>
+<p>Background red color.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,1]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLFilterCube--zfar"></a><h3>The <code class="literal">“zfar”</code> property</h3>
+<pre class="programlisting">  “zfar”                     <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>Specifies the distance from the viewer to the far clipping plane.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,1000]</p>
+<p>Default value: 100</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLFilterCube--znear"></a><h3>The <code class="literal">“znear”</code> property</h3>
+<pre class="programlisting">  “znear”                    <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>Specifies the distance from the viewer to the near clipping plane.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,100]</p>
+<p>Default value: 0.1</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-glfilterglass.html b/docs/plugins/html/gst-plugins-bad-plugins-glfilterglass.html
new file mode 100644
index 0000000..5986ead
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-glfilterglass.html
@@ -0,0 +1,193 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>glfilterglass: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-glfiltercube.html" title="glfiltercube">
+<link rel="next" href="gst-plugins-bad-plugins-glimagesinkelement.html" title="glimagesinkelement">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glfilterglass.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glfilterglass.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-glfiltercube.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-glimagesinkelement.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-glfilterglass"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-glfilterglass.top_of_page"></a>glfilterglass</span></h2>
+<p>glfilterglass</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<a name="GstGLFilterGlass"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfilterglass.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-glfilterglass.html#GstGLFilterGlass-struct" title="struct GstGLFilterGlass">GstGLFilterGlass</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfilterglass.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLBaseFilter.html#GstGLBaseFilter-struct">GstGLBaseFilter</a>
+                        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLFilter.html#GstGLFilter-struct">GstGLFilter</a>
+                            <span class="lineart">╰──</span> GstGLFilterGlass
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfilterglass.description"></a><h2>Description</h2>
+<p>Map textures on moving glass.</p>
+<div class="refsect2">
+<a name="id-1.2.71.6.3"></a><h3>Examples</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v videotestsrc <span class="gtkdoc opt">!</span> glfilterglass <span class="gtkdoc opt">!</span> glimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ A pipeline inspired from http://www.mdk.org.pl/2007/11/17/gl-colorspace-conversions
+FBO is required.
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v videotestsrc <span class="gtkdoc opt">!</span> glfilterglass <span class="gtkdoc opt">!</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span> width<span class="gtkdoc opt">=</span><span class="number">640</span><span class="gtkdoc opt">,</span> height<span class="gtkdoc opt">=</span><span class="number">480</span> <span class="gtkdoc opt">!</span> glimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ The scene is greater than the input size.
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.71.6.4.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Julien Isorce &lt;julien.isorce@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.71.6.4.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfilterglass.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glfilterglass.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLFilterGlass-struct"></a><h3>struct GstGLFilterGlass</h3>
+<pre class="programlisting">struct GstGLFilterGlass;</pre>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-glimagesink.html b/docs/plugins/html/gst-plugins-bad-plugins-glimagesink.html
new file mode 100644
index 0000000..a7398c3
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-glimagesink.html
@@ -0,0 +1,213 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>glimagesink: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-glimagesinkelement.html" title="glimagesinkelement">
+<link rel="next" href="gst-plugins-bad-plugins-glmixerbin.html" title="glmixerbin">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glimagesink.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-glimagesinkelement.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-glmixerbin.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-glimagesink"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-glimagesink.top_of_page"></a>glimagesink</span></h2>
+<p>glimagesink</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glimagesink.description"></a><h2>Description</h2>
+<p>glimagesink renders video frames to a drawable on a local or remote
+display using OpenGL. This element can receive a Window ID from the
+application through the VideoOverlay interface and will then render video
+frames in this drawable.
+If no Window ID was provided by the application, the element will
+create its own internal window and render into it.</p>
+<p>See the <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLDisplay.html#GstGLDisplay-struct"><span class="type">GstGLDisplay</span></a> documentation for a list of environment variables that
+can override window/platform detection.</p>
+<div class="refsect2">
+<a name="id-1.2.73.3.4"></a><h3>Scaling</h3>
+<p>
+Depends on the driver, OpenGL handles hardware accelerated
+scaling of video frames. This means that the element will just accept
+incoming video frames no matter their geometry and will then put them to the
+drawable scaling them on the fly. Using the <a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--force-aspect-ratio" title="The “force-aspect-ratio” property"><span class="type">“force-aspect-ratio”</span></a>
+property it is possible to enforce scaling with a constant aspect ratio,
+which means drawing black borders around the video frame.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.73.3.5"></a><h3>Events</h3>
+<p>
+Through the gl thread, glimagesink handle some events coming from the drawable
+to manage its appearance even when the data is not flowing (GST_STATE_PAUSED).
+That means that even when the element is paused, it will receive expose events
+from the drawable and draw the latest frame with correct borders/aspect-ratio.
+</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.73.3.6"></a><h3>Examples</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v videotestsrc <span class="gtkdoc opt">!</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw <span class="gtkdoc opt">!</span> glimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ A pipeline to test hardware scaling.
+No special opengl extension is used in this pipeline, that's why it should work
+with OpenGL &gt;= 1.1. That's the case if you are using the MESA3D driver v1.3.
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v videotestsrc <span class="gtkdoc opt">!</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span>format<span class="gtkdoc opt">=</span>I420 <span class="gtkdoc opt">!</span> glimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ A pipeline to test hardware scaling and hardware colorspace conversion.
+When your driver supports GLSL (OpenGL Shading Language needs OpenGL &gt;= 2.1),
+the 4 following format YUY2, UYVY, I420, YV12 and AYUV are converted to RGB32
+through some fragment shaders and using one framebuffer (FBO extension OpenGL &gt;= 1.4).
+If your driver does not support GLSL but supports MESA_YCbCr extension then
+the you can use YUY2 and UYVY. In this case the colorspace conversion is automatically
+made when loading the texture and therefore no framebuffer is used.
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v gltestsrc <span class="gtkdoc opt">!</span> glimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ A pipeline 100% OpenGL.
+No special opengl extension is used in this pipeline, that's why it should work
+with OpenGL &gt;= 1.1. That's the case if you are using the MESA3D driver v1.3.
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>plugins<span class="gtkdoc opt">-</span>bas<span class="gtkdoc opt">/</span>tests<span class="gtkdoc opt">/</span>examples<span class="gtkdoc opt">/</span>gl<span class="gtkdoc opt">/</span>generic<span class="gtkdoc opt">/</span>cube</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ The graphic FPS scene can be greater than the input video FPS.
+The graphic scene can be written from a client code through the
+two glfilterapp properties.
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.73.3.7.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Matthew Waters &lt;matthew@centricular.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Sink/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.73.3.7.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glimagesink.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glimagesink.other_details"></a><h2>Types and Values</h2>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-glimagesinkelement.html b/docs/plugins/html/gst-plugins-bad-plugins-glimagesinkelement.html
new file mode 100644
index 0000000..a735f9e
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-glimagesinkelement.html
@@ -0,0 +1,472 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>glimagesinkelement: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-glfilterglass.html" title="glfilterglass">
+<link rel="next" href="gst-plugins-bad-plugins-glimagesink.html" title="glimagesink">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glimagesinkelement.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glimagesinkelement.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glimagesinkelement.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glimagesinkelement.properties" class="shortcut">Properties</a></span><span id="nav_signals">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glimagesinkelement.signals" class="shortcut">Signals</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-glfilterglass.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-glimagesink.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-glimagesinkelement"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-glimagesinkelement.top_of_page"></a>glimagesinkelement</span></h2>
+<p>glimagesinkelement</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glimagesinkelement.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--display" title="The “display” property">display</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--client-data" title="The “client-data” property">client-data</a></td>
+<td class="property_flags">Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--client-draw-callback" title="The “client-draw-callback” property">client-draw-callback</a></td>
+<td class="property_flags">Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--client-reshape-callback" title="The “client-reshape-callback” property">client-reshape-callback</a></td>
+<td class="property_flags">Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--force-aspect-ratio" title="The “force-aspect-ratio” property">force-aspect-ratio</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLContext.html#GstGLContext-struct"><span class="type">GstGLContext</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--other-context" title="The “other-context” property">other-context</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><span class="type">GstFraction</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--pixel-aspect-ratio" title="The “pixel-aspect-ratio” property">pixel-aspect-ratio</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLContext.html#GstGLContext-struct"><span class="type">GstGLContext</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--context" title="The “context” property">context</a></td>
+<td class="property_flags">Read</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--handle-events" title="The “handle-events” property">handle-events</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--ignore-alpha" title="The “ignore-alpha” property">ignore-alpha</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><span class="type">GstGLStereoDownmix</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--output-multiview-downmix-mode" title="The “output-multiview-downmix-mode” property">output-multiview-downmix-mode</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewFlags"><span class="type">GstVideoMultiviewFlags</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--output-multiview-flags" title="The “output-multiview-flags” property">output-multiview-flags</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewMode"><span class="type">GstVideoMultiviewMode</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--output-multiview-mode" title="The “output-multiview-mode” property">output-multiview-mode</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><span class="type">GstGLRotateMethod</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink--rotate-method" title="The “rotate-method” property">rotate-method</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glimagesinkelement.signals"></a><h2>Signals</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="signals_return">
+<col width="300px" class="signals_name">
+<col width="200px" class="signals_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="signal_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a></td>
+<td class="signal_name"><a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink-client-draw" title="The “client-draw” signal">client-draw</a></td>
+<td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
+</tr>
+<tr>
+<td class="signal_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a></td>
+<td class="signal_name"><a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink-client-reshape" title="The “client-reshape” signal">client-reshape</a></td>
+<td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="GstGLImageSink"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-glimagesinkelement.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink-struct" title="struct GstGLImageSink">GstGLImageSink</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glimagesinkelement.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseSink.html#GstBaseSink-struct">GstBaseSink</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideosink.html#GstVideoSink-struct">GstVideoSink</a>
+                        <span class="lineart">╰──</span> GstGLImageSink
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glimagesinkelement.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstGLImageSink implements
+ <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideooverlay.html#GstVideoOverlay-struct">GstVideoOverlay</a> and  <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstnavigation.html#GstNavigation-struct">GstNavigation</a>.</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glimagesinkelement.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.72.9.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Julien Isorce &lt;julien.isorce@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Sink/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.72.9.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string){ 2D, external-oes }</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string){ 2D, external-oes }</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glimagesinkelement.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glimagesinkelement.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLImageSink-struct"></a><h3>struct GstGLImageSink</h3>
+<pre class="programlisting">struct GstGLImageSink;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glimagesinkelement.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstGLImageSink--display"></a><h3>The <code class="literal">“display”</code> property</h3>
+<pre class="programlisting">  “display”                  <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Display name.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLImageSink--client-data"></a><h3>The <code class="literal">“client-data”</code> property</h3>
+<pre class="programlisting">  “client-data”              <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></pre>
+<p>Pass data to the draw and reshape callbacks.</p>
+<p>Flags: Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLImageSink--client-draw-callback"></a><h3>The <code class="literal">“client-draw-callback”</code> property</h3>
+<pre class="programlisting">  “client-draw-callback”     <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></pre>
+<p>Define a custom draw callback in a client code.</p>
+<p>Flags: Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLImageSink--client-reshape-callback"></a><h3>The <code class="literal">“client-reshape-callback”</code> property</h3>
+<pre class="programlisting">  “client-reshape-callback”  <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></pre>
+<p>Define a custom reshape callback in a client code.</p>
+<p>Flags: Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLImageSink--force-aspect-ratio"></a><h3>The <code class="literal">“force-aspect-ratio”</code> property</h3>
+<pre class="programlisting">  “force-aspect-ratio”       <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>When enabled, scaling will respect original aspect ratio.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLImageSink--other-context"></a><h3>The <code class="literal">“other-context”</code> property</h3>
+<pre class="programlisting">  “other-context”            <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLContext.html#GstGLContext-struct"><span class="type">GstGLContext</span></a> *</pre>
+<p>Give an external OpenGL context with which to share textures.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLImageSink--pixel-aspect-ratio"></a><h3>The <code class="literal">“pixel-aspect-ratio”</code> property</h3>
+<pre class="programlisting">  “pixel-aspect-ratio”       <span class="type">GstFraction</span></pre>
+<p>The pixel aspect ratio of the device.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLImageSink--context"></a><h3>The <code class="literal">“context”</code> property</h3>
+<pre class="programlisting">  “context”                  <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLContext.html#GstGLContext-struct"><span class="type">GstGLContext</span></a> *</pre>
+<p>Get OpenGL context.</p>
+<p>Flags: Read</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLImageSink--handle-events"></a><h3>The <code class="literal">“handle-events”</code> property</h3>
+<pre class="programlisting">  “handle-events”            <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>When enabled, XEvents will be selected and handled.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLImageSink--ignore-alpha"></a><h3>The <code class="literal">“ignore-alpha”</code> property</h3>
+<pre class="programlisting">  “ignore-alpha”             <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>When enabled, alpha will be ignored and converted to black.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLImageSink--output-multiview-downmix-mode"></a><h3>The <code class="literal">“output-multiview-downmix-mode”</code> property</h3>
+<pre class="programlisting">  “output-multiview-downmix-mode” <span class="type">GstGLStereoDownmix</span></pre>
+<p>Output anaglyph type to generate when downmixing to mono.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: Dubois optimised Green-Magenta anaglyph</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLImageSink--output-multiview-flags"></a><h3>The <code class="literal">“output-multiview-flags”</code> property</h3>
+<pre class="programlisting">  “output-multiview-flags”   <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewFlags"><span class="type">GstVideoMultiviewFlags</span></a></pre>
+<p>Output multiview layout modifier flags.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLImageSink--output-multiview-mode"></a><h3>The <code class="literal">“output-multiview-mode”</code> property</h3>
+<pre class="programlisting">  “output-multiview-mode”    <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewMode"><span class="type">GstVideoMultiviewMode</span></a></pre>
+<p>Choose output mode for multiview/3D video.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: GST_VIDEO_MULTIVIEW_MODE_MONO</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLImageSink--rotate-method"></a><h3>The <code class="literal">“rotate-method”</code> property</h3>
+<pre class="programlisting">  “rotate-method”            <span class="type">GstGLRotateMethod</span></pre>
+<p>rotate method.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: Identity (no rotation)</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glimagesinkelement.signal-details"></a><h2>Signal Details</h2>
+<div class="refsect2">
+<a name="GstGLImageSink-client-draw"></a><h3>The <code class="literal">“client-draw”</code> signal</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+user_function (<a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink"><span class="type">GstGLImageSink</span></a> *object,
+               <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLContext.html#GstGLContext-struct"><span class="type">GstGLContext</span></a>   *texture,
+               <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstSample.html#GstSample-struct"><span class="type">GstSample</span></a>      *width,
+               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
+<p>Will be emitted before actually drawing the texture.  The client should
+redraw the surface/contents with the <em class="parameter"><code>texture</code></em>
+, <em class="parameter"><code>width</code></em>
+ and <em class="parameter"><code>height</code></em>
+ and
+and return <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>.</p>
+<div class="refsect3">
+<a name="GstGLImageSink-client-draw.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>object</p></td>
+<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink"><span class="type">GstGLImageSink</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>texture</p></td>
+<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> id of the texture.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>width</p></td>
+<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> width of the texture.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>height</p></td>
+<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> height of the texture.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="GstGLImageSink-client-draw.returns"></a><h4>Returns</h4>
+<p> whether the texture was redrawn by the signal.  If not, a
+default redraw will occur.</p>
+</div>
+<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLImageSink-client-reshape"></a><h3>The <code class="literal">“client-reshape”</code> signal</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+user_function (<a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink"><span class="type">GstGLImageSink</span></a> *object,
+               <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLContext.html#GstGLContext-struct"><span class="type">GstGLContext</span></a>   *width,
+               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a>           height,
+               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a>           Returns,
+               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
+<p>The client should resize the surface/window/viewport with the <em class="parameter"><code>width</code></em>
+ and
+<em class="parameter"><code>height</code></em>
+ and return <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>.</p>
+<div class="refsect3">
+<a name="GstGLImageSink-client-reshape.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>object</p></td>
+<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html#GstGLImageSink"><span class="type">GstGLImageSink</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>width</p></td>
+<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> width of the texture.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>height</p></td>
+<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> height of the texture.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="GstGLImageSink-client-reshape.returns"></a><h4>Returns</h4>
+<p> whether the content area was resized by the signal.  If not, a
+default viewport resize will occur.</p>
+</div>
+<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-glmixerbin.html b/docs/plugins/html/gst-plugins-bad-plugins-glmixerbin.html
new file mode 100644
index 0000000..46b821c
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-glmixerbin.html
@@ -0,0 +1,279 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>glmixerbin: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-glimagesink.html" title="glimagesink">
+<link rel="next" href="gst-plugins-bad-plugins-glmosaic.html" title="glmosaic">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glmixerbin.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glmixerbin.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glmixerbin.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glmixerbin.properties" class="shortcut">Properties</a></span><span id="nav_signals">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glmixerbin.signals" class="shortcut">Signals</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-glimagesink.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-glmosaic.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-glmixerbin"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-glmixerbin.top_of_page"></a>glmixerbin</span></h2>
+<p>glmixerbin</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glmixerbin.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint64"><span class="type">gint64</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glmixerbin.html#GstGLMixerBin--latency" title="The “latency” property">latency</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glmixerbin.html#GstGLMixerBin--mixer" title="The “mixer” property">mixer</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint64"><span class="type">guint64</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glmixerbin.html#GstGLMixerBin--start-time" title="The “start-time” property">start-time</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><span class="type">GstGLMixerBinStartTimeSelection</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glmixerbin.html#GstGLMixerBin--start-time-selection" title="The “start-time-selection” property">start-time-selection</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glmixerbin.signals"></a><h2>Signals</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="signals_return">
+<col width="300px" class="signals_name">
+<col width="200px" class="signals_flags">
+</colgroup>
+<tbody><tr>
+<td class="signal_type">
+<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="returnvalue">GstElement</span></a>*</td>
+<td class="signal_name"><a class="link" href="gst-plugins-bad-plugins-glmixerbin.html#GstGLMixerBin-create-element" title="The “create-element” signal">create-element</a></td>
+<td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<a name="GstGLMixerBin"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-glmixerbin.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-glmixerbin.html#GstGLMixerBin-struct" title="struct GstGLMixerBin">GstGLMixerBin</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glmixerbin.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBin.html#GstBin-struct">GstBin</a>
+                    <span class="lineart">╰──</span> GstGLMixerBin
+                        <span class="lineart">╰──</span> GstGLVideoMixerBin
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glmixerbin.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstGLMixerBin implements
+ <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstChildProxy.html#GstChildProxy-struct">GstChildProxy</a>.</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glmixerbin.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.74.9.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Matthew Waters &lt;matthew@centricular.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Bin/Filter/Effect/Video/Mixer</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.74.9.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink_%u</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>request</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY)</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glmixerbin.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glmixerbin.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLMixerBin-struct"></a><h3>struct GstGLMixerBin</h3>
+<pre class="programlisting">struct GstGLMixerBin;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glmixerbin.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstGLMixerBin--latency"></a><h3>The <code class="literal">“latency”</code> property</h3>
+<pre class="programlisting">  “latency”                  <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint64"><span class="type">gint64</span></a></pre>
+<p>Additional latency in live mode to allow upstream to take longer to produce buffers for the current position.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &gt;= 0</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLMixerBin--mixer"></a><h3>The <code class="literal">“mixer”</code> property</h3>
+<pre class="programlisting">  “mixer”                    <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *</pre>
+<p>The GL mixer chain to use.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLMixerBin--start-time"></a><h3>The <code class="literal">“start-time”</code> property</h3>
+<pre class="programlisting">  “start-time”               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint64"><span class="type">guint64</span></a></pre>
+<p>Start time to use if start-time-selection=set.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: 18446744073709551615</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLMixerBin--start-time-selection"></a><h3>The <code class="literal">“start-time-selection”</code> property</h3>
+<pre class="programlisting">  “start-time-selection”     <span class="type">GstGLMixerBinStartTimeSelection</span></pre>
+<p>Decides which start time is output.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: Start at 0 running time (default)</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glmixerbin.signal-details"></a><h2>Signal Details</h2>
+<div class="refsect2">
+<a name="GstGLMixerBin-create-element"></a><h3>The <code class="literal">“create-element”</code> signal</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="returnvalue">GstElement</span></a>*
+user_function (<a class="link" href="gst-plugins-bad-plugins-glmixerbin.html#GstGLMixerBin"><span class="type">GstGLMixerBin</span></a> *gstglmixerbin,
+               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>       user_data)</pre>
+<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-glmosaic.html b/docs/plugins/html/gst-plugins-bad-plugins-glmosaic.html
new file mode 100644
index 0000000..eb8ec85
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-glmosaic.html
@@ -0,0 +1,195 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>glmosaic: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-glmixerbin.html" title="glmixerbin">
+<link rel="next" href="gst-plugins-bad-plugins-gloverlay.html" title="gloverlay">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glmosaic.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glmosaic.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glmosaic.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-glmixerbin.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gloverlay.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-glmosaic"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-glmosaic.top_of_page"></a>glmosaic</span></h2>
+<p>glmosaic</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<a name="GstGLMosaic"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-glmosaic.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-glmosaic.html#GstGLMosaic-struct" title="struct GstGLMosaic">GstGLMosaic</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glmosaic.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstAggregator.html#GstAggregator">GstAggregator</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstVideoAggregator.html#GstVideoAggregator">GstVideoAggregator</a>
+                        <span class="lineart">╰──</span> GstGLBaseMixer
+                            <span class="lineart">╰──</span> GstGLMixer
+                                <span class="lineart">╰──</span> GstGLMosaic
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glmosaic.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstGLMosaic implements
+ <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstChildProxy.html#GstChildProxy-struct">GstChildProxy</a>.</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glmosaic.description"></a><h2>Description</h2>
+<p>glmixer sub element. N gl sink pads to 1 source pad.
+N + 1 OpenGL contexts shared together.
+N &lt;= 6 because the rendering is more a like a cube than a mosaic
+Each opengl input stream is rendered on a cube face</p>
+<div class="refsect2">
+<a name="id-1.2.75.7.3"></a><h3>Examples</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1
+2
+3
+4
+5
+6</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span> format<span class="gtkdoc opt">=</span>YUY2 <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> glmosaic name<span class="gtkdoc opt">=</span>m <span class="gtkdoc opt">!</span> glimagesink \
+    videotestsrc pattern<span class="gtkdoc opt">=</span><span class="number">12</span> <span class="gtkdoc opt">!</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span> format<span class="gtkdoc opt">=</span>I420<span class="gtkdoc opt">,</span> framerate<span class="gtkdoc opt">=</span><span class="number">5</span><span class="gtkdoc opt">/</span><span class="number">1</span><span class="gtkdoc opt">,</span> width<span class="gtkdoc opt">=</span><span class="number">100</span><span class="gtkdoc opt">,</span> height<span class="gtkdoc opt">=</span><span class="number">200</span> <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> m<span class="gtkdoc opt">.</span> \
+    videotestsrc <span class="gtkdoc opt">!</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span> framerate<span class="gtkdoc opt">=</span><span class="number">15</span><span class="gtkdoc opt">/</span><span class="number">1</span><span class="gtkdoc opt">,</span> width<span class="gtkdoc opt">=</span><span class="number">1500</span><span class="gtkdoc opt">,</span> height<span class="gtkdoc opt">=</span><span class="number">1500</span> <span class="gtkdoc opt">!</span> gleffects effect<span class="gtkdoc opt">=</span><span class="number">3</span> <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> m<span class="gtkdoc opt">.</span> \
+    videotestsrc <span class="gtkdoc opt">!</span> gleffects effect<span class="gtkdoc opt">=</span><span class="number">2</span> <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> m<span class="gtkdoc opt">.</span>  \
+    videotestsrc <span class="gtkdoc opt">!</span> glfiltercube <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> m<span class="gtkdoc opt">.</span> \
+    videotestsrc <span class="gtkdoc opt">!</span> gleffects effect<span class="gtkdoc opt">=</span><span class="number">6</span> <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> m<span class="gtkdoc opt">.</span></pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+FBO (Frame Buffer Object) is required.
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.75.7.4.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Julien Isorce &lt;julien.isorce@gmail.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.75.7.4.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink_%u</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>request</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glmosaic.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glmosaic.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLMosaic-struct"></a><h3>struct GstGLMosaic</h3>
+<pre class="programlisting">struct GstGLMosaic;</pre>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gloverlay.html b/docs/plugins/html/gst-plugins-bad-plugins-gloverlay.html
new file mode 100644
index 0000000..17c4ce0
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gloverlay.html
@@ -0,0 +1,473 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gloverlay: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-glmosaic.html" title="glmosaic">
+<link rel="next" href="gst-plugins-bad-plugins-glshader.html" title="glshader">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gloverlay.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gloverlay.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gloverlay.properties" class="shortcut">Properties</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-glmosaic.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-glshader.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gloverlay"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gloverlay.top_of_page"></a>gloverlay</span></h2>
+<p>gloverlay</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gloverlay.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--angle-png" title="The “angle-png” property">angle-png</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--angle-video" title="The “angle-video” property">angle-video</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--location" title="The “location” property">location</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--proportion-png" title="The “proportion-png” property">proportion-png</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--proportion-video" title="The “proportion-video” property">proportion-video</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--ratio-video" title="The “ratio-video” property">ratio-video</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--rotate-png" title="The “rotate-png” property">rotate-png</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--rotate-video" title="The “rotate-video” property">rotate-video</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--video-top" title="The “video-top” property">video-top</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--xpos-png" title="The “xpos-png” property">xpos-png</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--xpos-video" title="The “xpos-video” property">xpos-video</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--ypos-png" title="The “ypos-png” property">ypos-png</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--ypos-video" title="The “ypos-video” property">ypos-video</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--alpha" title="The “alpha” property">alpha</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--offset-x" title="The “offset-x” property">offset-x</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--offset-y" title="The “offset-y” property">offset-y</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--overlay-height" title="The “overlay-height” property">overlay-height</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--overlay-width" title="The “overlay-width” property">overlay-width</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--relative-x" title="The “relative-x” property">relative-x</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay--relative-y" title="The “relative-y” property">relative-y</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="GstGLOverlay"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-gloverlay.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-gloverlay.html#GstGLOverlay-struct" title="struct GstGLOverlay">GstGLOverlay</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gloverlay.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLBaseFilter.html#GstGLBaseFilter-struct">GstGLBaseFilter</a>
+                        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLFilter.html#GstGLFilter-struct">GstGLFilter</a>
+                            <span class="lineart">╰──</span> GstGLOverlay
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gloverlay.description"></a><h2>Description</h2>
+<p>Overlay GL video texture with a PNG image</p>
+<div class="refsect2">
+<a name="id-1.2.76.7.3"></a><h3>Examples</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> gloverlay location<span class="gtkdoc opt">=</span>image<span class="gtkdoc opt">.</span>jpg <span class="gtkdoc opt">!</span> glimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+FBO (Frame Buffer Object) is required.
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.76.7.4.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Filippo Argiolas &lt;filippo.argiolas@gmail.com&gt;, Matthew Waters &lt;matthew@centricular.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.76.7.4.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gloverlay.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gloverlay.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLOverlay-struct"></a><h3>struct GstGLOverlay</h3>
+<pre class="programlisting">struct GstGLOverlay;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gloverlay.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstGLOverlay--angle-png"></a><h3>The <code class="literal">“angle-png”</code> property</h3>
+<pre class="programlisting">  “angle-png”                <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>choose angle in axis to choosen between -90 and 90.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [-90,90]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLOverlay--angle-video"></a><h3>The <code class="literal">“angle-video”</code> property</h3>
+<pre class="programlisting">  “angle-video”              <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>choose angle in axis to choosen between -90 and 90.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [-90,90]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLOverlay--location"></a><h3>The <code class="literal">“location”</code> property</h3>
+<pre class="programlisting">  “location”                 <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Location of image file to overlay.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLOverlay--proportion-png"></a><h3>The <code class="literal">“proportion-png”</code> property</h3>
+<pre class="programlisting">  “proportion-png”           <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Relative size of iverlay image, in percents.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,100]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLOverlay--proportion-video"></a><h3>The <code class="literal">“proportion-video”</code> property</h3>
+<pre class="programlisting">  “proportion-video”         <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Relative size of iverlay video, in percents.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,100]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLOverlay--ratio-video"></a><h3>The <code class="literal">“ratio-video”</code> property</h3>
+<pre class="programlisting">  “ratio-video”              <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,3]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLOverlay--rotate-png"></a><h3>The <code class="literal">“rotate-png”</code> property</h3>
+<pre class="programlisting">  “rotate-png”               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>choose rotation axis for the moment only Y axis is implemented.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,3]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLOverlay--rotate-video"></a><h3>The <code class="literal">“rotate-video”</code> property</h3>
+<pre class="programlisting">  “rotate-video”             <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>choose rotation axis for the moment only Y axis is implemented.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,3]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLOverlay--video-top"></a><h3>The <code class="literal">“video-top”</code> property</h3>
+<pre class="programlisting">  “video-top”                <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Video is over png image.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLOverlay--xpos-png"></a><h3>The <code class="literal">“xpos-png”</code> property</h3>
+<pre class="programlisting">  “xpos-png”                 <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>X position of overlay image in percents.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,100]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLOverlay--xpos-video"></a><h3>The <code class="literal">“xpos-video”</code> property</h3>
+<pre class="programlisting">  “xpos-video”               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>X position of overlay video in percents.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,100]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLOverlay--ypos-png"></a><h3>The <code class="literal">“ypos-png”</code> property</h3>
+<pre class="programlisting">  “ypos-png”                 <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Y position of overlay image in percents.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,100]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLOverlay--ypos-video"></a><h3>The <code class="literal">“ypos-video”</code> property</h3>
+<pre class="programlisting">  “ypos-video”               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Y position of overlay video in percents.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,100]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLOverlay--alpha"></a><h3>The <code class="literal">“alpha”</code> property</h3>
+<pre class="programlisting">  “alpha”                    <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>Global alpha of overlay image.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,1]</p>
+<p>Default value: 1</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLOverlay--offset-x"></a><h3>The <code class="literal">“offset-x”</code> property</h3>
+<pre class="programlisting">  “offset-x”                 <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>For positive value, horizontal offset of overlay image in pixels from left of video image. For negative value, horizontal offset of overlay image in pixels from right of video image.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLOverlay--offset-y"></a><h3>The <code class="literal">“offset-y”</code> property</h3>
+<pre class="programlisting">  “offset-y”                 <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>For positive value, vertical offset of overlay image in pixels from top of video image. For negative value, vertical offset of overlay image in pixels from bottom of video image.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLOverlay--overlay-height"></a><h3>The <code class="literal">“overlay-height”</code> property</h3>
+<pre class="programlisting">  “overlay-height”           <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Height of overlay image in pixels (0 = same as overlay image).</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &gt;= 0</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLOverlay--overlay-width"></a><h3>The <code class="literal">“overlay-width”</code> property</h3>
+<pre class="programlisting">  “overlay-width”            <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Width of overlay image in pixels (0 = same as overlay image).</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &gt;= 0</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLOverlay--relative-x"></a><h3>The <code class="literal">“relative-x”</code> property</h3>
+<pre class="programlisting">  “relative-x”               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>Horizontal offset of overlay image in fractions of video image width, from top-left corner of video image.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,1]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLOverlay--relative-y"></a><h3>The <code class="literal">“relative-y”</code> property</h3>
+<pre class="programlisting">  “relative-y”               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>Vertical offset of overlay image in fractions of video image height, from top-left corner of video image.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,1]</p>
+<p>Default value: 0</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-glshader.html b/docs/plugins/html/gst-plugins-bad-plugins-glshader.html
new file mode 100644
index 0000000..e448081
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-glshader.html
@@ -0,0 +1,333 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>glshader: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gloverlay.html" title="gloverlay">
+<link rel="next" href="gst-plugins-bad-plugins-glsinkbin.html" title="glsinkbin">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glshader.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glshader.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glshader.properties" class="shortcut">Properties</a></span><span id="nav_signals">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glshader.signals" class="shortcut">Signals</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gloverlay.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-glsinkbin.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-glshader"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-glshader.top_of_page"></a>glshader</span></h2>
+<p>glshader</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glshader.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glshader.html#GstGLFilterShader--location" title="The “location” property">location</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glshader.html#GstGLFilterShader--preset" title="The “preset” property">preset</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glshader.html#GstGLFilterShader--vars" title="The “vars” property">vars</a></td>
+<td class="property_flags">Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glshader.html#GstGLFilterShader--fragment" title="The “fragment” property">fragment</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLShader.html#GstGLShader-struct"><span class="type">GstGLShader</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glshader.html#GstGLFilterShader--shader" title="The “shader” property">shader</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstStructure.html#GstStructure-struct"><span class="type">GstStructure</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glshader.html#GstGLFilterShader--uniforms" title="The “uniforms” property">uniforms</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glshader.html#GstGLFilterShader--update-shader" title="The “update-shader” property">update-shader</a></td>
+<td class="property_flags">Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glshader.html#GstGLFilterShader--vertex" title="The “vertex” property">vertex</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glshader.signals"></a><h2>Signals</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="signals_return">
+<col width="300px" class="signals_name">
+<col width="200px" class="signals_flags">
+</colgroup>
+<tbody><tr>
+<td class="signal_type">
+<a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLShader.html#GstGLShader-struct"><span class="returnvalue">GstGLShader</span></a>*</td>
+<td class="signal_name"><a class="link" href="gst-plugins-bad-plugins-glshader.html#GstGLFilterShader-create-shader" title="The “create-shader” signal">create-shader</a></td>
+<td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<a name="GstGLFilterShader"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-glshader.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-glshader.html#GstGLFilterShader-struct" title="struct GstGLFilterShader">GstGLFilterShader</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glshader.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLBaseFilter.html#GstGLBaseFilter-struct">GstGLBaseFilter</a>
+                        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLFilter.html#GstGLFilter-struct">GstGLFilter</a>
+                            <span class="lineart">╰──</span> GstGLFilterShader
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glshader.description"></a><h2>Description</h2>
+<p>OpenGL fragment shader filter</p>
+<div class="refsect2">
+<a name="id-1.2.77.8.3"></a><h3>Examples</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> glupload <span class="gtkdoc opt">!</span> glshader fragment<span class="gtkdoc opt">=</span><span class="string">&quot;</span><span class="gtkdoc esc">\&quot;</span><span class="string">`cat myshader.frag`</span><span class="gtkdoc esc">\&quot;</span><span class="string">&quot;</span> <span class="gtkdoc opt">!</span> glimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+FBO (Frame Buffer Object) and GLSL (OpenGL Shading Language) are required. A <span class="type">version</span> header is required
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.77.8.4.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>&lt;matthew@centricular.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.77.8.4.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glshader.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glshader.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLFilterShader-struct"></a><h3>struct GstGLFilterShader</h3>
+<pre class="programlisting">struct GstGLFilterShader;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glshader.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstGLFilterShader--location"></a><h3>The <code class="literal">“location”</code> property</h3>
+<pre class="programlisting">  “location”                 <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Location of the GLSL file to load.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLFilterShader--preset"></a><h3>The <code class="literal">“preset”</code> property</h3>
+<pre class="programlisting">  “preset”                   <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Location of the shader uniform variables preset file.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLFilterShader--vars"></a><h3>The <code class="literal">“vars”</code> property</h3>
+<pre class="programlisting">  “vars”                     <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Set the shader uniform variables.</p>
+<p>Flags: Write</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLFilterShader--fragment"></a><h3>The <code class="literal">“fragment”</code> property</h3>
+<pre class="programlisting">  “fragment”                 <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>GLSL fragment source.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLFilterShader--shader"></a><h3>The <code class="literal">“shader”</code> property</h3>
+<pre class="programlisting">  “shader”                   <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLShader.html#GstGLShader-struct"><span class="type">GstGLShader</span></a> *</pre>
+<p>GstGLShader to use.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLFilterShader--uniforms"></a><h3>The <code class="literal">“uniforms”</code> property</h3>
+<pre class="programlisting">  “uniforms”                 <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstStructure.html#GstStructure-struct"><span class="type">GstStructure</span></a> *</pre>
+<p>GLSL Uniforms.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLFilterShader--update-shader"></a><h3>The <code class="literal">“update-shader”</code> property</h3>
+<pre class="programlisting">  “update-shader”            <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Emit the 'create-shader' signal for the next frame.</p>
+<p>Flags: Write</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLFilterShader--vertex"></a><h3>The <code class="literal">“vertex”</code> property</h3>
+<pre class="programlisting">  “vertex”                   <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>GLSL vertex source.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: NULL</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glshader.signal-details"></a><h2>Signal Details</h2>
+<div class="refsect2">
+<a name="GstGLFilterShader-create-shader"></a><h3>The <code class="literal">“create-shader”</code> signal</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLShader.html#GstGLShader-struct"><span class="returnvalue">GstGLShader</span></a>*
+user_function (<a class="link" href="gst-plugins-bad-plugins-glshader.html#GstGLFilterShader"><span class="type">GstGLFilterShader</span></a> *gstglfiltershader,
+               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>           user_data)</pre>
+<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-glsinkbin.html b/docs/plugins/html/gst-plugins-bad-plugins-glsinkbin.html
new file mode 100644
index 0000000..bca73ca
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-glsinkbin.html
@@ -0,0 +1,455 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>glsinkbin: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-glshader.html" title="glshader">
+<link rel="next" href="gst-plugins-bad-plugins-glsrcbin.html" title="glsrcbin">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glsinkbin.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glsinkbin.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glsinkbin.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glsinkbin.properties" class="shortcut">Properties</a></span><span id="nav_signals">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glsinkbin.signals" class="shortcut">Signals</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-glshader.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-glsrcbin.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-glsinkbin"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-glsinkbin.top_of_page"></a>glsinkbin</span></h2>
+<p>glsinkbin</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glsinkbin.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--force-aspect-ratio" title="The “force-aspect-ratio” property">force-aspect-ratio</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--sink" title="The “sink” property">sink</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--async" title="The “async” property">async</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--blocksize" title="The “blocksize” property">blocksize</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--enable-last-sample" title="The “enable-last-sample” property">enable-last-sample</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstSample.html#GstSample-struct"><span class="type">GstSample</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--last-sample" title="The “last-sample” property">last-sample</a></td>
+<td class="property_flags">Read</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint64"><span class="type">guint64</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--max-bitrate" title="The “max-bitrate” property">max-bitrate</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint64"><span class="type">gint64</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--max-lateness" title="The “max-lateness” property">max-lateness</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--qos" title="The “qos” property">qos</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint64"><span class="type">guint64</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--render-delay" title="The “render-delay” property">render-delay</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--sync" title="The “sync” property">sync</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint64"><span class="type">guint64</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--throttle-time" title="The “throttle-time” property">throttle-time</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint64"><span class="type">gint64</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--ts-offset" title="The “ts-offset” property">ts-offset</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--brightness" title="The “brightness” property">brightness</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--contrast" title="The “contrast” property">contrast</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--hue" title="The “hue” property">hue</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin--saturation" title="The “saturation” property">saturation</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glsinkbin.signals"></a><h2>Signals</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="signals_return">
+<col width="300px" class="signals_name">
+<col width="200px" class="signals_flags">
+</colgroup>
+<tbody><tr>
+<td class="signal_type">
+<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="returnvalue">GstElement</span></a>*</td>
+<td class="signal_name"><a class="link" href="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin-create-element" title="The “create-element” signal">create-element</a></td>
+<td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<a name="GstGLSinkBin"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-glsinkbin.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin-struct" title="struct GstGLSinkBin">GstGLSinkBin</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glsinkbin.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBin.html#GstBin-struct">GstBin</a>
+                    <span class="lineart">╰──</span> GstGLSinkBin
+                        <span class="lineart">╰──</span> GstGLImageSinkBin
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glsinkbin.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstGLSinkBin implements
+ <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstChildProxy.html#GstChildProxy-struct">GstChildProxy</a>,  <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideooverlay.html#GstVideoOverlay-struct">GstVideoOverlay</a>,  <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstnavigation.html#GstNavigation-struct">GstNavigation</a> and  <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstcolorbalance.html#GstColorBalance-struct">GstColorBalance</a>.</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glsinkbin.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.78.9.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Matthew Waters &lt;matthew@centricular.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Sink/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.78.9.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glsinkbin.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glsinkbin.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLSinkBin-struct"></a><h3>struct GstGLSinkBin</h3>
+<pre class="programlisting">struct GstGLSinkBin;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glsinkbin.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstGLSinkBin--force-aspect-ratio"></a><h3>The <code class="literal">“force-aspect-ratio”</code> property</h3>
+<pre class="programlisting">  “force-aspect-ratio”       <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>When enabled, scaling will respect original aspect ratio.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLSinkBin--sink"></a><h3>The <code class="literal">“sink”</code> property</h3>
+<pre class="programlisting">  “sink”                     <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *</pre>
+<p>The GL sink chain to use.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLSinkBin--async"></a><h3>The <code class="literal">“async”</code> property</h3>
+<pre class="programlisting">  “async”                    <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Go asynchronously to PAUSED.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLSinkBin--blocksize"></a><h3>The <code class="literal">“blocksize”</code> property</h3>
+<pre class="programlisting">  “blocksize”                <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
+<p>Size in bytes to pull per buffer (0 = default).</p>
+<p>Flags: Read / Write</p>
+<p>Default value: 4096</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLSinkBin--enable-last-sample"></a><h3>The <code class="literal">“enable-last-sample”</code> property</h3>
+<pre class="programlisting">  “enable-last-sample”       <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Enable the last-sample property.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLSinkBin--last-sample"></a><h3>The <code class="literal">“last-sample”</code> property</h3>
+<pre class="programlisting">  “last-sample”              <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstSample.html#GstSample-struct"><span class="type">GstSample</span></a> *</pre>
+<p>The last sample received in the sink.</p>
+<p>Flags: Read</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLSinkBin--max-bitrate"></a><h3>The <code class="literal">“max-bitrate”</code> property</h3>
+<pre class="programlisting">  “max-bitrate”              <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint64"><span class="type">guint64</span></a></pre>
+<p>The maximum bits per second to render (0 = disabled).</p>
+<p>Flags: Read / Write</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLSinkBin--max-lateness"></a><h3>The <code class="literal">“max-lateness”</code> property</h3>
+<pre class="programlisting">  “max-lateness”             <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint64"><span class="type">gint64</span></a></pre>
+<p>Maximum number of nanoseconds that a buffer can be late before it is dropped (-1 unlimited).</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &gt;= G_MAXULONG</p>
+<p>Default value: -1</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLSinkBin--qos"></a><h3>The <code class="literal">“qos”</code> property</h3>
+<pre class="programlisting">  “qos”                      <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Generate Quality-of-Service events upstream.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLSinkBin--render-delay"></a><h3>The <code class="literal">“render-delay”</code> property</h3>
+<pre class="programlisting">  “render-delay”             <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint64"><span class="type">guint64</span></a></pre>
+<p>Additional render delay of the sink in nanoseconds.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLSinkBin--sync"></a><h3>The <code class="literal">“sync”</code> property</h3>
+<pre class="programlisting">  “sync”                     <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Sync on the clock.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLSinkBin--throttle-time"></a><h3>The <code class="literal">“throttle-time”</code> property</h3>
+<pre class="programlisting">  “throttle-time”            <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint64"><span class="type">guint64</span></a></pre>
+<p>The time to keep between rendered buffers (0 = disabled).</p>
+<p>Flags: Read / Write</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLSinkBin--ts-offset"></a><h3>The <code class="literal">“ts-offset”</code> property</h3>
+<pre class="programlisting">  “ts-offset”                <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint64"><span class="type">gint64</span></a></pre>
+<p>Timestamp offset in nanoseconds.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLSinkBin--brightness"></a><h3>The <code class="literal">“brightness”</code> property</h3>
+<pre class="programlisting">  “brightness”               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>brightness.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [-1,1]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLSinkBin--contrast"></a><h3>The <code class="literal">“contrast”</code> property</h3>
+<pre class="programlisting">  “contrast”                 <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>contrast.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,2]</p>
+<p>Default value: 1</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLSinkBin--hue"></a><h3>The <code class="literal">“hue”</code> property</h3>
+<pre class="programlisting">  “hue”                      <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>hue.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [-1,1]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLSinkBin--saturation"></a><h3>The <code class="literal">“saturation”</code> property</h3>
+<pre class="programlisting">  “saturation”               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>saturation.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,2]</p>
+<p>Default value: 1</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glsinkbin.signal-details"></a><h2>Signal Details</h2>
+<div class="refsect2">
+<a name="GstGLSinkBin-create-element"></a><h3>The <code class="literal">“create-element”</code> signal</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="returnvalue">GstElement</span></a>*
+user_function (<a class="link" href="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin"><span class="type">GstGLSinkBin</span></a> *object,
+               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>      user_data)</pre>
+<p>Will be emitted when we need the processing element/s that this bin will use</p>
+<div class="refsect3">
+<a name="GstGLSinkBin-create-element.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>object</p></td>
+<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-plugins-glsinkbin.html#GstGLSinkBin"><span class="type">GstGLSinkBin</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="GstGLSinkBin-create-element.returns"></a><h4>Returns</h4>
+<p> a new <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p>
+</div>
+<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-glsrcbin.html b/docs/plugins/html/gst-plugins-bad-plugins-glsrcbin.html
new file mode 100644
index 0000000..195818d
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-glsrcbin.html
@@ -0,0 +1,219 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>glsrcbin: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-glsinkbin.html" title="glsinkbin">
+<link rel="next" href="gst-plugins-bad-plugins-glstereomix.html" title="glstereomix">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glsrcbin.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glsrcbin.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glsrcbin.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glsrcbin.properties" class="shortcut">Properties</a></span><span id="nav_signals">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glsrcbin.signals" class="shortcut">Signals</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-glsinkbin.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-glstereomix.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-glsrcbin"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-glsrcbin.top_of_page"></a>glsrcbin</span></h2>
+<p>glsrcbin</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glsrcbin.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody><tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glsrcbin.html#GstGLSrcBin--src" title="The “src” property">src</a></td>
+<td class="property_flags">Read / Write</td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glsrcbin.signals"></a><h2>Signals</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="signals_return">
+<col width="300px" class="signals_name">
+<col width="200px" class="signals_flags">
+</colgroup>
+<tbody><tr>
+<td class="signal_type">
+<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="returnvalue">GstElement</span></a>*</td>
+<td class="signal_name"><a class="link" href="gst-plugins-bad-plugins-glsrcbin.html#GstGLSrcBin-create-element" title="The “create-element” signal">create-element</a></td>
+<td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<a name="GstGLSrcBin"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-glsrcbin.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-glsrcbin.html#GstGLSrcBin-struct" title="struct GstGLSrcBin">GstGLSrcBin</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glsrcbin.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBin.html#GstBin-struct">GstBin</a>
+                    <span class="lineart">╰──</span> GstGLSrcBin
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glsrcbin.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstGLSrcBin implements
+ <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstChildProxy.html#GstChildProxy-struct">GstChildProxy</a>.</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glsrcbin.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.79.9.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Matthew Waters &lt;matthew@centricular.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Src/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.79.9.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY)</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glsrcbin.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glsrcbin.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLSrcBin-struct"></a><h3>struct GstGLSrcBin</h3>
+<pre class="programlisting">struct GstGLSrcBin;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glsrcbin.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstGLSrcBin--src"></a><h3>The <code class="literal">“src”</code> property</h3>
+<pre class="programlisting">  “src”                      <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *</pre>
+<p>The GL src chain to use.</p>
+<p>Flags: Read / Write</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glsrcbin.signal-details"></a><h2>Signal Details</h2>
+<div class="refsect2">
+<a name="GstGLSrcBin-create-element"></a><h3>The <code class="literal">“create-element”</code> signal</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="returnvalue">GstElement</span></a>*
+user_function (<a class="link" href="gst-plugins-bad-plugins-glsrcbin.html#GstGLSrcBin"><span class="type">GstGLSrcBin</span></a> *object,
+               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>     user_data)</pre>
+<p>Will be emitted when we need the processing element/s that this bin will use</p>
+<div class="refsect3">
+<a name="GstGLSrcBin-create-element.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>object</p></td>
+<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-plugins-glsrcbin.html#GstGLSrcBin"><span class="type">GstGLSrcBin</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="GstGLSrcBin-create-element.returns"></a><h4>Returns</h4>
+<p> a new <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p>
+</div>
+<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-glstereomix.html b/docs/plugins/html/gst-plugins-bad-plugins-glstereomix.html
new file mode 100644
index 0000000..f6e4334
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-glstereomix.html
@@ -0,0 +1,265 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>glstereomix: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-glsrcbin.html" title="glsrcbin">
+<link rel="next" href="gst-plugins-bad-plugins-glstereosplit.html" title="glstereosplit">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glstereomix.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glstereomix.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glstereomix.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glstereomix.properties" class="shortcut">Properties</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-glsrcbin.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-glstereosplit.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-glstereomix"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-glstereomix.top_of_page"></a>glstereomix</span></h2>
+<p>glstereomix</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glstereomix.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody><tr>
+<td class="property_type"><span class="type">GstGLStereoDownmix</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glstereomix.html#GstGLStereoMix--downmix-mode" title="The “downmix-mode” property">downmix-mode</a></td>
+<td class="property_flags">Read / Write</td>
+</tr></tbody>
+</table></div>
+</div>
+<a name="GstGLStereoMix"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-glstereomix.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-glstereomix.html#GstGLStereoMix-struct" title="struct GstGLStereoMix">GstGLStereoMix</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glstereomix.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstAggregator.html#GstAggregator">GstAggregator</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstVideoAggregator.html#GstVideoAggregator">GstVideoAggregator</a>
+                        <span class="lineart">╰──</span> GstGLBaseMixer
+                            <span class="lineart">╰──</span> GstGLMixer
+                                <span class="lineart">╰──</span> GstGLStereoMix
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glstereomix.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstGLStereoMix implements
+ <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstChildProxy.html#GstChildProxy-struct">GstChildProxy</a>.</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glstereomix.description"></a><h2>Description</h2>
+<p>Combine 2 input streams to produce a stereoscopic output
+stream. Input views are taken from the left pad and right pad
+respectively, and mixed according to their timelines.</p>
+<p>If either input stream is stereoscopic, the approproriate view
+(left or right) is taken from each stream and placed into the output.</p>
+<p>The multiview representation on the output is chosen according to
+the downstream caps.</p>
+<div class="refsect2">
+<a name="id-1.2.80.8.5"></a><h3>Examples</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1
+2
+3
+4
+5
+6</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v videotestsrc pattern<span class="gtkdoc opt">=</span>ball name<span class="gtkdoc opt">=</span>left \
+    videotestsrc name<span class="gtkdoc opt">=</span>right glstereomix name<span class="gtkdoc opt">=</span>mix \
+    left<span class="gtkdoc opt">. !</span> vid<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span>width<span class="gtkdoc opt">=</span><span class="number">640</span><span class="gtkdoc opt">,</span>height<span class="gtkdoc opt">=</span><span class="number">480</span><span class="gtkdoc opt">!</span> glupload <span class="gtkdoc opt">!</span> mix<span class="gtkdoc opt">.</span>  \
+    right<span class="gtkdoc opt">. !</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span>width<span class="gtkdoc opt">=</span><span class="number">640</span><span class="gtkdoc opt">,</span>height<span class="gtkdoc opt">=</span><span class="number">480</span><span class="gtkdoc opt">!</span> glupload <span class="gtkdoc opt">!</span> mix<span class="gtkdoc opt">.</span>  \
+    mix<span class="gtkdoc opt">. !</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="string">'(memory:GLMemory)'</span><span class="gtkdoc opt">,</span>multiview<span class="gtkdoc opt">-</span>mode<span class="gtkdoc opt">=</span>side<span class="gtkdoc opt">-</span>by<span class="gtkdoc opt">-</span>side <span class="gtkdoc opt">!</span> \
+    queue <span class="gtkdoc opt">!</span> glimagesink output<span class="gtkdoc opt">-</span>multiview<span class="gtkdoc opt">-</span>mode<span class="gtkdoc opt">=</span>side<span class="gtkdoc opt">-</span>by<span class="gtkdoc opt">-</span>side</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Mix 2 different videotestsrc patterns into a side-by-side stereo image and display it.
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1
+2
+3
+4
+5
+6
+7
+8</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>ev v4l2src name<span class="gtkdoc opt">=</span>left \
+    videotestsrc name<span class="gtkdoc opt">=</span>right \
+    glstereomix name<span class="gtkdoc opt">=</span>mix \
+    left<span class="gtkdoc opt">. !</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span>width<span class="gtkdoc opt">=</span><span class="number">640</span><span class="gtkdoc opt">,</span>height<span class="gtkdoc opt">=</span><span class="number">480</span> <span class="gtkdoc opt">!</span> glupload <span class="gtkdoc opt">!</span> glcolorconvert <span class="gtkdoc opt">!</span> mix<span class="gtkdoc opt">.</span>  \
+    right<span class="gtkdoc opt">. !</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span>width<span class="gtkdoc opt">=</span><span class="number">640</span><span class="gtkdoc opt">,</span>height<span class="gtkdoc opt">=</span><span class="number">480</span> <span class="gtkdoc opt">!</span> glupload <span class="gtkdoc opt">!</span> mix<span class="gtkdoc opt">.</span>  \
+    mix<span class="gtkdoc opt">. !</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="string">'(memory:GLMemory)'</span><span class="gtkdoc opt">,</span>multiview<span class="gtkdoc opt">-</span>mode<span class="gtkdoc opt">=</span>top<span class="gtkdoc opt">-</span>bottom <span class="gtkdoc opt">!</span> \
+    glcolorconvert <span class="gtkdoc opt">!</span> gldownload <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> x264enc <span class="gtkdoc opt">!</span> h264parse <span class="gtkdoc opt">!</span> \
+    mp4mux <span class="gtkdoc opt">!</span> progressreport <span class="gtkdoc opt">!</span> filesink location<span class="gtkdoc opt">=</span>output<span class="gtkdoc opt">.</span>mp4</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Mix the input from a camera to the left view, and videotestsrc to the right view,
+   and encode as a top-bottom frame packed H.264 video.
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.80.8.6.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Jan Schmidt &lt;jan@centricular.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.80.8.6.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink_%u</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>request</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw, format=(string){ RGBA, RGB, RGBx, BGR, BGRx, BGRA, xRGB, xBGR, ARGB, ABGR, Y444, I420, YV12, Y42B, Y41B, NV12, NV21, YUY2, UYVY, AYUV, GRAY8, GRAY16_LE, GRAY16_BE, RGB16, BGR16 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw, format=(string){ RGBA, RGB, RGBx, BGR, BGRx, BGRA, xRGB, xBGR, ARGB, ABGR, Y444, I420, YV12, Y42B, Y41B, NV12, NV21, YUY2, UYVY, AYUV, GRAY8, GRAY16_LE, GRAY16_BE, RGB16, BGR16 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glstereomix.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glstereomix.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLStereoMix-struct"></a><h3>struct GstGLStereoMix</h3>
+<pre class="programlisting">struct GstGLStereoMix;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glstereomix.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstGLStereoMix--downmix-mode"></a><h3>The <code class="literal">“downmix-mode”</code> property</h3>
+<pre class="programlisting">  “downmix-mode”             <span class="type">GstGLStereoDownmix</span></pre>
+<p>Output anaglyph type to generate when downmixing to mono.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: Dubois optimised Green-Magenta anaglyph</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-glstereosplit.html b/docs/plugins/html/gst-plugins-bad-plugins-glstereosplit.html
new file mode 100644
index 0000000..d1df6b9
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-glstereosplit.html
@@ -0,0 +1,196 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>glstereosplit: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-glstereomix.html" title="glstereomix">
+<link rel="next" href="gst-plugins-bad-plugins-gltestsrc.html" title="gltestsrc">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glstereosplit.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glstereosplit.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-glstereomix.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gltestsrc.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-glstereosplit"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-glstereosplit.top_of_page"></a>glstereosplit</span></h2>
+<p>glstereosplit</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<a name="GstGLStereoSplit"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-glstereosplit.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-glstereosplit.html#GstGLStereoSplit-struct" title="struct GstGLStereoSplit">GstGLStereoSplit</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glstereosplit.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> GstGLStereoSplit
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glstereosplit.description"></a><h2>Description</h2>
+<p>Receive a stereoscopic video stream and split into left/right</p>
+<div class="refsect2">
+<a name="id-1.2.81.6.3"></a><h3>Examples</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> glstereosplit name<span class="gtkdoc opt">=</span>s <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> glimagesink s<span class="gtkdoc opt">. !</span> queue <span class="gtkdoc opt">!</span> glimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+FBO (Frame Buffer Object) and GLSL (OpenGL Shading Language) are required.
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.81.6.4.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Jan Schmidt &lt;jan@centricular.com&gt;
+Matthew Waters &lt;matthew@centricular.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Codec/Converter</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.81.6.4.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>left</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>right</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glstereosplit.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glstereosplit.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLStereoSplit-struct"></a><h3>struct GstGLStereoSplit</h3>
+<pre class="programlisting">struct GstGLStereoSplit;</pre>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gltestsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-gltestsrc.html
new file mode 100644
index 0000000..06f747e
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gltestsrc.html
@@ -0,0 +1,323 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gltestsrc: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-glstereosplit.html" title="glstereosplit">
+<link rel="next" href="gst-plugins-bad-plugins-gltransformation.html" title="gltransformation">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gltestsrc.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gltestsrc.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gltestsrc.properties" class="shortcut">Properties</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-glstereosplit.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-gltransformation.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gltestsrc"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gltestsrc.top_of_page"></a>gltestsrc</span></h2>
+<p>gltestsrc</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gltestsrc.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gltestsrc.html#GstGLTestSrc--is-live" title="The “is-live” property">is-live</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a class="link" href="gst-plugins-bad-plugins-gltestsrc.html#GstGLTestSrcPattern" title="enum GstGLTestSrcPattern"><span class="type">GstGLTestSrcPattern</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gltestsrc.html#GstGLTestSrc--pattern" title="The “pattern” property">pattern</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint64"><span class="type">gint64</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gltestsrc.html#GstGLTestSrc--timestamp-offset" title="The “timestamp-offset” property">timestamp-offset</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="GstGLTestSrc"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-gltestsrc.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody>
+<tr>
+<td class="datatype_keyword"> </td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-gltestsrc.html#GstGLTestSrc-struct" title="GstGLTestSrc">GstGLTestSrc</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-gltestsrc.html#GstGLTestSrcPattern" title="enum GstGLTestSrcPattern">GstGLTestSrcPattern</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gltestsrc.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseSrc.html#GstBaseSrc-struct">GstBaseSrc</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstPushSrc.html#GstPushSrc-struct">GstPushSrc</a>
+                        <span class="lineart">╰──</span> GstGLTestSrc
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gltestsrc.description"></a><h2>Description</h2>
+<div class="refsect2">
+<a name="id-1.2.82.7.2"></a><h3>Example launch line</h3>
+<p>
+The gltestsrc element is used to produce test video texture.
+The video test produced can be controlled with the "pattern"
+property.
+</p>
+<p>
+</p>
+<pre class="programlisting">
+gst-launch-1.0 -v gltestsrc pattern=smpte ! glimagesink
+</pre>
+<p>
+Shows original SMPTE color bars in a window.
+</p>
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.82.7.3.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>David A. Schleef &lt;ds@schleef.org&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Source/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.82.7.3.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gltestsrc.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gltestsrc.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLTestSrc-struct"></a><h3>GstGLTestSrc</h3>
+<pre class="programlisting">typedef struct _GstGLTestSrc GstGLTestSrc;</pre>
+<p>Opaque data structure.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLTestSrcPattern"></a><h3>enum GstGLTestSrcPattern</h3>
+<p>The test pattern to produce.</p>
+<div class="refsect3">
+<a name="GstGLTestSrcPattern.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-GL-TEST-SRC-SMPTE:CAPS"></a>GST_GL_TEST_SRC_SMPTE</p></td>
+<td class="enum_member_description">
+<p>A standard SMPTE test pattern</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-GL-TEST-SRC-SNOW:CAPS"></a>GST_GL_TEST_SRC_SNOW</p></td>
+<td class="enum_member_description">
+<p>Random noise</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-GL-TEST-SRC-BLACK:CAPS"></a>GST_GL_TEST_SRC_BLACK</p></td>
+<td class="enum_member_description">
+<p>A black image</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-GL-TEST-SRC-WHITE:CAPS"></a>GST_GL_TEST_SRC_WHITE</p></td>
+<td class="enum_member_description">
+<p>A white image</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-GL-TEST-SRC-RED:CAPS"></a>GST_GL_TEST_SRC_RED</p></td>
+<td class="enum_member_description">
+<p>A red image</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-GL-TEST-SRC-GREEN:CAPS"></a>GST_GL_TEST_SRC_GREEN</p></td>
+<td class="enum_member_description">
+<p>A green image</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-GL-TEST-SRC-BLUE:CAPS"></a>GST_GL_TEST_SRC_BLUE</p></td>
+<td class="enum_member_description">
+<p>A blue image</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-GL-TEST-SRC-CHECKERS1:CAPS"></a>GST_GL_TEST_SRC_CHECKERS1</p></td>
+<td class="enum_member_description">
+<p>Checkers pattern (1px)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-GL-TEST-SRC-CHECKERS2:CAPS"></a>GST_GL_TEST_SRC_CHECKERS2</p></td>
+<td class="enum_member_description">
+<p>Checkers pattern (2px)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-GL-TEST-SRC-CHECKERS4:CAPS"></a>GST_GL_TEST_SRC_CHECKERS4</p></td>
+<td class="enum_member_description">
+<p>Checkers pattern (4px)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-GL-TEST-SRC-CHECKERS8:CAPS"></a>GST_GL_TEST_SRC_CHECKERS8</p></td>
+<td class="enum_member_description">
+<p>Checkers pattern (8px)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-GL-TEST-SRC-CIRCULAR:CAPS"></a>GST_GL_TEST_SRC_CIRCULAR</p></td>
+<td class="enum_member_description">
+<p>Circular pattern</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-GL-TEST-SRC-BLINK:CAPS"></a>GST_GL_TEST_SRC_BLINK</p></td>
+<td class="enum_member_description">
+<p>Alternate between black and white</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-GL-TEST-SRC-MANDELBROT:CAPS"></a>GST_GL_TEST_SRC_MANDELBROT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gltestsrc.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstGLTestSrc--is-live"></a><h3>The <code class="literal">“is-live”</code> property</h3>
+<pre class="programlisting">  “is-live”                  <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Whether to act as a live source.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLTestSrc--pattern"></a><h3>The <code class="literal">“pattern”</code> property</h3>
+<pre class="programlisting">  “pattern”                  <a class="link" href="gst-plugins-bad-plugins-gltestsrc.html#GstGLTestSrcPattern" title="enum GstGLTestSrcPattern"><span class="type">GstGLTestSrcPattern</span></a></pre>
+<p>Type of test pattern to generate.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: SMPTE 100% color bars</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLTestSrc--timestamp-offset"></a><h3>The <code class="literal">“timestamp-offset”</code> property</h3>
+<pre class="programlisting">  “timestamp-offset”         <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint64"><span class="type">gint64</span></a></pre>
+<p>An offset added to timestamps set on buffers (in ns).</p>
+<p>Flags: Read / Write</p>
+<p>Default value: 0</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gltransformation.html b/docs/plugins/html/gst-plugins-bad-plugins-gltransformation.html
new file mode 100644
index 0000000..b8147cf
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gltransformation.html
@@ -0,0 +1,161 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gltransformation: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gltestsrc.html" title="gltestsrc">
+<link rel="next" href="gst-plugins-bad-plugins-glupload.html" title="glupload">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-gltransformation.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gltestsrc.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-glupload.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-gltransformation"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-gltransformation.top_of_page"></a>gltransformation</span></h2>
+<p>gltransformation</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gltransformation.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-gltransformation.html#GstGLTransformation" title="struct GstGLTransformation">GstGLTransformation</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gltransformation.description"></a><h2>Description</h2>
+<p>Transforms video on the GPU.</p>
+<div class="refsect2">
+<a name="id-1.2.83.4.3"></a><h3>Examples</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> gltestsrc <span class="gtkdoc opt">!</span> gltransformation rotation<span class="gtkdoc opt">-</span>z<span class="gtkdoc opt">=</span><span class="number">45</span> <span class="gtkdoc opt">!</span> glimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ A pipeline to rotate by 45 degrees
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> gltestsrc <span class="gtkdoc opt">!</span> gltransformation translation<span class="gtkdoc opt">-</span>x<span class="gtkdoc opt">=</span><span class="number">0.5</span> <span class="gtkdoc opt">!</span> glimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Translate the video by 0.5
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> gltestsrc <span class="gtkdoc opt">!</span> gltransformation scale<span class="gtkdoc opt">-</span>y<span class="gtkdoc opt">=</span><span class="number">0.5</span> scale<span class="gtkdoc opt">-</span>x<span class="gtkdoc opt">=</span><span class="number">0.5</span> <span class="gtkdoc opt">!</span> glimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Resize the video by 0.5
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> gltestsrc <span class="gtkdoc opt">!</span> gltransformation rotation<span class="gtkdoc opt">-</span>x<span class="gtkdoc opt">=-</span><span class="number">45</span> ortho<span class="gtkdoc opt">=</span>True <span class="gtkdoc opt">!</span> glimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Rotate the video around the X-Axis by -45° with an orthographic projection
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gltransformation.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gltransformation.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLTransformation"></a><h3>struct GstGLTransformation</h3>
+<pre class="programlisting">struct GstGLTransformation {
+    GstGLFilter filter;
+
+    GstGLShader *shader;
+    GLuint       vao;
+    GLuint       vbo_indices;
+    GLuint       vertex_buffer;
+    GLint        attr_position;
+    GLint        attr_texture;
+
+    GstGLMemory *in_tex;
+    GstGLMemory *out_tex;
+
+    gfloat xrotation;
+    gfloat yrotation;
+    gfloat zrotation;
+
+    gfloat xscale;
+    gfloat yscale;
+
+    gfloat xtranslation;
+    gfloat ytranslation;
+    gfloat ztranslation;
+
+    gfloat xpivot;
+    gfloat ypivot;
+    gfloat zpivot;
+
+    /* perspective */
+    gfloat fov;
+    gfloat aspect;
+    gfloat znear;
+    gfloat zfar;
+    gboolean ortho;
+
+    graphene_matrix_t model_matrix;
+    graphene_matrix_t view_matrix;
+    graphene_matrix_t projection_matrix;
+    graphene_matrix_t inv_model_matrix;
+    graphene_matrix_t inv_view_matrix;
+    graphene_matrix_t inv_projection_matrix;
+    graphene_matrix_t mvp_matrix;
+
+    graphene_vec3_t camera_position;
+
+    gboolean downstream_supports_affine_meta;
+    gboolean caps_change;
+};
+</pre>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-glupload.html b/docs/plugins/html/gst-plugins-bad-plugins-glupload.html
new file mode 100644
index 0000000..757e026
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-glupload.html
@@ -0,0 +1,178 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>glupload: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-gltransformation.html" title="gltransformation">
+<link rel="next" href="gst-plugins-bad-plugins-glvideomixerelement.html" title="glvideomixerelement">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glupload.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glupload.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-gltransformation.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-glvideomixerelement.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-glupload"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-glupload.top_of_page"></a>glupload</span></h2>
+<p>glupload</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<a name="GstGLUploadElement"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-glupload.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-glupload.html#GstGLUploadElement-struct" title="struct GstGLUploadElement">GstGLUploadElement</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glupload.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLBaseFilter.html#GstGLBaseFilter-struct">GstGLBaseFilter</a>
+                        <span class="lineart">╰──</span> GstGLUploadElement
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glupload.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.84.6.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Matthew Waters &lt;matthew@centricular.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.84.6.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY)</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glupload.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glupload.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLUploadElement-struct"></a><h3>struct GstGLUploadElement</h3>
+<pre class="programlisting">struct GstGLUploadElement;</pre>
+<p>Opaque <a class="link" href="gst-plugins-bad-plugins-glupload.html#GstGLUploadElement"><span class="type">GstGLUploadElement</span></a> object</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-glvideomixer.html b/docs/plugins/html/gst-plugins-bad-plugins-glvideomixer.html
new file mode 100644
index 0000000..f40b62b
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-glvideomixer.html
@@ -0,0 +1,177 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>glvideomixer: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-glvideomixerelement.html" title="glvideomixerelement">
+<link rel="next" href="gst-plugins-bad-plugins-glviewconvert.html" title="glviewconvert">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glvideomixer.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-glvideomixerelement.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-glviewconvert.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-glvideomixer"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-glvideomixer.top_of_page"></a>glvideomixer</span></h2>
+<p>glvideomixer</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glvideomixer.description"></a><h2>Description</h2>
+<p>Composites a number of streams into a single output scene using OpenGL in
+a similar fashion to compositor and videomixer. See the compositor plugin
+for documentation about the <span class="type">GstGLVideoMixerPad</span> properties.</p>
+<div class="refsect2">
+<a name="id-1.2.86.3.3"></a><h3>Examples</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1
+2
+3
+4
+5
+6
+7</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span>  glvideomixer name<span class="gtkdoc opt">=</span>m <span class="gtkdoc opt">!</span> glimagesink \
+    videotestsrc <span class="gtkdoc opt">!</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span> format<span class="gtkdoc opt">=</span>YUY2 <span class="gtkdoc opt">!</span> glupload <span class="gtkdoc opt">!</span> glcolorconvert <span class="gtkdoc opt">!</span> m<span class="gtkdoc opt">.</span> \
+    videotestsrc pattern<span class="gtkdoc opt">=</span><span class="number">12</span> <span class="gtkdoc opt">!</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span> format<span class="gtkdoc opt">=</span>I420<span class="gtkdoc opt">,</span> framerate<span class="gtkdoc opt">=</span><span class="number">5</span><span class="gtkdoc opt">/</span><span class="number">1</span><span class="gtkdoc opt">,</span> width<span class="gtkdoc opt">=</span><span class="number">100</span><span class="gtkdoc opt">,</span> height<span class="gtkdoc opt">=</span><span class="number">200</span> <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> \
+    glupload <span class="gtkdoc opt">!</span> glcolorconvert <span class="gtkdoc opt">!</span> m<span class="gtkdoc opt">.</span> \
+    videotestsrc <span class="gtkdoc opt">!</span> glupload <span class="gtkdoc opt">!</span> gleffects effect<span class="gtkdoc opt">=</span><span class="number">2</span> <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> m<span class="gtkdoc opt">.</span>  \
+    videotestsrc <span class="gtkdoc opt">!</span> glupload <span class="gtkdoc opt">!</span> glfiltercube <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> m<span class="gtkdoc opt">.</span> \
+    videotestsrc <span class="gtkdoc opt">!</span> glupload <span class="gtkdoc opt">!</span> gleffects effect<span class="gtkdoc opt">=</span><span class="number">6</span> <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> m<span class="gtkdoc opt">.</span>gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span>  glvideomixer name<span class="gtkdoc opt">=</span>m <span class="gtkdoc opt">!</span> glimagesink \</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.86.3.4.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Matthew Waters &lt;matthew@centricular.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Bin/Filter/Effect/Video/Compositor</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.86.3.4.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink_%u</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>request</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY)</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glvideomixer.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glvideomixer.other_details"></a><h2>Types and Values</h2>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-glvideomixerelement.html b/docs/plugins/html/gst-plugins-bad-plugins-glvideomixerelement.html
new file mode 100644
index 0000000..eb8f613
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-glvideomixerelement.html
@@ -0,0 +1,243 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>glvideomixerelement: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-glupload.html" title="glupload">
+<link rel="next" href="gst-plugins-bad-plugins-glvideomixer.html" title="glvideomixer">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glvideomixerelement.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glvideomixerelement.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glvideomixerelement.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glvideomixerelement.properties" class="shortcut">Properties</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-glupload.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-glvideomixer.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-glvideomixerelement"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-glvideomixerelement.top_of_page"></a>glvideomixerelement</span></h2>
+<p>glvideomixerelement</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glvideomixerelement.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody><tr>
+<td class="property_type"><a class="link" href="gst-plugins-bad-plugins-glvideomixerelement.html#GstGLVideoMixerBackground" title="enum GstGLVideoMixerBackground"><span class="type">GstGLVideoMixerBackground</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glvideomixerelement.html#GstGLVideoMixer--background" title="The “background” property">background</a></td>
+<td class="property_flags">Read / Write</td>
+</tr></tbody>
+</table></div>
+</div>
+<a name="GstGLVideoMixer"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-glvideomixerelement.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-glvideomixerelement.html#GstGLVideoMixer-struct" title="struct GstGLVideoMixer">GstGLVideoMixer</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-glvideomixerelement.html#GstGLVideoMixerBackground" title="enum GstGLVideoMixerBackground">GstGLVideoMixerBackground</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glvideomixerelement.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstAggregator.html#GstAggregator">GstAggregator</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstVideoAggregator.html#GstVideoAggregator">GstVideoAggregator</a>
+                        <span class="lineart">╰──</span> GstGLBaseMixer
+                            <span class="lineart">╰──</span> GstGLMixer
+                                <span class="lineart">╰──</span> GstGLVideoMixer
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glvideomixerelement.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstGLVideoMixer implements
+ <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstChildProxy.html#GstChildProxy-struct">GstChildProxy</a>.</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glvideomixerelement.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.85.8.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Matthew Waters &lt;matthew@centricular.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter/Effect/Video/Compositor</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.85.8.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink_%u</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>request</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glvideomixerelement.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glvideomixerelement.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLVideoMixer-struct"></a><h3>struct GstGLVideoMixer</h3>
+<pre class="programlisting">struct GstGLVideoMixer;</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLVideoMixerBackground"></a><h3>enum GstGLVideoMixerBackground</h3>
+<p>The different backgrounds compositor can blend over.</p>
+<div class="refsect3">
+<a name="GstGLVideoMixerBackground.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-GL-VIDEO-MIXER-BACKGROUND-CHECKER:CAPS"></a>GST_GL_VIDEO_MIXER_BACKGROUND_CHECKER</p></td>
+<td class="enum_member_description">
+<p>checker pattern background</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-GL-VIDEO-MIXER-BACKGROUND-BLACK:CAPS"></a>GST_GL_VIDEO_MIXER_BACKGROUND_BLACK</p></td>
+<td class="enum_member_description">
+<p>solid color black background</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-GL-VIDEO-MIXER-BACKGROUND-WHITE:CAPS"></a>GST_GL_VIDEO_MIXER_BACKGROUND_WHITE</p></td>
+<td class="enum_member_description">
+<p>solid color white background</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-GL-VIDEO-MIXER-BACKGROUND-TRANSPARENT:CAPS"></a>GST_GL_VIDEO_MIXER_BACKGROUND_TRANSPARENT</p></td>
+<td class="enum_member_description">
+<p>background is left transparent and layers are composited using "A OVER B" composition rules. This is only applicable to AYUV and ARGB (and variants) as it preserves the alpha channel and allows for further mixing.</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glvideomixerelement.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstGLVideoMixer--background"></a><h3>The <code class="literal">“background”</code> property</h3>
+<pre class="programlisting">  “background”               <a class="link" href="gst-plugins-bad-plugins-glvideomixerelement.html#GstGLVideoMixerBackground" title="enum GstGLVideoMixerBackground"><span class="type">GstGLVideoMixerBackground</span></a></pre>
+<p>Background type.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: Checker pattern</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-glviewconvert.html b/docs/plugins/html/gst-plugins-bad-plugins-glviewconvert.html
new file mode 100644
index 0000000..abb8b4a
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-glviewconvert.html
@@ -0,0 +1,277 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>glviewconvert: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-glvideomixer.html" title="glvideomixer">
+<link rel="next" href="gst-plugins-bad-plugins-jpegparse.html" title="jpegparse">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glviewconvert.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glviewconvert.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-glviewconvert.properties" class="shortcut">Properties</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-glvideomixer.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-jpegparse.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-glviewconvert"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-glviewconvert.top_of_page"></a>glviewconvert</span></h2>
+<p>glviewconvert</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glviewconvert.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type"><span class="type">GstGLStereoDownmix</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glviewconvert.html#GstGLViewConvertElement--downmix-mode" title="The “downmix-mode” property">downmix-mode</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewFlags"><span class="type">GstVideoMultiviewFlags</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glviewconvert.html#GstGLViewConvertElement--input-flags-override" title="The “input-flags-override” property">input-flags-override</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewFramePacking"><span class="type">GstVideoMultiviewFramePacking</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glviewconvert.html#GstGLViewConvertElement--input-mode-override" title="The “input-mode-override” property">input-mode-override</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewFlags"><span class="type">GstVideoMultiviewFlags</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glviewconvert.html#GstGLViewConvertElement--output-flags-override" title="The “output-flags-override” property">output-flags-override</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewMode"><span class="type">GstVideoMultiviewMode</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-glviewconvert.html#GstGLViewConvertElement--output-mode-override" title="The “output-mode-override” property">output-mode-override</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="GstGLViewConvertElement"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-glviewconvert.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-glviewconvert.html#GstGLViewConvertElement-struct" title="struct GstGLViewConvertElement">GstGLViewConvertElement</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glviewconvert.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLBaseFilter.html#GstGLBaseFilter-struct">GstGLBaseFilter</a>
+                        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0GstGLFilter.html#GstGLFilter-struct">GstGLFilter</a>
+                            <span class="lineart">╰──</span> GstGLViewConvertElement
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glviewconvert.description"></a><h2>Description</h2>
+<p>Convert stereoscopic video between different representations using fragment shaders.</p>
+<p>The element can use either property settings or caps negotiation to choose the
+input and output formats to process.</p>
+<div class="refsect2">
+<a name="id-1.2.87.7.4"></a><h3>Examples</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> glupload <span class="gtkdoc opt">!</span> glviewconvert <span class="gtkdoc opt">!</span> glimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Simple placebo example demonstrating identity passthrough of mono video
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1
+2</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc pattern<span class="gtkdoc opt">=</span>checkers<span class="gtkdoc opt">-</span><span class="number">1</span> <span class="gtkdoc opt">!</span> glupload <span class="gtkdoc opt">!</span> \
+    glviewconvert input<span class="gtkdoc opt">-</span>mode<span class="gtkdoc opt">-</span>override<span class="gtkdoc opt">=</span>side<span class="gtkdoc opt">-</span>by<span class="gtkdoc opt">-</span>side <span class="gtkdoc opt">!</span> glimagesink <span class="gtkdoc opt">-</span>v</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Force re-interpretation of the input checkers pattern as a side-by-side stereoscopic
+   image and display in glimagesink.
+FBO (Frame Buffer Object) and GLSL (OpenGL Shading Language) are required.
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.87.7.5.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-opengl.html#plugin-opengl">opengl</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Jan Schmidt &lt;jan@centricular.com&gt;
+Matthew Waters &lt;matthew@centricular.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Filter</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.87.7.5.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw(ANY), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glviewconvert.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glviewconvert.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLViewConvertElement-struct"></a><h3>struct GstGLViewConvertElement</h3>
+<pre class="programlisting">struct GstGLViewConvertElement;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-glviewconvert.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstGLViewConvertElement--downmix-mode"></a><h3>The <code class="literal">“downmix-mode”</code> property</h3>
+<pre class="programlisting">  “downmix-mode”             <span class="type">GstGLStereoDownmix</span></pre>
+<p>Output anaglyph type to generate when downmixing to mono.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: Dubois optimised Green-Magenta anaglyph</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLViewConvertElement--input-flags-override"></a><h3>The <code class="literal">“input-flags-override”</code> property</h3>
+<pre class="programlisting">  “input-flags-override”     <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewFlags"><span class="type">GstVideoMultiviewFlags</span></a></pre>
+<p>Override any input information about multiview layout flags.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLViewConvertElement--input-mode-override"></a><h3>The <code class="literal">“input-mode-override”</code> property</h3>
+<pre class="programlisting">  “input-mode-override”      <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewFramePacking"><span class="type">GstVideoMultiviewFramePacking</span></a></pre>
+<p>Override any input information about multiview layout.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: GST_VIDEO_MULTIVIEW_FRAME_PACKING_NONE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLViewConvertElement--output-flags-override"></a><h3>The <code class="literal">“output-flags-override”</code> property</h3>
+<pre class="programlisting">  “output-flags-override”    <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewFlags"><span class="type">GstVideoMultiviewFlags</span></a></pre>
+<p>Override automatic negotiation for output multiview layout flags.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstGLViewConvertElement--output-mode-override"></a><h3>The <code class="literal">“output-mode-override”</code> property</h3>
+<pre class="programlisting">  “output-mode-override”     <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewMode"><span class="type">GstVideoMultiviewMode</span></a></pre>
+<p>Override automatic output mode selection for multiview layout.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: GST_VIDEO_MULTIVIEW_MODE_NONE</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-jpegparse.html b/docs/plugins/html/gst-plugins-bad-plugins-jpegparse.html
index 9de33f6..784175a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-jpegparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-jpegparse.html
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
-<link rel="prev" href="gst-plugins-bad-plugins-gaussianblur.html" title="gaussianblur">
+<link rel="prev" href="gst-plugins-bad-plugins-glviewconvert.html" title="glviewconvert">
 <link rel="next" href="gst-plugins-bad-plugins-kaleidoscope.html" title="kaleidoscope">
 <meta name="generator" content="GTK-Doc V1.25 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
@@ -20,7 +20,7 @@
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-bad-plugins-gaussianblur.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-glviewconvert.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="gst-plugins-bad-plugins-kaleidoscope.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
@@ -32,49 +32,6 @@
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-jpegparse.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="functions_return">
-<col class="functions_name">
-</colgroup>
-<tbody>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-plugins-jpegparse.html#GST-JPEG-PARSE:CAPS" title="GST_JPEG_PARSE()">GST_JPEG_PARSE</a><span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-plugins-jpegparse.html#GST-JPEG-PARSE-CLASS:CAPS" title="GST_JPEG_PARSE_CLASS()">GST_JPEG_PARSE_CLASS</a><span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-plugins-jpegparse.html#GST-IS-JPEG-PARSE:CAPS" title="GST_IS_JPEG_PARSE()">GST_IS_JPEG_PARSE</a><span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-plugins-jpegparse.html#GST-IS-JPEG-PARSE-CLASS:CAPS" title="GST_IS_JPEG_PARSE_CLASS()">GST_IS_JPEG_PARSE_CLASS</a><span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/gobjectgobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-plugins-jpegparse.html#gst-jpeg-parse-get-type" title="gst_jpeg_parse_get_type ()">gst_jpeg_parse_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
 <a name="GstJpegParse"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-jpegparse.other"></a><h2>Types and Values</h2>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -82,20 +39,10 @@
 <col width="150px" class="name">
 <col class="description">
 </colgroup>
-<tbody>
-<tr>
+<tbody><tr>
 <td class="datatype_keyword">struct</td>
 <td class="function_name"><a class="link" href="gst-plugins-bad-plugins-jpegparse.html#GstJpegParse-struct" title="struct GstJpegParse">GstJpegParse</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-jpegparse.html#GstJpegParseClass" title="struct GstJpegParseClass">GstJpegParseClass</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-jpegparse.html#GST-TYPE-JPEG-PARSE:CAPS" title="GST_TYPE_JPEG_PARSE">GST_TYPE_JPEG_PARSE</a></td>
-</tr>
-</tbody>
+</tr></tbody>
 </table></div>
 </div>
 <div class="refsect1">
@@ -115,7 +62,7 @@
 image header searching for image properties such as width and height
 among others. Jpegparse can also extract metadata (e.g. xmp).</p>
 <div class="refsect2">
-<a name="id-1.2.41.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.88.6.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -133,7 +80,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.41.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.88.6.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -159,7 +106,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.41.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.88.6.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -213,31 +160,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-jpegparse.functions_details"></a><h2>Functions</h2>
-<div class="refsect2">
-<a name="GST-JPEG-PARSE:CAPS"></a><h3>GST_JPEG_PARSE()</h3>
-<pre class="programlisting">#define             GST_JPEG_PARSE(obj)</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GST-JPEG-PARSE-CLASS:CAPS"></a><h3>GST_JPEG_PARSE_CLASS()</h3>
-<pre class="programlisting">#define             GST_JPEG_PARSE_CLASS(klass)</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GST-IS-JPEG-PARSE:CAPS"></a><h3>GST_IS_JPEG_PARSE()</h3>
-<pre class="programlisting">#define             GST_IS_JPEG_PARSE(obj)</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GST-IS-JPEG-PARSE-CLASS:CAPS"></a><h3>GST_IS_JPEG_PARSE_CLASS()</h3>
-<pre class="programlisting">#define             GST_IS_JPEG_PARSE_CLASS(klass)</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-jpeg-parse-get-type"></a><h3>gst_jpeg_parse_get_type ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gobjectgobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a>
-gst_jpeg_parse_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
+<p></p>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-jpegparse.other_details"></a><h2>Types and Values</h2>
@@ -245,19 +168,6 @@
 <a name="GstJpegParse-struct"></a><h3>struct GstJpegParse</h3>
 <pre class="programlisting">struct GstJpegParse;</pre>
 </div>
-<hr>
-<div class="refsect2">
-<a name="GstJpegParseClass"></a><h3>struct GstJpegParseClass</h3>
-<pre class="programlisting">struct GstJpegParseClass {
-  GstBaseParseClass  parent_class;
-};
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GST-TYPE-JPEG-PARSE:CAPS"></a><h3>GST_TYPE_JPEG_PARSE</h3>
-<pre class="programlisting">#define             GST_TYPE_JPEG_PARSE</pre>
-</div>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-kaleidoscope.html b/docs/plugins/html/gst-plugins-bad-plugins-kaleidoscope.html
index d8ed12f..ad87e02 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-kaleidoscope.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-kaleidoscope.html
@@ -91,7 +91,7 @@
 <p>The kaleidscope element applies 'kaleidoscope' geometric transform to the
 image.</p>
 <div class="refsect2">
-<a name="id-1.2.42.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.89.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -107,7 +107,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.42.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.89.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -133,7 +133,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.42.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.89.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-liveadder.html b/docs/plugins/html/gst-plugins-bad-plugins-liveadder.html
index af6748e..a0b78dc 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-liveadder.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-liveadder.html
@@ -36,7 +36,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.43.3.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.90.3.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -62,7 +62,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.43.3.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.90.3.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-marble.html b/docs/plugins/html/gst-plugins-bad-plugins-marble.html
index 2200032..f3882af 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-marble.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-marble.html
@@ -95,7 +95,7 @@
 <p>Marble is a geometric image transform element. It applies a marbling effect
 to the image.</p>
 <div class="refsect2">
-<a name="id-1.2.44.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.91.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -111,7 +111,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.44.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.91.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -137,7 +137,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.44.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.91.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mimdec.html b/docs/plugins/html/gst-plugins-bad-plugins-mimdec.html
index eb82f2d..1ef1b35 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mimdec.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mimdec.html
@@ -56,10 +56,13 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-mimdec.description"></a><h2>Description</h2>
+<p>The MIMIC codec is used by MSN Messenger's webcam support. It consumes the
+TCP header for the MIMIC codec.</p>
+<p>Its fourcc is ML20.</p>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.46.6.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.93.6.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -85,7 +88,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.46.6.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.93.6.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -152,6 +155,10 @@
 <pre class="programlisting">struct GstMimDec;</pre>
 </div>
 </div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-mimdec.see-also"></a><h2>See Also</h2>
+<p>mimenc</p>
+</div>
 </div>
 <div class="footer">
 <hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mimenc.html b/docs/plugins/html/gst-plugins-bad-plugins-mimenc.html
index 529b3a3..c277718 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mimenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mimenc.html
@@ -72,10 +72,19 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-mimenc.description"></a><h2>Description</h2>
+<p>The MIMIC codec is used by MSN Messenger's webcam support. It creates the
+TCP header for the MIMIC codec.</p>
+<p>When using it to communicate directly with MSN Messenger, if the sender
+wants to stop sending, he has to send a special buffer every 4 seconds.
+When the "paused-mode" property is set to TRUE, if the element receives no
+buffer on its sink pad for 4 seconds, it will produced a special paused
+frame and will continue doing so every 4 seconds until a new buffer is
+u received on its sink pad.</p>
+<p>Its fourcc is ML20.</p>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.45.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.92.7.5.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -101,7 +110,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.45.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.92.7.5.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -178,6 +187,10 @@
 <p>Default value: FALSE</p>
 </div>
 </div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-mimenc.see-also"></a><h2>See Also</h2>
+<p>mimdec</p>
+</div>
 </div>
 <div class="footer">
 <hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mirror.html b/docs/plugins/html/gst-plugins-bad-plugins-mirror.html
index 594a684..e5d5bf2 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mirror.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mirror.html
@@ -42,7 +42,7 @@
 <col width="200px" class="properties_flags">
 </colgroup>
 <tbody><tr>
-<td class="property_type"><span class="type">GstMirrorMode</span></td>
+<td class="property_type"><a class="link" href="gst-plugins-bad-plugins-mirror.html#GstMirrorMode" title="enum GstMirrorMode"><span class="type">GstMirrorMode</span></a></td>
 <td class="property_name"><a class="link" href="gst-plugins-bad-plugins-mirror.html#GstMirror--mode" title="The “mode” property">mode</a></td>
 <td class="property_flags">Read / Write</td>
 </tr></tbody>
@@ -55,10 +55,16 @@
 <col width="150px" class="name">
 <col class="description">
 </colgroup>
-<tbody><tr>
+<tbody>
+<tr>
 <td class="datatype_keyword">struct</td>
 <td class="function_name"><a class="link" href="gst-plugins-bad-plugins-mirror.html#GstMirror-struct" title="struct GstMirror">GstMirror</a></td>
-</tr></tbody>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-mirror.html#GstMirrorMode" title="enum GstMirrorMode">GstMirrorMode</a></td>
+</tr>
+</tbody>
 </table></div>
 </div>
 <div class="refsect1">
@@ -78,7 +84,7 @@
 <p>Mirror is a geometric transform element. It splits the image into two halves
 and reflects one over each other.</p>
 <div class="refsect2">
-<a name="id-1.2.47.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.94.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -94,7 +100,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.47.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.94.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -120,7 +126,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.47.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.94.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -182,12 +188,48 @@
 <a name="GstMirror-struct"></a><h3>struct GstMirror</h3>
 <pre class="programlisting">struct GstMirror;</pre>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GstMirrorMode"></a><h3>enum GstMirrorMode</h3>
+<div class="refsect3">
+<a name="GstMirrorMode.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIRROR-MODE-LEFT:CAPS"></a>GST_MIRROR_MODE_LEFT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIRROR-MODE-RIGHT:CAPS"></a>GST_MIRROR_MODE_RIGHT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIRROR-MODE-TOP:CAPS"></a>GST_MIRROR_MODE_TOP</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIRROR-MODE-BOTTOM:CAPS"></a>GST_MIRROR_MODE_BOTTOM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-mirror.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
 <a name="GstMirror--mode"></a><h3>The <code class="literal">“mode”</code> property</h3>
-<pre class="programlisting">  “mode”                     <span class="type">GstMirrorMode</span></pre>
+<pre class="programlisting">  “mode”                     <a class="link" href="gst-plugins-bad-plugins-mirror.html#GstMirrorMode" title="enum GstMirrorMode"><span class="type">GstMirrorMode</span></a></pre>
 <p>How to split the video frame and which side reflect.</p>
 <p>Flags: Read / Write</p>
 <p>Default value: Split horizontally and reflect left into right</p>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-modplug.html b/docs/plugins/html/gst-plugins-bad-plugins-modplug.html
index 547fcbb..5fdd666 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-modplug.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-modplug.html
@@ -130,10 +130,26 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-modplug.description"></a><h2>Description</h2>
+<p>Modplug uses the <a class="ulink" href="http://modplug-xmms.sourceforge.net/" target="_top">modplug</a>
+library to decode tracked music in the MOD/S3M/XM/IT and related formats.</p>
+<div class="refsect2">
+<a name="id-1.2.95.7.3"></a><h3>Example pipeline</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v filesrc location<span class="gtkdoc opt">=</span><span class="number">1990</span>s<span class="gtkdoc opt">-</span>nostalgia<span class="gtkdoc opt">.</span>xm <span class="gtkdoc opt">!</span> modplug <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> alsasink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Play a FastTracker xm file.
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.48.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.95.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -159,7 +175,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.48.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.95.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mpeg2enc.html b/docs/plugins/html/gst-plugins-bad-plugins-mpeg2enc.html
index 2d391f1..5751283 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mpeg2enc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mpeg2enc.html
@@ -246,10 +246,51 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-mpeg2enc.description"></a><h2>Description</h2>
+<p>This element encodes raw video into an MPEG-1/2 elementary stream using the</p>
+<a class="ulink" href="http://mjpeg.sourceforge.net/" target="_top">mjpegtools</a> library.
+<p>Documentation on MPEG encoding in general can be found in the </p>
+<a class="ulink" href="https://sourceforge.net/docman/display_doc.php?docid=3456&amp;group_id=5776" target="_top">MJPEG Howto</a><p>and on the various available parameters in the documentation
+of the mpeg2enc tool in particular, which shares options with this element.</p>
+<div class="refsect2">
+<a name="id-1.2.96.8.7"></a><h3>Example pipeline</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc num<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">1000</span> <span class="gtkdoc opt">!</span> mpeg2enc <span class="gtkdoc opt">!</span> filesink location<span class="gtkdoc opt">=</span>videotestsrc<span class="gtkdoc opt">.</span>m1v</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ This example pipeline will encode a test video source to a an MPEG1
+elementary stream (with Generic MPEG1 profile).
+<p>
+Likely, the <a class="link" href="gst-plugins-bad-plugins-mpeg2enc.html#GstMpeg2enc--format" title="The “format” property"><span class="type">“format”</span></a> property
+is most important, as it selects the type of MPEG stream that is produced.
+In particular, default property values are dependent on the format,
+and can even be forcibly restrained to certain pre-sets (and thereby ignored).
+Note that the (S)VCD profiles also restrict the image size, so some scaling
+may be needed to accomodate this.  The so-called generic profiles (as used
+in the example above) allow most parameters to be adjusted.
+</p>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc num<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">1000</span> <span class="gtkdoc opt">!</span> videoscale <span class="gtkdoc opt">!</span> mpeg2enc format<span class="gtkdoc opt">=</span><span class="number">1</span> norm<span class="gtkdoc opt">=</span>p <span class="gtkdoc opt">!</span> filesink location<span class="gtkdoc opt">=</span>videotestsrc<span class="gtkdoc opt">.</span>m1v</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ This will produce an MPEG1 profile stream according to VCD2.0 specifications
+for PAL <a class="link" href="gst-plugins-bad-plugins-mpeg2enc.html#GstMpeg2enc--norm" title="The “norm” property"><span class="type">“norm”</span></a> (as the image height is dependent on video norm).
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.49.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.96.8.8.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -276,7 +317,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.49.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.96.8.8.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -630,6 +671,10 @@
 <p>Default value: 0</p>
 </div>
 </div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-mpeg2enc.see-also"></a><h2>See Also</h2>
+<p>mpeg2dec</p>
+</div>
 </div>
 <div class="footer">
 <hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mpegpsmux.html b/docs/plugins/html/gst-plugins-bad-plugins-mpegpsmux.html
index a1cb9e4..b3045b1 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mpegpsmux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mpegpsmux.html
@@ -15,9 +15,7 @@
 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
 <td width="100%" align="left" class="shortcuts">
 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
-                  <a href="#gst-plugins-bad-plugins-mpegpsmux.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
-                  <a href="#gst-plugins-bad-plugins-mpegpsmux.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
-                  <a href="#gst-plugins-bad-plugins-mpegpsmux.properties" class="shortcut">Properties</a></span>
+                  <a href="#gst-plugins-bad-plugins-mpegpsmux.description" class="shortcut">Description</a></span>
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -34,35 +32,11 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="gst-plugins-bad-plugins-mpegpsmux.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table class="informaltable" border="0">
-<colgroup>
-<col width="150px" class="properties_type">
-<col width="300px" class="properties_name">
-<col width="200px" class="properties_flags">
-</colgroup>
-<tbody><tr>
-<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-mpegpsmux.html#MpegPsMux--aggregate-gops" title="The “aggregate-gops” property">aggregate-gops</a></td>
-<td class="property_flags">Read / Write</td>
-</tr></tbody>
-</table></div>
-</div>
-<a name="MpegPsMux"></a><div class="refsect1">
-<a name="gst-plugins-bad-plugins-mpegpsmux.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
-    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
-        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
-            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
-                <span class="lineart">╰──</span> MpegPsMux
-</pre>
-</div>
-<div class="refsect1">
 <a name="gst-plugins-bad-plugins-mpegpsmux.description"></a><h2>Description</h2>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.50.6.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.97.3.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -88,7 +62,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.50.6.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.97.3.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -167,16 +141,6 @@
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-mpegpsmux.other_details"></a><h2>Types and Values</h2>
 </div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-mpegpsmux.property-details"></a><h2>Property Details</h2>
-<div class="refsect2">
-<a name="MpegPsMux--aggregate-gops"></a><h3>The <code class="literal">“aggregate-gops”</code> property</h3>
-<pre class="programlisting">  “aggregate-gops”           <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Whether to aggregate GOPs and push them out as buffer lists.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: FALSE</p>
-</div>
-</div>
 </div>
 <div class="footer">
 <hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mpegtsmux.html b/docs/plugins/html/gst-plugins-bad-plugins-mpegtsmux.html
index 1b6e324..c06b0c0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mpegtsmux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mpegtsmux.html
@@ -15,9 +15,7 @@
 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
 <td width="100%" align="left" class="shortcuts">
 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
-                  <a href="#gst-plugins-bad-plugins-mpegtsmux.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
-                  <a href="#gst-plugins-bad-plugins-mpegtsmux.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
-                  <a href="#gst-plugins-bad-plugins-mpegtsmux.properties" class="shortcut">Properties</a></span>
+                  <a href="#gst-plugins-bad-plugins-mpegtsmux.description" class="shortcut">Description</a></span>
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -34,63 +32,11 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="gst-plugins-bad-plugins-mpegtsmux.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table class="informaltable" border="0">
-<colgroup>
-<col width="150px" class="properties_type">
-<col width="300px" class="properties_name">
-<col width="200px" class="properties_flags">
-</colgroup>
-<tbody>
-<tr>
-<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-mpegtsmux.html#MpegTsMux--m2ts-mode" title="The “m2ts-mode” property">m2ts-mode</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type">
-<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstStructure.html#GstStructure-struct"><span class="type">GstStructure</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-mpegtsmux.html#MpegTsMux--prog-map" title="The “prog-map” property">prog-map</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-mpegtsmux.html#MpegTsMux--pat-interval" title="The “pat-interval” property">pat-interval</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-mpegtsmux.html#MpegTsMux--pmt-interval" title="The “pmt-interval” property">pmt-interval</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-mpegtsmux.html#MpegTsMux--alignment" title="The “alignment” property">alignment</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-mpegtsmux.html#MpegTsMux--si-interval" title="The “si-interval” property">si-interval</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<a name="MpegTsMux"></a><div class="refsect1">
-<a name="gst-plugins-bad-plugins-mpegtsmux.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
-    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
-        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
-            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
-                <span class="lineart">╰──</span> MpegTsMux
-</pre>
-</div>
-<div class="refsect1">
 <a name="gst-plugins-bad-plugins-mpegtsmux.description"></a><h2>Description</h2>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.51.6.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.98.3.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -116,7 +62,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.51.6.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.98.3.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -227,59 +173,6 @@
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-mpegtsmux.other_details"></a><h2>Types and Values</h2>
 </div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-mpegtsmux.property-details"></a><h2>Property Details</h2>
-<div class="refsect2">
-<a name="MpegTsMux--m2ts-mode"></a><h3>The <code class="literal">“m2ts-mode”</code> property</h3>
-<pre class="programlisting">  “m2ts-mode”                <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Set to TRUE to output Blu-Ray disc format with 192 byte packets. FALSE for standard TS format with 188 byte packets.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: FALSE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="MpegTsMux--prog-map"></a><h3>The <code class="literal">“prog-map”</code> property</h3>
-<pre class="programlisting">  “prog-map”                 <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstStructure.html#GstStructure-struct"><span class="type">GstStructure</span></a> *</pre>
-<p>A GstStructure specifies the mapping from elementary streams to programs.</p>
-<p>Flags: Read / Write</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="MpegTsMux--pat-interval"></a><h3>The <code class="literal">“pat-interval”</code> property</h3>
-<pre class="programlisting">  “pat-interval”             <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
-<p>Set the interval (in ticks of the 90kHz clock) for writing out the PAT table.</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &gt;= 1</p>
-<p>Default value: 9000</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="MpegTsMux--pmt-interval"></a><h3>The <code class="literal">“pmt-interval”</code> property</h3>
-<pre class="programlisting">  “pmt-interval”             <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
-<p>Set the interval (in ticks of the 90kHz clock) for writing out the PMT table.</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &gt;= 1</p>
-<p>Default value: 9000</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="MpegTsMux--alignment"></a><h3>The <code class="literal">“alignment”</code> property</h3>
-<pre class="programlisting">  “alignment”                <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>Number of packets per buffer (padded with dummy packets on EOS) (-1 = auto, 0 = all available packets, 7 for UDP streaming).</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &gt;= G_MAXULONG</p>
-<p>Default value: -1</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="MpegTsMux--si-interval"></a><h3>The <code class="literal">“si-interval”</code> property</h3>
-<pre class="programlisting">  “si-interval”              <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
-<p>Set the interval (in ticks of the 90kHz clock) for writing out the ServiceInformation tables.</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: &gt;= 1</p>
-<p>Default value: 9000</p>
-</div>
-</div>
 </div>
 <div class="footer">
 <hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mplex.html b/docs/plugins/html/gst-plugins-bad-plugins-mplex.html
index 0fa961e..3a9967c 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mplex.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mplex.html
@@ -104,10 +104,37 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-mplex.description"></a><h2>Description</h2>
+<p>This element is an audio/video multiplexer for MPEG-1/2 video streams
+and (un)compressed audio streams such as AC3, MPEG layer I/II/III.
+It is based on the <a class="ulink" href="http://mjpeg.sourceforge.net/" target="_top">mjpegtools</a> library.
+Documentation on creating MPEG videos in general can be found in the</p>
+<a class="ulink" href="https://sourceforge.net/docman/display_doc.php?docid=3456&amp;group_id=5776" target="_top">MJPEG Howto</a><p>and the man-page of the mplex tool documents the properties of this element,
+which are shared with the mplex tool.</p>
+<div class="refsect2">
+<a name="id-1.2.99.7.5"></a><h3>Example pipeline</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v videotestsrc num<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">1000</span> <span class="gtkdoc opt">!</span> mpeg2enc <span class="gtkdoc opt">!</span> mplex <span class="gtkdoc opt">!</span> filesink location<span class="gtkdoc opt">=</span>videotestsrc<span class="gtkdoc opt">.</span>mpg</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ This example pipeline will encode a test video source to an
+MPEG1 elementary stream and multiplexes this to an MPEG system stream.
+<p>
+If several streams are being multiplexed, there should (as usual) be
+a queue in each stream, and due to mplex' buffering the capacities of these
+may have to be set to a few times the default settings to prevent the
+pipeline stalling.
+</p>
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.52.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.99.7.6.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -135,7 +162,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.52.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.99.7.6.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -296,6 +323,10 @@
 <p>Default value: FALSE</p>
 </div>
 </div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-mplex.see-also"></a><h2>See Also</h2>
+<p>mpeg2enc</p>
+</div>
 </div>
 <div class="footer">
 <hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-neonhttpsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-neonhttpsrc.html
index 5e62e66..3dc3a75 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-neonhttpsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-neonhttpsrc.html
@@ -145,7 +145,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.53.6.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.100.6.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -171,7 +171,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.53.6.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.100.6.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-ofa.html b/docs/plugins/html/gst-plugins-bad-plugins-ofa.html
index e38327c..7b80764 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-ofa.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-ofa.html
@@ -78,7 +78,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.54.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.101.7.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -104,7 +104,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.54.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.101.7.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -165,6 +165,7 @@
 <div class="refsect2">
 <a name="GstOFA-struct"></a><h3>struct GstOFA</h3>
 <pre class="programlisting">struct GstOFA;</pre>
+<p>Opaque <a class="link" href="gst-plugins-bad-plugins-ofa.html#GstOFA"><span class="type">GstOFA</span></a> data structure</p>
 </div>
 </div>
 <div class="refsect1">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-openalsink.html b/docs/plugins/html/gst-plugins-bad-plugins-openalsink.html
index de88f4a..0842d94 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-openalsink.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-openalsink.html
@@ -15,7 +15,9 @@
 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
 <td width="100%" align="left" class="shortcuts">
 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
-                  <a href="#gst-plugins-bad-plugins-openalsink.description" class="shortcut">Description</a></span>
+                  <a href="#gst-plugins-bad-plugins-openalsink.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-openalsink.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-openalsink.properties" class="shortcut">Properties</a></span>
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -27,16 +29,133 @@
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-openalsink.top_of_page"></a>openalsink</span></h2>
-<p>openalsink</p>
+<p>openalsink — capture raw audio samples through OpenAL</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
+<a name="gst-plugins-bad-plugins-openalsink.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--context-handle" title="The “context-handle” property">context-handle</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--device" title="The “device” property">device</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--device-handle" title="The “device-handle” property">device-handle</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--device-name" title="The “device-name” property">device-name</a></td>
+<td class="property_flags">Read</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--source-id" title="The “source-id” property">source-id</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--user-context" title="The “user-context” property">user-context</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--user-device" title="The “user-device” property">user-device</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--user-source" title="The “user-source” property">user-source</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="GstOpenALSink"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-openalsink.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink-struct" title="struct GstOpenALSink">GstOpenALSink</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-openalsink.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseSink.html#GstBaseSink-struct">GstBaseSink</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstaudiobasesink.html#GstAudioBaseSink-struct">GstAudioBaseSink</a>
+                        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstaudiosink.html#GstAudioSink-struct">GstAudioSink</a>
+                            <span class="lineart">╰──</span> GstOpenALSink
+</pre>
+</div>
+<div class="refsect1">
 <a name="gst-plugins-bad-plugins-openalsink.description"></a><h2>Description</h2>
+<p>This element plays raw audio samples through OpenAL.</p>
+<p>Unfortunately the capture API doesn't have a format enumeration/check. all you can do is try opening it and see if it works.</p>
+<div class="refsect2">
+<a name="id-1.2.103.7.4"></a><h3>Example pipelines</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> audiotestsrc <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> volume volume<span class="gtkdoc opt">=</span><span class="number">0.5</span> <span class="gtkdoc opt">!</span> openalsink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ will play a sine wave (continuous beep sound) through OpenAL.
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> filesrc location<span class="gtkdoc opt">=</span>stream<span class="gtkdoc opt">.</span>wav <span class="gtkdoc opt">!</span> decodebin <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> openalsink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ will play a wav audio file through OpenAL.
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> openalsrc <span class="gtkdoc opt">!</span> <span class="string">&quot;audio/x-raw,format=S16LE,rate=44100&quot;</span> <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> volume volume<span class="gtkdoc opt">=</span><span class="number">0.25</span> <span class="gtkdoc opt">!</span> openalsink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ will capture and play audio through OpenAL.
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.56.3.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.103.7.5.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -62,7 +181,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.56.3.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.103.7.5.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -108,6 +227,76 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-openalsink.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstOpenALSink-struct"></a><h3>struct GstOpenALSink</h3>
+<pre class="programlisting">struct GstOpenALSink;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-openalsink.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstOpenALSink--context-handle"></a><h3>The <code class="literal">“context-handle”</code> property</h3>
+<pre class="programlisting">  “context-handle”           <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></pre>
+<p>Custom playback context.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstOpenALSink--device"></a><h3>The <code class="literal">“device”</code> property</h3>
+<pre class="programlisting">  “device”                   <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Human-readable name of the device.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstOpenALSink--device-handle"></a><h3>The <code class="literal">“device-handle”</code> property</h3>
+<pre class="programlisting">  “device-handle”            <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></pre>
+<p>Custom playback device.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstOpenALSink--device-name"></a><h3>The <code class="literal">“device-name”</code> property</h3>
+<pre class="programlisting">  “device-name”              <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Human-readable name of the opened device.</p>
+<p>Flags: Read</p>
+<p>Default value: ""</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstOpenALSink--source-id"></a><h3>The <code class="literal">“source-id”</code> property</h3>
+<pre class="programlisting">  “source-id”                <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
+<p>Custom playback sID.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstOpenALSink--user-context"></a><h3>The <code class="literal">“user-context”</code> property</h3>
+<pre class="programlisting">  “user-context”             <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></pre>
+<p>User context.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstOpenALSink--user-device"></a><h3>The <code class="literal">“user-device”</code> property</h3>
+<pre class="programlisting">  “user-device”              <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></pre>
+<p>User device.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstOpenALSink--user-source"></a><h3>The <code class="literal">“user-source”</code> property</h3>
+<pre class="programlisting">  “user-source”              <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
+<p>User source.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: 0</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-openalsink.see-also"></a><h2>See Also</h2>
+<p>openalsrc</p>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-openalsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-openalsrc.html
index ccb707e..e44e55c 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-openalsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-openalsrc.html
@@ -29,7 +29,7 @@
 <div class="refnamediv"><table width="100%"><tr>
 <td valign="top">
 <h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-openalsrc.top_of_page"></a>openalsrc</span></h2>
-<p>openalsrc</p>
+<p>openalsrc — capture raw audio samples through OpenAL</p>
 </td>
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
@@ -85,10 +85,36 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-openalsrc.description"></a><h2>Description</h2>
+<p>This element captures raw audio samples through OpenAL.</p>
+<div class="refsect2">
+<a name="id-1.2.102.7.3"></a><h3>Example pipelines</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v openalsrc <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> wavenc <span class="gtkdoc opt">!</span> filesink location<span class="gtkdoc opt">=</span>stream<span class="gtkdoc opt">.</span>wav</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ * will capture sound through OpenAL and encode it to a wav file.
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> openalsrc <span class="gtkdoc opt">!</span> <span class="string">&quot;audio/x-raw,format=S16LE,rate=44100&quot;</span> <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> volume volume<span class="gtkdoc opt">=</span><span class="number">0.25</span> <span class="gtkdoc opt">!</span> openalsink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ will capture and play audio through OpenAL.
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.55.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.102.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -114,7 +140,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.55.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.102.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -175,6 +201,10 @@
 <p>Default value: NULL</p>
 </div>
 </div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-openalsrc.see-also"></a><h2>See Also</h2>
+<p>openalsink</p>
+</div>
 </div>
 <div class="footer">
 <hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-opencvtextoverlay.html b/docs/plugins/html/gst-plugins-bad-plugins-opencvtextoverlay.html
index 06dd2d7..37ab32d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-opencvtextoverlay.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-opencvtextoverlay.html
@@ -91,7 +91,7 @@
 </tbody>
 </table></div>
 </div>
-<a name="GstOpenalSrc"></a><a name="GstOpencvTextOverlay"></a><div class="refsect1">
+<a name="GstOpencvTextOverlay"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-opencvtextoverlay.other"></a><h2>Types and Values</h2>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
@@ -118,10 +118,25 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-opencvtextoverlay.description"></a><h2>Description</h2>
+<p>opencvtextoverlay renders the text on top of the video frames</p>
+<div class="refsect2">
+<a name="id-1.2.123.7.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> opencvtextoverlay text<span class="gtkdoc opt">=</span><span class="string">&quot;Opencv Text Overlay &quot;</span> <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> xvimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.75.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.123.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -147,7 +162,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.75.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.123.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-pcapparse.html b/docs/plugins/html/gst-plugins-bad-plugins-pcapparse.html
index fd4a848..1f3aed0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-pcapparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-pcapparse.html
@@ -107,7 +107,7 @@
 <a class="link" href="gst-plugins-bad-plugins-pcapparse.html#GstPcapParse--src-port" title="The “src-port” property"><span class="type">“src-port”</span></a> and <a class="link" href="gst-plugins-bad-plugins-pcapparse.html#GstPcapParse--dst-port" title="The “dst-port” property"><span class="type">“dst-port”</span></a> to restrict which packets
 should be included.</p>
 <div class="refsect2">
-<a name="id-1.2.57.7.3"></a><h3>Example pipelines</h3>
+<a name="id-1.2.104.7.3"></a><h3>Example pipelines</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -126,7 +126,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.57.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.104.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -152,7 +152,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.57.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.104.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-pinch.html b/docs/plugins/html/gst-plugins-bad-plugins-pinch.html
index 98c87d4..65925b2 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-pinch.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-pinch.html
@@ -7,7 +7,7 @@
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-pcapparse.html" title="pcapparse">
-<link rel="next" href="gst-plugins-bad-plugins-pyramidsegment.html" title="pyramidsegment">
+<link rel="next" href="gst-plugins-bad-plugins-rawaudioparse.html" title="rawaudioparse">
 <meta name="generator" content="GTK-Doc V1.25 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -22,7 +22,7 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="gst-plugins-bad-plugins-pcapparse.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-bad-plugins-pyramidsegment.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-rawaudioparse.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="gst-plugins-bad-plugins-pinch"></a><div class="titlepage"></div>
@@ -78,7 +78,7 @@
 <a name="gst-plugins-bad-plugins-pinch.description"></a><h2>Description</h2>
 <p>Pinch applies a 'pinch' geometric transform to the image.</p>
 <div class="refsect2">
-<a name="id-1.2.58.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.105.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -94,7 +94,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.58.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.105.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -120,7 +120,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.58.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.105.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-aiff.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-aiff.html
index 8019fad..6e327dd 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-aiff.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-aiff.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-assrender.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-assrender.html
index 5036103..ee5d10a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-assrender.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-assrender.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiomixer.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiomixer.html
index 27f05a2..d256d43 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiomixer.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiomixer.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiovisualizers.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiovisualizers.html
index 4a1e00e..d3f4cfb 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiovisualizers.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiovisualizers.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-autoconvert.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-autoconvert.html
index eb7136c..9722137 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-autoconvert.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-autoconvert.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bayer.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bayer.html
index 2818cf7..2544cc9 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bayer.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bayer.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bs2b.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bs2b.html
index 79e4ca6..a76b16a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bs2b.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bs2b.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bz2.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bz2.html
index 03a0abf..a67543f 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bz2.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bz2.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-camerabin.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-camerabin.html
index 987dc5e..51b318b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-camerabin.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-camerabin.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-coloreffects.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-coloreffects.html
index e6c890c..2ba036c 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-coloreffects.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-coloreffects.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-curl.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-curl.html
index d4254d2..148e9a6 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-curl.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-curl.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dataurisrc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dataurisrc.html
index 261e1c1..ed4791b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dataurisrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dataurisrc.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-debugutilsbad.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-debugutilsbad.html
index 6dc93fe..6275c4f 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-debugutilsbad.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-debugutilsbad.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dtsdec.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dtsdec.html
index f090d6e..109c6cc 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dtsdec.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dtsdec.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvb.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvb.html
index c2c95dc..2c53c08 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvb.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvb.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvdspu.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvdspu.html
index 6b2c245..a2426f3 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvdspu.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvdspu.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-faac.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-faac.html
index 96cf9d5..c035d4b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-faac.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-faac.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-faad.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-faad.html
index 9fd3cab..1fc0441 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-faad.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-faad.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-festival.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-festival.html
index c1ba0fe..1d1fb62 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-festival.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-festival.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-gaudieffects.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-gaudieffects.html
index 2cae289..6d0882f 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-gaudieffects.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-gaudieffects.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-geometrictransform.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-geometrictransform.html
index e32af49..b98cdc8 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-geometrictransform.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-geometrictransform.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-gsm.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-gsm.html
index b8626d1..f311365 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-gsm.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-gsm.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-jpegformat.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-jpegformat.html
index 23be040..ae48467 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-jpegformat.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-jpegformat.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mimic.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mimic.html
index e478bbe..7269da0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mimic.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mimic.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mms.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mms.html
index c5c391f..56ab726 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mms.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mms.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-modplug.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-modplug.html
index 2068b65..7ed88c4 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-modplug.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-modplug.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpeg2enc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpeg2enc.html
index 8785340..49929e9 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpeg2enc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpeg2enc.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegpsmux.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegpsmux.html
index 5716ae4..91fb6c5 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegpsmux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegpsmux.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegtsmux.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegtsmux.html
index acecf9d..03e1d51 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegtsmux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegtsmux.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mplex.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mplex.html
index 7966a67..fbf186f 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mplex.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mplex.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-neon.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-neon.html
index 0f67c78..b9bf5bd 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-neon.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-neon.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.9.0.1</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -50,7 +50,7 @@
 </tr>
 <tr>
 <td><p><span class="term">package</span></p></td>
-<td>GStreamer Bad Plug-ins source release</td>
+<td>GStreamer Bad Plug-ins git</td>
 </tr>
 <tr>
 <td><p><span class="term">origin</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-ofa.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-ofa.html
index 840400f..6fc9cbc 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-ofa.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-ofa.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-openal.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-openal.html
index 56e5982..0873040 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-openal.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-openal.html
@@ -7,7 +7,7 @@
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-ofa.html" title="ofa">
-<link rel="next" href="gst-plugins-bad-plugins-plugin-opencv.html" title="opencv">
+<link rel="next" href="gst-plugins-bad-plugins-plugin-opengl.html" title="opengl">
 <meta name="generator" content="GTK-Doc V1.25 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -17,7 +17,7 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="gst-plugins-bad-plugins-plugin-ofa.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-bad-plugins-plugin-opencv.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-plugin-opengl.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="gst-plugins-bad-plugins-plugin-openal"></a><div class="titlepage"></div>
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-opencv.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-opencv.html
index 3d1fa5b..0c4871e 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-opencv.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-opencv.html
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
-<link rel="prev" href="gst-plugins-bad-plugins-plugin-openal.html" title="openal">
+<link rel="prev" href="gst-plugins-bad-plugins-plugin-opengl.html" title="opengl">
 <link rel="next" href="gst-plugins-bad-plugins-plugin-pcapparse.html" title="pcapparse">
 <meta name="generator" content="GTK-Doc V1.25 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
@@ -16,7 +16,7 @@
 <td width="100%" align="left" class="shortcuts"></td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-bad-plugins-plugin-openal.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-plugin-opengl.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="gst-plugins-bad-plugins-plugin-pcapparse.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
@@ -29,7 +29,7 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.3.35.3"></a><h2>Plugin Information</h2>
+<a name="id-1.3.36.3"></a><h2>Plugin Information</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -60,7 +60,7 @@
 </table></div>
 </div>
 <div class="refsect1">
-<a name="id-1.3.35.4"></a><h2>Elements</h2>
+<a name="id-1.3.36.4"></a><h2>Elements</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -126,10 +126,6 @@
 <td>Write text on the top of video</td>
 </tr>
 <tr>
-<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-pyramidsegment.html" title="pyramidsegment">pyramidsegment</a></span></p></td>
-<td>Applies pyramid segmentation to a video or image.</td>
-</tr>
-<tr>
 <td><p><span class="term">retinex</span></p></td>
 <td>Multiscale retinex for colour image enhancement</td>
 </tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-opengl.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-opengl.html
new file mode 100644
index 0000000..dcb49bd
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-opengl.html
@@ -0,0 +1,257 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>opengl: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
+<link rel="prev" href="gst-plugins-bad-plugins-plugin-openal.html" title="openal">
+<link rel="next" href="gst-plugins-bad-plugins-plugin-opencv.html" title="opencv">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-plugin-openal.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-plugin-opencv.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-plugin-opengl"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">opengl</span></h2>
+<p>opengl — <a name="plugin-opengl"></a>OpenGL plugin</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="id-1.3.35.3"></a><h2>Plugin Information</h2>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">filename</span></p></td>
+<td>libgstopengl.so</td>
+</tr>
+<tr>
+<td><p><span class="term">version</span></p></td>
+<td>1.9.90</td>
+</tr>
+<tr>
+<td><p><span class="term">run-time license</span></p></td>
+<td>LGPL</td>
+</tr>
+<tr>
+<td><p><span class="term">package</span></p></td>
+<td>GStreamer Bad Plug-ins source release</td>
+</tr>
+<tr>
+<td><p><span class="term">origin</span></p></td>
+<td>Unknown package origin</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="id-1.3.35.4"></a><h2>Elements</h2>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-glcolorbalance.html" title="glcolorbalance">glcolorbalance</a></span></p></td>
+<td>Adjusts brightness, contrast, hue, saturation on a video stream</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-glcolorconvert.html" title="glcolorconvert">glcolorconvert</a></span></p></td>
+<td>Converts between color spaces using OpenGL shaders</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-glcolorscale.html" title="glcolorscale">glcolorscale</a></span></p></td>
+<td>Colorspace converter and video scaler</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-gldeinterlace.html" title="gldeinterlace">gldeinterlace</a></span></p></td>
+<td>Deinterlacing based on fragment shaders</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-gldifferencematte.html" title="gldifferencematte">gldifferencematte</a></span></p></td>
+<td>Saves a background frame and replace it with a pixbuf</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-gldownload.html" title="gldownload">gldownload</a></span></p></td>
+<td>Downloads data from OpenGL</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-gleffects.html" title="gleffects">gleffects</a></span></p></td>
+<td>GL Shading Language effects</td>
+</tr>
+<tr>
+<td><p><span class="term">gleffects_blur</span></p></td>
+<td>GL Shading Language effects - Blur with 9x9 separable convolution Effect</td>
+</tr>
+<tr>
+<td><p><span class="term">gleffects_bulge</span></p></td>
+<td>GL Shading Language effects - Bulge Effect</td>
+</tr>
+<tr>
+<td><p><span class="term">gleffects_fisheye</span></p></td>
+<td>GL Shading Language effects - FishEye Effect</td>
+</tr>
+<tr>
+<td><p><span class="term">gleffects_glow</span></p></td>
+<td>GL Shading Language effects - Glow Lighting Effect</td>
+</tr>
+<tr>
+<td><p><span class="term">gleffects_heat</span></p></td>
+<td>GL Shading Language effects - Heat Signature Effect</td>
+</tr>
+<tr>
+<td><p><span class="term">gleffects_identity</span></p></td>
+<td>GL Shading Language effects - Do nothing Effect</td>
+</tr>
+<tr>
+<td><p><span class="term">gleffects_laplacian</span></p></td>
+<td>GL Shading Language effects - Laplacian Convolution Demo Effect</td>
+</tr>
+<tr>
+<td><p><span class="term">gleffects_lumaxpro</span></p></td>
+<td>GL Shading Language effects - Luma Cross Processing Effect</td>
+</tr>
+<tr>
+<td><p><span class="term">gleffects_mirror</span></p></td>
+<td>GL Shading Language effects - Mirror Effect</td>
+</tr>
+<tr>
+<td><p><span class="term">gleffects_sepia</span></p></td>
+<td>GL Shading Language effects - Sepia Toning Effect</td>
+</tr>
+<tr>
+<td><p><span class="term">gleffects_sin</span></p></td>
+<td>GL Shading Language effects - All Grey but Red Effect</td>
+</tr>
+<tr>
+<td><p><span class="term">gleffects_sobel</span></p></td>
+<td>GL Shading Language effects - Sobel edge detection Effect</td>
+</tr>
+<tr>
+<td><p><span class="term">gleffects_square</span></p></td>
+<td>GL Shading Language effects - Square Effect</td>
+</tr>
+<tr>
+<td><p><span class="term">gleffects_squeeze</span></p></td>
+<td>GL Shading Language effects - Squeeze Effect</td>
+</tr>
+<tr>
+<td><p><span class="term">gleffects_stretch</span></p></td>
+<td>GL Shading Language effects - Stretch Effect</td>
+</tr>
+<tr>
+<td><p><span class="term">gleffects_tunnel</span></p></td>
+<td>GL Shading Language effects - Light Tunnel Effect</td>
+</tr>
+<tr>
+<td><p><span class="term">gleffects_twirl</span></p></td>
+<td>GL Shading Language effects - Twirl Effect</td>
+</tr>
+<tr>
+<td><p><span class="term">gleffects_xpro</span></p></td>
+<td>GL Shading Language effects - Cross Processing Effect</td>
+</tr>
+<tr>
+<td><p><span class="term">gleffects_xray</span></p></td>
+<td>GL Shading Language effects - Glowing negative effect</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-glfilterapp.html" title="glfilterapp">glfilterapp</a></span></p></td>
+<td>Use client callbacks to define the scene</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-glfilterbin.html" title="glfilterbin">glfilterbin</a></span></p></td>
+<td>Infrastructure to process GL textures</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-glfiltercube.html" title="glfiltercube">glfiltercube</a></span></p></td>
+<td>Map input texture on the 6 cube faces</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-glfilterglass.html" title="glfilterglass">glfilterglass</a></span></p></td>
+<td>Glass Filter</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-glimagesink.html" title="glimagesink">glimagesink</a></span></p></td>
+<td>Infrastructure to process GL textures</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-glimagesinkelement.html" title="glimagesinkelement">glimagesinkelement</a></span></p></td>
+<td>A videosink based on OpenGL</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-glmixerbin.html" title="glmixerbin">glmixerbin</a></span></p></td>
+<td>OpenGL video_mixer empty bin</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-glmosaic.html" title="glmosaic">glmosaic</a></span></p></td>
+<td>OpenGL mosaic</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-gloverlay.html" title="gloverlay">gloverlay</a></span></p></td>
+<td>Overlay GL video texture with a JPEG/PNG image</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-glshader.html" title="glshader">glshader</a></span></p></td>
+<td>Perform operations with a GLSL shader</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-glsinkbin.html" title="glsinkbin">glsinkbin</a></span></p></td>
+<td>Infrastructure to process GL textures</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-glsrcbin.html" title="glsrcbin">glsrcbin</a></span></p></td>
+<td>Infrastructure to process GL textures</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-glstereomix.html" title="glstereomix">glstereomix</a></span></p></td>
+<td>OpenGL stereo video combiner</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-glstereosplit.html" title="glstereosplit">glstereosplit</a></span></p></td>
+<td>Splits a stereoscopic stream into separate left/right streams</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-gltestsrc.html" title="gltestsrc">gltestsrc</a></span></p></td>
+<td>Creates a test video stream</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-glupload.html" title="glupload">glupload</a></span></p></td>
+<td>Uploads data into OpenGL</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-glvideomixer.html" title="glvideomixer">glvideomixer</a></span></p></td>
+<td>OpenGL video_mixer bin</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-glvideomixerelement.html" title="glvideomixerelement">glvideomixerelement</a></span></p></td>
+<td>OpenGL video_mixer</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-glviewconvert.html" title="glviewconvert">glviewconvert</a></span></p></td>
+<td>Convert stereoscopic/multiview video formats</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-pcapparse.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-pcapparse.html
index 52ed304..c3bb0d8 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-pcapparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-pcapparse.html
@@ -29,7 +29,7 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.3.36.3"></a><h2>Plugin Information</h2>
+<a name="id-1.3.37.3"></a><h2>Plugin Information</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -60,7 +60,7 @@
 </table></div>
 </div>
 <div class="refsect1">
-<a name="id-1.3.36.4"></a><h2>Elements</h2>
+<a name="id-1.3.37.4"></a><h2>Elements</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rawparse.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rawparse.html
index 3d2f471..8047c5d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rawparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rawparse.html
@@ -29,7 +29,7 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.3.37.3"></a><h2>Plugin Information</h2>
+<a name="id-1.3.38.3"></a><h2>Plugin Information</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -60,7 +60,7 @@
 </table></div>
 </div>
 <div class="refsect1">
-<a name="id-1.3.37.4"></a><h2>Elements</h2>
+<a name="id-1.3.38.4"></a><h2>Elements</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -68,12 +68,28 @@
 </colgroup>
 <tbody>
 <tr>
-<td><p><span class="term">audioparse</span></p></td>
-<td>Converts stream into audio frames</td>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-audioparse.html" title="audioparse">audioparse</a></span></p></td>
+<td>Converts stream into audio frames (deprecated: use rawaudioparse instead)</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-rawaudioparse.html" title="rawaudioparse">rawaudioparse</a></span></p></td>
+<td>Converts unformatted data streams into timestamped raw audio frames</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-rawvideoparse.html" title="rawvideoparse">rawvideoparse</a></span></p></td>
+<td>Converts unformatted data streams into timestamped raw video frames</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-unalignedaudioparse.html" title="unalignedaudioparse">unalignedaudioparse</a></span></p></td>
+<td>Parse unaligned raw audio data</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-unalignedvideoparse.html" title="unalignedvideoparse">unalignedvideoparse</a></span></p></td>
+<td>Parse unaligned raw video data</td>
 </tr>
 <tr>
 <td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-videoparse.html" title="videoparse">videoparse</a></span></p></td>
-<td>Converts stream into video frames</td>
+<td>Converts stream into video frames (deprecated: use rawvideoparse instead)</td>
 </tr>
 </tbody>
 </table></div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rfbsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rfbsrc.html
index c8f7bcd..2944369 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rfbsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rfbsrc.html
@@ -29,7 +29,7 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.3.38.3"></a><h2>Plugin Information</h2>
+<a name="id-1.3.39.3"></a><h2>Plugin Information</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -60,7 +60,7 @@
 </table></div>
 </div>
 <div class="refsect1">
-<a name="id-1.3.38.4"></a><h2>Elements</h2>
+<a name="id-1.3.39.4"></a><h2>Elements</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtmp.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtmp.html
index 969e3dc..cefdd06 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtmp.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtmp.html
@@ -29,7 +29,7 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.3.39.3"></a><h2>Plugin Information</h2>
+<a name="id-1.3.40.3"></a><h2>Plugin Information</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -60,7 +60,7 @@
 </table></div>
 </div>
 <div class="refsect1">
-<a name="id-1.3.39.4"></a><h2>Elements</h2>
+<a name="id-1.3.40.4"></a><h2>Elements</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdp.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdp.html
index e96c50b..cd13383 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdp.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdp.html
@@ -29,7 +29,7 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.3.40.3"></a><h2>Plugin Information</h2>
+<a name="id-1.3.41.3"></a><h2>Plugin Information</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -60,16 +60,22 @@
 </table></div>
 </div>
 <div class="refsect1">
-<a name="id-1.3.40.4"></a><h2>Elements</h2>
+<a name="id-1.3.41.4"></a><h2>Elements</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
 <col>
 </colgroup>
-<tbody><tr>
+<tbody>
+<tr>
 <td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-sdpdemux.html" title="sdpdemux">sdpdemux</a></span></p></td>
 <td>Receive data over the network via SDP</td>
-</tr></tbody>
+</tr>
+<tr>
+<td><p><span class="term">sdpsrc</span></p></td>
+<td>Stream RTP based on an SDP</td>
+</tr>
+</tbody>
 </table></div>
 </div>
 </div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-shm.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-shm.html
index 1125dc8..a164b64 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-shm.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-shm.html
@@ -29,7 +29,7 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.3.41.3"></a><h2>Plugin Information</h2>
+<a name="id-1.3.42.3"></a><h2>Plugin Information</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -60,7 +60,7 @@
 </table></div>
 </div>
 <div class="refsect1">
-<a name="id-1.3.41.4"></a><h2>Elements</h2>
+<a name="id-1.3.42.4"></a><h2>Elements</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-soundtouch.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-soundtouch.html
index 1462be3..77d8ff7 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-soundtouch.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-soundtouch.html
@@ -29,7 +29,7 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.3.42.3"></a><h2>Plugin Information</h2>
+<a name="id-1.3.43.3"></a><h2>Plugin Information</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -60,7 +60,7 @@
 </table></div>
 </div>
 <div class="refsect1">
-<a name="id-1.3.42.4"></a><h2>Elements</h2>
+<a name="id-1.3.43.4"></a><h2>Elements</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-speed.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-speed.html
index c725eef..186f130 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-speed.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-speed.html
@@ -29,7 +29,7 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.3.43.3"></a><h2>Plugin Information</h2>
+<a name="id-1.3.44.3"></a><h2>Plugin Information</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -60,7 +60,7 @@
 </table></div>
 </div>
 <div class="refsect1">
-<a name="id-1.3.43.4"></a><h2>Elements</h2>
+<a name="id-1.3.44.4"></a><h2>Elements</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-voaacenc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-voaacenc.html
index 6ca1d36..a5325a0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-voaacenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-voaacenc.html
@@ -29,7 +29,7 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.3.44.3"></a><h2>Plugin Information</h2>
+<a name="id-1.3.45.3"></a><h2>Plugin Information</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -60,7 +60,7 @@
 </table></div>
 </div>
 <div class="refsect1">
-<a name="id-1.3.44.4"></a><h2>Elements</h2>
+<a name="id-1.3.45.4"></a><h2>Elements</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html
index 6944786..6a7cae4 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html
@@ -7,7 +7,7 @@
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-voaacenc.html" title="voaacenc">
-<link rel="next" href="gst-plugins-bad-plugins-plugin-zbar.html" title="zbar">
+<link rel="next" href="gst-plugins-bad-plugins-plugin-webrtcdsp.html" title="webrtcdsp">
 <meta name="generator" content="GTK-Doc V1.25 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -17,7 +17,7 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="gst-plugins-bad-plugins-plugin-voaacenc.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-bad-plugins-plugin-zbar.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-plugin-webrtcdsp.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="gst-plugins-bad-plugins-plugin-voamrwbenc"></a><div class="titlepage"></div>
@@ -29,7 +29,7 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.3.45.3"></a><h2>Plugin Information</h2>
+<a name="id-1.3.46.3"></a><h2>Plugin Information</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -60,7 +60,7 @@
 </table></div>
 </div>
 <div class="refsect1">
-<a name="id-1.3.45.4"></a><h2>Elements</h2>
+<a name="id-1.3.46.4"></a><h2>Elements</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-webrtcdsp.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-webrtcdsp.html
new file mode 100644
index 0000000..fcdcb55
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-webrtcdsp.html
@@ -0,0 +1,85 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>webrtcdsp: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
+<link rel="prev" href="gst-plugins-bad-plugins-plugin-voamrwbenc.html" title="voamrwbenc">
+<link rel="next" href="gst-plugins-bad-plugins-plugin-zbar.html" title="zbar">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-plugin-voamrwbenc.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-plugin-zbar.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-plugin-webrtcdsp"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">webrtcdsp</span></h2>
+<p>webrtcdsp — <a name="plugin-webrtcdsp"></a>Voice pre-processing using WebRTC Audio Processing Library</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="id-1.3.47.3"></a><h2>Plugin Information</h2>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">filename</span></p></td>
+<td>libgstwebrtcdsp.so</td>
+</tr>
+<tr>
+<td><p><span class="term">version</span></p></td>
+<td>1.9.90</td>
+</tr>
+<tr>
+<td><p><span class="term">run-time license</span></p></td>
+<td>LGPL</td>
+</tr>
+<tr>
+<td><p><span class="term">package</span></p></td>
+<td>WebRTCDsp</td>
+</tr>
+<tr>
+<td><p><span class="term">origin</span></p></td>
+<td>http://git.collabora.com</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="id-1.3.47.4"></a><h2>Elements</h2>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html" title="webrtcdsp">webrtcdsp</a></span></p></td>
+<td>Pre-processes voice with WebRTC Audio Processing Library</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-webrtcechoprobe.html" title="webrtcechoprobe">webrtcechoprobe</a></span></p></td>
+<td>Gathers playback buffers for webrtcdsp</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html
index 172b238..aa8399c 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
-<link rel="prev" href="gst-plugins-bad-plugins-plugin-voamrwbenc.html" title="voamrwbenc">
+<link rel="prev" href="gst-plugins-bad-plugins-plugin-webrtcdsp.html" title="webrtcdsp">
 <meta name="generator" content="GTK-Doc V1.25 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -15,7 +15,7 @@
 <td width="100%" align="left" class="shortcuts"></td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-bad-plugins-plugin-voamrwbenc.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-plugin-webrtcdsp.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><img src="right-insensitive.png" width="16" height="16" border="0"></td>
 </tr></table>
 <div class="refentry">
@@ -28,7 +28,7 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.3.46.3"></a><h2>Plugin Information</h2>
+<a name="id-1.3.48.3"></a><h2>Plugin Information</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -41,7 +41,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -59,7 +59,7 @@
 </table></div>
 </div>
 <div class="refsect1">
-<a name="id-1.3.46.4"></a><h2>Elements</h2>
+<a name="id-1.3.48.4"></a><h2>Elements</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-pyramidsegment.html b/docs/plugins/html/gst-plugins-bad-plugins-pyramidsegment.html
deleted file mode 100644
index 441d404..0000000
--- a/docs/plugins/html/gst-plugins-bad-plugins-pyramidsegment.html
+++ /dev/null
@@ -1,128 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>pyramidsegment: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
-<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
-<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
-<link rel="prev" href="gst-plugins-bad-plugins-pinch.html" title="pinch">
-<link rel="next" href="gst-plugins-bad-plugins-rfbsrc.html" title="rfbsrc">
-<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts">
-<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
-                  <a href="#gst-plugins-bad-plugins-pyramidsegment.description" class="shortcut">Description</a></span>
-</td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-bad-plugins-pinch.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-bad-plugins-rfbsrc.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="refentry">
-<a name="gst-plugins-bad-plugins-pyramidsegment"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-pyramidsegment.top_of_page"></a>pyramidsegment</span></h2>
-<p>pyramidsegment</p>
-</td>
-<td class="gallery_image" valign="top" align="right"></td>
-</tr></table></div>
-<a name="GstPinch"></a><div class="refsect1">
-<a name="gst-plugins-bad-plugins-pyramidsegment.description"></a><h2>Description</h2>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<div class="refsect2">
-<a name="id-1.2.59.4.2.1"></a><h3>Element Information</h3>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term">plugin</span></p></td>
-<td>
-            <a class="link" href="gst-plugins-bad-plugins-plugin-opencv.html#plugin-opencv">opencv</a>
-          </td>
-</tr>
-<tr>
-<td><p><span class="term">author</span></p></td>
-<td>Michael Sheldon &lt;mike@mikeasoft.com&gt;</td>
-</tr>
-<tr>
-<td><p><span class="term">class</span></p></td>
-<td>Filter/Effect/Video</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="id-1.2.59.4.2.2"></a><h3>Element Pads</h3>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term">name</span></p></td>
-<td>sink</td>
-</tr>
-<tr>
-<td><p><span class="term">direction</span></p></td>
-<td>sink</td>
-</tr>
-<tr>
-<td><p><span class="term">presence</span></p></td>
-<td>always</td>
-</tr>
-<tr>
-<td><p><span class="term">details</span></p></td>
-<td>video/x-raw, format=(string)RGB, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
-</tr>
-</tbody>
-</table></div>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term">name</span></p></td>
-<td>src</td>
-</tr>
-<tr>
-<td><p><span class="term">direction</span></p></td>
-<td>source</td>
-</tr>
-<tr>
-<td><p><span class="term">presence</span></p></td>
-<td>always</td>
-</tr>
-<tr>
-<td><p><span class="term">details</span></p></td>
-<td>video/x-raw, format=(string)RGB, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-pyramidsegment.functions_details"></a><h2>Functions</h2>
-<p></p>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-pyramidsegment.other_details"></a><h2>Types and Values</h2>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.25</div>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-rawaudioparse.html b/docs/plugins/html/gst-plugins-bad-plugins-rawaudioparse.html
new file mode 100644
index 0000000..9aea9a4
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-rawaudioparse.html
@@ -0,0 +1,335 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>rawaudioparse: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-pinch.html" title="pinch">
+<link rel="next" href="gst-plugins-bad-plugins-rawvideoparse.html" title="rawvideoparse">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-rawaudioparse.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-rawaudioparse.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-rawaudioparse.properties" class="shortcut">Properties</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-pinch.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-rawvideoparse.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-rawaudioparse"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-rawaudioparse.top_of_page"></a>rawaudioparse</span></h2>
+<p>rawaudioparse</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-rawaudioparse.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/gobjectgobject-Value-arrays.html#GValueArray"><span class="type">GValueArray</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-rawaudioparse.html#GstRawAudioParse--channel-positions" title="The “channel-positions” property">channel-positions</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><span class="type">GstRawAudioParseFormat</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-rawaudioparse.html#GstRawAudioParse--format" title="The “format” property">format</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-rawaudioparse.html#GstRawAudioParse--interleaved" title="The “interleaved” property">interleaved</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-rawaudioparse.html#GstRawAudioParse--num-channels" title="The “num-channels” property">num-channels</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstaudio.html#GstAudioFormat"><span class="type">GstAudioFormat</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-rawaudioparse.html#GstRawAudioParse--pcm-format" title="The “pcm-format” property">pcm-format</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-rawaudioparse.html#GstRawAudioParse--sample-rate" title="The “sample-rate” property">sample-rate</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="GstRawAudioParse"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-rawaudioparse.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-rawaudioparse.html#GstRawAudioParse-struct" title="struct GstRawAudioParse">GstRawAudioParse</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-rawaudioparse.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseParse.html#GstBaseParse-struct">GstBaseParse</a>
+                    <span class="lineart">╰──</span> GstRawBaseParse
+                        <span class="lineart">╰──</span> GstRawAudioParse
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-rawaudioparse.description"></a><h2>Description</h2>
+<p>This element parses incoming data as raw audio samples and timestamps it.
+It also handles seek queries in said raw audio data, and ensures that output
+buffers contain an integer number of samples, even if the input buffers don't.
+For example, with sample format S16LE and 2 channels, an input buffer of 411
+bytes contains 102.75 samples. rawaudioparse will then output 102 samples
+(= 408 bytes) and keep the remaining 3 bytes. These will then be prepended to
+the next input data.</p>
+<p>The element implements the properties and sink caps configuration as specified
+in the <span class="type">GstRawBaseParse</span> documentation. The properties configuration can be
+modified by using the sample-rate, num-channels, channel-positions, format,
+and pcm-format properties.</p>
+<p>Currently, this parser supports raw data in a-law, mu-law, or linear PCM format.</p>
+<p>To facilitate operation with the unalignedaudioparse element, rawaudioparse
+supports the "audio/x-unaligned-raw" media type. This is treated identically to
+"audio/x-raw", except that it is used by source elements which do not guarantee
+that the buffers they push out are timestamped and contain an integer amount of
+samples (see the 411 bytes example above). By using a different media type, it
+is guaranteed that unalignedaudioparse is autoplugged, making sure that the
+autoplugged chain does not push unparsed content downstream. The source caps'
+media type with linear PCM data is always "audio/x-raw", even if the sink caps
+use "audio/x-unaligned-raw".</p>
+<p>The channel-positions property can be used to set explicit position information
+for each channel. If the array that is passed to this property does not match
+the number of channels indicated by num-channels, then said number of channels
+is updated to the array length. If channel-positions is NULL, then the default
+GStreamer positioning is used. This property is also useful for swapping left
+and right in a stereo signal for example.</p>
+<div class="refsect2">
+<a name="id-1.2.106.7.7"></a><h3>Example pipelines</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1
+2</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> souphttpsrc http<span class="gtkdoc opt">:</span><span class="gtkdoc slc">//my-dlna-server/track.l16 \</span>
+    rawaudioparse <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> audioresample <span class="gtkdoc opt">!</span> autoaudiosink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Receive L16 data from a DLNA server, parse and timestamp it with
+rawaudioparse, and play it. use-sink-caps is set to true since souphttpsrc
+will set its source pad's caps to audio/x-unaligned-raw for the L16 stream.
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1
+2
+3</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> filesrc location<span class="gtkdoc opt">=</span>audio<span class="gtkdoc opt">.</span>raw <span class="gtkdoc opt">!</span> rawaudioparse use<span class="gtkdoc opt">-</span>sink<span class="gtkdoc opt">-</span>caps<span class="gtkdoc opt">=</span><span class="keyword">false</span> \
+        format<span class="gtkdoc opt">=</span>pcm pcm<span class="gtkdoc opt">-</span>format<span class="gtkdoc opt">=</span>s16le sample<span class="gtkdoc opt">-</span>rate<span class="gtkdoc opt">=</span><span class="number">48000</span> num<span class="gtkdoc opt">-</span>channels<span class="gtkdoc opt">=</span><span class="number">2</span> \
+        audioconvert <span class="gtkdoc opt">!</span> audioresample <span class="gtkdoc opt">!</span> autoaudiosink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Read raw data from a local file and parse it as PCM data with 48000 Hz sample
+rate, signed 16 bit integer samples, and 2 channels. use-sink-caps is set to
+false to ensure the property information is used and the parser does not expect
+audio/x-raw or audio/x-unaligned-raw caps.
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.106.7.8.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-rawparse.html#plugin-rawparse">rawparse</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Carlos Rafael Giani &lt;dv@pseudoterminal.org&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Codec/Parser/Audio</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.106.7.8.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-unaligned-raw, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ], layout=(string){ interleaved, non-interleaved }</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> audio/x-raw, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ], layout=(string){ interleaved, non-interleaved }</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> audio/x-alaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> audio/x-mulaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-raw, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ], layout=(string){ interleaved, non-interleaved }</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> audio/x-alaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> audio/x-mulaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-rawaudioparse.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-rawaudioparse.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstRawAudioParse-struct"></a><h3>struct GstRawAudioParse</h3>
+<pre class="programlisting">struct GstRawAudioParse;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-rawaudioparse.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstRawAudioParse--channel-positions"></a><h3>The <code class="literal">“channel-positions”</code> property</h3>
+<pre class="programlisting">  “channel-positions”        <a href="/usr/share/gtk-doc/html/gobjectgobject-Value-arrays.html#GValueArray"><span class="type">GValueArray</span></a> *</pre>
+<p>Channel positions used on the output.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstRawAudioParse--format"></a><h3>The <code class="literal">“format”</code> property</h3>
+<pre class="programlisting">  “format”                   <span class="type">GstRawAudioParseFormat</span></pre>
+<p>Format of the raw audio stream.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: PCM</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstRawAudioParse--interleaved"></a><h3>The <code class="literal">“interleaved”</code> property</h3>
+<pre class="programlisting">  “interleaved”              <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>True if audio has interleaved layout.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstRawAudioParse--num-channels"></a><h3>The <code class="literal">“num-channels”</code> property</h3>
+<pre class="programlisting">  “num-channels”             <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Number of channels in raw stream.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &gt;= 1</p>
+<p>Default value: 2</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstRawAudioParse--pcm-format"></a><h3>The <code class="literal">“pcm-format”</code> property</h3>
+<pre class="programlisting">  “pcm-format”               <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstaudio.html#GstAudioFormat"><span class="type">GstAudioFormat</span></a></pre>
+<p>Format of audio samples in PCM stream (ignored if format property is not set to pcm).</p>
+<p>Flags: Read / Write</p>
+<p>Default value: GST_AUDIO_FORMAT_UNKNOWN</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstRawAudioParse--sample-rate"></a><h3>The <code class="literal">“sample-rate”</code> property</h3>
+<pre class="programlisting">  “sample-rate”              <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Rate of audio samples in raw stream.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &gt;= 1</p>
+<p>Default value: 44100</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-rawvideoparse.html b/docs/plugins/html/gst-plugins-bad-plugins-rawvideoparse.html
new file mode 100644
index 0000000..2778cd1
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-rawvideoparse.html
@@ -0,0 +1,372 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>rawvideoparse: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-rawaudioparse.html" title="rawaudioparse">
+<link rel="next" href="gst-plugins-bad-plugins-rfbsrc.html" title="rfbsrc">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-rawvideoparse.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-rawvideoparse.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-rawvideoparse.properties" class="shortcut">Properties</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-rawaudioparse.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-rfbsrc.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-rawvideoparse"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-rawvideoparse.top_of_page"></a>rawvideoparse</span></h2>
+<p>rawvideoparse</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-rawvideoparse.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoFormat"><span class="type">GstVideoFormat</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-rawvideoparse.html#GstRawVideoParse--format" title="The “format” property">format</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-rawvideoparse.html#GstRawVideoParse--frame-stride" title="The “frame-stride” property">frame-stride</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><span class="type">GstFraction</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-rawvideoparse.html#GstRawVideoParse--framerate" title="The “framerate” property">framerate</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-rawvideoparse.html#GstRawVideoParse--height" title="The “height” property">height</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-rawvideoparse.html#GstRawVideoParse--interlaced" title="The “interlaced” property">interlaced</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><span class="type">GstFraction</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-rawvideoparse.html#GstRawVideoParse--pixel-aspect-ratio" title="The “pixel-aspect-ratio” property">pixel-aspect-ratio</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/gobjectgobject-Value-arrays.html#GValueArray"><span class="type">GValueArray</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-rawvideoparse.html#GstRawVideoParse--plane-offsets" title="The “plane-offsets” property">plane-offsets</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/gobjectgobject-Value-arrays.html#GValueArray"><span class="type">GValueArray</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-rawvideoparse.html#GstRawVideoParse--plane-strides" title="The “plane-strides” property">plane-strides</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-rawvideoparse.html#GstRawVideoParse--top-field-first" title="The “top-field-first” property">top-field-first</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-rawvideoparse.html#GstRawVideoParse--width" title="The “width” property">width</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="GstRawVideoParse"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-rawvideoparse.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-rawvideoparse.html#GstRawVideoParse-struct" title="struct GstRawVideoParse">GstRawVideoParse</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-rawvideoparse.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseParse.html#GstBaseParse-struct">GstBaseParse</a>
+                    <span class="lineart">╰──</span> GstRawBaseParse
+                        <span class="lineart">╰──</span> GstRawVideoParse
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-rawvideoparse.description"></a><h2>Description</h2>
+<p>This element parses incoming data as raw video frames and timestamps these.
+It also handles seek queries in said raw video data, and ensures that output
+buffers contain exactly one frame, even if the input buffers contain only
+partial frames or multiple frames. In the former case, it will continue to
+receive buffers until there is enough input data to output one frame. In the
+latter case, it will extract the first frame in the buffer and output it, then
+the second one etc. until the remaining unparsed bytes aren't enough to form
+a complete frame, and it will then continue as described in the earlier case.</p>
+<p>The element implements the properties and sink caps configuration as specified
+in the <span class="type">GstRawBaseParse</span> documentation. The properties configuration can be
+modified by using the width, height, pixel-aspect-ratio, framerate, interlaced,
+top-field-first, plane-strides, plane-offsets, and frame-stride properties.</p>
+<p>If the properties configuration is used, plane strides and offsets will be
+computed by using <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#gst-video-info-set-format"><code class="function">gst_video_info_set_format()</code></a>. This can be overridden by passing
+GValueArrays to the plane-offsets and plane-strides properties. When this is
+done, these custom offsets and strides are used later even if new width,
+height, format etc. property values might be set. To switch back to computed
+plane strides &amp; offsets, pass NULL to one or both of the plane-offset and
+plane-array properties.</p>
+<p>The frame stride property is useful in cases where there is extra data between
+the frames (for example, trailing metadata, or headers). The parser calculates 
+the actual frame size out of the other properties and compares it with this
+frame-stride value. If the frame stride is larger than the calculated size,
+then the extra bytes after the end of the frame are skipped. For example, with
+8-bit grayscale frames and a frame size of 100x10 pixels and a frame stride of
+1500 bytes, there are 500 excess bytes at the end of the actual frame which
+are then skipped. It is safe to set the frame stride to a value that is smaller
+than the actual frame size (in fact, its default value is 0); if it is smaller,
+then no trailing data will be skipped.</p>
+<p>If a framerate of 0 Hz is set (for example, 0/1), then output buffers will have
+no duration set. The first output buffer will have a PTS 0, all subsequent ones
+an unset PTS.</p>
+<div class="refsect2">
+<a name="id-1.2.107.7.7"></a><h3>Example pipelines</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1
+2</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> filesrc location<span class="gtkdoc opt">=</span>video<span class="gtkdoc opt">.</span>raw <span class="gtkdoc opt">!</span> rawvideoparse use<span class="gtkdoc opt">-</span>sink<span class="gtkdoc opt">-</span>caps<span class="gtkdoc opt">=</span><span class="keyword">false</span> \
+        width<span class="gtkdoc opt">=</span><span class="number">500</span> height<span class="gtkdoc opt">=</span><span class="number">400</span> format<span class="gtkdoc opt">=</span>y444 <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Read raw data from a local file and parse it as video data with 500x400 pixels
+and Y444 video format.
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1
+2
+3</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> filesrc location<span class="gtkdoc opt">=</span>video<span class="gtkdoc opt">.</span>raw <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> <span class="string">&quot;video/x-raw, width=320, \</span>
+<span class="string">        height=240, format=I420, framerate=1/1&quot;</span> <span class="gtkdoc opt">!</span> rawvideoparse \
+        use<span class="gtkdoc opt">-</span>sink<span class="gtkdoc opt">-</span>caps<span class="gtkdoc opt">=</span><span class="keyword">true</span> <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Read raw data from a local file and parse it as video data with 320x240 pixels
+and I420 video format. The queue element here is to force push based scheduling.
+See the documentation in <span class="type">GstRawBaseParse</span> for the reason why.
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.107.7.8.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-rawparse.html#plugin-rawparse">rawparse</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Carlos Rafael Giani &lt;dv@pseudoterminal.org&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Codec/Parser/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.107.7.8.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-unaligned-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
+<td> video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-rawvideoparse.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-rawvideoparse.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstRawVideoParse-struct"></a><h3>struct GstRawVideoParse</h3>
+<pre class="programlisting">struct GstRawVideoParse;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-rawvideoparse.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstRawVideoParse--format"></a><h3>The <code class="literal">“format”</code> property</h3>
+<pre class="programlisting">  “format”                   <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoFormat"><span class="type">GstVideoFormat</span></a></pre>
+<p>Format of frames in raw stream.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: GST_VIDEO_FORMAT_I420</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstRawVideoParse--frame-stride"></a><h3>The <code class="literal">“frame-stride”</code> property</h3>
+<pre class="programlisting">  “frame-stride”             <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
+<p>Stride between whole frames (0 = frames are tightly packed together).</p>
+<p>Flags: Read / Write</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstRawVideoParse--framerate"></a><h3>The <code class="literal">“framerate”</code> property</h3>
+<pre class="programlisting">  “framerate”                <span class="type">GstFraction</span></pre>
+<p>Rate of frames in raw stream.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstRawVideoParse--height"></a><h3>The <code class="literal">“height”</code> property</h3>
+<pre class="programlisting">  “height”                   <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Height of frames in raw stream.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &gt;= 0</p>
+<p>Default value: 240</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstRawVideoParse--interlaced"></a><h3>The <code class="literal">“interlaced”</code> property</h3>
+<pre class="programlisting">  “interlaced”               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>True if frames in raw stream are interlaced.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstRawVideoParse--pixel-aspect-ratio"></a><h3>The <code class="literal">“pixel-aspect-ratio”</code> property</h3>
+<pre class="programlisting">  “pixel-aspect-ratio”       <span class="type">GstFraction</span></pre>
+<p>Pixel aspect ratio of frames in raw stream.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstRawVideoParse--plane-offsets"></a><h3>The <code class="literal">“plane-offsets”</code> property</h3>
+<pre class="programlisting">  “plane-offsets”            <a href="/usr/share/gtk-doc/html/gobjectgobject-Value-arrays.html#GValueArray"><span class="type">GValueArray</span></a> *</pre>
+<p>Offsets of the planets in bytes.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstRawVideoParse--plane-strides"></a><h3>The <code class="literal">“plane-strides”</code> property</h3>
+<pre class="programlisting">  “plane-strides”            <a href="/usr/share/gtk-doc/html/gobjectgobject-Value-arrays.html#GValueArray"><span class="type">GValueArray</span></a> *</pre>
+<p>Strides of the planets in bytes.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstRawVideoParse--top-field-first"></a><h3>The <code class="literal">“top-field-first”</code> property</h3>
+<pre class="programlisting">  “top-field-first”          <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>True if top field in frames in raw stream come first (not used if frames aren't interlaced).</p>
+<p>Flags: Read / Write</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstRawVideoParse--width"></a><h3>The <code class="literal">“width”</code> property</h3>
+<pre class="programlisting">  “width”                    <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Width of frames in raw stream.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &gt;= 0</p>
+<p>Default value: 320</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-rfbsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-rfbsrc.html
index 55d8fff..eb5f0cb 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-rfbsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-rfbsrc.html
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
-<link rel="prev" href="gst-plugins-bad-plugins-pyramidsegment.html" title="pyramidsegment">
+<link rel="prev" href="gst-plugins-bad-plugins-rawvideoparse.html" title="rawvideoparse">
 <link rel="next" href="gst-plugins-bad-plugins-rtmpsink.html" title="rtmpsink">
 <meta name="generator" content="GTK-Doc V1.25 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
@@ -21,7 +21,7 @@
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-bad-plugins-pyramidsegment.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-rawvideoparse.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="gst-plugins-bad-plugins-rtmpsink.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
@@ -137,7 +137,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.60.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.108.7.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -163,7 +163,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.60.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.108.7.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-rtmpsink.html b/docs/plugins/html/gst-plugins-bad-plugins-rtmpsink.html
index 87df730..72e8b15 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-rtmpsink.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-rtmpsink.html
@@ -81,10 +81,29 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-rtmpsink.description"></a><h2>Description</h2>
+<p>This element delivers data to a streaming server via RTMP. It uses
+librtmp, and supports any protocols/urls that librtmp supports.
+The URL/location can contain extra connection or session parameters
+for librtmp, such as 'flashver=version'. See the librtmp documentation
+for more detail</p>
+<div class="refsect2">
+<a name="id-1.2.109.8.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v videotestsrc <span class="gtkdoc opt">!</span> ffenc_flv <span class="gtkdoc opt">!</span> flvmux <span class="gtkdoc opt">!</span> rtmpsink location<span class="gtkdoc opt">=</span><span class="string">'rtmp://localhost/path/to/stream live=1'</span></pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Encode a test video stream to FLV video format and stream it via RTMP.
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.61.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.109.8.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -110,7 +129,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.61.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.109.8.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-rtmpsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-rtmpsrc.html
index 8d36145..d43e9da 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-rtmpsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-rtmpsrc.html
@@ -42,12 +42,19 @@
 <col width="300px" class="properties_name">
 <col width="200px" class="properties_flags">
 </colgroup>
-<tbody><tr>
+<tbody>
+<tr>
 <td class="property_type">
 <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
 <td class="property_name"><a class="link" href="gst-plugins-bad-plugins-rtmpsrc.html#GstRTMPSrc--location" title="The “location” property">location</a></td>
 <td class="property_flags">Read / Write</td>
-</tr></tbody>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-rtmpsrc.html#GstRTMPSrc--timeout" title="The “timeout” property">timeout</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
 </table></div>
 </div>
 <a name="GstRTMPSrc"></a><div class="refsect1">
@@ -82,10 +89,27 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-rtmpsrc.description"></a><h2>Description</h2>
+<p>This plugin reads data from a local or remote location specified
+by an URI. This location can be specified using any protocol supported by
+the RTMP library, i.e. rtmp, rtmpt, rtmps, rtmpe, rtmfp, rtmpte and rtmpts.</p>
+<div class="refsect2">
+<a name="id-1.2.110.8.3"></a><h3>Example launch lines</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v rtmpsrc location<span class="gtkdoc opt">=</span>rtmp<span class="gtkdoc opt">:</span><span class="gtkdoc slc">//somehost/someurl ! fakesink</span></pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Open an RTMP location and pass its content to fakesink.
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.62.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.110.8.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -111,7 +135,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.62.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.110.8.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -148,6 +172,7 @@
 <div class="refsect2">
 <a name="GstRTMPSrc-struct"></a><h3>struct GstRTMPSrc</h3>
 <pre class="programlisting">struct GstRTMPSrc;</pre>
+<p>Opaque data structure.</p>
 </div>
 </div>
 <div class="refsect1">
@@ -159,6 +184,15 @@
 <p>Flags: Read / Write</p>
 <p>Default value: NULL</p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GstRTMPSrc--timeout"></a><h3>The <code class="literal">“timeout”</code> property</h3>
+<pre class="programlisting">  “timeout”                  <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Time without receiving any data from the server to wait before to timeout the session.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: &gt;= 0</p>
+<p>Default value: 120</p>
+</div>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-sdpdemux.html b/docs/plugins/html/gst-plugins-bad-plugins-sdpdemux.html
index f6e9eb4..349fe2d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-sdpdemux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-sdpdemux.html
@@ -108,7 +108,7 @@
 <p>sdpdemux acts like a live element and will therefore only generate data in the 
 PLAYING state.</p>
 <div class="refsect2">
-<a name="id-1.2.65.8.5"></a><h3>Example launch line</h3>
+<a name="id-1.2.113.8.5"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -125,7 +125,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.65.8.6.1"></a><h3>Element Information</h3>
+<a name="id-1.2.113.8.6.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -151,7 +151,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.65.8.6.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.113.8.6.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-shmsink.html b/docs/plugins/html/gst-plugins-bad-plugins-shmsink.html
index 791d2be..6731357 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-shmsink.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-shmsink.html
@@ -119,10 +119,25 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-shmsink.description"></a><h2>Description</h2>
+<p>Send data over shared memory to the matching source.</p>
+<div class="refsect2">
+<a name="id-1.2.111.8.3"></a><h3>Example launch lines</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v videotestsrc <span class="gtkdoc opt">!</span>  shmsink socket<span class="gtkdoc opt">-</span>path<span class="gtkdoc opt">=/</span>tmp<span class="gtkdoc opt">/</span>blah shm<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">=</span><span class="number">1000000</span></pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Send video to shm buffers.
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.63.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.111.8.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -148,7 +163,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.63.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.111.8.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-shmsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-shmsrc.html
index 2361a73..51a963d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-shmsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-shmsrc.html
@@ -88,10 +88,29 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-shmsrc.description"></a><h2>Description</h2>
+<p>Receive data from the shared memory sink.</p>
+<div class="refsect2">
+<a name="id-1.2.112.7.3"></a><h3>Example launch lines</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1
+2
+3</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> shmsrc socket<span class="gtkdoc opt">-</span>path<span class="gtkdoc opt">=/</span>tmp<span class="gtkdoc opt">/</span>blah <span class="gtkdoc opt">!</span> \
+<span class="string">&quot;video/x-yuv, format=YUY2, color-matrix=sdtv, \</span>
+<span class="string">chroma-site=mpeg2, width=(int)320, height=(int)240, framerate=(fraction)30/1&quot;</span> <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Render video from shm buffers.
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.64.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.112.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -117,7 +136,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.64.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.112.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-solarize.html b/docs/plugins/html/gst-plugins-bad-plugins-solarize.html
index 60a28e3..4921938 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-solarize.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-solarize.html
@@ -93,7 +93,7 @@
 <a name="gst-plugins-bad-plugins-solarize.description"></a><h2>Description</h2>
 <p>Solarize does a smart inverse in a video stream in realtime.</p>
 <div class="refsect2">
-<a name="id-1.2.66.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.114.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -109,7 +109,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.66.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.114.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -135,7 +135,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.66.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.114.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-spacescope.html b/docs/plugins/html/gst-plugins-bad-plugins-spacescope.html
index 6b42299..324dfc3 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-spacescope.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-spacescope.html
@@ -76,7 +76,7 @@
 <p>Spacescope is a simple audio visualisation element. It maps the left and
 right channel to x and y coordinates.</p>
 <div class="refsect2">
-<a name="id-1.2.67.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.115.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -92,7 +92,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.67.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.115.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -118,7 +118,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.67.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.115.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-spectrascope.html b/docs/plugins/html/gst-plugins-bad-plugins-spectrascope.html
index 4fa8dc7..9e61ec3 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-spectrascope.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-spectrascope.html
@@ -60,7 +60,7 @@
 <p>Spectrascope is a simple spectrum visualisation element. It renders the
 frequency spectrum as a series of bars.</p>
 <div class="refsect2">
-<a name="id-1.2.68.6.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.116.6.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -76,7 +76,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.68.6.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.116.6.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -102,7 +102,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.68.6.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.116.6.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-speed.html b/docs/plugins/html/gst-plugins-bad-plugins-speed.html
index 589073e..d702c0c 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-speed.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-speed.html
@@ -78,7 +78,7 @@
 element (but relies on the decoder/demuxer to handle this correctly, also
 requires a fairly up-to-date gst-plugins-base, as of February 2007).</p>
 <div class="refsect2">
-<a name="id-1.2.70.7.4"></a><h3>Example launch line</h3>
+<a name="id-1.2.118.7.4"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -94,7 +94,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.70.7.5.1"></a><h3>Element Information</h3>
+<a name="id-1.2.118.7.5.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -120,7 +120,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.70.7.5.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.118.7.5.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-sphere.html b/docs/plugins/html/gst-plugins-bad-plugins-sphere.html
index c37c2c6..7286e3b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-sphere.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-sphere.html
@@ -78,7 +78,7 @@
 <a name="gst-plugins-bad-plugins-sphere.description"></a><h2>Description</h2>
 <p>The sphere element applies a 'sphere' geometric transform to the image.</p>
 <div class="refsect2">
-<a name="id-1.2.71.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.119.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -94,7 +94,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.71.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.119.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -120,7 +120,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.71.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.119.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-square.html b/docs/plugins/html/gst-plugins-bad-plugins-square.html
index d80e942..e499746 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-square.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-square.html
@@ -89,7 +89,7 @@
 <a name="gst-plugins-bad-plugins-square.description"></a><h2>Description</h2>
 <p>The square element distorts the center part of the image into a square.</p>
 <div class="refsect2">
-<a name="id-1.2.72.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.120.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -105,7 +105,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.72.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.120.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -131,7 +131,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.72.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.120.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-stretch.html b/docs/plugins/html/gst-plugins-bad-plugins-stretch.html
index 2efd75b..e81cd5f 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-stretch.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-stretch.html
@@ -78,7 +78,7 @@
 <a name="gst-plugins-bad-plugins-stretch.description"></a><h2>Description</h2>
 <p>The stretch element stretches the image in a circle around the center point.</p>
 <div class="refsect2">
-<a name="id-1.2.73.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.121.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -94,7 +94,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.73.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.121.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -120,7 +120,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.73.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.121.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-synaescope.html b/docs/plugins/html/gst-plugins-bad-plugins-synaescope.html
index 2c8b34e..c937736 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-synaescope.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-synaescope.html
@@ -60,7 +60,7 @@
 <p>Synaescope is an audio visualisation element. It analyzes frequencies and
 out-of phase properties of audio and draws this as clouds of stars.</p>
 <div class="refsect2">
-<a name="id-1.2.69.6.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.117.6.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -76,7 +76,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.69.6.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.117.6.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -102,7 +102,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.69.6.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.117.6.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-templatematch.html b/docs/plugins/html/gst-plugins-bad-plugins-templatematch.html
index f0e306f..f6644dc 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-templatematch.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-templatematch.html
@@ -61,7 +61,7 @@
 </tbody>
 </table></div>
 </div>
-<a name="GstSynaeScope"></a><a name="GstTemplateMatch"></a><div class="refsect1">
+<a name="GstTemplateMatch"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-templatematch.other"></a><h2>Types and Values</h2>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
@@ -88,10 +88,25 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-templatematch.description"></a><h2>Description</h2>
+<p>Performs template matching on videos and images, providing detected positions via bus messages.</p>
+<div class="refsect2">
+<a name="id-1.2.122.7.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> decodebin <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> templatematch <span class="gtkdoc kwc">template</span><span class="gtkdoc opt">=/</span>path<span class="gtkdoc opt">/</span>to<span class="gtkdoc opt">/</span>file<span class="gtkdoc opt">.</span>jpg <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> xvimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.74.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.122.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -117,7 +132,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.74.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.122.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-tunnel.html b/docs/plugins/html/gst-plugins-bad-plugins-tunnel.html
index 891d87b..f8d39b6 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-tunnel.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-tunnel.html
@@ -63,7 +63,7 @@
 <p>Tunnel is a geometric image transform element. It applies a light tunnel
 effect.</p>
 <div class="refsect2">
-<a name="id-1.2.76.6.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.124.6.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -79,7 +79,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.76.6.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.124.6.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -105,7 +105,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.76.6.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.124.6.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-twirl.html b/docs/plugins/html/gst-plugins-bad-plugins-twirl.html
index ec9e38b..375cb1d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-twirl.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-twirl.html
@@ -7,7 +7,7 @@
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-tunnel.html" title="tunnel">
-<link rel="next" href="gst-plugins-bad-plugins-videoparse.html" title="videoparse">
+<link rel="next" href="gst-plugins-bad-plugins-unalignedaudioparse.html" title="unalignedaudioparse">
 <meta name="generator" content="GTK-Doc V1.25 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -22,7 +22,7 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="gst-plugins-bad-plugins-tunnel.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-bad-plugins-videoparse.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-unalignedaudioparse.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="gst-plugins-bad-plugins-twirl"></a><div class="titlepage"></div>
@@ -78,7 +78,7 @@
 <a name="gst-plugins-bad-plugins-twirl.description"></a><h2>Description</h2>
 <p>The twirl element twists the image from the center out.</p>
 <div class="refsect2">
-<a name="id-1.2.77.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.125.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -94,7 +94,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.77.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.125.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -120,7 +120,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.77.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.125.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-unalignedaudioparse.html b/docs/plugins/html/gst-plugins-bad-plugins-unalignedaudioparse.html
new file mode 100644
index 0000000..5cd72e3
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-unalignedaudioparse.html
@@ -0,0 +1,163 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>unalignedaudioparse: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-twirl.html" title="twirl">
+<link rel="next" href="gst-plugins-bad-plugins-unalignedvideoparse.html" title="unalignedvideoparse">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-unalignedaudioparse.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-unalignedaudioparse.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-unalignedaudioparse.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-twirl.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-unalignedvideoparse.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-unalignedaudioparse"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-unalignedaudioparse.top_of_page"></a>unalignedaudioparse</span></h2>
+<p>unalignedaudioparse</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<a name="GstUnalignedAudioParse"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-unalignedaudioparse.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword"> </td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-unalignedaudioparse.html#GstUnalignedAudioParse-struct" title="GstUnalignedAudioParse">GstUnalignedAudioParse</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-unalignedaudioparse.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBin.html#GstBin-struct">GstBin</a>
+                    <span class="lineart">╰──</span> GstUnalignedAudioParse
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-unalignedaudioparse.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstUnalignedAudioParse implements
+ <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstChildProxy.html#GstChildProxy-struct">GstChildProxy</a>.</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-unalignedaudioparse.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.126.7.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-rawparse.html#plugin-rawparse">rawparse</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Carlos Rafael Giani &lt;dv@pseudoterminal.org&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Codec/Parser/Bin/Audio</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.126.7.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-unaligned-raw, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ], layout=(string){ interleaved, non-interleaved }</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-raw, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ], layout=(string){ interleaved, non-interleaved }</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-unalignedaudioparse.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-unalignedaudioparse.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstUnalignedAudioParse-struct"></a><h3>GstUnalignedAudioParse</h3>
+<pre class="programlisting">typedef struct _GstUnalignedAudioParse GstUnalignedAudioParse;</pre>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-unalignedvideoparse.html b/docs/plugins/html/gst-plugins-bad-plugins-unalignedvideoparse.html
new file mode 100644
index 0000000..11f0152
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-unalignedvideoparse.html
@@ -0,0 +1,163 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>unalignedvideoparse: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-unalignedaudioparse.html" title="unalignedaudioparse">
+<link rel="next" href="gst-plugins-bad-plugins-videoparse.html" title="videoparse">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-unalignedvideoparse.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-unalignedvideoparse.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-unalignedvideoparse.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-unalignedaudioparse.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-videoparse.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-unalignedvideoparse"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-unalignedvideoparse.top_of_page"></a>unalignedvideoparse</span></h2>
+<p>unalignedvideoparse</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<a name="GstUnalignedVideoParse"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-unalignedvideoparse.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword"> </td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-unalignedvideoparse.html#GstUnalignedVideoParse-struct" title="GstUnalignedVideoParse">GstUnalignedVideoParse</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-unalignedvideoparse.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBin.html#GstBin-struct">GstBin</a>
+                    <span class="lineart">╰──</span> GstUnalignedVideoParse
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-unalignedvideoparse.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstUnalignedVideoParse implements
+ <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstChildProxy.html#GstChildProxy-struct">GstChildProxy</a>.</p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-unalignedvideoparse.description"></a><h2>Description</h2>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.127.7.2.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-rawparse.html#plugin-rawparse">rawparse</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Carlos Rafael Giani &lt;dv@pseudoterminal.org&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Codec/Parser/Bin/Video</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.127.7.2.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-unaligned-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-unalignedvideoparse.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-unalignedvideoparse.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstUnalignedVideoParse-struct"></a><h3>GstUnalignedVideoParse</h3>
+<pre class="programlisting">typedef struct _GstUnalignedVideoParse GstUnalignedVideoParse;</pre>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-videoparse.html b/docs/plugins/html/gst-plugins-bad-plugins-videoparse.html
index 8ef7792..8538b5f 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-videoparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-videoparse.html
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
-<link rel="prev" href="gst-plugins-bad-plugins-twirl.html" title="twirl">
+<link rel="prev" href="gst-plugins-bad-plugins-unalignedvideoparse.html" title="unalignedvideoparse">
 <link rel="next" href="gst-plugins-bad-plugins-waterripple.html" title="waterripple">
 <meta name="generator" content="GTK-Doc V1.25 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
@@ -16,12 +16,13 @@
 <td width="100%" align="left" class="shortcuts">
 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
                   <a href="#gst-plugins-bad-plugins-videoparse.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
-                  <a href="#gst-plugins-bad-plugins-videoparse.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-videoparse.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-videoparse.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties">  <span class="dim">|</span> 
                   <a href="#gst-plugins-bad-plugins-videoparse.properties" class="shortcut">Properties</a></span>
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-bad-plugins-twirl.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-unalignedvideoparse.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="gst-plugins-bad-plugins-waterripple.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
@@ -151,17 +152,24 @@
     <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
         <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
             <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
-                <span class="lineart">╰──</span> GstRawParse
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBin.html#GstBin-struct">GstBin</a>
                     <span class="lineart">╰──</span> GstVideoParse
 </pre>
 </div>
 <div class="refsect1">
+<a name="gst-plugins-bad-plugins-videoparse.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstVideoParse implements
+ <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstChildProxy.html#GstChildProxy-struct">GstChildProxy</a>.</p>
+</div>
+<div class="refsect1">
 <a name="gst-plugins-bad-plugins-videoparse.description"></a><h2>Description</h2>
 <p>Converts a byte stream into video frames.</p>
+<div class="note">This element is deprecated. Use <a class="link" href="gst-plugins-bad-plugins-rawvideoparse.html#GstRawVideoParse"><span class="type">GstRawVideoParse</span></a> instead.</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.78.7.3.1"></a><h3>Element Information</h3>
+<a name="id-1.2.128.8.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -187,7 +195,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.78.7.3.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.128.8.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -234,10 +242,6 @@
 <td><p><span class="term">details</span></p></td>
 <td>video/x-raw</td>
 </tr>
-<tr>
-<td><p><span class="term"></span></p></td>
-<td> video/x-bayer</td>
-</tr>
 </tbody>
 </table></div>
 </div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-voaacenc.html b/docs/plugins/html/gst-plugins-bad-plugins-voaacenc.html
index 6d37c53..76f2201 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-voaacenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-voaacenc.html
@@ -80,10 +80,26 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-voaacenc.description"></a><h2>Description</h2>
+<p>AAC audio encoder based on vo-aacenc library </p>
+<a class="ulink" href="http://sourceforge.net/projects/opencore-amr/files/vo-aacenc/" target="_top">vo-aacenc library source file</a>.
+<div class="refsect2">
+<a name="id-1.2.131.8.4"></a><h3>Example launch line</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> filesrc location<span class="gtkdoc opt">=</span>abc<span class="gtkdoc opt">.</span>wav <span class="gtkdoc opt">!</span> wavparse <span class="gtkdoc opt">!</span> audioresample <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> voaacenc <span class="gtkdoc opt">!</span> filesink location<span class="gtkdoc opt">=</span>abc<span class="gtkdoc opt">.</span>aac</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.81.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.131.8.5.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -109,7 +125,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.81.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.131.8.5.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-voamrwbenc.html b/docs/plugins/html/gst-plugins-bad-plugins-voamrwbenc.html
index 4458aeb..0a8e5a6 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-voamrwbenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-voamrwbenc.html
@@ -15,7 +15,10 @@
 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
 <td width="100%" align="left" class="shortcuts">
 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
-                  <a href="#gst-plugins-bad-plugins-voamrwbenc.description" class="shortcut">Description</a></span>
+                  <a href="#gst-plugins-bad-plugins-voamrwbenc.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-voamrwbenc.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-voamrwbenc.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-voamrwbenc.properties" class="shortcut">Properties</a></span>
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -32,11 +35,73 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
+<a name="gst-plugins-bad-plugins-voamrwbenc.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody><tr>
+<td class="property_type"><span class="type">GstVoAmrWbEncBandMode</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-voamrwbenc.html#GstVoAmrWbEnc--band-mode" title="The “band-mode” property">band-mode</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr></tbody>
+</table></div>
+</div>
+<a name="GstVoAmrWbEnc"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-voamrwbenc.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-voamrwbenc.html#GstVoAmrWbEnc-struct" title="struct GstVoAmrWbEnc">GstVoAmrWbEnc</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-voamrwbenc.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstaudioencoder.html#GstAudioEncoder-struct">GstAudioEncoder</a>
+                    <span class="lineart">╰──</span> GstVoAmrWbEnc
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-voamrwbenc.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstVoAmrWbEnc implements
+ <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstPreset.html#GstPreset-struct">GstPreset</a>.</p>
+</div>
+<div class="refsect1">
 <a name="gst-plugins-bad-plugins-voamrwbenc.description"></a><h2>Description</h2>
+<p>AMR wideband encoder based on the </p>
+<a class="ulink" href="http://www.penguin.cz/~utx/amr" target="_top">reference codec implementation</a>.
+<div class="refsect2">
+<a name="id-1.2.132.8.4"></a><h3>Example launch line</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch filesrc location<span class="gtkdoc opt">=</span>abc<span class="gtkdoc opt">.</span>wav <span class="gtkdoc opt">!</span> wavparse <span class="gtkdoc opt">!</span> audioresample <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> voamrwbenc <span class="gtkdoc opt">!</span> filesink location<span class="gtkdoc opt">=</span>abc<span class="gtkdoc opt">.</span>amr</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+Please note that the above stream misses the header, that is needed to play
+the stream.
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.82.3.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.132.8.5.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -62,7 +127,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.82.3.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.132.8.5.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -120,6 +185,24 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-voamrwbenc.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstVoAmrWbEnc-struct"></a><h3>struct GstVoAmrWbEnc</h3>
+<pre class="programlisting">struct GstVoAmrWbEnc;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-voamrwbenc.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstVoAmrWbEnc--band-mode"></a><h3>The <code class="literal">“band-mode”</code> property</h3>
+<pre class="programlisting">  “band-mode”                <span class="type">GstVoAmrWbEncBandMode</span></pre>
+<p>Encoding Band Mode (Kbps).</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Default value: MR660</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-voamrwbenc.see-also"></a><h2>See Also</h2>
+<p><span class="type">GstAmrWbDec</span>, <span class="type">GstAmrWbParse</span></p>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-waterripple.html b/docs/plugins/html/gst-plugins-bad-plugins-waterripple.html
index 9df7ce9..4cabdf0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-waterripple.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-waterripple.html
@@ -90,7 +90,7 @@
 <a name="gst-plugins-bad-plugins-waterripple.description"></a><h2>Description</h2>
 <p>The waterripple element creates a water ripple effect on the image.</p>
 <div class="refsect2">
-<a name="id-1.2.79.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.129.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -106,7 +106,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.79.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.129.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -132,7 +132,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.79.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.129.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-wavescope.html b/docs/plugins/html/gst-plugins-bad-plugins-wavescope.html
index dcbbce4..2ab700d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-wavescope.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-wavescope.html
@@ -7,7 +7,7 @@
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-voamrwbenc.html" title="voamrwbenc">
-<link rel="next" href="ch02.html" title="gst-plugins-bad Plugins">
+<link rel="next" href="gst-plugins-bad-plugins-webrtcdsp.html" title="webrtcdsp">
 <meta name="generator" content="GTK-Doc V1.25 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -22,7 +22,7 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="gst-plugins-bad-plugins-voamrwbenc.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="ch02.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-webrtcdsp.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="gst-plugins-bad-plugins-wavescope"></a><div class="titlepage"></div>
@@ -76,7 +76,7 @@
 <p>Wavescope is a simple audio visualisation element. It renders the waveforms
 like on an oscilloscope.</p>
 <div class="refsect2">
-<a name="id-1.2.83.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.133.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -92,7 +92,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.83.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.133.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -118,7 +118,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.83.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.133.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-webrtcdsp.html b/docs/plugins/html/gst-plugins-bad-plugins-webrtcdsp.html
new file mode 100644
index 0000000..96ddfc0
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-webrtcdsp.html
@@ -0,0 +1,355 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>webrtcdsp: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-wavescope.html" title="wavescope">
+<link rel="next" href="gst-plugins-bad-plugins-webrtcechoprobe.html" title="webrtcechoprobe">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-webrtcdsp.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-webrtcdsp.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-webrtcdsp.properties" class="shortcut">Properties</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-wavescope.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-webrtcechoprobe.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-webrtcdsp"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-webrtcdsp.top_of_page"></a>webrtcdsp</span></h2>
+<p>webrtcdsp — Audio Filter using WebRTC Audio Processing library</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-webrtcdsp.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--echo-cancel" title="The “echo-cancel” property">echo-cancel</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--experimental-agc" title="The “experimental-agc” property">experimental-agc</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--extended-filter" title="The “extended-filter” property">extended-filter</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--gain-control" title="The “gain-control” property">gain-control</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--high-pass-filter" title="The “high-pass-filter” property">high-pass-filter</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--noise-suppression" title="The “noise-suppression” property">noise-suppression</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--probe" title="The “probe” property">probe</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr>
+<tr>
+<td class="property_type"><span class="type">GstWebrtcEchoSuppressionLevel</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--echo-suppression-level" title="The “echo-suppression-level” property">echo-suppression-level</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr>
+<tr>
+<td class="property_type"><span class="type">GstWebrtcNoiseSuppressionLevel</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--noise-suppression-level" title="The “noise-suppression-level” property">noise-suppression-level</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--delay-agnostic" title="The “delay-agnostic” property">delay-agnostic</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="GstWebrtcDsp"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-webrtcdsp.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword"> </td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp-struct" title="GstWebrtcDsp">GstWebrtcDsp</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-webrtcdsp.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstaudiofilter.html#GstAudioFilter-struct">GstAudioFilter</a>
+                        <span class="lineart">╰──</span> GstWebrtcDsp
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-webrtcdsp.description"></a><h2>Description</h2>
+<p>A voice enhancement filter based on WebRTC Audio Processing library. This
+library provides a whide variety of enhancement algorithms. This element
+tries to enable as much as possible. The currently enabled enhancements are
+High Pass Filter, Echo Canceller, Noise Suppression, Automatic Gain Control,
+and some extended filters.</p>
+<p>While webrtcdsp element can be used alone, there is an exception for the
+echo canceller. The audio canceller need to be aware of the far end streams
+that are played to loud speakers. For this, you must place a webrtcechoprobe
+element at that far end. Note that the sample rate must match between
+webrtcdsp and the webrtechoprobe. Though, the number of channels can differ.
+The probe is found by the DSP element using it's object name. By default,
+webrtcdsp looks for webrtcechoprobe0, which means it just work if you have
+a single probe and DSP.</p>
+<p>The probe can only be used within the same top level GstPipeline.
+Additonally, to simplify the code, the probe element must be created
+before the DSP sink pad is activated. It does not need to be in any
+particular state and does not even need to be added to the pipeline yet.</p>
+<div class="refsect2">
+<a name="id-1.2.134.7.5"></a><h3>Example launch line</h3>
+<p>As a conveniance, the echo canceller can be tested using an echo loop. In
+this configuration, one would expect a single echo to be heard.</p>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> pulsesrc <span class="gtkdoc opt">!</span> webrtcdsp <span class="gtkdoc opt">!</span> webrtcechoprobe <span class="gtkdoc opt">!</span> pulsesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+<p></p>
+<p>In real environment, you'll place the probe before the playback, but only
+process the far end streams. The DSP should be placed as close as possible
+to the audio capture. The following pipeline is astracted and does not
+represent a real pipeline.</p>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1
+2</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> far<span class="gtkdoc opt">-</span>end<span class="gtkdoc opt">-</span>src <span class="gtkdoc opt">!</span> audio<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span>rate<span class="gtkdoc opt">=</span><span class="number">48000</span> <span class="gtkdoc opt">!</span> webrtcechoprobe <span class="gtkdoc opt">!</span> pulsesink \
+               pulsesrc <span class="gtkdoc opt">!</span> audio<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span>rate<span class="gtkdoc opt">=</span><span class="number">48000</span> <span class="gtkdoc opt">!</span> webrtcdsp <span class="gtkdoc opt">!</span> far<span class="gtkdoc opt">-</span>end<span class="gtkdoc opt">-</span>sink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+<p></p>
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.134.7.6.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-webrtcdsp.html#plugin-webrtcdsp">webrtcdsp</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Nicolas Dufresne &lt;nicolas.dufresne@collabora.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Generic/Audio</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.134.7.6.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int){ 48000, 32000, 16000, 8000 }, channels=(int)[ 1, 2147483647 ]</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int){ 48000, 32000, 16000, 8000 }, channels=(int)[ 1, 2147483647 ]</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-webrtcdsp.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-webrtcdsp.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstWebrtcDsp-struct"></a><h3>GstWebrtcDsp</h3>
+<pre class="programlisting">typedef struct _GstWebrtcDsp GstWebrtcDsp;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-webrtcdsp.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstWebrtcDsp--echo-cancel"></a><h3>The <code class="literal">“echo-cancel”</code> property</h3>
+<pre class="programlisting">  “echo-cancel”              <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Enable or disable echo canceller, note that it will be disabled if no webrtcechoprobe has been found.</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstWebrtcDsp--experimental-agc"></a><h3>The <code class="literal">“experimental-agc”</code> property</h3>
+<pre class="programlisting">  “experimental-agc”         <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Enable or disable experimental automatic gain control.</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstWebrtcDsp--extended-filter"></a><h3>The <code class="literal">“extended-filter”</code> property</h3>
+<pre class="programlisting">  “extended-filter”          <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Enable or disable the extended filter.</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstWebrtcDsp--gain-control"></a><h3>The <code class="literal">“gain-control”</code> property</h3>
+<pre class="programlisting">  “gain-control”             <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Enable or disable automatic digital gain control.</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstWebrtcDsp--high-pass-filter"></a><h3>The <code class="literal">“high-pass-filter”</code> property</h3>
+<pre class="programlisting">  “high-pass-filter”         <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Enable or disable high pass filtering.</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstWebrtcDsp--noise-suppression"></a><h3>The <code class="literal">“noise-suppression”</code> property</h3>
+<pre class="programlisting">  “noise-suppression”        <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Enable or disable noise suppression.</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstWebrtcDsp--probe"></a><h3>The <code class="literal">“probe”</code> property</h3>
+<pre class="programlisting">  “probe”                    <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>The name of the webrtcechoprobe element that record the audio being played through loud speakers. Must be set before PAUSED state.</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Default value: "webrtcechoprobe0"</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstWebrtcDsp--echo-suppression-level"></a><h3>The <code class="literal">“echo-suppression-level”</code> property</h3>
+<pre class="programlisting">  “echo-suppression-level”   <span class="type">GstWebrtcEchoSuppressionLevel</span></pre>
+<p>Controls the aggressiveness of the suppressor. A higher level trades off double-talk performance for increased echo suppression.</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Default value: Moderate Suppression</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstWebrtcDsp--noise-suppression-level"></a><h3>The <code class="literal">“noise-suppression-level”</code> property</h3>
+<pre class="programlisting">  “noise-suppression-level”  <span class="type">GstWebrtcNoiseSuppressionLevel</span></pre>
+<p>Controls the aggressiveness of the suppression. Increasing the level will reduce the noise level at the expense of a higher speech distortion.</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Default value: Moderate Suppression</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstWebrtcDsp--delay-agnostic"></a><h3>The <code class="literal">“delay-agnostic”</code> property</h3>
+<pre class="programlisting">  “delay-agnostic”           <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Enable or disable the delay agnostic mode.</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Default value: FALSE</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-webrtcechoprobe.html b/docs/plugins/html/gst-plugins-bad-plugins-webrtcechoprobe.html
new file mode 100644
index 0000000..e1041d5
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-webrtcechoprobe.html
@@ -0,0 +1,160 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>webrtcechoprobe: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-webrtcdsp.html" title="webrtcdsp">
+<link rel="next" href="ch02.html" title="gst-plugins-bad Plugins">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-webrtcechoprobe.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-webrtcechoprobe.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-webrtcdsp.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="ch02.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-webrtcechoprobe"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-webrtcechoprobe.top_of_page"></a>webrtcechoprobe</span></h2>
+<p>webrtcechoprobe</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<a name="GstWebrtcEchoProbe"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-webrtcechoprobe.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-webrtcechoprobe.html#GstWebrtcEchoProbe-struct" title="struct GstWebrtcEchoProbe">GstWebrtcEchoProbe</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-webrtcechoprobe.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+                <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+                    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstaudiofilter.html#GstAudioFilter-struct">GstAudioFilter</a>
+                        <span class="lineart">╰──</span> GstWebrtcEchoProbe
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-webrtcechoprobe.description"></a><h2>Description</h2>
+<p>This echo probe is to be used with the webrtcdsp element. See <a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html" title="webrtcdsp"><span class="type">gst-plugins-bad-plugins-webrtcdsp</span></a>
+documentation for more details.</p>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.135.6.3.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+            <a class="link" href="gst-plugins-bad-plugins-plugin-webrtcdsp.html#plugin-webrtcdsp">webrtcdsp</a>
+          </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Nicolas Dufresne &lt;nicolas.dufrsesne@collabora.com&gt;</td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Generic/Audio</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.135.6.3.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int){ 48000, 32000, 16000, 8000 }, channels=(int)[ 1, 2147483647 ]</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int){ 48000, 32000, 16000, 8000 }, channels=(int)[ 1, 2147483647 ]</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-webrtcechoprobe.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-webrtcechoprobe.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstWebrtcEchoProbe-struct"></a><h3>struct GstWebrtcEchoProbe</h3>
+<pre class="programlisting">struct GstWebrtcEchoProbe;</pre>
+<p>The adder object structure.</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-zbar.html b/docs/plugins/html/gst-plugins-bad-plugins-zbar.html
index 1a7b0a1..134c3a1 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-zbar.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-zbar.html
@@ -86,10 +86,71 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-zbar.description"></a><h2>Description</h2>
+<p>Detect bar codes in the video streams and send them as element messages to
+the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBus.html#GstBus-struct"><span class="type">GstBus</span></a> if .<a class="link" href="gst-plugins-bad-plugins-zbar.html#GstZBar--message" title="The “message” property"><span class="type">“message”</span></a> property is <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>.
+If the .<a class="link" href="gst-plugins-bad-plugins-zbar.html#GstZBar--attach-frame" title="The “attach-frame” property"><span class="type">“attach-frame”</span></a> property is <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, the posted barcode message
+includes a sample of the frame where the barcode was detected (Since 1.6).</p>
+<p>The element generate messages named</p>
+<code class="classname">"barcode"</code>. The structure containes these
+<p>fields:</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+  <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a>
+  <code class="classname">"timestamp"</code>:
+  the timestamp of the buffer that triggered the message.
+  </p></li>
+<li class="listitem"><p>
+  gchar*
+  <code class="classname">"type"</code>:
+  the symbol type.
+  </p></li>
+<li class="listitem"><p>
+  gchar*
+  <code class="classname">"symbol"</code>:
+  the deteted bar code data.
+  </p></li>
+<li class="listitem"><p>
+  gint
+  <code class="classname">"quality"</code>:
+  an unscaled, relative quantity: larger values are better than smaller
+  values.
+  </p></li>
+<li class="listitem"><p>
+  GstSample
+  <code class="classname">"frame"</code>:
+  the frame in which the barcode message was detected, if
+  the .<a class="link" href="gst-plugins-bad-plugins-zbar.html#GstZBar--attach-frame" title="The “attach-frame” property"><span class="type">“attach-frame”</span></a> property was set to <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> (Since 1.6)
+  </p></li>
+</ul></div>
+<div class="refsect2">
+<a name="id-1.2.130.7.7"></a><h3>Example launch lines</h3>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>m v4l2src <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> zbar <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> xvimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ This pipeline will detect barcodes and send them as messages.
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1</pre></td>
+        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>m v4l2src <span class="gtkdoc opt">!</span> tee name<span class="gtkdoc opt">=</span>t <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> zbar <span class="gtkdoc opt">!</span> fakesink t<span class="gtkdoc opt">. !</span> queue <span class="gtkdoc opt">!</span> xvimagesink</pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+ Same as above, but running the filter on a branch to keep the display in color
+</div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.80.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.130.7.8.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -115,7 +176,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.80.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.130.7.8.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -176,6 +237,7 @@
 <div class="refsect2">
 <a name="GstZBar-struct"></a><h3>struct GstZBar</h3>
 <pre class="programlisting">struct GstZBar;</pre>
+<p>Opaque data structure.</p>
 </div>
 </div>
 <div class="refsect1">
diff --git a/docs/plugins/html/index.html b/docs/plugins/html/index.html
index a6fe5e0..377c722 100644
--- a/docs/plugins/html/index.html
+++ b/docs/plugins/html/index.html
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GStreamer Bad Plugins 1.0 Plugins Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for GStreamer Bad Plugins 1.0 (1.8.3)
+      for GStreamer Bad Plugins 1.0 (1.9.90)
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/</a>.
     </p></div>
@@ -44,6 +44,9 @@
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-audiomixer.html">audiomixer</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-audioparse.html">audioparse</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-autoconvert.html">autoconvert</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
@@ -101,7 +104,7 @@
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-dodge.html">dodge</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-dtmfdetect.html">dtmfdetect</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-dtmfdetect.html">dtmfdetect</a></span><span class="refpurpose"> — Detects DTMF tones</span>
 </dt>
 <dt>
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-dtsdec.html">dtsdec</a></span><span class="refpurpose"></span>
@@ -143,6 +146,144 @@
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-gaussianblur.html">gaussianblur</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glcolorbalance.html">glcolorbalance</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glcolorconvert.html">glcolorconvert</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glcolorscale.html">glcolorscale</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gldeinterlace.html">gldeinterlace</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gldifferencematte.html">gldifferencematte</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gldownload.html">gldownload</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-blur.html">gleffects_blur</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-bulge.html">gleffects_bulge</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-fisheye.html">gleffects_fisheye</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-glow.html">gleffects_glow</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-heat.html">gleffects_heat</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-identity.html">gleffects_identity</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-laplacian.html">gleffects_laplacian</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-lumaxpro.html">gleffects_lumaxpro</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-mirror.html">gleffects_mirror</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-sepia.html">gleffects_sepia</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-sin.html">gleffects_sin</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-sobel.html">gleffects_sobel</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-square.html">gleffects_square</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-squeeze.html">gleffects_squeeze</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-stretch.html">gleffects_stretch</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-tunnel.html">gleffects_tunnel</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-twirl.html">gleffects_twirl</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects.html">gleffects</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-xpro.html">gleffects_xpro</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gleffects-xray.html">gleffects_xray</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glfilterapp.html">glfilterapp</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glfilterbin.html">glfilterbin</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glfiltercube.html">glfiltercube</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glfilterglass.html">glfilterglass</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glimagesinkelement.html">glimagesinkelement</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glimagesink.html">glimagesink</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glmixerbin.html">glmixerbin</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glmosaic.html">glmosaic</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gloverlay.html">gloverlay</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glshader.html">glshader</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glsinkbin.html">glsinkbin</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glsrcbin.html">glsrcbin</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glstereomix.html">glstereomix</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glstereosplit.html">glstereosplit</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gltestsrc.html">gltestsrc</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-gltransformation.html">gltransformation</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glupload.html">glupload</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glvideomixerelement.html">glvideomixerelement</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glvideomixer.html">glvideomixer</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-glviewconvert.html">glviewconvert</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-jpegparse.html">jpegparse</a></span><span class="refpurpose"> — JPEG parser</span>
 </dt>
 <dt>
@@ -185,10 +326,10 @@
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-ofa.html">ofa</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-openalsrc.html">openalsrc</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-openalsrc.html">openalsrc</a></span><span class="refpurpose"> — capture raw audio samples through OpenAL</span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-openalsink.html">openalsink</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-openalsink.html">openalsink</a></span><span class="refpurpose"> — capture raw audio samples through OpenAL</span>
 </dt>
 <dt>
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-pcapparse.html">pcapparse</a></span><span class="refpurpose"></span>
@@ -197,7 +338,10 @@
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-pinch.html">pinch</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-pyramidsegment.html">pyramidsegment</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-rawaudioparse.html">rawaudioparse</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-rawvideoparse.html">rawvideoparse</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-rfbsrc.html">rfbsrc</a></span><span class="refpurpose"></span>
@@ -254,6 +398,12 @@
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-twirl.html">twirl</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-unalignedaudioparse.html">unalignedaudioparse</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-unalignedvideoparse.html">unalignedvideoparse</a></span><span class="refpurpose"></span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-videoparse.html">videoparse</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
@@ -271,6 +421,12 @@
 <dt>
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-wavescope.html">wavescope</a></span><span class="refpurpose"></span>
 </dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-webrtcdsp.html">webrtcdsp</a></span><span class="refpurpose"> — Audio Filter using WebRTC Audio Processing library</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-webrtcechoprobe.html">webrtcechoprobe</a></span><span class="refpurpose"></span>
+</dt>
 </dl></dd>
 <dt><span class="chapter"><a href="ch02.html">gst-plugins-bad Plugins</a></span></dt>
 <dd><dl>
@@ -374,6 +530,9 @@
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-openal.html">openal</a></span><span class="refpurpose"> — OpenAL plugin library</span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-opengl.html">opengl</a></span><span class="refpurpose"> — OpenGL plugin</span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-opencv.html">opencv</a></span><span class="refpurpose"> — GStreamer OpenCV Plugins</span>
 </dt>
 <dt>
@@ -407,6 +566,9 @@
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-voamrwbenc.html">voamrwbenc</a></span><span class="refpurpose"> — Adaptive Multi-Rate Wide-Band Encoder</span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-webrtcdsp.html">webrtcdsp</a></span><span class="refpurpose"> — Voice pre-processing using WebRTC Audio Processing Library</span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-zbar.html">zbar</a></span><span class="refpurpose"> — zbar barcode scanner</span>
 </dt>
 </dl></dd>
diff --git a/docs/plugins/inspect/plugin-accurip.xml b/docs/plugins/inspect/plugin-accurip.xml
index 8bb176d..9729820 100644
--- a/docs/plugins/inspect/plugin-accurip.xml
+++ b/docs/plugins/inspect/plugin-accurip.xml
@@ -3,7 +3,7 @@
   <description>Computes an AccurateRip CRC</description>
   <filename>../../gst/accurip/.libs/libgstaccurip.so</filename>
   <basename>libgstaccurip.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-adpcmdec.xml b/docs/plugins/inspect/plugin-adpcmdec.xml
index 448f009..8181e9d 100644
--- a/docs/plugins/inspect/plugin-adpcmdec.xml
+++ b/docs/plugins/inspect/plugin-adpcmdec.xml
@@ -3,7 +3,7 @@
   <description>ADPCM decoder</description>
   <filename>../../gst/adpcmdec/.libs/libgstadpcmdec.so</filename>
   <basename>libgstadpcmdec.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-adpcmenc.xml b/docs/plugins/inspect/plugin-adpcmenc.xml
index e46af5b..c72a003 100644
--- a/docs/plugins/inspect/plugin-adpcmenc.xml
+++ b/docs/plugins/inspect/plugin-adpcmenc.xml
@@ -3,7 +3,7 @@
   <description>ADPCM encoder</description>
   <filename>../../gst/adpcmenc/.libs/libgstadpcmenc.so</filename>
   <basename>libgstadpcmenc.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-aiff.xml b/docs/plugins/inspect/plugin-aiff.xml
index 50ceef9..7690007 100644
--- a/docs/plugins/inspect/plugin-aiff.xml
+++ b/docs/plugins/inspect/plugin-aiff.xml
@@ -3,7 +3,7 @@
   <description>Create and parse Audio Interchange File Format (AIFF) files</description>
   <filename>../../gst/aiff/.libs/libgstaiff.so</filename>
   <basename>libgstaiff.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-androidcamera.xml b/docs/plugins/inspect/plugin-androidcamera.xml
deleted file mode 100644
index c9417ca..0000000
--- a/docs/plugins/inspect/plugin-androidcamera.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<plugin>
-  <name>androidcamera</name>
-  <description>Capture from Android cameras</description>
-  <filename>../../sys/androidcamera/.libs/libgstandroidcamera.so</filename>
-  <basename>libgstandroidcamera.so</basename>
-  <version>0.10.22.1</version>
-  <license>LGPL</license>
-  <source>gst-plugins-bad</source>
-  <package>GStreamer Bad Plug-ins git</package>
-  <origin>Unknown package origin</origin>
-  <elements>
-    <element>
-      <name>ahcsrc</name>
-      <longname>Android Camera Source</longname>
-      <class>Source/Video</class>
-      <description>Reads frames from android.hardware.Camera class into buffers</description>
-      <author>Youness Alaoui &lt;youness.alaoui@collabora.co.uk&gt;</author>
-      <pads>
-        <caps>
-          <name>src</name>
-          <direction>source</direction>
-          <presence>always</presence>
-          <details>video/x-raw-yuv, format=(fourcc) { YV12 , YUY2 , NV21 , NV16 }, width=(int) [ 1, 2147483647 ], height=(int) [ 1, 2147483647 ], framerate=(fraction) [ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)16, depth=(int)16, red_mask=(int)63488, green_mask=(int)2016, blue_mask=(int)31, width=(int) [ 1, 2147483647 ], height=(int) [ 1, 2147483647 ], framerate=(fraction) [ 0/1, 2147483647/1 ] </details>
-        </caps>
-      </pads>
-    </element>
-  </elements>
-</plugin>
diff --git a/docs/plugins/inspect/plugin-asfmux.xml b/docs/plugins/inspect/plugin-asfmux.xml
index 32c1b8e..962c5c2 100644
--- a/docs/plugins/inspect/plugin-asfmux.xml
+++ b/docs/plugins/inspect/plugin-asfmux.xml
@@ -3,7 +3,7 @@
   <description>ASF Muxer Plugin</description>
   <filename>../../gst/asfmux/.libs/libgstasfmux.so</filename>
   <basename>libgstasfmux.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-assrender.xml b/docs/plugins/inspect/plugin-assrender.xml
index dc6152c..7197bc2 100644
--- a/docs/plugins/inspect/plugin-assrender.xml
+++ b/docs/plugins/inspect/plugin-assrender.xml
@@ -3,7 +3,7 @@
   <description>ASS/SSA subtitle renderer</description>
   <filename>../../ext/assrender/.libs/libgstassrender.so</filename>
   <basename>libgstassrender.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
@@ -26,13 +26,13 @@
           <name>video_sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
         <caps>
           <name>src</name>
           <direction>source</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
       </pads>
     </element>
diff --git a/docs/plugins/inspect/plugin-audiofxbad.xml b/docs/plugins/inspect/plugin-audiofxbad.xml
index 4c8d895..24420b7 100644
--- a/docs/plugins/inspect/plugin-audiofxbad.xml
+++ b/docs/plugins/inspect/plugin-audiofxbad.xml
@@ -3,7 +3,7 @@
   <description>Audio filters from gst-plugins-bad</description>
   <filename>../../gst/audiofxbad/.libs/libgstaudiofxbad.so</filename>
   <basename>libgstaudiofxbad.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-audiomixer.xml b/docs/plugins/inspect/plugin-audiomixer.xml
index 91aa6b5..c4389ac 100644
--- a/docs/plugins/inspect/plugin-audiomixer.xml
+++ b/docs/plugins/inspect/plugin-audiomixer.xml
@@ -3,7 +3,7 @@
   <description>Mixes multiple audio streams</description>
   <filename>../../gst/audiomixer/.libs/libgstaudiomixer.so</filename>
   <basename>libgstaudiomixer.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-audiovisualizers.xml b/docs/plugins/inspect/plugin-audiovisualizers.xml
index dbbff16..5eb954a 100644
--- a/docs/plugins/inspect/plugin-audiovisualizers.xml
+++ b/docs/plugins/inspect/plugin-audiovisualizers.xml
@@ -3,7 +3,7 @@
   <description>Creates video visualizations of audio input</description>
   <filename>../../gst/audiovisualizers/.libs/libgstaudiovisualizers.so</filename>
   <basename>libgstaudiovisualizers.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-autoconvert.xml b/docs/plugins/inspect/plugin-autoconvert.xml
index 7c020d6..3dd5e3c 100644
--- a/docs/plugins/inspect/plugin-autoconvert.xml
+++ b/docs/plugins/inspect/plugin-autoconvert.xml
@@ -3,7 +3,7 @@
   <description>Selects convertor element based on caps</description>
   <filename>../../gst/autoconvert/.libs/libgstautoconvert.so</filename>
   <basename>libgstautoconvert.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-bayer.xml b/docs/plugins/inspect/plugin-bayer.xml
index df17423..be37ae7 100644
--- a/docs/plugins/inspect/plugin-bayer.xml
+++ b/docs/plugins/inspect/plugin-bayer.xml
@@ -3,7 +3,7 @@
   <description>Elements to convert Bayer images</description>
   <filename>../../gst/bayer/.libs/libgstbayer.so</filename>
   <basename>libgstbayer.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-bluez.xml b/docs/plugins/inspect/plugin-bluez.xml
index 3b970ef..2d82903 100644
--- a/docs/plugins/inspect/plugin-bluez.xml
+++ b/docs/plugins/inspect/plugin-bluez.xml
@@ -3,7 +3,7 @@
   <description>Bluez-based bluetooth support</description>
   <filename>../../sys/bluez/.libs/libgstbluez.so</filename>
   <basename>libgstbluez.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-bs2b.xml b/docs/plugins/inspect/plugin-bs2b.xml
index 62ad93a..7730094 100644
--- a/docs/plugins/inspect/plugin-bs2b.xml
+++ b/docs/plugins/inspect/plugin-bs2b.xml
@@ -3,7 +3,7 @@
   <description>Improve headphone listening of stereo audio recordsusing the bs2b library.</description>
   <filename>../../ext/bs2b/.libs/libgstbs2b.so</filename>
   <basename>libgstbs2b.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-bz2.xml b/docs/plugins/inspect/plugin-bz2.xml
index 3352abc..2222b52 100644
--- a/docs/plugins/inspect/plugin-bz2.xml
+++ b/docs/plugins/inspect/plugin-bz2.xml
@@ -3,7 +3,7 @@
   <description>Compress or decompress streams</description>
   <filename>../../ext/bz2/.libs/libgstbz2.so</filename>
   <basename>libgstbz2.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-camerabin.xml b/docs/plugins/inspect/plugin-camerabin.xml
index 2025f68..44328b6 100644
--- a/docs/plugins/inspect/plugin-camerabin.xml
+++ b/docs/plugins/inspect/plugin-camerabin.xml
@@ -3,7 +3,7 @@
   <description>Take image snapshots and record movies from camera</description>
   <filename>../../gst/camerabin2/.libs/libgstcamerabin2.so</filename>
   <basename>libgstcamerabin2.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-chromaprint.xml b/docs/plugins/inspect/plugin-chromaprint.xml
index 8d0709e..c1c6339 100644
--- a/docs/plugins/inspect/plugin-chromaprint.xml
+++ b/docs/plugins/inspect/plugin-chromaprint.xml
@@ -3,7 +3,7 @@
   <description>Calculate Chromaprint fingerprint from audio files</description>
   <filename>../../ext/chromaprint/.libs/libgstchromaprint.so</filename>
   <basename>libgstchromaprint.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-coloreffects.xml b/docs/plugins/inspect/plugin-coloreffects.xml
index 6fdd87e..88f560b 100644
--- a/docs/plugins/inspect/plugin-coloreffects.xml
+++ b/docs/plugins/inspect/plugin-coloreffects.xml
@@ -3,7 +3,7 @@
   <description>Color Look-up Table filters</description>
   <filename>../../gst/coloreffects/.libs/libgstcoloreffects.so</filename>
   <basename>libgstcoloreffects.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-compositor.xml b/docs/plugins/inspect/plugin-compositor.xml
index d03a8a5..e062cae 100644
--- a/docs/plugins/inspect/plugin-compositor.xml
+++ b/docs/plugins/inspect/plugin-compositor.xml
@@ -3,7 +3,7 @@
   <description>Compositor</description>
   <filename>../../gst/compositor/.libs/libgstcompositor.so</filename>
   <basename>libgstcompositor.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-curl.xml b/docs/plugins/inspect/plugin-curl.xml
index 3f086a9..3c4d289 100644
--- a/docs/plugins/inspect/plugin-curl.xml
+++ b/docs/plugins/inspect/plugin-curl.xml
@@ -3,7 +3,7 @@
   <description>libcurl-based elements</description>
   <filename>../../ext/curl/.libs/libgstcurl.so</filename>
   <basename>libgstcurl.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dashdemux.xml b/docs/plugins/inspect/plugin-dashdemux.xml
index 160f865..2600781 100644
--- a/docs/plugins/inspect/plugin-dashdemux.xml
+++ b/docs/plugins/inspect/plugin-dashdemux.xml
@@ -3,7 +3,7 @@
   <description>DASH demuxer plugin</description>
   <filename>../../ext/dash/.libs/libgstdashdemux.so</filename>
   <basename>libgstdashdemux.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-dataurisrc.xml b/docs/plugins/inspect/plugin-dataurisrc.xml
index f003df6..5b2b024 100644
--- a/docs/plugins/inspect/plugin-dataurisrc.xml
+++ b/docs/plugins/inspect/plugin-dataurisrc.xml
@@ -3,7 +3,7 @@
   <description>data: URI source</description>
   <filename>../../gst/dataurisrc/.libs/libgstdataurisrc.so</filename>
   <basename>libgstdataurisrc.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dc1394.xml b/docs/plugins/inspect/plugin-dc1394.xml
new file mode 100644
index 0000000..ce07d4c
--- /dev/null
+++ b/docs/plugins/inspect/plugin-dc1394.xml
@@ -0,0 +1,28 @@
+<plugin>
+  <name>dc1394</name>
+  <description>1394 IIDC video source</description>
+  <filename>../../ext/dc1394/.libs/libgstdc1394.so</filename>
+  <basename>libgstdc1394.so</basename>
+  <version>1.9.90</version>
+  <license>LGPL</license>
+  <source>gst-plugins-bad</source>
+  <package>GStreamer Bad Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>dc1394src</name>
+      <longname>1394 IIDC Video Source</longname>
+      <class>Source/Video</class>
+      <description>libdc1394 based source for IIDC cameras</description>
+      <author>Antoine Tremblay &lt;hexa00@gmail.com&gt;</author>
+      <pads>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>video/x-raw, format=(string)IYU2, width=(int)160, height=(int)120, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)UYVY, width=(int)320, height=(int)240, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)IYU1, width=(int)640, height=(int)480, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)UYVY, width=(int)640, height=(int)480, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)RGB, width=(int)640, height=(int)480, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)GRAY8, width=(int)640, height=(int)480, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-bayer, format=(string){ bggr, rggb, grbg, gbrg }, width=(int)640, height=(int)480, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)GRAY16_BE, width=(int)640, height=(int)480, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)UYVY, width=(int)800, height=(int)600, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)RGB, width=(int)800, height=(int)600, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)GRAY8, width=(int)800, height=(int)600, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-bayer, format=(string){ bggr, rggb, grbg, gbrg }, width=(int)800, height=(int)600, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)UYVY, width=(int)1024, height=(int)768, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)RGB, width=(int)1024, height=(int)768, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)GRAY8, width=(int)1024, height=(int)768, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-bayer, format=(string){ bggr, rggb, grbg, gbrg }, width=(int)1024, height=(int)768, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)GRAY16_BE, width=(int)800, height=(int)600, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)GRAY16_BE, width=(int)1024, height=(int)768, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)UYVY, width=(int)1280, height=(int)960, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)RGB, width=(int)1280, height=(int)960, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)GRAY8, width=(int)1280, height=(int)960, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-bayer, format=(string){ bggr, rggb, grbg, gbrg }, width=(int)1280, height=(int)960, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)UYVY, width=(int)1600, height=(int)1200, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)RGB, width=(int)1600, height=(int)1200, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)GRAY8, width=(int)1600, height=(int)1200, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-bayer, format=(string){ bggr, rggb, grbg, gbrg }, width=(int)1600, height=(int)1200, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)GRAY16_BE, width=(int)1280, height=(int)960, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)GRAY16_BE, width=(int)1600, height=(int)1200, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)RGB, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 1/2147483647, 2147483647/1 ]; video/x-raw, format=(string)IYU2, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 1/2147483647, 2147483647/1 ]; video/x-raw, format=(string)UYVY, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 1/2147483647, 2147483647/1 ]; video/x-raw, format=(string)IYU1, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 1/2147483647, 2147483647/1 ]; video/x-raw, format=(string)GRAY16_BE, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 1/2147483647, 2147483647/1 ]; video/x-bayer, format=(string){ bggr, rggb, grbg, gbrg }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 1/2147483647, 2147483647/1 ]; video/x-raw, format=(string)GRAY8, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 1/2147483647, 2147483647/1 ]; video/x-bayer, format=(string){ bggr, rggb, grbg, gbrg }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 1/2147483647, 2147483647/1 ]</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-debugutilsbad.xml b/docs/plugins/inspect/plugin-debugutilsbad.xml
index bd92d71..6b1cbbf 100644
--- a/docs/plugins/inspect/plugin-debugutilsbad.xml
+++ b/docs/plugins/inspect/plugin-debugutilsbad.xml
@@ -3,7 +3,7 @@
   <description>Collection of elements that may or may not be useful for debugging</description>
   <filename>../../gst/debugutils/.libs/libgstdebugutilsbad.so</filename>
   <basename>libgstdebugutilsbad.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-decklink.xml b/docs/plugins/inspect/plugin-decklink.xml
index 9bffaa4..595f04b 100644
--- a/docs/plugins/inspect/plugin-decklink.xml
+++ b/docs/plugins/inspect/plugin-decklink.xml
@@ -3,7 +3,7 @@
   <description>Blackmagic Decklink plugin</description>
   <filename>../../sys/decklink/.libs/libgstdecklink.so</filename>
   <basename>libgstdecklink.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
@@ -20,7 +20,7 @@
           <name>sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>audio/x-raw, format=(string){ S16LE, S32LE }, channels=(int)2, rate=(int)48000, layout=(string)interleaved</details>
+          <details>audio/x-raw, format=(string){ S16LE, S32LE }, channels=(int){ 2, 8, 16 }, rate=(int)48000, layout=(string)interleaved</details>
         </caps>
       </pads>
     </element>
@@ -50,7 +50,7 @@
           <name>sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB</details>
+          <details>video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA</details>
         </caps>
       </pads>
     </element>
@@ -65,7 +65,7 @@
           <name>src</name>
           <direction>source</direction>
           <presence>always</presence>
-          <details>video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)24000/1001, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)24000/1001, format=(string)ARGB; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)ARGB; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)ARGB; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)ARGB; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)ARGB; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)ARGB; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)ARGB; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)ARGB; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)ARGB</details>
+          <details>video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)v210; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)BGRA; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)24000/1001, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)24000/1001, format=(string)v210; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)24000/1001, format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)24000/1001, format=(string)BGRA; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)25/1, format=(string)v210; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)25/1, format=(string)BGRA; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)v210; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)BGRA; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)v210; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)25/1, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)25/1, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30/1, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30/1, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)BGRA; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)v210; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)BGRA; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)v210; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)ARGB; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)BGRA; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)v210; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)ARGB; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)BGRA; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)v210; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)ARGB; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)BGRA; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)v210; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)ARGB; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)BGRA; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)v210; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)ARGB; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)BGRA; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)v210; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)BGRA; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)v210; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)BGRA</details>
         </caps>
       </pads>
     </element>
diff --git a/docs/plugins/inspect/plugin-dfbvideosink.xml b/docs/plugins/inspect/plugin-dfbvideosink.xml
index eab6276..6b8aad1 100644
--- a/docs/plugins/inspect/plugin-dfbvideosink.xml
+++ b/docs/plugins/inspect/plugin-dfbvideosink.xml
@@ -3,7 +3,7 @@
   <description>DirectFB video output plugin</description>
   <filename>../../ext/directfb/.libs/libgstdfbvideosink.so</filename>
   <basename>libgstdfbvideosink.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dtls.xml b/docs/plugins/inspect/plugin-dtls.xml
index 4b92e49..11e57eb 100644
--- a/docs/plugins/inspect/plugin-dtls.xml
+++ b/docs/plugins/inspect/plugin-dtls.xml
@@ -3,7 +3,7 @@
   <description>DTLS decoder and encoder plugins</description>
   <filename>../../ext/dtls/.libs/libgstdtls.so</filename>
   <basename>libgstdtls.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>BSD</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dtsdec.xml b/docs/plugins/inspect/plugin-dtsdec.xml
index 3e027f4..f22f4d4 100644
--- a/docs/plugins/inspect/plugin-dtsdec.xml
+++ b/docs/plugins/inspect/plugin-dtsdec.xml
@@ -3,7 +3,7 @@
   <description>Decodes DTS audio streams</description>
   <filename>../../ext/dts/.libs/libgstdtsdec.so</filename>
   <basename>libgstdtsdec.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dvb.xml b/docs/plugins/inspect/plugin-dvb.xml
index 0a6273a..496fd3f 100644
--- a/docs/plugins/inspect/plugin-dvb.xml
+++ b/docs/plugins/inspect/plugin-dvb.xml
@@ -3,7 +3,7 @@
   <description>DVB elements</description>
   <filename>../../sys/dvb/.libs/libgstdvb.so</filename>
   <basename>libgstdvb.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-dvbsuboverlay.xml b/docs/plugins/inspect/plugin-dvbsuboverlay.xml
index 07050f1..67fde65 100644
--- a/docs/plugins/inspect/plugin-dvbsuboverlay.xml
+++ b/docs/plugins/inspect/plugin-dvbsuboverlay.xml
@@ -3,7 +3,7 @@
   <description>DVB subtitle renderer</description>
   <filename>../../gst/dvbsuboverlay/.libs/libgstdvbsuboverlay.so</filename>
   <basename>libgstdvbsuboverlay.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
@@ -26,13 +26,13 @@
           <name>video_sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
         <caps>
           <name>src</name>
           <direction>source</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
       </pads>
     </element>
diff --git a/docs/plugins/inspect/plugin-dvdspu.xml b/docs/plugins/inspect/plugin-dvdspu.xml
index 9ce622c..6a348d3 100644
--- a/docs/plugins/inspect/plugin-dvdspu.xml
+++ b/docs/plugins/inspect/plugin-dvdspu.xml
@@ -3,7 +3,7 @@
   <description>DVD Sub-picture Overlay element</description>
   <filename>../../gst/dvdspu/.libs/libgstdvdspu.so</filename>
   <basename>libgstdvdspu.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-faac.xml b/docs/plugins/inspect/plugin-faac.xml
index 9f11d23..dc3829d 100644
--- a/docs/plugins/inspect/plugin-faac.xml
+++ b/docs/plugins/inspect/plugin-faac.xml
@@ -3,7 +3,7 @@
   <description>Free AAC Encoder (FAAC)</description>
   <filename>../../ext/faac/.libs/libgstfaac.so</filename>
   <basename>libgstfaac.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-faad.xml b/docs/plugins/inspect/plugin-faad.xml
index a510ccb..e0ee1e2 100644
--- a/docs/plugins/inspect/plugin-faad.xml
+++ b/docs/plugins/inspect/plugin-faad.xml
@@ -3,7 +3,7 @@
   <description>Free AAC Decoder (FAAD)</description>
   <filename>../../ext/faad/.libs/libgstfaad.so</filename>
   <basename>libgstfaad.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-fbdevsink.xml b/docs/plugins/inspect/plugin-fbdevsink.xml
index b313358..da67c24 100644
--- a/docs/plugins/inspect/plugin-fbdevsink.xml
+++ b/docs/plugins/inspect/plugin-fbdevsink.xml
@@ -3,7 +3,7 @@
   <description>Linux framebuffer video sink</description>
   <filename>../../sys/fbdev/.libs/libgstfbdevsink.so</filename>
   <basename>libgstfbdevsink.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-fdkaac.xml b/docs/plugins/inspect/plugin-fdkaac.xml
new file mode 100644
index 0000000..4365715
--- /dev/null
+++ b/docs/plugins/inspect/plugin-fdkaac.xml
@@ -0,0 +1,55 @@
+<plugin>
+  <name>fdkaac</name>
+  <description>Fraunhofer FDK AAC Codec plugin</description>
+  <filename>../../ext/fdkaac/.libs/libgstfdkaac.so</filename>
+  <basename>libgstfdkaac.so</basename>
+  <version>1.9.90</version>
+  <license>LGPL</license>
+  <source>gst-plugins-bad</source>
+  <package>GStreamer Bad Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>fdkaacdec</name>
+      <longname>FDK AAC audio decoder</longname>
+      <class>Codec/Decoder/Audio</class>
+      <description>FDK AAC audio decoder</description>
+      <author>Sebastian Dröge &lt;sebastian@centricular.com&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>audio/mpeg, mpegversion=(int)4, stream-format=(string){ adts, adif, raw }</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)[ 8000, 96000 ], channels=(int)[ 1, 8 ]</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
+      <name>fdkaacenc</name>
+      <longname>FDK AAC audio encoder</longname>
+      <class>Codec/Encoder/Audio</class>
+      <description>FDK AAC audio encoder</description>
+      <author>Sebastian Dröge &lt;sebastian@centricular.com&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 64000, 88200, 96000 }, channels=(int){ 1, 2, 3, 4, 5, 6, 8 }</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>audio/mpeg, mpegversion=(int)4, rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 64000, 88200, 96000 }, channels=(int){ 1, 2, 3, 4, 5, 6, 8 }, stream-format=(string){ adts, adif, raw }, base-profile=(string)lc, framed=(boolean)true</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-festival.xml b/docs/plugins/inspect/plugin-festival.xml
index 51094f6..6b0151d 100644
--- a/docs/plugins/inspect/plugin-festival.xml
+++ b/docs/plugins/inspect/plugin-festival.xml
@@ -3,7 +3,7 @@
   <description>Synthesizes plain text into audio</description>
   <filename>../../gst/festival/.libs/libgstfestival.so</filename>
   <basename>libgstfestival.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-fieldanalysis.xml b/docs/plugins/inspect/plugin-fieldanalysis.xml
index 8b812bd..e7f5c68 100644
--- a/docs/plugins/inspect/plugin-fieldanalysis.xml
+++ b/docs/plugins/inspect/plugin-fieldanalysis.xml
@@ -3,7 +3,7 @@
   <description>Video field analysis</description>
   <filename>../../gst/fieldanalysis/.libs/libgstfieldanalysis.so</filename>
   <basename>libgstfieldanalysis.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer</package>
diff --git a/docs/plugins/inspect/plugin-flite.xml b/docs/plugins/inspect/plugin-flite.xml
index d694dbf..92ea44b 100644
--- a/docs/plugins/inspect/plugin-flite.xml
+++ b/docs/plugins/inspect/plugin-flite.xml
@@ -3,7 +3,7 @@
   <description>Flite speech synthesizer plugin</description>
   <filename>../../ext/flite/.libs/libgstflite.so</filename>
   <basename>libgstflite.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-fluidsynthmidi.xml b/docs/plugins/inspect/plugin-fluidsynthmidi.xml
index 8db334c..30d5654 100644
--- a/docs/plugins/inspect/plugin-fluidsynthmidi.xml
+++ b/docs/plugins/inspect/plugin-fluidsynthmidi.xml
@@ -3,7 +3,7 @@
   <description>Fluidsynth MIDI Plugin</description>
   <filename>../../ext/fluidsynth/.libs/libgstfluidsynthmidi.so</filename>
   <basename>libgstfluidsynthmidi.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-freeverb.xml b/docs/plugins/inspect/plugin-freeverb.xml
index 7369e70..7acd8b2 100644
--- a/docs/plugins/inspect/plugin-freeverb.xml
+++ b/docs/plugins/inspect/plugin-freeverb.xml
@@ -3,7 +3,7 @@
   <description>Reverberation/room effect</description>
   <filename>../../gst/freeverb/.libs/libgstfreeverb.so</filename>
   <basename>libgstfreeverb.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-frei0r.xml b/docs/plugins/inspect/plugin-frei0r.xml
index c9cc134..622fe38 100644
--- a/docs/plugins/inspect/plugin-frei0r.xml
+++ b/docs/plugins/inspect/plugin-frei0r.xml
@@ -3,7 +3,7 @@
   <description>frei0r plugin library</description>
   <filename>../../gst/frei0r/.libs/libgstfrei0r.so</filename>
   <basename>libgstfrei0r.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-gaudieffects.xml b/docs/plugins/inspect/plugin-gaudieffects.xml
index a4cb374..6156ff5 100644
--- a/docs/plugins/inspect/plugin-gaudieffects.xml
+++ b/docs/plugins/inspect/plugin-gaudieffects.xml
@@ -3,7 +3,7 @@
   <description>Gaudi video effects.</description>
   <filename>../../gst/gaudieffects/.libs/libgstgaudieffects.so</filename>
   <basename>libgstgaudieffects.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer</package>
diff --git a/docs/plugins/inspect/plugin-gdp.xml b/docs/plugins/inspect/plugin-gdp.xml
index e6d76e8..041ef87 100644
--- a/docs/plugins/inspect/plugin-gdp.xml
+++ b/docs/plugins/inspect/plugin-gdp.xml
@@ -3,7 +3,7 @@
   <description>Payload/depayload GDP packets</description>
   <filename>../../gst/gdp/.libs/libgstgdp.so</filename>
   <basename>libgstgdp.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-geometrictransform.xml b/docs/plugins/inspect/plugin-geometrictransform.xml
index acc9580..2ab3a93 100644
--- a/docs/plugins/inspect/plugin-geometrictransform.xml
+++ b/docs/plugins/inspect/plugin-geometrictransform.xml
@@ -3,7 +3,7 @@
   <description>Various geometric image transform elements</description>
   <filename>../../gst/geometrictransform/.libs/libgstgeometrictransform.so</filename>
   <basename>libgstgeometrictransform.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-gmedec.xml b/docs/plugins/inspect/plugin-gmedec.xml
index 914fc1f..1f7b6bd 100644
--- a/docs/plugins/inspect/plugin-gmedec.xml
+++ b/docs/plugins/inspect/plugin-gmedec.xml
@@ -3,7 +3,7 @@
   <description>GME Audio Decoder</description>
   <filename>../../ext/gme/.libs/libgstgme.so</filename>
   <basename>libgstgme.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-gsm.xml b/docs/plugins/inspect/plugin-gsm.xml
index 7e1aa88..11d0a92 100644
--- a/docs/plugins/inspect/plugin-gsm.xml
+++ b/docs/plugins/inspect/plugin-gsm.xml
@@ -3,7 +3,7 @@
   <description>GSM encoder/decoder</description>
   <filename>../../ext/gsm/.libs/libgstgsm.so</filename>
   <basename>libgstgsm.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-gstgtk.xml b/docs/plugins/inspect/plugin-gstgtk.xml
index db5814e..90999f5 100644
--- a/docs/plugins/inspect/plugin-gstgtk.xml
+++ b/docs/plugins/inspect/plugin-gstgtk.xml
@@ -3,7 +3,7 @@
   <description>Gtk+ sink</description>
   <filename>../../ext/gtk/.libs/libgstgtksink.so</filename>
   <basename>libgstgtksink.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-gstsiren.xml b/docs/plugins/inspect/plugin-gstsiren.xml
index 25568bc..d18d8e5 100644
--- a/docs/plugins/inspect/plugin-gstsiren.xml
+++ b/docs/plugins/inspect/plugin-gstsiren.xml
@@ -3,7 +3,7 @@
   <description>Siren encoder/decoder/payloader/depayloader plugins</description>
   <filename>../../gst/siren/.libs/libgstsiren.so</filename>
   <basename>libgstsiren.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-hls.xml b/docs/plugins/inspect/plugin-hls.xml
index 4e92050..ffdfbaa 100644
--- a/docs/plugins/inspect/plugin-hls.xml
+++ b/docs/plugins/inspect/plugin-hls.xml
@@ -3,7 +3,7 @@
   <description>HTTP Live Streaming (HLS)</description>
   <filename>../../ext/hls/.libs/libgsthls.so</filename>
   <basename>libgsthls.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-id3tag.xml b/docs/plugins/inspect/plugin-id3tag.xml
index 6f8770c..5b28a22 100644
--- a/docs/plugins/inspect/plugin-id3tag.xml
+++ b/docs/plugins/inspect/plugin-id3tag.xml
@@ -3,7 +3,7 @@
   <description>ID3 v1 and v2 muxing plugin</description>
   <filename>../../gst/id3tag/.libs/libgstid3tag.so</filename>
   <basename>libgstid3tag.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-inter.xml b/docs/plugins/inspect/plugin-inter.xml
index 1b56b50..c672970 100644
--- a/docs/plugins/inspect/plugin-inter.xml
+++ b/docs/plugins/inspect/plugin-inter.xml
@@ -3,7 +3,7 @@
   <description>plugin for inter-pipeline communication</description>
   <filename>../../gst/inter/.libs/libgstinter.so</filename>
   <basename>libgstinter.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
@@ -80,7 +80,7 @@
           <name>sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
       </pads>
     </element>
@@ -95,7 +95,7 @@
           <name>src</name>
           <direction>source</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
       </pads>
     </element>
diff --git a/docs/plugins/inspect/plugin-interlace.xml b/docs/plugins/inspect/plugin-interlace.xml
index 791fcd8..cfb1597 100644
--- a/docs/plugins/inspect/plugin-interlace.xml
+++ b/docs/plugins/inspect/plugin-interlace.xml
@@ -3,7 +3,7 @@
   <description>Create an interlaced video stream</description>
   <filename>../../gst/interlace/.libs/libgstinterlace.so</filename>
   <basename>libgstinterlace.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
@@ -20,7 +20,7 @@
           <name>sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string){ AYUV, YUY2, UYVY, I420, YV12, Y42B, Y444, NV12, NV21 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive</details>
+          <details>video/x-raw, format=(string){ AYUV, YUY2, UYVY, I420, YV12, Y42B, Y444, NV12, NV21 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
         <caps>
           <name>src</name>
diff --git a/docs/plugins/inspect/plugin-ivfparse.xml b/docs/plugins/inspect/plugin-ivfparse.xml
index 193d251..283c6d5 100644
--- a/docs/plugins/inspect/plugin-ivfparse.xml
+++ b/docs/plugins/inspect/plugin-ivfparse.xml
@@ -3,7 +3,7 @@
   <description>IVF parser</description>
   <filename>../../gst/ivfparse/.libs/libgstivfparse.so</filename>
   <basename>libgstivfparse.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-ivtc.xml b/docs/plugins/inspect/plugin-ivtc.xml
index 842b73c..d5f5ee3 100644
--- a/docs/plugins/inspect/plugin-ivtc.xml
+++ b/docs/plugins/inspect/plugin-ivtc.xml
@@ -3,7 +3,7 @@
   <description>Inverse Telecine</description>
   <filename>../../gst/ivtc/.libs/libgstivtc.so</filename>
   <basename>libgstivtc.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-jp2kdecimator.xml b/docs/plugins/inspect/plugin-jp2kdecimator.xml
index 9710128..14d2946 100644
--- a/docs/plugins/inspect/plugin-jp2kdecimator.xml
+++ b/docs/plugins/inspect/plugin-jp2kdecimator.xml
@@ -3,7 +3,7 @@
   <description>JPEG2000 decimator</description>
   <filename>../../gst/jp2kdecimator/.libs/libgstjp2kdecimator.so</filename>
   <basename>libgstjp2kdecimator.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-jpegformat.xml b/docs/plugins/inspect/plugin-jpegformat.xml
index 69a88c8..3ee62d4 100644
--- a/docs/plugins/inspect/plugin-jpegformat.xml
+++ b/docs/plugins/inspect/plugin-jpegformat.xml
@@ -3,7 +3,7 @@
   <description>JPEG interchange format plugin</description>
   <filename>../../gst/jpegformat/.libs/libgstjpegformat.so</filename>
   <basename>libgstjpegformat.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-kate.xml b/docs/plugins/inspect/plugin-kate.xml
index dd12efa..0d2f12f 100644
--- a/docs/plugins/inspect/plugin-kate.xml
+++ b/docs/plugins/inspect/plugin-kate.xml
@@ -3,7 +3,7 @@
   <description>Kate plugin</description>
   <filename>../../ext/kate/.libs/libgstkate.so</filename>
   <basename>libgstkate.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-kms.xml b/docs/plugins/inspect/plugin-kms.xml
new file mode 100644
index 0000000..dd8cac0
--- /dev/null
+++ b/docs/plugins/inspect/plugin-kms.xml
@@ -0,0 +1,28 @@
+<plugin>
+  <name>kms</name>
+  <description>Video sink using the Linux kernel mode setting API</description>
+  <filename>../../sys/kms/.libs/libgstkmssink.so</filename>
+  <basename>libgstkmssink.so</basename>
+  <version>1.9.0.1</version>
+  <license>LGPL</license>
+  <source>gst-plugins-bad</source>
+  <package>GStreamer Bad Plug-ins git</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>kmssink</name>
+      <longname>KMS video sink</longname>
+      <class>Sink/Video</class>
+      <description>Video sink using the Linux kernel mode setting API</description>
+      <author>Víctor Jáquez &lt;vjaquez@igalia.com&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>video/x-raw, format=(string){ BGRA, BGRx, RGBA, RGBx, UYVY, YUY2, YVYU, I420, YV12, Y42B, NV12, NV21, NV16 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-ladspa.xml b/docs/plugins/inspect/plugin-ladspa.xml
index 5639475..44f1cb5 100644
--- a/docs/plugins/inspect/plugin-ladspa.xml
+++ b/docs/plugins/inspect/plugin-ladspa.xml
@@ -3,7 +3,7 @@
   <description>LADSPA plugin</description>
   <filename>../../ext/ladspa/.libs/libgstladspa.so</filename>
   <basename>libgstladspa.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-libde265.xml b/docs/plugins/inspect/plugin-libde265.xml
index 350ffa0..d0ebbd7 100644
--- a/docs/plugins/inspect/plugin-libde265.xml
+++ b/docs/plugins/inspect/plugin-libde265.xml
@@ -3,7 +3,7 @@
   <description>HEVC/H.265 decoder using libde265</description>
   <filename>../../ext/libde265/.libs/libgstlibde265.so</filename>
   <basename>libgstlibde265.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-midi.xml b/docs/plugins/inspect/plugin-midi.xml
index eb592fa..eb3c2fb 100644
--- a/docs/plugins/inspect/plugin-midi.xml
+++ b/docs/plugins/inspect/plugin-midi.xml
@@ -3,7 +3,7 @@
   <description>Parse MIDI files</description>
   <filename>../../gst/midi/.libs/libgstmidi.so</filename>
   <basename>libgstmidi.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mimic.xml b/docs/plugins/inspect/plugin-mimic.xml
index f0d1c80..3f92873 100644
--- a/docs/plugins/inspect/plugin-mimic.xml
+++ b/docs/plugins/inspect/plugin-mimic.xml
@@ -3,7 +3,7 @@
   <description>Mimic codec</description>
   <filename>../../ext/mimic/.libs/libgstmimic.so</filename>
   <basename>libgstmimic.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mms.xml b/docs/plugins/inspect/plugin-mms.xml
index e0b5e2d..82e5caf 100644
--- a/docs/plugins/inspect/plugin-mms.xml
+++ b/docs/plugins/inspect/plugin-mms.xml
@@ -3,7 +3,7 @@
   <description>Microsoft Multi Media Server streaming protocol support</description>
   <filename>../../ext/libmms/.libs/libgstmms.so</filename>
   <basename>libgstmms.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-modplug.xml b/docs/plugins/inspect/plugin-modplug.xml
index 1dffedb..2807757 100644
--- a/docs/plugins/inspect/plugin-modplug.xml
+++ b/docs/plugins/inspect/plugin-modplug.xml
@@ -3,7 +3,7 @@
   <description>.MOD audio decoding</description>
   <filename>../../ext/modplug/.libs/libgstmodplug.so</filename>
   <basename>libgstmodplug.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mpeg2enc.xml b/docs/plugins/inspect/plugin-mpeg2enc.xml
index c8fe1f9..ba3edcc 100644
--- a/docs/plugins/inspect/plugin-mpeg2enc.xml
+++ b/docs/plugins/inspect/plugin-mpeg2enc.xml
@@ -3,7 +3,7 @@
   <description>High-quality MPEG-1/2 video encoder</description>
   <filename>../../ext/mpeg2enc/.libs/libgstmpeg2enc.so</filename>
   <basename>libgstmpeg2enc.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mpegpsdemux.xml b/docs/plugins/inspect/plugin-mpegpsdemux.xml
index 7863583..9aaefd1 100644
--- a/docs/plugins/inspect/plugin-mpegpsdemux.xml
+++ b/docs/plugins/inspect/plugin-mpegpsdemux.xml
@@ -3,7 +3,7 @@
   <description>MPEG-PS demuxer</description>
   <filename>../../gst/mpegdemux/.libs/libgstmpegpsdemux.so</filename>
   <basename>libgstmpegpsdemux.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>unknown</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
@@ -11,7 +11,7 @@
   <elements>
     <element>
       <name>mpegpsdemux</name>
-      <longname>The Fluendo MPEG Program Stream Demuxer</longname>
+      <longname>MPEG Program Stream Demuxer</longname>
       <class>Codec/Demuxer</class>
       <description>Demultiplexes MPEG Program Streams</description>
       <author>Wim Taymans &lt;wim@fluendo.com&gt;</author>
diff --git a/docs/plugins/inspect/plugin-mpegpsmux.xml b/docs/plugins/inspect/plugin-mpegpsmux.xml
index f111b6d..6d2f3b6 100644
--- a/docs/plugins/inspect/plugin-mpegpsmux.xml
+++ b/docs/plugins/inspect/plugin-mpegpsmux.xml
@@ -3,7 +3,7 @@
   <description>MPEG-PS muxer</description>
   <filename>../../gst/mpegpsmux/.libs/libgstmpegpsmux.so</filename>
   <basename>libgstmpegpsmux.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mpegtsdemux.xml b/docs/plugins/inspect/plugin-mpegtsdemux.xml
index eb3d178..21c3f61 100644
--- a/docs/plugins/inspect/plugin-mpegtsdemux.xml
+++ b/docs/plugins/inspect/plugin-mpegtsdemux.xml
@@ -3,7 +3,7 @@
   <description>MPEG TS demuxer</description>
   <filename>../../gst/mpegtsdemux/.libs/libgstmpegtsdemux.so</filename>
   <basename>libgstmpegtsdemux.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
@@ -24,25 +24,25 @@
           <details>video/mpegts, systemstream=(boolean)true</details>
         </caps>
         <caps>
-          <name>audio_%04x</name>
+          <name>audio_%01x_%05x</name>
           <direction>source</direction>
           <presence>sometimes</presence>
           <details>audio/mpeg, mpegversion=(int)1; audio/mpeg, mpegversion=(int)2, stream-format=(string)adts; audio/mpeg, mpegversion=(int)4, stream-format=(string)loas; audio/x-lpcm, width=(int){ 16, 20, 24 }, rate=(int){ 48000, 96000 }, channels=(int)[ 1, 8 ], dynamic_range=(int)[ 0, 255 ], emphasis=(boolean){ false, true }, mute=(boolean){ false, true }; audio/x-ac3; audio/x-eac3; audio/x-dts; audio/x-opus; audio/x-private-ts-lpcm</details>
         </caps>
         <caps>
-          <name>private_%04x</name>
+          <name>private_%01x_%05x</name>
           <direction>source</direction>
           <presence>sometimes</presence>
           <details>ANY</details>
         </caps>
         <caps>
-          <name>subpicture_%04x</name>
+          <name>subpicture_%01x_%05x</name>
           <direction>source</direction>
           <presence>sometimes</presence>
           <details>subpicture/x-pgs; subpicture/x-dvd; subpicture/x-dvb</details>
         </caps>
         <caps>
-          <name>video_%04x</name>
+          <name>video_%01x_%05x</name>
           <direction>source</direction>
           <presence>sometimes</presence>
           <details>video/mpeg, mpegversion=(int){ 1, 2, 4 }, systemstream=(boolean)false; video/x-h264, stream-format=(string)byte-stream, alignment=(string)nal; video/x-h265, stream-format=(string)byte-stream, alignment=(string)nal; video/x-dirac; video/x-cavs; video/x-wmv, wmvversion=(int)3, format=(string)WVC1</details>
diff --git a/docs/plugins/inspect/plugin-mpegtsmux.xml b/docs/plugins/inspect/plugin-mpegtsmux.xml
index a45a9ae..282221d 100644
--- a/docs/plugins/inspect/plugin-mpegtsmux.xml
+++ b/docs/plugins/inspect/plugin-mpegtsmux.xml
@@ -3,7 +3,7 @@
   <description>MPEG-TS muxer</description>
   <filename>../../gst/mpegtsmux/.libs/libgstmpegtsmux.so</filename>
   <basename>libgstmpegtsmux.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-mplex.xml b/docs/plugins/inspect/plugin-mplex.xml
index c630c3a..80e5f10 100644
--- a/docs/plugins/inspect/plugin-mplex.xml
+++ b/docs/plugins/inspect/plugin-mplex.xml
@@ -3,7 +3,7 @@
   <description>High-quality MPEG/DVD/SVCD/VCD video/audio multiplexer</description>
   <filename>../../ext/mplex/.libs/libgstmplex.so</filename>
   <basename>libgstmplex.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-musepack.xml b/docs/plugins/inspect/plugin-musepack.xml
new file mode 100644
index 0000000..a72faed
--- /dev/null
+++ b/docs/plugins/inspect/plugin-musepack.xml
@@ -0,0 +1,34 @@
+<plugin>
+  <name>musepack</name>
+  <description>Musepack decoder</description>
+  <filename>../../ext/musepack/.libs/libgstmusepack.so</filename>
+  <basename>libgstmusepack.so</basename>
+  <version>1.9.90</version>
+  <license>LGPL</license>
+  <source>gst-plugins-bad</source>
+  <package>GStreamer Bad Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>musepackdec</name>
+      <longname>Musepack decoder</longname>
+      <class>Codec/Decoder/Audio</class>
+      <description>Musepack decoder</description>
+      <author>Ronald Bultje &lt;rbultje@ronald.bitfreak.net&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>audio/x-musepack, streamversion=(int){ 7, 8 }</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>audio/x-raw, format=(string)F32LE, layout=(string)interleaved, rate=(int)[ 8000, 96000 ], channels=(int)[ 1, 2 ]</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-mxf.xml b/docs/plugins/inspect/plugin-mxf.xml
index 8e982f8..6ad04ae 100644
--- a/docs/plugins/inspect/plugin-mxf.xml
+++ b/docs/plugins/inspect/plugin-mxf.xml
@@ -3,7 +3,7 @@
   <description>MXF plugin library</description>
   <filename>../../gst/mxf/.libs/libgstmxf.so</filename>
   <basename>libgstmxf.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-neon.xml b/docs/plugins/inspect/plugin-neon.xml
index c53fcd4..896d1aa 100644
--- a/docs/plugins/inspect/plugin-neon.xml
+++ b/docs/plugins/inspect/plugin-neon.xml
@@ -3,10 +3,10 @@
   <description>lib neon http client src</description>
   <filename>../../ext/neon/.libs/libgstneonhttpsrc.so</filename>
   <basename>libgstneonhttpsrc.so</basename>
-  <version>1.7.1</version>
+  <version>1.9.0.1</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
-  <package>GStreamer Bad Plug-ins source release</package>
+  <package>GStreamer Bad Plug-ins git</package>
   <origin>Unknown package origin</origin>
   <elements>
     <element>
diff --git a/docs/plugins/inspect/plugin-netsim.xml b/docs/plugins/inspect/plugin-netsim.xml
index ec353c2..67f751a 100644
--- a/docs/plugins/inspect/plugin-netsim.xml
+++ b/docs/plugins/inspect/plugin-netsim.xml
@@ -3,7 +3,7 @@
   <description>Network Simulator</description>
   <filename>../../gst/netsim/.libs/libgstnetsim.so</filename>
   <basename>libgstnetsim.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-ofa.xml b/docs/plugins/inspect/plugin-ofa.xml
index 651ec70..2a02549 100644
--- a/docs/plugins/inspect/plugin-ofa.xml
+++ b/docs/plugins/inspect/plugin-ofa.xml
@@ -3,7 +3,7 @@
   <description>Calculate MusicIP fingerprint from audio files</description>
   <filename>../../ext/ofa/.libs/libgstofa.so</filename>
   <basename>libgstofa.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-openal.xml b/docs/plugins/inspect/plugin-openal.xml
index 455003b..37dea49 100644
--- a/docs/plugins/inspect/plugin-openal.xml
+++ b/docs/plugins/inspect/plugin-openal.xml
@@ -3,7 +3,7 @@
   <description>OpenAL plugin library</description>
   <filename>../../ext/openal/.libs/libgstopenal.so</filename>
   <basename>libgstopenal.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-opencv.xml b/docs/plugins/inspect/plugin-opencv.xml
index 1fbee75..3d26a3a 100644
--- a/docs/plugins/inspect/plugin-opencv.xml
+++ b/docs/plugins/inspect/plugin-opencv.xml
@@ -3,7 +3,7 @@
   <description>GStreamer OpenCV Plugins</description>
   <filename>../../ext/opencv/.libs/libgstopencv.so</filename>
   <basename>libgstopencv.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
@@ -306,27 +306,6 @@
       </pads>
     </element>
     <element>
-      <name>pyramidsegment</name>
-      <longname>pyramidsegment</longname>
-      <class>Filter/Effect/Video</class>
-      <description>Applies pyramid segmentation to a video or image.</description>
-      <author>Michael Sheldon &lt;mike@mikeasoft.com&gt;</author>
-      <pads>
-        <caps>
-          <name>sink</name>
-          <direction>sink</direction>
-          <presence>always</presence>
-          <details>video/x-raw, format=(string)RGB, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
-        </caps>
-        <caps>
-          <name>src</name>
-          <direction>source</direction>
-          <presence>always</presence>
-          <details>video/x-raw, format=(string)RGB, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
-        </caps>
-      </pads>
-    </element>
-    <element>
       <name>retinex</name>
       <longname>Retinex image colour enhacement</longname>
       <class>Filter/Effect/Video</class>
diff --git a/docs/plugins/inspect/plugin-openexr.xml b/docs/plugins/inspect/plugin-openexr.xml
index 7e62ee1..481dbde 100644
--- a/docs/plugins/inspect/plugin-openexr.xml
+++ b/docs/plugins/inspect/plugin-openexr.xml
@@ -3,7 +3,7 @@
   <description>OpenEXR image plugin</description>
   <filename>../../ext/openexr/.libs/libgstopenexr.so</filename>
   <basename>libgstopenexr.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-opengl.xml b/docs/plugins/inspect/plugin-opengl.xml
index 1283532..bb24b3c 100644
--- a/docs/plugins/inspect/plugin-opengl.xml
+++ b/docs/plugins/inspect/plugin-opengl.xml
@@ -3,7 +3,7 @@
   <description>OpenGL plugin</description>
   <filename>../../ext/gl/.libs/libgstopengl.so</filename>
   <basename>libgstopengl.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
@@ -588,7 +588,7 @@
           <name>sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
         <caps>
           <name>src</name>
@@ -651,7 +651,7 @@
           <name>sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
       </pads>
     </element>
@@ -681,7 +681,7 @@
           <name>sink_%u</name>
           <direction>sink</direction>
           <presence>request</presence>
-          <details>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
         <caps>
           <name>src</name>
@@ -765,7 +765,7 @@
           <name>sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
       </pads>
     </element>
@@ -817,7 +817,7 @@
           <name>sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, RGB, RGBx, BGR, BGRx, BGRA, xRGB, xBGR, ARGB, ABGR, Y444, I420, YV12, Y42B, Y41B, NV12, NV21, YUY2, UYVY, AYUV, GRAY8, GRAY16_LE, GRAY16_BE, RGB16, BGR16 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
         <caps>
           <name>left</name>
@@ -859,7 +859,7 @@
           <name>sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
         <caps>
           <name>src</name>
@@ -880,7 +880,7 @@
           <name>sink_%u</name>
           <direction>sink</direction>
           <presence>request</presence>
-          <details>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
         <caps>
           <name>src</name>
diff --git a/docs/plugins/inspect/plugin-openh264.xml b/docs/plugins/inspect/plugin-openh264.xml
index a515cdd..a6d162f 100644
--- a/docs/plugins/inspect/plugin-openh264.xml
+++ b/docs/plugins/inspect/plugin-openh264.xml
@@ -3,7 +3,7 @@
   <description>OpenH264 encoder/decoder plugin</description>
   <filename>../../ext/openh264/.libs/libgstopenh264.so</filename>
   <basename>libgstopenh264.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>BSD</license>
   <source>gst-plugins-bad</source>
   <package>OpenWebRTC GStreamer plugins</package>
diff --git a/docs/plugins/inspect/plugin-openjpeg.xml b/docs/plugins/inspect/plugin-openjpeg.xml
index 15bc47d..55650b7 100644
--- a/docs/plugins/inspect/plugin-openjpeg.xml
+++ b/docs/plugins/inspect/plugin-openjpeg.xml
@@ -3,7 +3,7 @@
   <description>OpenJPEG-based JPEG2000 image decoder/encoder</description>
   <filename>../../ext/openjpeg/.libs/libgstopenjpeg.so</filename>
   <basename>libgstopenjpeg.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
@@ -20,7 +20,7 @@
           <name>sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>image/x-j2c, colorspace=(string){ sRGB, sYUV, GRAY }; image/x-jpc, colorspace=(string){ sRGB, sYUV, GRAY }; image/jp2</details>
+          <details>image/x-j2c, sampling=(string){ RGB, BGR, RGBA, BGRA, YCbCr-4:4:4, YCbCr-4:2:2, YCbCr-4:2:0, YCbCr-4:1:1, GRAYSCALE, YCbCrA-4:4:4:4 }; image/x-jpc, sampling=(string){ RGB, BGR, RGBA, BGRA, YCbCr-4:4:4, YCbCr-4:2:2, YCbCr-4:2:0, YCbCr-4:1:1, GRAYSCALE, YCbCrA-4:4:4:4 }; image/jp2</details>
         </caps>
         <caps>
           <name>src</name>
@@ -47,7 +47,7 @@
           <name>src</name>
           <direction>source</direction>
           <presence>always</presence>
-          <details>image/x-j2c, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], num-components=(int)[ 1, 4 ], colorspace=(string){ sRGB, sYUV, GRAY }; image/x-jpc, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], num-components=(int)[ 1, 4 ], colorspace=(string){ sRGB, sYUV, GRAY }; image/jp2, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]</details>
+          <details>image/x-j2c, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], num-components=(int)[ 1, 4 ], sampling=(string){ RGB, BGR, RGBA, BGRA, YCbCr-4:4:4, YCbCr-4:2:2, YCbCr-4:2:0, YCbCr-4:1:1, GRAYSCALE, YCbCrA-4:4:4:4 }, colorspace=(string){ sRGB, sYUV, GRAY }; image/x-jpc, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], num-components=(int)[ 1, 4 ], sampling=(string){ RGB, BGR, RGBA, BGRA, YCbCr-4:4:4, YCbCr-4:2:2, YCbCr-4:2:0, YCbCr-4:1:1, GRAYSCALE, YCbCrA-4:4:4:4 }, colorspace=(string){ sRGB, sYUV, GRAY }; image/jp2, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]</details>
         </caps>
       </pads>
     </element>
diff --git a/docs/plugins/inspect/plugin-opusparse.xml b/docs/plugins/inspect/plugin-opusparse.xml
index cab358e..7b79224 100644
--- a/docs/plugins/inspect/plugin-opusparse.xml
+++ b/docs/plugins/inspect/plugin-opusparse.xml
@@ -3,7 +3,7 @@
   <description>OPUS parse plugin</description>
   <filename>../../ext/opus/.libs/libgstopusparse.so</filename>
   <basename>libgstopusparse.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-pcapparse.xml b/docs/plugins/inspect/plugin-pcapparse.xml
index 408d638..125a414 100644
--- a/docs/plugins/inspect/plugin-pcapparse.xml
+++ b/docs/plugins/inspect/plugin-pcapparse.xml
@@ -3,7 +3,7 @@
   <description>Element parsing raw pcap streams</description>
   <filename>../../gst/pcapparse/.libs/libgstpcapparse.so</filename>
   <basename>libgstpcapparse.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer</package>
diff --git a/docs/plugins/inspect/plugin-pnm.xml b/docs/plugins/inspect/plugin-pnm.xml
index 1e76eae..63dd52c 100644
--- a/docs/plugins/inspect/plugin-pnm.xml
+++ b/docs/plugins/inspect/plugin-pnm.xml
@@ -3,7 +3,7 @@
   <description>PNM plugin</description>
   <filename>../../gst/pnm/.libs/libgstpnm.so</filename>
   <basename>libgstpnm.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
@@ -26,7 +26,7 @@
           <name>src</name>
           <direction>source</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string)RGB, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string)GRAY8, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string){ RGB, GRAY8, GRAY16_BE, GRAY16_LE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
       </pads>
     </element>
@@ -41,7 +41,7 @@
           <name>sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string)RGB, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string)GRAY8, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string){ RGB, GRAY8, GRAY16_BE, GRAY16_LE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
         <caps>
           <name>src</name>
diff --git a/docs/plugins/inspect/plugin-qt.xml b/docs/plugins/inspect/plugin-qt.xml
index d3b76d1..4520a55 100644
--- a/docs/plugins/inspect/plugin-qt.xml
+++ b/docs/plugins/inspect/plugin-qt.xml
@@ -3,7 +3,7 @@
   <description>Qt gl plugin</description>
   <filename>../../ext/qt/.libs/libgstqmlgl.so</filename>
   <basename>libgstqmlgl.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
@@ -24,5 +24,20 @@
         </caps>
       </pads>
     </element>
+    <element>
+      <name>qmlglsrc</name>
+      <longname>Qt Video Source</longname>
+      <class>Source/Video</class>
+      <description>A video src the grab window from a qml view</description>
+      <author>Multimedia Team &lt;shmmmw@freescale.com&gt;</author>
+      <pads>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</details>
+        </caps>
+      </pads>
+    </element>
   </elements>
 </plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-rawparse.xml b/docs/plugins/inspect/plugin-rawparse.xml
index 52ea997..12561f2 100644
--- a/docs/plugins/inspect/plugin-rawparse.xml
+++ b/docs/plugins/inspect/plugin-rawparse.xml
@@ -3,7 +3,7 @@
   <description>Parses byte streams into raw frames</description>
   <filename>../../gst/rawparse/.libs/libgstrawparse.so</filename>
   <basename>libgstrawparse.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
@@ -13,7 +13,7 @@
       <name>audioparse</name>
       <longname>Audio Parse</longname>
       <class>Filter/Audio</class>
-      <description>Converts stream into audio frames</description>
+      <description>Converts stream into audio frames (deprecated: use rawaudioparse instead)</description>
       <author>Sebastian Dröge &lt;sebastian.droege@collabora.co.uk&gt;</author>
       <pads>
         <caps>
@@ -26,15 +26,99 @@
           <name>src</name>
           <direction>source</direction>
           <presence>always</presence>
+          <details>audio/x-raw, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ], layout=(string){ interleaved, non-interleaved }; audio/x-unaligned-raw, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ], layout=(string){ interleaved, non-interleaved }; audio/x-alaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]; audio/x-mulaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
+      <name>rawaudioparse</name>
+      <longname>rawaudioparse</longname>
+      <class>Codec/Parser/Audio</class>
+      <description>Converts unformatted data streams into timestamped raw audio frames</description>
+      <author>Carlos Rafael Giani &lt;dv@pseudoterminal.org&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>audio/x-unaligned-raw, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ], layout=(string){ interleaved, non-interleaved }; audio/x-raw, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ], layout=(string){ interleaved, non-interleaved }; audio/x-alaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]; audio/x-mulaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
           <details>audio/x-raw, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ], layout=(string){ interleaved, non-interleaved }; audio/x-alaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]; audio/x-mulaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</details>
         </caps>
       </pads>
     </element>
     <element>
+      <name>rawvideoparse</name>
+      <longname>rawvideoparse</longname>
+      <class>Codec/Parser/Video</class>
+      <description>Converts unformatted data streams into timestamped raw video frames</description>
+      <author>Carlos Rafael Giani &lt;dv@pseudoterminal.org&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>video/x-unaligned-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
+      <name>unalignedaudioparse</name>
+      <longname>unalignedaudioparse</longname>
+      <class>Codec/Parser/Bin/Audio</class>
+      <description>Parse unaligned raw audio data</description>
+      <author>Carlos Rafael Giani &lt;dv@pseudoterminal.org&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>audio/x-unaligned-raw, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ], layout=(string){ interleaved, non-interleaved }</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>audio/x-raw, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ], layout=(string){ interleaved, non-interleaved }</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
+      <name>unalignedvideoparse</name>
+      <longname>unalignedvideoparse</longname>
+      <class>Codec/Parser/Bin/Video</class>
+      <description>Parse unaligned raw video data</description>
+      <author>Carlos Rafael Giani &lt;dv@pseudoterminal.org&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>video/x-unaligned-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
       <name>videoparse</name>
       <longname>Video Parse</longname>
       <class>Filter/Video</class>
-      <description>Converts stream into video frames</description>
+      <description>Converts stream into video frames (deprecated: use rawvideoparse instead)</description>
       <author>David Schleef &lt;ds@schleef.org&gt;, Sebastian Dröge &lt;sebastian.droege@collabora.co.uk&gt;</author>
       <pads>
         <caps>
@@ -47,7 +131,7 @@
           <name>src</name>
           <direction>source</direction>
           <presence>always</presence>
-          <details>video/x-raw; video/x-bayer</details>
+          <details>video/x-raw</details>
         </caps>
       </pads>
     </element>
diff --git a/docs/plugins/inspect/plugin-removesilence.xml b/docs/plugins/inspect/plugin-removesilence.xml
index 638ee00..a42f5a1 100644
--- a/docs/plugins/inspect/plugin-removesilence.xml
+++ b/docs/plugins/inspect/plugin-removesilence.xml
@@ -3,7 +3,7 @@
   <description>Removes silence from an audio stream</description>
   <filename>../../gst/removesilence/.libs/libgstremovesilence.so</filename>
   <basename>libgstremovesilence.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-resindvd.xml b/docs/plugins/inspect/plugin-resindvd.xml
index 043eee6..ea7d78d 100644
--- a/docs/plugins/inspect/plugin-resindvd.xml
+++ b/docs/plugins/inspect/plugin-resindvd.xml
@@ -3,7 +3,7 @@
   <description>Resin DVD playback elements</description>
   <filename>../../ext/resindvd/.libs/libgstresindvd.so</filename>
   <basename>libgstresindvd.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer</package>
@@ -32,7 +32,7 @@
           <name>video</name>
           <direction>source</direction>
           <presence>sometimes</presence>
-          <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
       </pads>
     </element>
diff --git a/docs/plugins/inspect/plugin-rfbsrc.xml b/docs/plugins/inspect/plugin-rfbsrc.xml
index fd86b9f..4eceeb4 100644
--- a/docs/plugins/inspect/plugin-rfbsrc.xml
+++ b/docs/plugins/inspect/plugin-rfbsrc.xml
@@ -3,7 +3,7 @@
   <description>Connects to a VNC server and decodes RFB stream</description>
   <filename>../../gst/librfb/.libs/libgstrfbsrc.so</filename>
   <basename>libgstrfbsrc.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-rsvg.xml b/docs/plugins/inspect/plugin-rsvg.xml
index 1074e4c..114b381 100644
--- a/docs/plugins/inspect/plugin-rsvg.xml
+++ b/docs/plugins/inspect/plugin-rsvg.xml
@@ -3,7 +3,7 @@
   <description>RSVG plugin library</description>
   <filename>../../ext/rsvg/.libs/libgstrsvg.so</filename>
   <basename>libgstrsvg.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-rtmp.xml b/docs/plugins/inspect/plugin-rtmp.xml
index 0728de3..b00032a 100644
--- a/docs/plugins/inspect/plugin-rtmp.xml
+++ b/docs/plugins/inspect/plugin-rtmp.xml
@@ -3,7 +3,7 @@
   <description>RTMP source and sink</description>
   <filename>../../ext/rtmp/.libs/libgstrtmp.so</filename>
   <basename>libgstrtmp.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-rtpbad.xml b/docs/plugins/inspect/plugin-rtpbad.xml
new file mode 100644
index 0000000..b4a1b7f
--- /dev/null
+++ b/docs/plugins/inspect/plugin-rtpbad.xml
@@ -0,0 +1,55 @@
+<plugin>
+  <name>rtpbad</name>
+  <description>Real-time protocol plugins</description>
+  <filename>../../gst/rtp/.libs/libgstrtpbad.so</filename>
+  <basename>libgstrtpbad.so</basename>
+  <version>1.6.0</version>
+  <license>LGPL</license>
+  <source>gst-plugins-bad</source>
+  <package>GStreamer Bad Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>rtph265depay</name>
+      <longname>RTP H265 depayloader</longname>
+      <class>Codec/Depayloader/Network/RTP</class>
+      <description>Extracts H265 video from RTP packets (draft-ietf-payload-rtp-h265-03.txt)</description>
+      <author>Jurgen Slowack &lt;jurgenslowack@gmail.com&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H265</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>video/x-h265, stream-format=(string)byte-stream, alignment=(string){ nal, au }</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
+      <name>rtph265pay</name>
+      <longname>RTP H265 payloader</longname>
+      <class>Codec/Payloader/Network/RTP</class>
+      <description>Payload-encode H265 video into RTP packets (based on draft-ietf-payload-rtp-h265-03.txt)</description>
+      <author>Jurgen Slowack &lt;jurgenslowack@gmail.com&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>video/x-h265, stream-format=(string)byte-stream, alignment=(string){ nal, au }</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>application/x-rtp, media=(string)video, payload=(int)[ 96, 127 ], clock-rate=(int)90000, encoding-name=(string)H265</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-rtponvif.xml b/docs/plugins/inspect/plugin-rtponvif.xml
index 23477ea..0be0859 100644
--- a/docs/plugins/inspect/plugin-rtponvif.xml
+++ b/docs/plugins/inspect/plugin-rtponvif.xml
@@ -3,7 +3,7 @@
   <description>ONVIF Streaming features</description>
   <filename>../../gst/onvif/.libs/libgstrtponvif.so</filename>
   <basename>libgstrtponvif.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>unknown</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-sbc.xml b/docs/plugins/inspect/plugin-sbc.xml
index fd88ead..1fc4802 100644
--- a/docs/plugins/inspect/plugin-sbc.xml
+++ b/docs/plugins/inspect/plugin-sbc.xml
@@ -3,7 +3,7 @@
   <description>SBC bluetooth audio support</description>
   <filename>../../ext/sbc/.libs/libgstsbc.so</filename>
   <basename>libgstsbc.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-schro.xml b/docs/plugins/inspect/plugin-schro.xml
index ac1e8c9..895408a 100644
--- a/docs/plugins/inspect/plugin-schro.xml
+++ b/docs/plugins/inspect/plugin-schro.xml
@@ -3,7 +3,7 @@
   <description>Schroedinger plugin</description>
   <filename>../../ext/schroedinger/.libs/libgstschro.so</filename>
   <basename>libgstschro.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-sdp.xml b/docs/plugins/inspect/plugin-sdp.xml
index f35296d..9213522 100644
--- a/docs/plugins/inspect/plugin-sdp.xml
+++ b/docs/plugins/inspect/plugin-sdp.xml
@@ -3,7 +3,7 @@
   <description>configure streaming sessions using SDP</description>
   <filename>../../gst/sdp/.libs/libgstsdpelem.so</filename>
   <basename>libgstsdpelem.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
@@ -30,5 +30,20 @@
         </caps>
       </pads>
     </element>
+    <element>
+      <name>sdpsrc</name>
+      <longname>SDP Source</longname>
+      <class>Source/Network/RTP</class>
+      <description>Stream RTP based on an SDP</description>
+      <author>Sebastian Dröge &lt;sebastian@centricular.com&gt;</author>
+      <pads>
+        <caps>
+          <name>stream_%u</name>
+          <direction>source</direction>
+          <presence>sometimes</presence>
+          <details>application/x-rtp</details>
+        </caps>
+      </pads>
+    </element>
   </elements>
 </plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-segmentclip.xml b/docs/plugins/inspect/plugin-segmentclip.xml
index 5810811..0ddc74b 100644
--- a/docs/plugins/inspect/plugin-segmentclip.xml
+++ b/docs/plugins/inspect/plugin-segmentclip.xml
@@ -3,7 +3,7 @@
   <description>Segment clip elements</description>
   <filename>../../gst/segmentclip/.libs/libgstsegmentclip.so</filename>
   <basename>libgstsegmentclip.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-shm.xml b/docs/plugins/inspect/plugin-shm.xml
index d91c3ae..6eec4e9 100644
--- a/docs/plugins/inspect/plugin-shm.xml
+++ b/docs/plugins/inspect/plugin-shm.xml
@@ -3,7 +3,7 @@
   <description>shared memory sink source</description>
   <filename>../../sys/shm/.libs/libgstshm.so</filename>
   <basename>libgstshm.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-smooth.xml b/docs/plugins/inspect/plugin-smooth.xml
index 34bd935..b61c704 100644
--- a/docs/plugins/inspect/plugin-smooth.xml
+++ b/docs/plugins/inspect/plugin-smooth.xml
@@ -3,7 +3,7 @@
   <description>Apply a smooth filter to an image</description>
   <filename>../../gst/smooth/.libs/libgstsmooth.so</filename>
   <basename>libgstsmooth.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-smoothstreaming.xml b/docs/plugins/inspect/plugin-smoothstreaming.xml
index c3ce29e..5bdbf5d 100644
--- a/docs/plugins/inspect/plugin-smoothstreaming.xml
+++ b/docs/plugins/inspect/plugin-smoothstreaming.xml
@@ -3,7 +3,7 @@
   <description>Microsoft&apos;s Smooth Streaming format support </description>
   <filename>../../ext/smoothstreaming/.libs/libgstsmoothstreaming.so</filename>
   <basename>libgstsmoothstreaming.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-sndfile.xml b/docs/plugins/inspect/plugin-sndfile.xml
index 43821c0..e395b55 100644
--- a/docs/plugins/inspect/plugin-sndfile.xml
+++ b/docs/plugins/inspect/plugin-sndfile.xml
@@ -3,7 +3,7 @@
   <description>use libsndfile to read and write various audio formats</description>
   <filename>../../ext/sndfile/.libs/libgstsndfile.so</filename>
   <basename>libgstsndfile.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-soundtouch.xml b/docs/plugins/inspect/plugin-soundtouch.xml
index 1400c0e..d58527a 100644
--- a/docs/plugins/inspect/plugin-soundtouch.xml
+++ b/docs/plugins/inspect/plugin-soundtouch.xml
@@ -3,7 +3,7 @@
   <description>Audio Pitch Controller &amp; BPM Detection</description>
   <filename>../../ext/soundtouch/.libs/libgstsoundtouch.so</filename>
   <basename>libgstsoundtouch.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-spandsp.xml b/docs/plugins/inspect/plugin-spandsp.xml
index 0650f7e..9a28b4d 100644
--- a/docs/plugins/inspect/plugin-spandsp.xml
+++ b/docs/plugins/inspect/plugin-spandsp.xml
@@ -3,7 +3,7 @@
   <description>libspandsp plugin</description>
   <filename>../../ext/spandsp/.libs/libgstspandsp.so</filename>
   <basename>libgstspandsp.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-speed.xml b/docs/plugins/inspect/plugin-speed.xml
index cad19cd..23061c9 100644
--- a/docs/plugins/inspect/plugin-speed.xml
+++ b/docs/plugins/inspect/plugin-speed.xml
@@ -3,7 +3,7 @@
   <description>Set speed/pitch on audio/raw streams (resampler)</description>
   <filename>../../gst/speed/.libs/libgstspeed.so</filename>
   <basename>libgstspeed.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-srtp.xml b/docs/plugins/inspect/plugin-srtp.xml
index 906091c..f199aa4 100644
--- a/docs/plugins/inspect/plugin-srtp.xml
+++ b/docs/plugins/inspect/plugin-srtp.xml
@@ -3,7 +3,7 @@
   <description>GStreamer SRTP</description>
   <filename>../../ext/srtp/.libs/libgstsrtp.so</filename>
   <basename>libgstsrtp.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer</package>
diff --git a/docs/plugins/inspect/plugin-stereo.xml b/docs/plugins/inspect/plugin-stereo.xml
index 8f817fb..7d9b11c 100644
--- a/docs/plugins/inspect/plugin-stereo.xml
+++ b/docs/plugins/inspect/plugin-stereo.xml
@@ -3,7 +3,7 @@
   <description>Muck with the stereo signal, enhance it&apos;s &apos;stereo-ness&apos;</description>
   <filename>../../gst/stereo/.libs/libgststereo.so</filename>
   <basename>libgststereo.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-subenc.xml b/docs/plugins/inspect/plugin-subenc.xml
index 87a526e..4f9be08 100644
--- a/docs/plugins/inspect/plugin-subenc.xml
+++ b/docs/plugins/inspect/plugin-subenc.xml
@@ -3,7 +3,7 @@
   <description>subtitle encoders</description>
   <filename>../../gst/subenc/.libs/libgstsubenc.so</filename>
   <basename>libgstsubenc.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-teletext.xml b/docs/plugins/inspect/plugin-teletext.xml
index 3490f99..efa22a5 100644
--- a/docs/plugins/inspect/plugin-teletext.xml
+++ b/docs/plugins/inspect/plugin-teletext.xml
@@ -3,7 +3,7 @@
   <description>Teletext plugin</description>
   <filename>../../ext/teletextdec/.libs/libgstteletextdec.so</filename>
   <basename>libgstteletextdec.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer</package>
diff --git a/docs/plugins/inspect/plugin-timecode.xml b/docs/plugins/inspect/plugin-timecode.xml
new file mode 100644
index 0000000..3fa3d28
--- /dev/null
+++ b/docs/plugins/inspect/plugin-timecode.xml
@@ -0,0 +1,67 @@
+<plugin>
+  <name>timecode</name>
+  <description>Timecode-related elements</description>
+  <filename>../../gst/timecode/.libs/libgsttimecode.so</filename>
+  <basename>libgsttimecode.so</basename>
+  <version>1.9.90</version>
+  <license>LGPL</license>
+  <source>gst-plugins-bad</source>
+  <package>GStreamer Bad Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>timecodestamper</name>
+      <longname>Timecode stamper</longname>
+      <class>Filter/Video</class>
+      <description>Attaches a timecode meta into each video frame</description>
+      <author>Vivia Nikolaidou &lt;vivia@toolsonair.com</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>video/x-raw</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>video/x-raw</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
+      <name>timecodewait</name>
+      <longname>Timecode Wait</longname>
+      <class>Filter/Audio/Video</class>
+      <description>Drops all audio/video until a specific timecode has been reached</description>
+      <author>Vivia Nikolaidou &lt;vivia@toolsonair.com&gt;</author>
+      <pads>
+        <caps>
+          <name>asink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>audio/x-raw</details>
+        </caps>
+        <caps>
+          <name>vsink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>video/x-raw</details>
+        </caps>
+        <caps>
+          <name>asrc</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>audio/x-raw</details>
+        </caps>
+        <caps>
+          <name>vsrc</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>video/x-raw</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-uvch264.xml b/docs/plugins/inspect/plugin-uvch264.xml
index 8fe8233..ff1f16c 100644
--- a/docs/plugins/inspect/plugin-uvch264.xml
+++ b/docs/plugins/inspect/plugin-uvch264.xml
@@ -3,7 +3,7 @@
   <description>UVC compliant H264 encoding cameras plugin</description>
   <filename>../../sys/uvch264/.libs/libgstuvch264.so</filename>
   <basename>libgstuvch264.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
@@ -65,13 +65,13 @@
           <name>vfsrc</name>
           <direction>source</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; image/jpeg, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; image/jpeg, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
         <caps>
           <name>vidsrc</name>
           <direction>source</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; image/jpeg, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-h264, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], stream-format=(string){ byte-stream, avc }, alignment=(string)au, profile=(string){ high, main, baseline, constrained-baseline }</details>
+          <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; image/jpeg, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-h264, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], stream-format=(string){ byte-stream, avc }, alignment=(string)au, profile=(string){ high, main, baseline, constrained-baseline }</details>
         </caps>
       </pads>
     </element>
diff --git a/docs/plugins/inspect/plugin-vcdsrc.xml b/docs/plugins/inspect/plugin-vcdsrc.xml
index cc859a3..485eb6e 100644
--- a/docs/plugins/inspect/plugin-vcdsrc.xml
+++ b/docs/plugins/inspect/plugin-vcdsrc.xml
@@ -3,7 +3,7 @@
   <description>Asynchronous read from VCD disk</description>
   <filename>../../sys/vcd/.libs/libgstvcdsrc.so</filename>
   <basename>libgstvcdsrc.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-vdpau.xml b/docs/plugins/inspect/plugin-vdpau.xml
new file mode 100644
index 0000000..964c1a9
--- /dev/null
+++ b/docs/plugins/inspect/plugin-vdpau.xml
@@ -0,0 +1,34 @@
+<plugin>
+  <name>vdpau</name>
+  <description>Various elements utilizing VDPAU</description>
+  <filename>../../sys/vdpau/.libs/libgstvdpau.so</filename>
+  <basename>libgstvdpau.so</basename>
+  <version>1.9.0.1</version>
+  <license>LGPL</license>
+  <source>gst-plugins-bad</source>
+  <package>GStreamer</package>
+  <origin>http://gstreamer.net/</origin>
+  <elements>
+    <element>
+      <name>vdpaumpegdec</name>
+      <longname>VDPAU Mpeg Decoder</longname>
+      <class>Decoder</class>
+      <description>Decode mpeg stream with vdpau</description>
+      <author>Carl-Anton Ingmarsson &lt;ca.ingmarsson@gmail.com&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>video/mpeg, mpegversion=(int)[ 1, 2 ], systemstream=(boolean)false</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>video/x-raw(memory:VdpVideoSurface), format=(string){ YV12 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ YV12 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-videofiltersbad.xml b/docs/plugins/inspect/plugin-videofiltersbad.xml
index f9fb62c..43ecbc2 100644
--- a/docs/plugins/inspect/plugin-videofiltersbad.xml
+++ b/docs/plugins/inspect/plugin-videofiltersbad.xml
@@ -3,7 +3,7 @@
   <description>Video filters in gst-plugins-bad</description>
   <filename>../../gst/videofilters/.libs/libgstvideofiltersbad.so</filename>
   <basename>libgstvideofiltersbad.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
@@ -32,22 +32,22 @@
     </element>
     <element>
       <name>videodiff</name>
-      <longname>FIXME Long name</longname>
-      <class>Generic</class>
-      <description>FIXME Description</description>
-      <author>FIXME &lt;fixme@example.com&gt;</author>
+      <longname>Video Diff</longname>
+      <class>Video/Filter</class>
+      <description>Visualize differences between adjacent video frames</description>
+      <author>David Schleef &lt;ds@schleef.org&gt;</author>
       <pads>
         <caps>
           <name>sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string){ I420, Y444, Y42B, UYVY, RGBA }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string){ I420, Y444, Y42B, Y41B }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
         <caps>
           <name>src</name>
           <direction>source</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string){ I420, Y444, Y42B, UYVY, RGBA }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string){ I420, Y444, Y42B, Y41B }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
       </pads>
     </element>
diff --git a/docs/plugins/inspect/plugin-videoframe_audiolevel.xml b/docs/plugins/inspect/plugin-videoframe_audiolevel.xml
index b2d3643..870e41f 100644
--- a/docs/plugins/inspect/plugin-videoframe_audiolevel.xml
+++ b/docs/plugins/inspect/plugin-videoframe_audiolevel.xml
@@ -3,7 +3,7 @@
   <description>Video frame-synchronized audio level</description>
   <filename>../../gst/videoframe_audiolevel/.libs/libgstvideoframe_audiolevel.so</filename>
   <basename>libgstvideoframe_audiolevel.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-videoparsersbad.xml b/docs/plugins/inspect/plugin-videoparsersbad.xml
index ddd0736..a78dab5 100644
--- a/docs/plugins/inspect/plugin-videoparsersbad.xml
+++ b/docs/plugins/inspect/plugin-videoparsersbad.xml
@@ -3,7 +3,7 @@
   <description>videoparsers</description>
   <filename>../../gst/videoparsers/.libs/libgstvideoparsersbad.so</filename>
   <basename>libgstvideoparsersbad.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
@@ -94,6 +94,27 @@
       </pads>
     </element>
     <element>
+      <name>jpeg2000parse</name>
+      <longname>JPEG 2000 parser</longname>
+      <class>Codec/Parser/Video/Image</class>
+      <description>Parses JPEG 2000 files</description>
+      <author>Aaron Boxer &lt;boxerab@gmail.com&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>image/x-jpc, sampling=(string){ RGB, BGR, RGBA, BGRA, YCbCr-4:4:4, YCbCr-4:2:2, YCbCr-4:2:0, YCbCr-4:1:1, GRAYSCALE, YCbCrA-4:4:4:4 }; image/x-jpc, colorspace=(string){ sRGB, sYUV, GRAY }; image/x-j2c, sampling=(string){ RGB, BGR, RGBA, BGRA, YCbCr-4:4:4, YCbCr-4:2:2, YCbCr-4:2:0, YCbCr-4:1:1, GRAYSCALE, YCbCrA-4:4:4:4 }; image/x-j2c, colorspace=(string){ sRGB, sYUV, GRAY }</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>image/x-jpc, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], sampling=(string){ RGB, BGR, RGBA, BGRA, YCbCr-4:4:4, YCbCr-4:2:2, YCbCr-4:2:0, YCbCr-4:1:1, GRAYSCALE, YCbCrA-4:4:4:4 }, colorspace=(string){ sRGB, sYUV, GRAY }, parsed=(boolean)true; image/x-j2c, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], sampling=(string){ RGB, BGR, RGBA, BGRA, YCbCr-4:4:4, YCbCr-4:2:2, YCbCr-4:2:0, YCbCr-4:1:1, GRAYSCALE, YCbCrA-4:4:4:4 }, colorspace=(string){ sRGB, sYUV, GRAY }, parsed=(boolean)true</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
       <name>mpeg4videoparse</name>
       <longname>MPEG 4 video elementary stream parser</longname>
       <class>Codec/Parser/Video</class>
diff --git a/docs/plugins/inspect/plugin-videosignal.xml b/docs/plugins/inspect/plugin-videosignal.xml
index 22f438d..e4ff947 100644
--- a/docs/plugins/inspect/plugin-videosignal.xml
+++ b/docs/plugins/inspect/plugin-videosignal.xml
@@ -3,7 +3,7 @@
   <description>Various video signal analysers</description>
   <filename>../../gst/videosignal/.libs/libgstvideosignal.so</filename>
   <basename>libgstvideosignal.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-vmnc.xml b/docs/plugins/inspect/plugin-vmnc.xml
index d379341..9d8642d 100644
--- a/docs/plugins/inspect/plugin-vmnc.xml
+++ b/docs/plugins/inspect/plugin-vmnc.xml
@@ -3,7 +3,7 @@
   <description>VmWare Video Codec plugins</description>
   <filename>../../gst/vmnc/.libs/libgstvmnc.so</filename>
   <basename>libgstvmnc.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-voaacenc.xml b/docs/plugins/inspect/plugin-voaacenc.xml
index 09f31d9..1ae9bc7 100644
--- a/docs/plugins/inspect/plugin-voaacenc.xml
+++ b/docs/plugins/inspect/plugin-voaacenc.xml
@@ -3,7 +3,7 @@
   <description>AAC audio encoder</description>
   <filename>../../ext/voaacenc/.libs/libgstvoaacenc.so</filename>
   <basename>libgstvoaacenc.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-voamrwbenc.xml b/docs/plugins/inspect/plugin-voamrwbenc.xml
index a838f0c..a7fed37 100644
--- a/docs/plugins/inspect/plugin-voamrwbenc.xml
+++ b/docs/plugins/inspect/plugin-voamrwbenc.xml
@@ -3,7 +3,7 @@
   <description>Adaptive Multi-Rate Wide-Band Encoder</description>
   <filename>../../ext/voamrwbenc/.libs/libgstvoamrwbenc.so</filename>
   <basename>libgstvoamrwbenc.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>unknown</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-waylandsink.xml b/docs/plugins/inspect/plugin-waylandsink.xml
index 5033ee0..cb600c0 100644
--- a/docs/plugins/inspect/plugin-waylandsink.xml
+++ b/docs/plugins/inspect/plugin-waylandsink.xml
@@ -3,7 +3,7 @@
   <description>Wayland Video Sink</description>
   <filename>../../ext/wayland/.libs/libgstwaylandsink.so</filename>
   <basename>libgstwaylandsink.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-webp.xml b/docs/plugins/inspect/plugin-webp.xml
index 95de8f3..b20639c 100644
--- a/docs/plugins/inspect/plugin-webp.xml
+++ b/docs/plugins/inspect/plugin-webp.xml
@@ -3,7 +3,7 @@
   <description>WebP plugin</description>
   <filename>../../ext/webp/.libs/libgstwebp.so</filename>
   <basename>libgstwebp.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-webrtcdsp.xml b/docs/plugins/inspect/plugin-webrtcdsp.xml
new file mode 100644
index 0000000..1c6dab8
--- /dev/null
+++ b/docs/plugins/inspect/plugin-webrtcdsp.xml
@@ -0,0 +1,55 @@
+<plugin>
+  <name>webrtcdsp</name>
+  <description>Voice pre-processing using WebRTC Audio Processing Library</description>
+  <filename>../../ext/webrtcdsp/.libs/libgstwebrtcdsp.so</filename>
+  <basename>libgstwebrtcdsp.so</basename>
+  <version>1.9.90</version>
+  <license>LGPL</license>
+  <source>gst-plugins-bad</source>
+  <package>WebRTCDsp</package>
+  <origin>http://git.collabora.com</origin>
+  <elements>
+    <element>
+      <name>webrtcdsp</name>
+      <longname>Voice Processor (AGC, AEC, filters, etc.)</longname>
+      <class>Generic/Audio</class>
+      <description>Pre-processes voice with WebRTC Audio Processing Library</description>
+      <author>Nicolas Dufresne &lt;nicolas.dufresne@collabora.com&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int){ 48000, 32000, 16000, 8000 }, channels=(int)[ 1, 2147483647 ]</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int){ 48000, 32000, 16000, 8000 }, channels=(int)[ 1, 2147483647 ]</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
+      <name>webrtcechoprobe</name>
+      <longname>Accoustic Echo Canceller probe</longname>
+      <class>Generic/Audio</class>
+      <description>Gathers playback buffers for webrtcdsp</description>
+      <author>Nicolas Dufresne &lt;nicolas.dufrsesne@collabora.com&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int){ 48000, 32000, 16000, 8000 }, channels=(int)[ 1, 2147483647 ]</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int){ 48000, 32000, 16000, 8000 }, channels=(int)[ 1, 2147483647 ]</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-wildmidi.xml b/docs/plugins/inspect/plugin-wildmidi.xml
index acdf64f..980616d 100644
--- a/docs/plugins/inspect/plugin-wildmidi.xml
+++ b/docs/plugins/inspect/plugin-wildmidi.xml
@@ -3,7 +3,7 @@
   <description>Wildmidi Plugin</description>
   <filename>../../ext/timidity/.libs/libgstwildmidi.so</filename>
   <basename>libgstwildmidi.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-x265.xml b/docs/plugins/inspect/plugin-x265.xml
index 2414751..35096e0 100644
--- a/docs/plugins/inspect/plugin-x265.xml
+++ b/docs/plugins/inspect/plugin-x265.xml
@@ -3,7 +3,7 @@
   <description>x265-based H265 plugins</description>
   <filename>../../ext/x265/.libs/libgstx265.so</filename>
   <basename>libgstx265.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-y4mdec.xml b/docs/plugins/inspect/plugin-y4mdec.xml
index cd28de4..89347c8 100644
--- a/docs/plugins/inspect/plugin-y4mdec.xml
+++ b/docs/plugins/inspect/plugin-y4mdec.xml
@@ -3,7 +3,7 @@
   <description>Demuxes/decodes YUV4MPEG streams</description>
   <filename>../../gst/y4m/.libs/libgsty4mdec.so</filename>
   <basename>libgsty4mdec.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-yadif.xml b/docs/plugins/inspect/plugin-yadif.xml
index b56fba5..06ee672 100644
--- a/docs/plugins/inspect/plugin-yadif.xml
+++ b/docs/plugins/inspect/plugin-yadif.xml
@@ -3,7 +3,7 @@
   <description>YADIF deinterlacing filter</description>
   <filename>../../gst/yadif/.libs/libgstyadif.so</filename>
   <basename>libgstyadif.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
diff --git a/docs/plugins/inspect/plugin-zbar.xml b/docs/plugins/inspect/plugin-zbar.xml
index 9ef8672..f640b2e 100644
--- a/docs/plugins/inspect/plugin-zbar.xml
+++ b/docs/plugins/inspect/plugin-zbar.xml
@@ -3,7 +3,7 @@
   <description>zbar barcode scanner</description>
   <filename>../../ext/zbar/.libs/libgstzbar.so</filename>
   <basename>libgstzbar.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/ext/Makefile.am b/ext/Makefile.am
index f97ef44..bae25c2 100644
--- a/ext/Makefile.am
+++ b/ext/Makefile.am
@@ -112,6 +112,12 @@
  FAAD_DIR=
 endif
 
+if USE_FDK_AAC
+ FDK_AAC_DIR=fdkaac
+else
+ FDK_AAC_DIR=
+endif
+
 if USE_VOAACENC
  VOAACENC_DIR=voaacenc
 else
@@ -412,6 +418,12 @@
 VULKAN_DIR=
 endif
 
+if USE_WEBRTCDSP
+WEBRTCDSP_DIR=webrtcdsp
+else
+WEBRTCDSP_DIR=
+endif
+
 SUBDIRS=\
 	$(VOAACENC_DIR) \
 	$(ASSRENDER_DIR) \
@@ -434,6 +446,7 @@
 	$(QT_DIR) \
 	$(FAAC_DIR) \
 	$(FAAD_DIR) \
+	$(FDK_AAC_DIR) \
 	$(FLITE_DIR) \
 	$(FLUIDSYNTH_DIR) \
 	$(GSM_DIR) \
@@ -481,7 +494,8 @@
 	$(WEBP_DIR) \
 	$(X265_DIR) \
 	$(DTLS_DIR) \
-	$(VULKAN_DIR)
+	$(VULKAN_DIR) \
+	$(WEBRTCDSP_DIR)
 
 DIST_SUBDIRS = \
 	assrender \
@@ -496,6 +510,7 @@
 	wayland \
 	faac \
 	faad \
+	fdkaac \
 	flite \
 	fluidsynth \
 	gsm \
@@ -549,6 +564,7 @@
 	webp \
 	x265 \
 	dtls \
-	vulkan
+	vulkan \
+	webrtcdsp
 
 include $(top_srcdir)/common/parallel-subdirs.mak
diff --git a/ext/Makefile.in b/ext/Makefile.in
index 698e244..092571d 100644
--- a/ext/Makefile.in
+++ b/ext/Makefile.in
@@ -281,6 +281,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -302,6 +304,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -351,6 +355,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -496,6 +502,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -622,8 +630,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -666,8 +672,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -794,6 +805,8 @@
 @USE_FAAC_TRUE@FAAC_DIR = faac
 @USE_FAAD_FALSE@FAAD_DIR = 
 @USE_FAAD_TRUE@FAAD_DIR = faad
+@USE_FDK_AAC_FALSE@FDK_AAC_DIR = 
+@USE_FDK_AAC_TRUE@FDK_AAC_DIR = fdkaac
 @USE_VOAACENC_FALSE@VOAACENC_DIR = 
 @USE_VOAACENC_TRUE@VOAACENC_DIR = voaacenc
 @USE_FLITE_FALSE@FLITE_DIR = 
@@ -900,6 +913,8 @@
 @USE_DTLS_TRUE@DTLS_DIR = dtls
 @USE_VULKAN_FALSE@VULKAN_DIR = 
 @USE_VULKAN_TRUE@VULKAN_DIR = vulkan
+@USE_WEBRTCDSP_FALSE@WEBRTCDSP_DIR = 
+@USE_WEBRTCDSP_TRUE@WEBRTCDSP_DIR = webrtcdsp
 SUBDIRS = \
 	$(VOAACENC_DIR) \
 	$(ASSRENDER_DIR) \
@@ -922,6 +937,7 @@
 	$(QT_DIR) \
 	$(FAAC_DIR) \
 	$(FAAD_DIR) \
+	$(FDK_AAC_DIR) \
 	$(FLITE_DIR) \
 	$(FLUIDSYNTH_DIR) \
 	$(GSM_DIR) \
@@ -969,7 +985,8 @@
 	$(WEBP_DIR) \
 	$(X265_DIR) \
 	$(DTLS_DIR) \
-	$(VULKAN_DIR)
+	$(VULKAN_DIR) \
+	$(WEBRTCDSP_DIR)
 
 DIST_SUBDIRS = \
 	assrender \
@@ -984,6 +1001,7 @@
 	wayland \
 	faac \
 	faad \
+	fdkaac \
 	flite \
 	fluidsynth \
 	gsm \
@@ -1037,7 +1055,8 @@
 	webp \
 	x265 \
 	dtls \
-	vulkan
+	vulkan \
+	webrtcdsp
 
 all: all-recursive
 
diff --git a/ext/apexsink/Makefile.in b/ext/apexsink/Makefile.in
index ca42489..5c52e2c 100644
--- a/ext/apexsink/Makefile.in
+++ b/ext/apexsink/Makefile.in
@@ -305,6 +305,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -326,6 +328,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -375,6 +379,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -520,6 +526,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -646,8 +654,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,8 +696,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/apexsink/gstapexsink.c b/ext/apexsink/gstapexsink.c
index c008e18..df5c5f2 100644
--- a/ext/apexsink/gstapexsink.c
+++ b/ext/apexsink/gstapexsink.c
@@ -265,8 +265,8 @@
       "Apple AirPort Express Audio Sink", "Sink/Audio/Wireless",
       "Output stream to an AirPort Express",
       "Jérémie Bernard [GRemi] <gremimail@gmail.com>");
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_apexsink_sink_factory));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_apexsink_sink_factory);
 }
 
 /* sink class init */
diff --git a/ext/assrender/Makefile.in b/ext/assrender/Makefile.in
index 62c6bff..d646cdb 100644
--- a/ext/assrender/Makefile.in
+++ b/ext/assrender/Makefile.in
@@ -302,6 +302,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -323,6 +325,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -372,6 +376,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -517,6 +523,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -643,8 +651,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,8 +693,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/assrender/gstassrender.c b/ext/assrender/gstassrender.c
index 913beb5..b4e385b 100644
--- a/ext/assrender/gstassrender.c
+++ b/ext/assrender/gstassrender.c
@@ -170,12 +170,11 @@
   gstelement_class->change_state =
       GST_DEBUG_FUNCPTR (gst_ass_render_change_state);
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&video_sink_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&text_sink_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &video_sink_factory);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &text_sink_factory);
 
   gst_element_class_set_static_metadata (gstelement_class, "ASS/SSA Render",
       "Mixer/Video/Overlay/Subtitle",
diff --git a/ext/bs2b/Makefile.in b/ext/bs2b/Makefile.in
index fbb3abb..1cd6ea0 100644
--- a/ext/bs2b/Makefile.in
+++ b/ext/bs2b/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/bz2/Makefile.in b/ext/bz2/Makefile.in
index d912d8f..dbfc633 100644
--- a/ext/bz2/Makefile.in
+++ b/ext/bz2/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/bz2/gstbz2dec.c b/ext/bz2/gstbz2dec.c
index 5a06b19..ad3eef0 100644
--- a/ext/bz2/gstbz2dec.c
+++ b/ext/bz2/gstbz2dec.c
@@ -296,10 +296,8 @@
           1, G_MAXUINT, DEFAULT_BUFFER_SIZE,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_template);
+  gst_element_class_add_static_pad_template (gstelement_class, &src_template);
   gst_element_class_set_static_metadata (gstelement_class, "BZ2 decoder",
       "Codec/Decoder", "Decodes compressed streams",
       "Lutz Mueller <lutz@users.sourceforge.net>");
diff --git a/ext/bz2/gstbz2enc.c b/ext/bz2/gstbz2enc.c
index c1c1ee1..05ec767 100644
--- a/ext/bz2/gstbz2enc.c
+++ b/ext/bz2/gstbz2enc.c
@@ -320,10 +320,8 @@
           1, G_MAXUINT, DEFAULT_BUFFER_SIZE,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_template);
+  gst_element_class_add_static_pad_template (gstelement_class, &src_template);
   gst_element_class_set_static_metadata (gstelement_class, "BZ2 encoder",
       "Codec/Encoder", "Compresses streams",
       "Lutz Mueller <lutz@users.sourceforge.net>");
diff --git a/ext/chromaprint/Makefile.in b/ext/chromaprint/Makefile.in
index e562df9..eed293f 100644
--- a/ext/chromaprint/Makefile.in
+++ b/ext/chromaprint/Makefile.in
@@ -304,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/chromaprint/gstchromaprint.c b/ext/chromaprint/gstchromaprint.c
index b7217a6..95600d6 100644
--- a/ext/chromaprint/gstchromaprint.c
+++ b/ext/chromaprint/gstchromaprint.c
@@ -87,7 +87,6 @@
   gobject_class->set_property = gst_chromaprint_set_property;
   gobject_class->get_property = gst_chromaprint_get_property;
 
-  /* FIXME: do we need this in addition to the tag message ? */
   g_object_class_install_property (gobject_class, PROP_FINGERPRINT,
       g_param_spec_string ("fingerprint", "Resulting fingerprint",
           "Resulting fingerprint", NULL, G_PARAM_READABLE));
@@ -147,6 +146,8 @@
   chromaprint_get_fingerprint (chromaprint->context, &chromaprint->fingerprint);
   chromaprint->record = FALSE;
 
+  g_object_notify ((GObject *) chromaprint, "fingerprint");
+
   tags = gst_tag_list_new (GST_TAG_CHROMAPRINT_FINGERPRINT,
       chromaprint->fingerprint, NULL);
 
diff --git a/ext/curl/Makefile.in b/ext/curl/Makefile.in
index 31d09a9..0f01b0b 100644
--- a/ext/curl/Makefile.in
+++ b/ext/curl/Makefile.in
@@ -316,6 +316,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -337,6 +339,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -386,6 +390,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -531,6 +537,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -657,8 +665,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -701,8 +707,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/curl/gstcurlbasesink.c b/ext/curl/gstcurlbasesink.c
index 013839d..5728ab2 100644
--- a/ext/curl/gstcurlbasesink.c
+++ b/ext/curl/gstcurlbasesink.c
@@ -235,8 +235,7 @@
           DSCP_MIN, DSCP_MAX, DEFAULT_QOS_DSCP,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sinktemplate));
+  gst_element_class_add_static_pad_template (element_class, &sinktemplate);
 }
 
 static void
diff --git a/ext/curl/gstcurlsmtpsink.c b/ext/curl/gstcurlsmtpsink.c
index 40ab016..07a1474 100644
--- a/ext/curl/gstcurlsmtpsink.c
+++ b/ext/curl/gstcurlsmtpsink.c
@@ -202,21 +202,16 @@
 
       GST_OBJECT_LOCK (sink);
       sink->eos = TRUE;
-      GST_OBJECT_UNLOCK (sink);
-
-      if (sink->base64_chunk != NULL && !sink->final_boundary_added) {
+      if (bcsink->flow_ret == GST_FLOW_OK && sink->base64_chunk != NULL
+          && !sink->final_boundary_added) {
         add_final_boundary_unlocked (sink);
-
         gst_curl_base_sink_transfer_thread_notify_unlocked (bcsink);
-
-        GST_OBJECT_LOCK (sink);
-        if (sink->base64_chunk != NULL && bcsink->flow_ret == GST_FLOW_OK) {
-          gst_curl_smtp_sink_wait_for_transfer_end_unlocked (sink);
-        }
-        GST_OBJECT_UNLOCK (sink);
+        GST_FIXME_OBJECT (sink, "if gstpoll errors in transfer thread, then "
+            "this wait will never timeout because the transfer thread does "
+            "not signal it upon errors");
+        gst_curl_smtp_sink_wait_for_transfer_end_unlocked (sink);
       }
-      gst_curl_base_sink_transfer_thread_close (bcsink);
-
+      GST_OBJECT_UNLOCK (sink);
       break;
 
     default:
diff --git a/ext/daala/Makefile.in b/ext/daala/Makefile.in
index 34aadd0..e921388 100644
--- a/ext/daala/Makefile.in
+++ b/ext/daala/Makefile.in
@@ -304,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/daala/gstdaaladec.c b/ext/daala/gstdaaladec.c
index d40537d..90fb38f 100644
--- a/ext/daala/gstdaaladec.c
+++ b/ext/daala/gstdaaladec.c
@@ -103,13 +103,12 @@
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
   GstVideoDecoderClass *video_decoder_class = GST_VIDEO_DECODER_CLASS (klass);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&daala_dec_src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&daala_dec_sink_factory));
-  gst_element_class_set_static_metadata (element_class,
-      "Daala video decoder", "Codec/Decoder/Video",
-      "Decode raw Daala streams to raw YUV video",
+  gst_element_class_add_static_pad_template (element_class,
+      &daala_dec_src_factory);
+  gst_element_class_add_static_pad_template (element_class,
+      &daala_dec_sink_factory);
+  gst_element_class_set_static_metadata (element_class, "Daala video decoder",
+      "Codec/Decoder/Video", "Decode raw Daala streams to raw YUV video",
       "Sebastian Dröge <slomo@circular-chaos.org>");
 
   video_decoder_class->start = GST_DEBUG_FUNCPTR (daala_dec_start);
@@ -122,7 +121,7 @@
       GST_DEBUG_FUNCPTR (daala_dec_decide_allocation);
 
   GST_DEBUG_CATEGORY_INIT (daaladec_debug, "daaladec", 0, "Daala decoder");
-  GST_DEBUG_CATEGIRY_GET (CAT_PERFORMANCE, "GST_PERFORMANCE");
+  GST_DEBUG_CATEGORY_GET (CAT_PERFORMANCE, "GST_PERFORMANCE");
 }
 
 static void
diff --git a/ext/daala/gstdaalaenc.c b/ext/daala/gstdaalaenc.c
index 705c7e6..7209ddf 100644
--- a/ext/daala/gstdaalaenc.c
+++ b/ext/daala/gstdaalaenc.c
@@ -212,13 +212,12 @@
           1, G_MAXINT, DEFAULT_KEYFRAME_RATE,
           (GParamFlags) G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&daala_enc_src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&daala_enc_sink_factory));
-  gst_element_class_set_static_metadata (element_class,
-      "Daala video encoder", "Codec/Encoder/Video",
-      "Encode raw YUV video to a Daala stream",
+  gst_element_class_add_static_pad_template (element_class,
+      &daala_enc_src_factory);
+  gst_element_class_add_static_pad_template (element_class,
+      &daala_enc_sink_factory);
+  gst_element_class_set_static_metadata (element_class, "Daala video encoder",
+      "Codec/Encoder/Video", "Encode raw YUV video to a Daala stream",
       "Sebastian Dröge <slomo@circular-chaos.org>");
 
   gstvideo_encoder_class->start = GST_DEBUG_FUNCPTR (daala_enc_start);
diff --git a/ext/dash/Makefile.in b/ext/dash/Makefile.in
index 3fbad07..f954b03 100644
--- a/ext/dash/Makefile.in
+++ b/ext/dash/Makefile.in
@@ -307,6 +307,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -328,6 +330,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -377,6 +381,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -522,6 +528,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -648,8 +656,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -692,8 +698,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/dash/gstdashdemux.c b/ext/dash/gstdashdemux.c
index 4c1f999..6e24747 100644
--- a/ext/dash/gstdashdemux.c
+++ b/ext/dash/gstdashdemux.c
@@ -189,6 +189,9 @@
   PROP_MAX_BUFFERING_TIME,
   PROP_BANDWIDTH_USAGE,
   PROP_MAX_BITRATE,
+  PROP_MAX_VIDEO_WIDTH,
+  PROP_MAX_VIDEO_HEIGHT,
+  PROP_MAX_VIDEO_FRAMERATE,
   PROP_PRESENTATION_DELAY,
   PROP_LAST
 };
@@ -196,7 +199,11 @@
 /* Default values for properties */
 #define DEFAULT_MAX_BUFFERING_TIME       30     /* in seconds */
 #define DEFAULT_BANDWIDTH_USAGE         0.8     /* 0 to 1     */
-#define DEFAULT_MAX_BITRATE        24000000     /* in bit/s  */
+#define DEFAULT_MAX_BITRATE               0     /* in bit/s  */
+#define DEFAULT_MAX_VIDEO_WIDTH           0
+#define DEFAULT_MAX_VIDEO_HEIGHT          0
+#define DEFAULT_MAX_VIDEO_FRAMERATE_N     0
+#define DEFAULT_MAX_VIDEO_FRAMERATE_D     1
 #define DEFAULT_PRESENTATION_DELAY     NULL     /* zero */
 
 /* Clock drift compensation for live streams */
@@ -216,6 +223,12 @@
   GstClock *ntp_clock;
 };
 
+typedef struct
+{
+  guint64 start_offset, end_offset;
+  /* TODO: Timestamp and duration */
+} GstDashStreamSyncSample;
+
 /* GObject */
 static void gst_dash_demux_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec);
@@ -253,10 +266,15 @@
 static void gst_dash_demux_advance_period (GstAdaptiveDemux * demux);
 static gboolean gst_dash_demux_has_next_period (GstAdaptiveDemux * demux);
 static GstFlowReturn gst_dash_demux_data_received (GstAdaptiveDemux * demux,
+    GstAdaptiveDemuxStream * stream, GstBuffer * buffer);
+static gboolean
+gst_dash_demux_stream_fragment_start (GstAdaptiveDemux * demux,
     GstAdaptiveDemuxStream * stream);
 static GstFlowReturn
 gst_dash_demux_stream_fragment_finished (GstAdaptiveDemux * demux,
     GstAdaptiveDemuxStream * stream);
+static gboolean gst_dash_demux_need_another_chunk (GstAdaptiveDemuxStream *
+    stream);
 
 /* GstDashDemux */
 static gboolean gst_dash_demux_setup_all_streams (GstDashDemux * demux);
@@ -266,7 +284,8 @@
     GstActiveStream * stream);
 static GstPad *gst_dash_demux_create_pad (GstDashDemux * demux,
     GstActiveStream * stream);
-static GstDashDemuxClockDrift *gst_dash_demux_clock_drift_new (void);
+static GstDashDemuxClockDrift *gst_dash_demux_clock_drift_new (GstDashDemux *
+    demux);
 static void gst_dash_demux_clock_drift_free (GstDashDemuxClockDrift *);
 static gboolean gst_dash_demux_poll_clock_drift (GstDashDemux * demux);
 static GTimeSpan gst_dash_demux_get_clock_compensation (GstDashDemux * demux);
@@ -313,10 +332,12 @@
   GDateTime *now;
   GDateTime *mstart;
   GTimeSpan stream_now;
+  GstClockTime seg_duration;
 
   if (self->client->mpd_node->availabilityStartTime == NULL)
     return FALSE;
 
+  seg_duration = gst_mpd_client_get_maximum_segment_duration (self->client);
   now = gst_dash_demux_get_server_now_utc (self);
   mstart =
       gst_date_time_to_g_date_time (self->client->
@@ -337,6 +358,17 @@
     if (*start < 0)
       *start = 0;
   }
+
+  /* As defined in 5.3.9.5.3 of the DASH specification, a segment does
+     not become available until the sum of:
+     * the value of the MPD@availabilityStartTime,
+     * the PeriodStart time of the containing Period
+     * the MPD start time of the Media Segment, and
+     * the MPD duration of the Media Segment.
+     Therefore we need to subtract the media segment duration from the stop
+     time.
+   */
+  *stop -= seg_duration;
   return TRUE;
 }
 
@@ -393,8 +425,27 @@
 
   g_object_class_install_property (gobject_class, PROP_MAX_BITRATE,
       g_param_spec_uint ("max-bitrate", "Max bitrate",
-          "Max of bitrate supported by target decoder",
-          1000, G_MAXUINT, DEFAULT_MAX_BITRATE,
+          "Max of bitrate supported by target video decoder (0 = no maximum)",
+          0, G_MAXUINT, DEFAULT_MAX_BITRATE,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, PROP_MAX_VIDEO_WIDTH,
+      g_param_spec_uint ("max-video-width", "Max video width",
+          "Max video width to select (0 = no maximum)",
+          0, G_MAXUINT, DEFAULT_MAX_VIDEO_WIDTH,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, PROP_MAX_VIDEO_HEIGHT,
+      g_param_spec_uint ("max-video-height", "Max video height",
+          "Max video height to select (0 = no maximum)",
+          0, G_MAXUINT, DEFAULT_MAX_VIDEO_HEIGHT,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, PROP_MAX_VIDEO_FRAMERATE,
+      gst_param_spec_fraction ("max-video-framerate", "Max video framerate",
+          "Max video framerate to select (0/1 = no maximum)",
+          0, 1, G_MAXINT, 1, DEFAULT_MAX_VIDEO_FRAMERATE_N,
+          DEFAULT_MAX_VIDEO_FRAMERATE_D,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   g_object_class_install_property (gobject_class, PROP_PRESENTATION_DELAY,
@@ -403,15 +454,14 @@
           DEFAULT_PRESENTATION_DELAY,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_dash_demux_audiosrc_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_dash_demux_videosrc_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_dash_demux_subtitlesrc_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_dash_demux_audiosrc_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_dash_demux_videosrc_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_dash_demux_subtitlesrc_template);
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sinktemplate));
+  gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "DASH Demuxer",
@@ -454,9 +504,12 @@
   gstadaptivedemux_class->get_period_start_time =
       gst_dash_demux_get_period_start_time;
 
+  gstadaptivedemux_class->start_fragment = gst_dash_demux_stream_fragment_start;
   gstadaptivedemux_class->finish_fragment =
       gst_dash_demux_stream_fragment_finished;
   gstadaptivedemux_class->data_received = gst_dash_demux_data_received;
+  gstadaptivedemux_class->need_another_chunk =
+      gst_dash_demux_need_another_chunk;
 }
 
 static void
@@ -465,6 +518,10 @@
   /* Properties */
   demux->max_buffering_time = DEFAULT_MAX_BUFFERING_TIME * GST_SECOND;
   demux->max_bitrate = DEFAULT_MAX_BITRATE;
+  demux->max_video_width = DEFAULT_MAX_VIDEO_WIDTH;
+  demux->max_video_height = DEFAULT_MAX_VIDEO_HEIGHT;
+  demux->max_video_framerate_n = DEFAULT_MAX_VIDEO_FRAMERATE_N;
+  demux->max_video_framerate_d = DEFAULT_MAX_VIDEO_FRAMERATE_D;
   demux->default_presentation_delay = DEFAULT_PRESENTATION_DELAY;
 
   g_mutex_init (&demux->client_lock);
@@ -490,6 +547,16 @@
     case PROP_MAX_BITRATE:
       demux->max_bitrate = g_value_get_uint (value);
       break;
+    case PROP_MAX_VIDEO_WIDTH:
+      demux->max_video_width = g_value_get_uint (value);
+      break;
+    case PROP_MAX_VIDEO_HEIGHT:
+      demux->max_video_height = g_value_get_uint (value);
+      break;
+    case PROP_MAX_VIDEO_FRAMERATE:
+      demux->max_video_framerate_n = gst_value_get_fraction_numerator (value);
+      demux->max_video_framerate_d = gst_value_get_fraction_denominator (value);
+      break;
     case PROP_PRESENTATION_DELAY:
       g_free (demux->default_presentation_delay);
       demux->default_presentation_delay = g_value_dup_string (value);
@@ -517,6 +584,16 @@
     case PROP_MAX_BITRATE:
       g_value_set_uint (value, demux->max_bitrate);
       break;
+    case PROP_MAX_VIDEO_WIDTH:
+      g_value_set_uint (value, demux->max_video_width);
+      break;
+    case PROP_MAX_VIDEO_HEIGHT:
+      g_value_set_uint (value, demux->max_video_height);
+      break;
+    case PROP_MAX_VIDEO_FRAMERATE:
+      gst_value_set_fraction (value, demux->max_video_framerate_n,
+          demux->max_video_framerate_d);
+      break;
     case PROP_PRESENTATION_DELAY:
       if (demux->default_presentation_delay == NULL)
         g_value_set_static_string (value, "");
@@ -571,6 +648,7 @@
     GstDashDemuxStream *stream;
     GstActiveStream *active_stream;
     GstCaps *caps;
+    GstStructure *s;
     GstPad *srcpad;
     gchar *lang = NULL;
     GstTagList *tags = NULL;
@@ -579,6 +657,13 @@
     if (active_stream == NULL)
       continue;
 
+    if (demux->trickmode_no_audio
+        && active_stream->mimeType == GST_STREAM_AUDIO) {
+      GST_DEBUG_OBJECT (demux,
+          "Skipping audio stream %d because of TRICKMODE_NO_AUDIO flag", i);
+      continue;
+    }
+
     srcpad = gst_dash_demux_create_pad (demux, active_stream);
     if (srcpad == NULL)
       continue;
@@ -614,6 +699,11 @@
     stream = (GstDashDemuxStream *)
         gst_adaptive_demux_stream_new (GST_ADAPTIVE_DEMUX_CAST (demux), srcpad);
     stream->active_stream = active_stream;
+    s = gst_caps_get_structure (caps, 0);
+    stream->is_isobmff = gst_structure_has_name (s, "video/quicktime");
+    stream->first_sync_sample_always_after_moof = TRUE;
+    if (stream->is_isobmff)
+      stream->isobmff_adapter = gst_adapter_new ();
     gst_adaptive_demux_stream_set_caps (GST_ADAPTIVE_DEMUX_STREAM_CAST (stream),
         caps);
     if (tags)
@@ -631,6 +721,8 @@
     }
 
     gst_isoff_sidx_parser_init (&stream->sidx_parser);
+    if (gst_mpd_client_has_isoff_ondemand_profile (demux->client))
+      stream->sidx_adapter = gst_adapter_new ();
   }
 
   return TRUE;
@@ -712,7 +804,7 @@
           SUPPORTED_CLOCK_FORMATS, NULL);
       if (urls) {
         GST_DEBUG_OBJECT (dashdemux, "Found a supported UTCTiming element");
-        dashdemux->clock_drift = gst_dash_demux_clock_drift_new ();
+        dashdemux->clock_drift = gst_dash_demux_clock_drift_new (dashdemux);
         gst_dash_demux_poll_clock_drift (dashdemux);
       }
     }
@@ -878,6 +970,10 @@
 
   demux->n_audio_streams = 0;
   demux->n_video_streams = 0;
+  demux->n_subtitle_streams = 0;
+
+  demux->trickmode_no_audio = FALSE;
+  demux->allow_trickmode_key_units = TRUE;
 }
 
 static GstCaps *
@@ -1020,6 +1116,9 @@
 
   isombff = gst_mpd_client_has_isoff_ondemand_profile (dashdemux->client);
 
+  /* Reset chunk size if any */
+  stream->fragment.chunk_size = 0;
+
   if (GST_ADAPTIVE_DEMUX_STREAM_NEED_HEADER (stream) && isombff) {
     gst_dash_demux_stream_update_headers_info (stream);
     dashstream->sidx_base_offset = stream->fragment.index_range_end + 1;
@@ -1030,6 +1129,24 @@
     }
   }
 
+  if (dashstream->moof_sync_samples
+      && GST_ADAPTIVE_DEMUX (dashdemux)->
+      segment.flags & GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS) {
+    GstDashStreamSyncSample *sync_sample =
+        &g_array_index (dashstream->moof_sync_samples, GstDashStreamSyncSample,
+        dashstream->current_sync_sample);
+
+    gst_mpd_client_get_next_fragment (dashdemux->client, dashstream->index,
+        &fragment);
+    stream->fragment.uri = fragment.uri;
+    stream->fragment.timestamp = GST_CLOCK_TIME_NONE;
+    stream->fragment.duration = GST_CLOCK_TIME_NONE;
+    stream->fragment.range_start = sync_sample->start_offset;
+    stream->fragment.range_end = sync_sample->end_offset;
+
+    return GST_FLOW_OK;
+  }
+
   if (gst_mpd_client_get_next_fragment_timestamp (dashdemux->client,
           dashstream->index, &ts)) {
     if (GST_ADAPTIVE_DEMUX_STREAM_NEED_HEADER (stream)) {
@@ -1090,9 +1207,7 @@
   gint idx = sidx->entries_count;
 
   /* check whether ts is already past the last element or not */
-  if (sidx->entries[idx - 1].pts + sidx->entries[idx - 1].duration < ts) {
-    dashstream->sidx_current_remaining = 0;
-  } else {
+  if (sidx->entries[idx - 1].pts + sidx->entries[idx - 1].duration >= ts) {
     GstSearchMode mode = GST_SEARCH_MODE_BEFORE;
 
     if ((flags & GST_SEEK_FLAG_SNAP_NEAREST) == GST_SEEK_FLAG_SNAP_NEAREST) {
@@ -1120,8 +1235,6 @@
           ABS (sidx->entries[idx].pts - ts))
         idx += 1;
     }
-
-    dashstream->sidx_current_remaining = sidx->entries[idx].size;
   }
 
   sidx->entry_index = idx;
@@ -1142,6 +1255,14 @@
   GstDashDemuxStream *dashstream = (GstDashDemuxStream *) stream;
   GstDashDemux *dashdemux = GST_DASH_DEMUX_CAST (stream->demux);
 
+  if (dashstream->moof)
+    gst_isoff_moof_box_free (dashstream->moof);
+  dashstream->moof = NULL;
+  if (dashstream->moof_sync_samples)
+    g_array_free (dashstream->moof_sync_samples, TRUE);
+  dashstream->moof_sync_samples = NULL;
+  dashstream->current_sync_sample = -1;
+
   if (gst_mpd_client_has_isoff_ondemand_profile (dashdemux->client)) {
     if (dashstream->sidx_parser.status == GST_ISOFF_SIDX_PARSER_FINISHED) {
       gst_dash_demux_stream_sidx_seek (dashstream, forward, flags, ts,
@@ -1151,6 +1272,8 @@
       /* FIXME - the final_ts won't be correct here */
       dashstream->pending_seek_ts = ts;
     }
+
+    return GST_FLOW_OK;
   }
 
   gst_mpd_client_stream_seek (dashdemux->client, dashstream->active_stream,
@@ -1159,6 +1282,26 @@
 }
 
 static gboolean
+gst_dash_demux_stream_has_next_sync_sample (GstAdaptiveDemuxStream * stream)
+{
+  GstDashDemuxStream *dashstream = (GstDashDemuxStream *) stream;
+
+  if (dashstream->moof_sync_samples
+      && GST_ADAPTIVE_DEMUX (stream->demux)->
+      segment.flags & GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS) {
+    if (stream->demux->segment.rate > 0.0) {
+      if (dashstream->current_sync_sample + 1 <
+          dashstream->moof_sync_samples->len)
+        return TRUE;
+    } else {
+      if (dashstream->current_sync_sample >= 1)
+        return TRUE;
+    }
+  }
+  return FALSE;
+}
+
+static gboolean
 gst_dash_demux_stream_has_next_subfragment (GstAdaptiveDemuxStream * stream)
 {
   GstDashDemuxStream *dashstream = (GstDashDemuxStream *) stream;
@@ -1177,6 +1320,43 @@
 }
 
 static gboolean
+gst_dash_demux_stream_advance_sync_sample (GstAdaptiveDemuxStream * stream)
+{
+  GstDashDemuxStream *dashstream = (GstDashDemuxStream *) stream;
+  gboolean fragment_finished = FALSE;
+
+  if (dashstream->moof_sync_samples
+      && GST_ADAPTIVE_DEMUX (stream->demux)->
+      segment.flags & GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS) {
+    if (stream->demux->segment.rate > 0.0) {
+      dashstream->current_sync_sample++;
+      if (dashstream->current_sync_sample >= dashstream->moof_sync_samples->len) {
+        fragment_finished = TRUE;
+      }
+    } else {
+      if (dashstream->current_sync_sample == -1) {
+        dashstream->current_sync_sample =
+            dashstream->moof_sync_samples->len - 1;
+      } else if (dashstream->current_sync_sample == 0) {
+        dashstream->current_sync_sample = -1;
+        fragment_finished = TRUE;
+      } else {
+        dashstream->current_sync_sample--;
+      }
+    }
+  }
+
+  GST_DEBUG_OBJECT (stream->pad,
+      "Advancing sync sample #%d fragment_finished:%d",
+      dashstream->current_sync_sample, fragment_finished);
+
+  if (!fragment_finished)
+    stream->discont = TRUE;
+
+  return !fragment_finished;
+}
+
+static gboolean
 gst_dash_demux_stream_advance_subfragment (GstAdaptiveDemuxStream * stream)
 {
   GstDashDemuxStream *dashstream = (GstDashDemuxStream *) stream;
@@ -1190,8 +1370,10 @@
       if (sidx->entry_index < sidx->entries_count) {
         fragment_finished = FALSE;
       }
+      dashstream->sidx_index++;
     } else {
       sidx->entry_index--;
+      dashstream->sidx_index--;
       if (sidx->entry_index >= 0) {
         fragment_finished = FALSE;
       }
@@ -1202,9 +1384,6 @@
       "Finished fragment: %d", sidx->entry_index, sidx->entries_count,
       fragment_finished);
 
-  if (!fragment_finished) {
-    dashstream->sidx_current_remaining = sidx->entries[sidx->entry_index].size;
-  }
   return !fragment_finished;
 }
 
@@ -1214,6 +1393,13 @@
   GstDashDemux *dashdemux = GST_DASH_DEMUX_CAST (stream->demux);
   GstDashDemuxStream *dashstream = (GstDashDemuxStream *) stream;
 
+  if (dashstream->moof_sync_samples
+      && GST_ADAPTIVE_DEMUX (dashdemux)->
+      segment.flags & GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS) {
+    if (gst_dash_demux_stream_has_next_sync_sample (stream))
+      return TRUE;
+  }
+
   if (gst_mpd_client_has_isoff_ondemand_profile (dashdemux->client)) {
     if (gst_dash_demux_stream_has_next_subfragment (stream))
       return TRUE;
@@ -1223,6 +1409,32 @@
       dashstream->active_stream, stream->demux->segment.rate > 0.0);
 }
 
+static void
+gst_dash_demux_clear_pending_stream_data (GstDashDemux * dashdemux,
+    GstDashDemuxStream * dashstream)
+{
+  gst_isoff_sidx_parser_clear (&dashstream->sidx_parser);
+  gst_isoff_sidx_parser_init (&dashstream->sidx_parser);
+  if (dashstream->sidx_adapter)
+    gst_adapter_clear (dashstream->sidx_adapter);
+
+  /* Reset ISOBMFF box parsing state */
+  if (dashstream->isobmff_adapter)
+    gst_adapter_clear (dashstream->isobmff_adapter);
+  dashstream->isobmff_parser.current_fourcc = 0;
+  dashstream->isobmff_parser.current_start_offset = 0;
+  dashstream->isobmff_parser.current_offset = 0;
+  dashstream->isobmff_parser.current_size = 0;
+
+  if (dashstream->moof)
+    gst_isoff_moof_box_free (dashstream->moof);
+  dashstream->moof = NULL;
+  if (dashstream->moof_sync_samples)
+    g_array_free (dashstream->moof_sync_samples, TRUE);
+  dashstream->moof_sync_samples = NULL;
+  dashstream->current_sync_sample = -1;
+}
+
 static GstFlowReturn
 gst_dash_demux_stream_advance_fragment (GstAdaptiveDemuxStream * stream)
 {
@@ -1231,11 +1443,39 @@
 
   GST_DEBUG_OBJECT (stream->pad, "Advance fragment");
 
+  /* If downloading only keyframes, switch to the next one or fall through */
+  if (dashstream->moof_sync_samples
+      && GST_ADAPTIVE_DEMUX (dashdemux)->
+      segment.flags & GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS) {
+    if (gst_dash_demux_stream_advance_sync_sample (stream))
+      return GST_FLOW_OK;
+  }
+
+  if (dashstream->isobmff_adapter)
+    gst_adapter_clear (dashstream->isobmff_adapter);
+  dashstream->isobmff_parser.current_fourcc = 0;
+  dashstream->isobmff_parser.current_start_offset = 0;
+  dashstream->isobmff_parser.current_offset = 0;
+  dashstream->isobmff_parser.current_size = 0;
+
+  if (dashstream->moof)
+    gst_isoff_moof_box_free (dashstream->moof);
+  dashstream->moof = NULL;
+  if (dashstream->moof_sync_samples)
+    g_array_free (dashstream->moof_sync_samples, TRUE);
+  dashstream->moof_sync_samples = NULL;
+  dashstream->current_sync_sample = -1;
+
   if (gst_mpd_client_has_isoff_ondemand_profile (dashdemux->client)) {
     if (gst_dash_demux_stream_advance_subfragment (stream))
       return GST_FLOW_OK;
   }
 
+  gst_isoff_sidx_parser_clear (&dashstream->sidx_parser);
+  gst_isoff_sidx_parser_init (&dashstream->sidx_parser);
+  if (dashstream->sidx_adapter)
+    gst_adapter_clear (dashstream->sidx_adapter);
+
   return gst_mpd_client_advance_segment (dashdemux->client,
       dashstream->active_stream, stream->demux->segment.rate > 0.0);
 }
@@ -1247,6 +1487,7 @@
   GstActiveStream *active_stream = NULL;
   GList *rep_list = NULL;
   gint new_index;
+  GstAdaptiveDemux *base_demux = stream->demux;
   GstDashDemux *demux = GST_DASH_DEMUX_CAST (stream->demux);
   GstDashDemuxStream *dashstream = (GstDashDemuxStream *) stream;
   gboolean ret = FALSE;
@@ -1266,8 +1507,24 @@
   GST_DEBUG_OBJECT (stream->pad,
       "Trying to change to bitrate: %" G_GUINT64_FORMAT, bitrate);
 
+  if (active_stream->mimeType == GST_STREAM_VIDEO && demux->max_bitrate) {
+    bitrate = MIN (demux->max_bitrate, bitrate);
+  }
+
   /* get representation index with current max_bandwidth */
-  new_index = gst_mpdparser_get_rep_idx_with_max_bandwidth (rep_list, bitrate);
+  if ((base_demux->segment.flags & GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS) ||
+      ABS (base_demux->segment.rate) <= 1.0) {
+    new_index =
+        gst_mpdparser_get_rep_idx_with_max_bandwidth (rep_list, bitrate,
+        demux->max_video_width, demux->max_video_height,
+        demux->max_video_framerate_n, demux->max_video_framerate_d);
+  } else {
+    new_index =
+        gst_mpdparser_get_rep_idx_with_max_bandwidth (rep_list,
+        bitrate / ABS (base_demux->segment.rate), demux->max_video_width,
+        demux->max_video_height, demux->max_video_framerate_n,
+        demux->max_video_framerate_d);
+  }
 
   /* if no representation has the required bandwidth, take the lowest one */
   if (new_index == -1)
@@ -1291,16 +1548,13 @@
     }
   }
 
-  if (gst_mpd_client_has_isoff_ondemand_profile (demux->client)) {
+  if (ret) {
+    gst_dash_demux_clear_pending_stream_data (demux, dashstream);
 
-    /* store our current position to change to the same one in a different
-     * representation if needed */
-    dashstream->sidx_index = SIDX (dashstream)->entry_index;
-    if (ret) {
-      /* TODO cache indexes to avoid re-downloading and parsing */
-      /* if we switched, we need a new index */
-      gst_isoff_sidx_parser_clear (&dashstream->sidx_parser);
-      gst_isoff_sidx_parser_init (&dashstream->sidx_parser);
+    if (gst_mpd_client_has_isoff_ondemand_profile (demux->client)) {
+      /* store our current position to change to the same one in a different
+       * representation if needed */
+      dashstream->sidx_index = SIDX (dashstream)->entry_index;
     }
   }
 
@@ -1324,9 +1578,9 @@
   GstClockTime current_pos, target_pos;
   guint current_period;
   GstStreamPeriod *period;
-  GList *iter;
+  GList *iter, *streams = NULL;
   GstDashDemux *dashdemux = GST_DASH_DEMUX_CAST (demux);
-  gboolean switched_period = FALSE;
+  gboolean trickmode_no_audio;
 
   gst_event_parse_seek (seek, &rate, &format, &flags, &start_type, &start,
       &stop_type, &stop);
@@ -1367,27 +1621,39 @@
     GST_WARNING_OBJECT (demux, "Could not find seeked Period");
     return FALSE;
   }
+
+  trickmode_no_audio = ! !(flags & GST_SEEK_FLAG_TRICKMODE_NO_AUDIO);
+
+  streams = demux->streams;
   if (current_period != gst_mpd_client_get_period_index (dashdemux->client)) {
     GST_DEBUG_OBJECT (demux, "Seeking to Period %d", current_period);
 
     /* clean old active stream list, if any */
     gst_active_streams_free (dashdemux->client);
+    dashdemux->trickmode_no_audio = trickmode_no_audio;
 
     /* setup video, audio and subtitle streams, starting from the new Period */
     if (!gst_mpd_client_set_period_index (dashdemux->client, current_period)
         || !gst_dash_demux_setup_all_streams (dashdemux))
       return FALSE;
-    switched_period = TRUE;
+    streams = demux->next_streams;
+  } else if (dashdemux->trickmode_no_audio != trickmode_no_audio) {
+    /* clean old active stream list, if any */
+    gst_active_streams_free (dashdemux->client);
+    dashdemux->trickmode_no_audio = trickmode_no_audio;
+
+    /* setup video, audio and subtitle streams, starting from the new Period */
+    if (!gst_dash_demux_setup_all_streams (dashdemux))
+      return FALSE;
+    streams = demux->next_streams;
   }
 
   /* Update the current sequence on all streams */
-  for (iter = (switched_period ? demux->next_streams : demux->streams); iter;
-      iter = g_list_next (iter)) {
+  for (iter = streams; iter; iter = g_list_next (iter)) {
     GstDashDemuxStream *dashstream = iter->data;
 
     if (flags & GST_SEEK_FLAG_FLUSH) {
-      gst_isoff_sidx_parser_clear (&dashstream->sidx_parser);
-      gst_isoff_sidx_parser_init (&dashstream->sidx_parser);
+      gst_dash_demux_clear_pending_stream_data (dashdemux, dashstream);
     }
     gst_dash_demux_stream_seek (iter->data, rate >= 0, 0, target_pos, NULL);
   }
@@ -1541,8 +1807,12 @@
     gint64 diff;
     GstDateTime *cur_time;
 
-    cur_time = gst_date_time_new_now_utc ();
-    diff = gst_mpd_client_calculate_time_difference (cur_time,
+    cur_time =
+        gst_date_time_new_from_g_date_time
+        (gst_adaptive_demux_get_client_now_utc (GST_ADAPTIVE_DEMUX_CAST
+            (dashdemux)));
+    diff =
+        gst_mpd_client_calculate_time_difference (cur_time,
         segmentAvailability);
     gst_date_time_unref (segmentAvailability);
     gst_date_time_unref (cur_time);
@@ -1603,6 +1873,33 @@
   return newbuf;
 }
 
+static gboolean
+gst_dash_demux_stream_fragment_start (GstAdaptiveDemux * demux,
+    GstAdaptiveDemuxStream * stream)
+{
+  GstDashDemux *dashdemux = GST_DASH_DEMUX_CAST (demux);
+  GstDashDemuxStream *dashstream = (GstDashDemuxStream *) stream;
+
+  dashstream->sidx_index_header_or_data = 0;
+  dashstream->sidx_current_offset = -1;
+
+  dashstream->isobmff_parser.index_header_or_data = 0;
+  dashstream->isobmff_parser.current_offset = -1;
+
+  /* We need to mark every first buffer of a key unit as discont,
+   * and also every first buffer of a moov and moof. This ensures
+   * that qtdemux takes note of our buffer offsets for each of those
+   * buffers instead of keeping track of them itself from the first
+   * buffer. We need offsets to be consistent between moof and mdat
+   */
+  if (dashstream->is_isobmff && dashdemux->allow_trickmode_key_units
+      && (demux->segment.flags & GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS)
+      && dashstream->active_stream->mimeType == GST_STREAM_VIDEO)
+    stream->discont = TRUE;
+
+  return TRUE;
+}
+
 static GstFlowReturn
 gst_dash_demux_stream_fragment_finished (GstAdaptiveDemux * demux,
     GstAdaptiveDemuxStream * stream)
@@ -1610,8 +1907,24 @@
   GstDashDemux *dashdemux = GST_DASH_DEMUX_CAST (demux);
   GstDashDemuxStream *dashstream = (GstDashDemuxStream *) stream;
 
-  if (gst_mpd_client_has_isoff_ondemand_profile (dashdemux->client) &&
-      dashstream->sidx_parser.status == GST_ISOFF_SIDX_PARSER_FINISHED) {
+  /* We need to mark every first buffer of a key unit as discont,
+   * and also every first buffer of a moov and moof. This ensures
+   * that qtdemux takes note of our buffer offsets for each of those
+   * buffers instead of keeping track of them itself from the first
+   * buffer. We need offsets to be consistent between moof and mdat
+   */
+  if (dashstream->is_isobmff && dashdemux->allow_trickmode_key_units
+      && (demux->segment.flags & GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS)
+      && dashstream->active_stream->mimeType == GST_STREAM_VIDEO)
+    stream->discont = TRUE;
+
+  /* Only handle fragment advancing specifically for SIDX if we're not
+   * in key unit mode */
+  if (!(dashstream->moof_sync_samples
+          && GST_ADAPTIVE_DEMUX (dashdemux)->
+          segment.flags & GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS)
+      && gst_mpd_client_has_isoff_ondemand_profile (dashdemux->client)
+      && dashstream->sidx_parser.status == GST_ISOFF_SIDX_PARSER_FINISHED) {
     /* fragment is advanced on data_received when byte limits are reached */
     if (gst_dash_demux_stream_has_next_fragment (stream))
       return GST_FLOW_OK;
@@ -1625,26 +1938,617 @@
       stream->fragment.duration);
 }
 
-static GstFlowReturn
-gst_dash_demux_data_received (GstAdaptiveDemux * demux,
+static gboolean
+gst_dash_demux_need_another_chunk (GstAdaptiveDemuxStream * stream)
+{
+  GstDashDemux *dashdemux = (GstDashDemux *) stream->demux;
+  GstDashDemuxStream *dashstream = (GstDashDemuxStream *) stream;
+
+  /* We're chunked downloading for ISOBMFF in KEY_UNITS mode for the actual
+   * fragment until we parsed the moof and arrived at the mdat. 8192 is a
+   * random guess for the moof size
+   */
+  if (dashstream->is_isobmff
+      && (GST_ADAPTIVE_DEMUX (stream->demux)->
+          segment.flags & GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS)
+      && dashstream->active_stream->mimeType == GST_STREAM_VIDEO
+      && !stream->downloading_header && !stream->downloading_index
+      && dashdemux->allow_trickmode_key_units) {
+    if (dashstream->isobmff_parser.current_fourcc != GST_ISOFF_FOURCC_MDAT) {
+      /* Need to download the moof first to know anything */
+
+      stream->fragment.chunk_size = 8192;
+      /* Do we have the first fourcc already or are we in the middle */
+      if (dashstream->isobmff_parser.current_fourcc == 0) {
+        stream->fragment.chunk_size += dashstream->moof_average_size;
+        if (dashstream->first_sync_sample_always_after_moof)
+          stream->fragment.chunk_size +=
+              dashstream->first_sync_sample_average_size;
+      }
+
+      if (gst_mpd_client_has_isoff_ondemand_profile (dashdemux->client) &&
+          dashstream->sidx_parser.sidx.entries) {
+        guint64 sidx_end_offset =
+            dashstream->sidx_base_offset +
+            SIDX_CURRENT_ENTRY (dashstream)->offset +
+            SIDX_CURRENT_ENTRY (dashstream)->size;
+
+        if (stream->fragment.chunk_size +
+            dashstream->isobmff_parser.current_offset > sidx_end_offset) {
+          stream->fragment.chunk_size =
+              sidx_end_offset - dashstream->isobmff_parser.current_offset;
+        }
+      }
+    } else if (dashstream->moof && dashstream->moof_sync_samples) {
+      /* Have the moof, either we're done now or we want to download the
+       * directly following sync sample */
+      if (dashstream->first_sync_sample_after_moof
+          && dashstream->current_sync_sample == 0) {
+        GstDashStreamSyncSample *sync_sample =
+            &g_array_index (dashstream->moof_sync_samples,
+            GstDashStreamSyncSample, 0);
+        guint64 end_offset = sync_sample->end_offset + 1;
+
+        if (gst_mpd_client_has_isoff_ondemand_profile (dashdemux->client) &&
+            dashstream->sidx_parser.sidx.entries) {
+          guint64 sidx_end_offset =
+              dashstream->sidx_base_offset +
+              SIDX_CURRENT_ENTRY (dashstream)->offset +
+              SIDX_CURRENT_ENTRY (dashstream)->size;
+
+          if (end_offset > sidx_end_offset) {
+            end_offset = sidx_end_offset;
+          }
+        }
+
+        if (dashstream->isobmff_parser.current_offset < end_offset) {
+          stream->fragment.chunk_size =
+              end_offset - dashstream->isobmff_parser.current_offset;
+        } else {
+          stream->fragment.chunk_size = 0;
+        }
+      } else {
+        stream->fragment.chunk_size = 0;
+      }
+    } else {
+      /* Have moof but can't do key-units mode, just download until the end */
+      stream->fragment.chunk_size = -1;
+    }
+  } else {
+    /* We might've decided that we can't allow key-unit only
+     * trickmodes while doing chunked downloading. In that case
+     * just download from here to the end now */
+    if (dashstream->moof
+        && (GST_ADAPTIVE_DEMUX (stream->demux)->
+            segment.flags & GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS))
+      stream->fragment.chunk_size = -1;
+    else
+      stream->fragment.chunk_size = 0;
+  }
+
+  return stream->fragment.chunk_size != 0;
+}
+
+static GstBuffer *
+gst_dash_demux_parse_isobmff (GstAdaptiveDemux * demux,
+    GstDashDemuxStream * dash_stream, GstBuffer * buffer)
+{
+  GstAdaptiveDemuxStream *stream = (GstAdaptiveDemuxStream *) dash_stream;
+  gsize available;
+  guint index_header_or_data;
+  GstMapInfo map;
+  GstByteReader reader;
+  guint32 fourcc;
+  guint header_size;
+  guint64 size, buffer_offset;
+
+  /* This must not be called when we're in the mdat. We only look at the mdat
+   * header and then stop parsing the boxes as we're only interested in the
+   * metadata! Handling mdat is the job of the surrounding code, as well as
+   * stopping or starting the next fragment when mdat is over (=> sidx)
+   */
+  g_assert (dash_stream->isobmff_parser.current_fourcc !=
+      GST_ISOFF_FOURCC_MDAT);
+
+  if (stream->downloading_index)
+    index_header_or_data = 1;
+  else if (stream->downloading_header)
+    index_header_or_data = 2;
+  else
+    index_header_or_data = 3;
+
+  if (dash_stream->isobmff_parser.index_header_or_data != index_header_or_data) {
+    /* Clear pending data */
+    if (gst_adapter_available (dash_stream->isobmff_adapter) != 0)
+      GST_ERROR_OBJECT (stream->pad,
+          "Had pending ISOBMFF data after switch between index/header/data");
+    gst_adapter_clear (dash_stream->isobmff_adapter);
+    dash_stream->isobmff_parser.current_fourcc = 0;
+    dash_stream->isobmff_parser.current_start_offset = 0;
+    dash_stream->isobmff_parser.current_offset = -1;
+    dash_stream->isobmff_parser.current_size = 0;
+    dash_stream->isobmff_parser.index_header_or_data = index_header_or_data;
+  }
+
+  if (dash_stream->isobmff_parser.current_offset == -1) {
+    dash_stream->isobmff_parser.current_offset =
+        GST_BUFFER_OFFSET_IS_VALID (buffer) ? GST_BUFFER_OFFSET (buffer) : 0;
+  }
+
+  gst_adapter_push (dash_stream->isobmff_adapter, buffer);
+
+  available = gst_adapter_available (dash_stream->isobmff_adapter);
+  buffer = gst_adapter_take_buffer (dash_stream->isobmff_adapter, available);
+  buffer_offset = dash_stream->isobmff_parser.current_offset;
+
+  /* Always at the start of a box here */
+  g_assert (dash_stream->isobmff_parser.current_size == 0);
+
+  /* At the start of a box => Parse it */
+  gst_buffer_map (buffer, &map, GST_MAP_READ);
+  gst_byte_reader_init (&reader, map.data, map.size);
+
+  /* While there are more boxes left to parse ... */
+  dash_stream->isobmff_parser.current_start_offset =
+      dash_stream->isobmff_parser.current_offset;
+  do {
+    dash_stream->isobmff_parser.current_fourcc = 0;
+    dash_stream->isobmff_parser.current_size = 0;
+
+    if (!gst_isoff_parse_box_header (&reader, &fourcc, NULL, &header_size,
+            &size)) {
+      break;
+    }
+
+    dash_stream->isobmff_parser.current_fourcc = fourcc;
+    if (size == 0) {
+      /* We assume this is mdat, anything else with "size until end"
+       * does not seem to make sense */
+      g_assert (dash_stream->isobmff_parser.current_fourcc ==
+          GST_ISOFF_FOURCC_MDAT);
+      dash_stream->isobmff_parser.current_size = -1;
+      break;
+    }
+
+    dash_stream->isobmff_parser.current_size = size;
+
+    /* Do we have the complete box or are at MDAT */
+    if (gst_byte_reader_get_remaining (&reader) < size - header_size ||
+        dash_stream->isobmff_parser.current_fourcc == GST_ISOFF_FOURCC_MDAT) {
+      /* Reset byte reader to the beginning of the box */
+      gst_byte_reader_set_pos (&reader,
+          gst_byte_reader_get_pos (&reader) - header_size);
+      break;
+    }
+
+    GST_LOG_OBJECT (stream->pad,
+        "box %" GST_FOURCC_FORMAT " at offset %" G_GUINT64_FORMAT " size %"
+        G_GUINT64_FORMAT, GST_FOURCC_ARGS (fourcc),
+        dash_stream->isobmff_parser.current_offset +
+        gst_byte_reader_get_pos (&reader) - header_size, size);
+
+    if (dash_stream->isobmff_parser.current_fourcc == GST_ISOFF_FOURCC_MOOF) {
+      GstByteReader sub_reader;
+
+      g_assert (dash_stream->moof == NULL);
+      g_assert (dash_stream->moof_sync_samples == NULL);
+      gst_byte_reader_get_sub_reader (&reader, &sub_reader, size - header_size);
+      dash_stream->moof = gst_isoff_moof_box_parse (&sub_reader);
+      dash_stream->moof_offset =
+          dash_stream->isobmff_parser.current_start_offset;
+      dash_stream->moof_size = size;
+      dash_stream->current_sync_sample = -1;
+
+      if (dash_stream->moof_average_size) {
+        if (dash_stream->moof_average_size < size)
+          dash_stream->moof_average_size =
+              (size * 3 + dash_stream->moof_average_size) / 4;
+        else
+          dash_stream->moof_average_size =
+              (size + dash_stream->moof_average_size + 3) / 4;
+      } else {
+        dash_stream->moof_average_size = size;
+      }
+    } else {
+      gst_byte_reader_skip (&reader, size - header_size);
+    }
+
+    dash_stream->isobmff_parser.current_fourcc = 0;
+    dash_stream->isobmff_parser.current_start_offset += size;
+    dash_stream->isobmff_parser.current_size = 0;
+  } while (gst_byte_reader_get_remaining (&reader) > 0);
+
+  gst_buffer_unmap (buffer, &map);
+
+  /* mdat? Push all we have and wait for it to be over */
+  if (dash_stream->isobmff_parser.current_fourcc == GST_ISOFF_FOURCC_MDAT) {
+    GstBuffer *pending;
+
+    GST_LOG_OBJECT (stream->pad,
+        "box %" GST_FOURCC_FORMAT " at offset %" G_GUINT64_FORMAT " size %"
+        G_GUINT64_FORMAT, GST_FOURCC_ARGS (fourcc),
+        dash_stream->isobmff_parser.current_offset +
+        gst_byte_reader_get_pos (&reader) - header_size,
+        dash_stream->isobmff_parser.current_size);
+
+    /* At mdat. Move the start of the mdat to the adapter and have everything
+     * else be pushed. We parsed all header boxes at this point and are not
+     * supposed to be called again until the next moof */
+    pending = _gst_buffer_split (buffer, gst_byte_reader_get_pos (&reader), -1);
+    gst_adapter_push (dash_stream->isobmff_adapter, pending);
+    dash_stream->isobmff_parser.current_offset +=
+        gst_byte_reader_get_pos (&reader);
+    dash_stream->isobmff_parser.current_size = 0;
+
+    GST_BUFFER_OFFSET (buffer) = buffer_offset;
+    GST_BUFFER_OFFSET_END (buffer) =
+        buffer_offset + gst_buffer_get_size (buffer);
+    return buffer;
+  } else if (gst_byte_reader_get_pos (&reader) != 0) {
+    GstBuffer *pending;
+
+    /* Multiple complete boxes and no mdat? Push them and keep the remainder,
+     * which is the start of the next box if any remainder */
+
+    pending = _gst_buffer_split (buffer, gst_byte_reader_get_pos (&reader), -1);
+    gst_adapter_push (dash_stream->isobmff_adapter, pending);
+    dash_stream->isobmff_parser.current_offset +=
+        gst_byte_reader_get_pos (&reader);
+    dash_stream->isobmff_parser.current_size = 0;
+
+    GST_BUFFER_OFFSET (buffer) = buffer_offset;
+    GST_BUFFER_OFFSET_END (buffer) =
+        buffer_offset + gst_buffer_get_size (buffer);
+    return buffer;
+  }
+
+  /* Not even a single complete, non-mdat box, wait */
+  dash_stream->isobmff_parser.current_size = 0;
+  gst_adapter_push (dash_stream->isobmff_adapter, buffer);
+
+  return NULL;
+}
+
+static gboolean
+gst_dash_demux_find_sync_samples (GstAdaptiveDemux * demux,
     GstAdaptiveDemuxStream * stream)
 {
+  GstDashDemux *dashdemux = (GstDashDemux *) stream->demux;
+  GstDashDemuxStream *dash_stream = (GstDashDemuxStream *) stream;
+  guint i;
+  guint32 track_id = 0;
+  guint64 prev_traf_end;
+  gboolean trex_sample_flags = FALSE;
+
+  if (!dash_stream->moof) {
+    dashdemux->allow_trickmode_key_units = FALSE;
+    return FALSE;
+  }
+
+  dash_stream->current_sync_sample = -1;
+  dash_stream->moof_sync_samples =
+      g_array_new (FALSE, FALSE, sizeof (GstDashStreamSyncSample));
+
+  prev_traf_end = dash_stream->moof_offset;
+
+  /* generate table of keyframes and offsets */
+  for (i = 0; i < dash_stream->moof->traf->len; i++) {
+    GstTrafBox *traf = &g_array_index (dash_stream->moof->traf, GstTrafBox, i);
+    guint64 traf_offset = 0, prev_trun_end;
+    guint j;
+
+    if (i == 0) {
+      track_id = traf->tfhd.track_id;
+    } else if (track_id != traf->tfhd.track_id) {
+      GST_ERROR_OBJECT (stream->pad,
+          "moof with trafs of different track ids (%u != %u)", track_id,
+          traf->tfhd.track_id);
+      g_array_free (dash_stream->moof_sync_samples, TRUE);
+      dash_stream->moof_sync_samples = NULL;
+      dashdemux->allow_trickmode_key_units = FALSE;
+      return FALSE;
+    }
+
+    if (traf->tfhd.flags & GST_TFHD_FLAGS_BASE_DATA_OFFSET_PRESENT) {
+      traf_offset = traf->tfhd.base_data_offset;
+    } else if (traf->tfhd.flags & GST_TFHD_FLAGS_DEFAULT_BASE_IS_MOOF) {
+      traf_offset = dash_stream->moof_offset;
+    } else {
+      traf_offset = prev_traf_end;
+    }
+
+    prev_trun_end = traf_offset;
+
+    for (j = 0; j < traf->trun->len; j++) {
+      GstTrunBox *trun = &g_array_index (traf->trun, GstTrunBox, j);
+      guint64 trun_offset, prev_sample_end;
+      guint k;
+
+      if (trun->flags & GST_TRUN_FLAGS_DATA_OFFSET_PRESENT) {
+        trun_offset = traf_offset + trun->data_offset;
+      } else {
+        trun_offset = prev_trun_end;
+      }
+
+      prev_sample_end = trun_offset;
+      for (k = 0; k < trun->samples->len; k++) {
+        GstTrunSample *sample =
+            &g_array_index (trun->samples, GstTrunSample, k);
+        guint64 sample_offset;
+        guint32 sample_flags;
+#if 0
+        guint32 sample_duration;
+#endif
+
+        sample_offset = prev_sample_end;
+
+        if (trun->flags & GST_TRUN_FLAGS_SAMPLE_FLAGS_PRESENT) {
+          sample_flags = sample->sample_flags;
+        } else if ((trun->flags & GST_TRUN_FLAGS_FIRST_SAMPLE_FLAGS_PRESENT)
+            && k == 0) {
+          sample_flags = trun->first_sample_flags;
+        } else if (traf->
+            tfhd.flags & GST_TFHD_FLAGS_DEFAULT_SAMPLE_FLAGS_PRESENT) {
+          sample_flags = traf->tfhd.default_sample_flags;
+        } else {
+          trex_sample_flags = TRUE;
+          continue;
+        }
+
+#if 0
+        if (trun->flags & GST_TRUN_FLAGS_SAMPLE_DURATION_PRESENT) {
+          sample_duration = sample->sample_duration;
+        } else if (traf->
+            tfhd.flags & GST_TFHD_FLAGS_DEFAULT_SAMPLE_DURATION_PRESENT) {
+          sample_duration = traf->tfhd.default_sample_duration;
+        } else {
+          GST_FIXME_OBJECT (stream->pad,
+              "Sample duration given by trex - can't download only keyframes");
+          g_array_free (dash_stream->moof_sync_samples, TRUE);
+          dash_stream->moof_sync_samples = NULL;
+          return FALSE;
+        }
+#endif
+
+        if (trun->flags & GST_TRUN_FLAGS_SAMPLE_SIZE_PRESENT) {
+          prev_sample_end += sample->sample_size;
+        } else if (traf->
+            tfhd.flags & GST_TFHD_FLAGS_DEFAULT_SAMPLE_SIZE_PRESENT) {
+          prev_sample_end += traf->tfhd.default_sample_size;
+        } else {
+          GST_FIXME_OBJECT (stream->pad,
+              "Sample size given by trex - can't download only keyframes");
+          g_array_free (dash_stream->moof_sync_samples, TRUE);
+          dash_stream->moof_sync_samples = NULL;
+          dashdemux->allow_trickmode_key_units = FALSE;
+          return FALSE;
+        }
+
+        /* Non-non-sync sample aka sync sample */
+        if (!GST_ISOFF_SAMPLE_FLAGS_SAMPLE_IS_NON_SYNC_SAMPLE (sample_flags) ||
+            GST_ISOFF_SAMPLE_FLAGS_SAMPLE_DEPENDS_ON (sample_flags) == 2) {
+          GstDashStreamSyncSample sync_sample =
+              { sample_offset, prev_sample_end - 1 };
+          /* TODO: need timestamps so we can decide to download or not */
+          g_array_append_val (dash_stream->moof_sync_samples, sync_sample);
+        }
+      }
+
+      prev_trun_end = prev_sample_end;
+    }
+
+    prev_traf_end = prev_trun_end;
+  }
+
+  if (trex_sample_flags) {
+    if (dash_stream->moof_sync_samples->len > 0) {
+      GST_LOG_OBJECT (stream->pad,
+          "Some sample flags given by trex but still found sync samples");
+    } else {
+      GST_FIXME_OBJECT (stream->pad,
+          "Sample flags given by trex - can't download only keyframes");
+      g_array_free (dash_stream->moof_sync_samples, TRUE);
+      dash_stream->moof_sync_samples = NULL;
+      dashdemux->allow_trickmode_key_units = FALSE;
+      return FALSE;
+    }
+  }
+
+  if (dash_stream->moof_sync_samples->len == 0) {
+    GST_LOG_OBJECT (stream->pad, "No sync samples found in fragment");
+    g_array_free (dash_stream->moof_sync_samples, TRUE);
+    dash_stream->moof_sync_samples = NULL;
+    dashdemux->allow_trickmode_key_units = FALSE;
+    return FALSE;
+  }
+
+  {
+    GstDashStreamSyncSample *sync_sample =
+        &g_array_index (dash_stream->moof_sync_samples, GstDashStreamSyncSample,
+        0);
+    guint size = sync_sample->end_offset + 1 - sync_sample->start_offset;
+
+    if (dash_stream->first_sync_sample_average_size) {
+      if (dash_stream->first_sync_sample_average_size < size)
+        dash_stream->first_sync_sample_average_size =
+            (size * 3 + dash_stream->first_sync_sample_average_size) / 4;
+      else
+        dash_stream->first_sync_sample_average_size =
+            (size + dash_stream->first_sync_sample_average_size * 3) / 4;
+    } else {
+      dash_stream->first_sync_sample_average_size = size;
+    }
+
+    if (dash_stream->moof_offset + dash_stream->moof_size + 8 <
+        sync_sample->start_offset) {
+      dash_stream->first_sync_sample_after_moof = FALSE;
+      dash_stream->first_sync_sample_always_after_moof = FALSE;
+    } else {
+      dash_stream->first_sync_sample_after_moof =
+          (dash_stream->moof_sync_samples->len == 1
+          || demux->segment.rate > 0.0);
+    }
+  }
+
+  return TRUE;
+}
+
+
+static GstFlowReturn
+gst_dash_demux_handle_isobmff_buffer (GstAdaptiveDemux * demux,
+    GstAdaptiveDemuxStream * stream, GstBuffer * buffer)
+{
   GstDashDemuxStream *dash_stream = (GstDashDemuxStream *) stream;
   GstDashDemux *dashdemux = GST_DASH_DEMUX_CAST (demux);
   GstFlowReturn ret = GST_FLOW_OK;
-  GstBuffer *buffer;
-  gsize available;
 
-  if (!gst_mpd_client_has_isoff_ondemand_profile (dashdemux->client))
-    return GST_ADAPTIVE_DEMUX_CLASS (parent_class)->data_received (demux,
-        stream);
+  if (dashdemux->allow_trickmode_key_units) {
+    if (dash_stream->isobmff_parser.current_fourcc != GST_ISOFF_FOURCC_MDAT) {
+      buffer = gst_dash_demux_parse_isobmff (demux, dash_stream, buffer);
+
+      if (buffer
+          && (ret =
+              gst_adaptive_demux_stream_push_buffer (stream,
+                  buffer)) != GST_FLOW_OK)
+        return ret;
+      if (dash_stream->isobmff_parser.current_fourcc != GST_ISOFF_FOURCC_MDAT)
+        return ret;
+
+      /* Jump to the next sync sample. As we're doing chunked downloading
+       * here, just drop data until our chunk is over so we can reuse the
+       * HTTP connection instead of having to create a new one or
+       * reuse the data if the sync sample follows the moof */
+      if (dash_stream->active_stream->mimeType == GST_STREAM_VIDEO
+          && gst_dash_demux_find_sync_samples (demux, stream) &&
+          GST_ADAPTIVE_DEMUX (stream->demux)->
+          segment.flags & GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS) {
+
+        if (dash_stream->first_sync_sample_after_moof) {
+          /* If we're here, don't throw away data but collect sync
+           * sample while we're at it below. We're doing chunked
+           * downloading so might need to adjust the next chunk size for
+           * the remainder */
+          dash_stream->current_sync_sample = 0;
+        } else {
+          gst_adapter_clear (dash_stream->isobmff_adapter);
+        }
+      }
+
+      if (gst_adapter_available (dash_stream->isobmff_adapter) == 0)
+        return ret;
+
+      /* We have some data from the mdat available in the adapter, handle it
+       * below in the push code */
+      buffer =
+          gst_adapter_take_buffer (dash_stream->isobmff_adapter,
+          gst_adapter_available (dash_stream->isobmff_adapter));
+    } else {
+      if (dash_stream->isobmff_parser.current_offset == -1) {
+        dash_stream->isobmff_parser.current_offset =
+            GST_BUFFER_OFFSET_IS_VALID (buffer) ? GST_BUFFER_OFFSET (buffer) :
+            0;
+      }
+    }
+
+    /* At mdat and isobmff and trick modes are allowed */
+
+    /* We're actually running in key-units trick mode */
+    if (dash_stream->active_stream->mimeType == GST_STREAM_VIDEO
+        && dash_stream->moof_sync_samples
+        && GST_ADAPTIVE_DEMUX (stream->demux)->
+        segment.flags & GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS) {
+
+      if (dash_stream->current_sync_sample == -1) {
+        /* We're doing chunked downloading and wait for finishing the current
+         * chunk so we can jump to the first keyframe */
+        gst_buffer_unref (buffer);
+        return GST_FLOW_OK;
+      } else if (dash_stream->first_sync_sample_after_moof
+          && dash_stream->current_sync_sample == 0) {
+        GstDashStreamSyncSample *sync_sample =
+            &g_array_index (dash_stream->moof_sync_samples,
+            GstDashStreamSyncSample, 0);
+        guint64 end_offset =
+            dash_stream->isobmff_parser.current_offset +
+            gst_buffer_get_size (buffer);
+
+        /* If the first keyframe follows directly the moof and we're
+         * downloading it here, make sure to not download too much */
+
+        if (end_offset > sync_sample->end_offset + 1) {
+          guint64 remaining =
+              sync_sample->end_offset + 1 -
+              dash_stream->isobmff_parser.current_offset;
+
+          if (remaining) {
+            GstBuffer *sub =
+                gst_buffer_copy_region (buffer, GST_BUFFER_COPY_ALL, 0,
+                remaining);
+            gst_buffer_unref (buffer);
+            buffer = sub;
+          } else {
+            gst_buffer_unref (buffer);
+            return GST_FLOW_OK;
+          }
+        }
+      }
+    }
+
+    GST_BUFFER_OFFSET (buffer) = dash_stream->isobmff_parser.current_offset;
+    dash_stream->isobmff_parser.current_offset += gst_buffer_get_size (buffer);
+    GST_BUFFER_OFFSET_END (buffer) = dash_stream->isobmff_parser.current_offset;
+  }
+
+  return gst_adaptive_demux_stream_push_buffer (stream, buffer);
+}
+
+static GstFlowReturn
+gst_dash_demux_data_received (GstAdaptiveDemux * demux,
+    GstAdaptiveDemuxStream * stream, GstBuffer * buffer)
+{
+  GstDashDemuxStream *dash_stream = (GstDashDemuxStream *) stream;
+  GstDashDemux *dashdemux = GST_DASH_DEMUX_CAST (demux);
+  GstFlowReturn ret = GST_FLOW_OK;
+  guint index_header_or_data;
+
+  if (!gst_mpd_client_has_isoff_ondemand_profile (dashdemux->client)) {
+    if (dash_stream->is_isobmff)
+      return gst_dash_demux_handle_isobmff_buffer (demux, stream, buffer);
+    else
+      return gst_adaptive_demux_stream_push_buffer (stream, buffer);
+  }
+
+  if (stream->downloading_index)
+    index_header_or_data = 1;
+  else if (stream->downloading_header)
+    index_header_or_data = 2;
+  else
+    index_header_or_data = 3;
+
+  if (dash_stream->sidx_index_header_or_data != index_header_or_data) {
+    /* Clear pending data */
+    if (gst_adapter_available (dash_stream->sidx_adapter) != 0)
+      GST_ERROR_OBJECT (stream->pad,
+          "Had pending SIDX data after switch between index/header/data");
+    gst_adapter_clear (dash_stream->sidx_adapter);
+    dash_stream->sidx_index_header_or_data = index_header_or_data;
+    dash_stream->sidx_current_offset = -1;
+  }
+
+  if (dash_stream->sidx_current_offset == -1)
+    dash_stream->sidx_current_offset =
+        GST_BUFFER_OFFSET_IS_VALID (buffer) ? GST_BUFFER_OFFSET (buffer) : 0;
+
+  gst_adapter_push (dash_stream->sidx_adapter, buffer);
+  buffer = NULL;
 
   if (stream->downloading_index) {
     GstIsoffParserResult res;
     guint consumed;
+    gsize available;
 
-    available = gst_adapter_available (stream->adapter);
-    buffer = gst_adapter_take_buffer (stream->adapter, available);
+    available = gst_adapter_available (dash_stream->sidx_adapter);
+    buffer = gst_adapter_take_buffer (dash_stream->sidx_adapter, available);
 
     if (dash_stream->sidx_parser.status != GST_ISOFF_SIDX_PARSER_FINISHED) {
       res =
@@ -1666,52 +2570,97 @@
           } else {
             SIDX (dash_stream)->entry_index = dash_stream->sidx_index;
           }
-          dash_stream->sidx_current_remaining =
-              SIDX_CURRENT_ENTRY (dash_stream)->size;
         } else if (consumed < available) {
           GstBuffer *pending;
           /* we still need to keep some data around for the next parsing round
            * so just push what was already processed by the parser */
           pending = _gst_buffer_split (buffer, consumed, -1);
-          gst_adapter_push (stream->adapter, pending);
+          gst_adapter_push (dash_stream->sidx_adapter, pending);
         }
       }
     }
+    GST_BUFFER_OFFSET (buffer) = dash_stream->sidx_current_offset;
+    GST_BUFFER_OFFSET_END (buffer) =
+        GST_BUFFER_OFFSET (buffer) + gst_buffer_get_size (buffer);
+    dash_stream->sidx_current_offset = GST_BUFFER_OFFSET_END (buffer);
     ret = gst_adaptive_demux_stream_push_buffer (stream, buffer);
   } else if (dash_stream->sidx_parser.status == GST_ISOFF_SIDX_PARSER_FINISHED) {
+    gsize available;
 
     while (ret == GST_FLOW_OK
-        && ((available = gst_adapter_available (stream->adapter)) > 0)) {
+        && ((available =
+                gst_adapter_available (dash_stream->sidx_adapter)) > 0)) {
       gboolean advance = FALSE;
+      guint64 sidx_end_offset =
+          dash_stream->sidx_base_offset +
+          SIDX_CURRENT_ENTRY (dash_stream)->offset +
+          SIDX_CURRENT_ENTRY (dash_stream)->size;
 
-      if (available < dash_stream->sidx_current_remaining) {
-        buffer = gst_adapter_take_buffer (stream->adapter, available);
-        dash_stream->sidx_current_remaining -= available;
+      if (dash_stream->sidx_current_offset + available < sidx_end_offset) {
+        buffer = gst_adapter_take_buffer (dash_stream->sidx_adapter, available);
       } else {
-        buffer =
-            gst_adapter_take_buffer (stream->adapter,
-            dash_stream->sidx_current_remaining);
-        dash_stream->sidx_current_remaining = 0;
-        advance = TRUE;
+        /* In key-units mode, we advance the fragments manually once the
+         * current key-unit is over but throw away all data that is after
+         * the current sidx entry end */
+        if (dash_stream->moof_sync_samples
+            && (GST_ADAPTIVE_DEMUX (stream->demux)->
+                segment.flags & GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS)) {
+          if (sidx_end_offset <= dash_stream->sidx_current_offset) {
+            buffer = NULL;
+            gst_adapter_clear (dash_stream->sidx_adapter);
+          } else {
+            buffer =
+                gst_adapter_take_buffer (dash_stream->sidx_adapter,
+                sidx_end_offset - dash_stream->sidx_current_offset);
+          }
+        } else {
+          buffer =
+              gst_adapter_take_buffer (dash_stream->sidx_adapter,
+              sidx_end_offset - dash_stream->sidx_current_offset);
+          advance = TRUE;
+        }
       }
-      ret = gst_adaptive_demux_stream_push_buffer (stream, buffer);
-      if (advance) {
-        GstFlowReturn new_ret;
-        new_ret =
-            gst_adaptive_demux_stream_advance_fragment (demux, stream,
-            SIDX_CURRENT_ENTRY (dash_stream)->duration);
 
-        /* only overwrite if it was OK before */
-        if (ret == GST_FLOW_OK)
-          ret = new_ret;
+      if (buffer != NULL) {
+        GST_BUFFER_OFFSET (buffer) = dash_stream->sidx_current_offset;
+        GST_BUFFER_OFFSET_END (buffer) =
+            GST_BUFFER_OFFSET (buffer) + gst_buffer_get_size (buffer);
+        dash_stream->sidx_current_offset = GST_BUFFER_OFFSET_END (buffer);
+
+        if (dash_stream->is_isobmff)
+          ret = gst_dash_demux_handle_isobmff_buffer (demux, stream, buffer);
+        else
+          ret = gst_adaptive_demux_stream_push_buffer (stream, buffer);
+
+        if (!(dash_stream->moof_sync_samples
+                && (GST_ADAPTIVE_DEMUX (stream->demux)->
+                    segment.flags & GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS))
+            && advance) {
+          GstFlowReturn new_ret;
+          new_ret =
+              gst_adaptive_demux_stream_advance_fragment (demux, stream,
+              SIDX_CURRENT_ENTRY (dash_stream)->duration);
+
+          /* only overwrite if it was OK before */
+          if (ret == GST_FLOW_OK)
+            ret = new_ret;
+        }
       }
     }
   } else {
     /* this should be the main header, just push it all */
-    ret =
-        gst_adaptive_demux_stream_push_buffer (stream,
-        gst_adapter_take_buffer (stream->adapter,
-            gst_adapter_available (stream->adapter)));
+    buffer = gst_adapter_take_buffer (dash_stream->sidx_adapter,
+        gst_adapter_available (dash_stream->sidx_adapter));
+
+    GST_BUFFER_OFFSET (buffer) = dash_stream->sidx_current_offset;
+    GST_BUFFER_OFFSET_END (buffer) =
+        GST_BUFFER_OFFSET (buffer) + gst_buffer_get_size (buffer);
+    dash_stream->sidx_current_offset = GST_BUFFER_OFFSET_END (buffer);
+
+    if (dash_stream->is_isobmff)
+      return gst_dash_demux_handle_isobmff_buffer (demux, stream, buffer);
+    else
+      return gst_adaptive_demux_stream_push_buffer (stream, buffer);
   }
 
   return ret;
@@ -1723,16 +2672,22 @@
   GstDashDemuxStream *dash_stream = (GstDashDemuxStream *) stream;
 
   gst_isoff_sidx_parser_clear (&dash_stream->sidx_parser);
+  if (dash_stream->sidx_adapter)
+    g_object_unref (dash_stream->sidx_adapter);
+  if (dash_stream->isobmff_adapter)
+    g_object_unref (dash_stream->isobmff_adapter);
 }
 
 static GstDashDemuxClockDrift *
-gst_dash_demux_clock_drift_new (void)
+gst_dash_demux_clock_drift_new (GstDashDemux * demux)
 {
   GstDashDemuxClockDrift *clock_drift;
 
   clock_drift = g_slice_new0 (GstDashDemuxClockDrift);
   g_mutex_init (&clock_drift->clock_lock);
-  clock_drift->next_update = g_get_monotonic_time ();
+  clock_drift->next_update =
+      GST_TIME_AS_USECONDS (gst_adaptive_demux_get_monotonic_time
+      (GST_ADAPTIVE_DEMUX_CAST (demux)));
   return clock_drift;
 }
 
@@ -2021,7 +2976,9 @@
   g_return_val_if_fail (demux != NULL, FALSE);
   g_return_val_if_fail (demux->clock_drift != NULL, FALSE);
   clock_drift = demux->clock_drift;
-  now = g_get_monotonic_time ();
+  now =
+      GST_TIME_AS_USECONDS (gst_adaptive_demux_get_monotonic_time
+      (GST_ADAPTIVE_DEMUX_CAST (demux)));
   if (now < clock_drift->next_update) {
     /*TODO: If a fragment fails to download in adaptivedemux, it waits
        for a manifest reload before another attempt to fetch a fragment.
@@ -2051,7 +3008,8 @@
       goto quit;
     }
   }
-  start = g_date_time_new_now_utc ();
+  start =
+      gst_adaptive_demux_get_client_now_utc (GST_ADAPTIVE_DEMUX_CAST (demux));
   if (!value) {
     GstFragment *download;
     gint64 range_start = 0, range_end = -1;
@@ -2079,7 +3037,7 @@
         urls[clock_drift->selected_url]);
     goto quit;
   }
-  end = g_date_time_new_now_utc ();
+  end = gst_adaptive_demux_get_client_now_utc (GST_ADAPTIVE_DEMUX_CAST (demux));
   if (!value && method == GST_MPD_UTCTIMING_TYPE_HTTP_NTP) {
     value = gst_dash_demux_parse_http_ntp (clock_drift, buffer);
   } else if (!value) {
@@ -2156,8 +3114,13 @@
 static GDateTime *
 gst_dash_demux_get_server_now_utc (GstDashDemux * demux)
 {
-  GDateTime *client_now = g_date_time_new_now_utc ();
-  GDateTime *server_now = g_date_time_add (client_now,
+  GDateTime *client_now;
+  GDateTime *server_now;
+
+  client_now =
+      gst_adaptive_demux_get_client_now_utc (GST_ADAPTIVE_DEMUX_CAST (demux));
+  server_now =
+      g_date_time_add (client_now,
       gst_dash_demux_get_clock_compensation (demux));
   g_date_time_unref (client_now);
   return server_now;
diff --git a/ext/dash/gstdashdemux.h b/ext/dash/gstdashdemux.h
index 5ed9620..0757d76 100644
--- a/ext/dash/gstdashdemux.h
+++ b/ext/dash/gstdashdemux.h
@@ -67,11 +67,35 @@
   GstMediaFragmentInfo current_fragment;
 
   /* index parsing */
+  GstAdapter *sidx_adapter;
   GstSidxParser sidx_parser;
-  gsize sidx_current_remaining;
   gint sidx_index;
   gint64 sidx_base_offset;
   GstClockTime pending_seek_ts;
+  /* sidx offset tracking */
+  guint64 sidx_current_offset;
+  /* index = 1, header = 2, data = 3 */
+  guint sidx_index_header_or_data;
+
+  /* ISOBMFF box parsing */
+  gboolean is_isobmff;
+  GstAdapter *isobmff_adapter;
+  struct {
+    /* index = 1, header = 2, data = 3 */
+    guint index_header_or_data;
+    guint32 current_fourcc;
+    guint64 current_start_offset;
+    guint64 current_offset;
+    guint64 current_size;
+  } isobmff_parser;
+
+  GstMoofBox *moof;
+  guint64 moof_offset, moof_size;
+  GArray *moof_sync_samples;
+  guint current_sync_sample;
+
+  guint64 moof_average_size, first_sync_sample_average_size;
+  gboolean first_sync_sample_after_moof, first_sync_sample_always_after_moof;
 };
 
 /**
@@ -96,11 +120,16 @@
   /* Properties */
   GstClockTime max_buffering_time;      /* Maximum buffering time accumulated during playback */
   guint64 max_bitrate;          /* max of bitrate supported by target decoder         */
+  gint max_video_width, max_video_height;
+  gint max_video_framerate_n, max_video_framerate_d;
   gchar* default_presentation_delay; /* presentation time delay if MPD@suggestedPresentationDelay is not present */
 
   gint n_audio_streams;
   gint n_video_streams;
   gint n_subtitle_streams;
+
+  gboolean trickmode_no_audio;
+  gboolean allow_trickmode_key_units;
 };
 
 struct _GstDashDemuxClass
diff --git a/ext/dash/gstisoff.c b/ext/dash/gstisoff.c
index 3c30393..38e3ddc 100644
--- a/ext/dash/gstisoff.c
+++ b/ext/dash/gstisoff.c
@@ -25,6 +25,328 @@
 #include "gstisoff.h"
 #include <gst/base/gstbytereader.h>
 
+#include <string.h>
+
+/* gst_isoff_parse_box:
+ * @reader:
+ * @type: type that was found at the current position
+ * @extended_type: (allow-none): extended type if type=='uuid'
+ * @header_size: (allow-none): size of the box header (type, extended type and size)
+ * @size: size of the complete box including type, extended type and size
+ *
+ * Advances the byte reader to the start of the box content. To skip
+ * over the complete box, skip size - header_size bytes.
+ *
+ * Returns: TRUE if a box header could be parsed, FALSE if more data is needed
+ */
+gboolean
+gst_isoff_parse_box_header (GstByteReader * reader, guint32 * type,
+    guint8 extended_type[16], guint * header_size, guint64 * size)
+{
+  guint header_start_offset;
+  guint32 size_field;
+
+  header_start_offset = gst_byte_reader_get_pos (reader);
+
+  if (gst_byte_reader_get_remaining (reader) < 8)
+    goto not_enough_data;
+
+  size_field = gst_byte_reader_get_uint32_be_unchecked (reader);
+  *type = gst_byte_reader_get_uint32_le_unchecked (reader);
+
+  if (size_field == 1) {
+    if (gst_byte_reader_get_remaining (reader) < 8)
+      goto not_enough_data;
+    *size = gst_byte_reader_get_uint64_be_unchecked (reader);
+  } else {
+    *size = size_field;
+  }
+
+  if (*type == GST_ISOFF_FOURCC_UUID) {
+    if (gst_byte_reader_get_remaining (reader) < 16)
+      goto not_enough_data;
+
+    if (extended_type)
+      memcpy (extended_type, gst_byte_reader_get_data_unchecked (reader, 16),
+          16);
+  }
+
+  if (header_size)
+    *header_size = gst_byte_reader_get_pos (reader) - header_start_offset;
+
+  return TRUE;
+
+not_enough_data:
+  gst_byte_reader_set_pos (reader, header_start_offset);
+  return FALSE;
+}
+
+static void
+gst_isoff_trun_box_clear (GstTrunBox * trun)
+{
+  if (trun->samples)
+    g_array_free (trun->samples, TRUE);
+}
+
+static void
+gst_isoff_traf_box_clear (GstTrafBox * traf)
+{
+  if (traf->trun)
+    g_array_free (traf->trun, TRUE);
+}
+
+static gboolean
+gst_isoff_mfhd_box_parse (GstMfhdBox * mfhd, GstByteReader * reader)
+{
+  guint8 version;
+  guint32 flags;
+
+  if (gst_byte_reader_get_remaining (reader) != 8)
+    return FALSE;
+
+  version = gst_byte_reader_get_uint8_unchecked (reader);
+  if (version != 0)
+    return FALSE;
+
+  flags = gst_byte_reader_get_uint24_be_unchecked (reader);
+  if (flags != 0)
+    return FALSE;
+
+  mfhd->sequence_number = gst_byte_reader_get_uint32_be_unchecked (reader);
+
+  return TRUE;
+}
+
+static gboolean
+gst_isoff_tfhd_box_parse (GstTfhdBox * tfhd, GstByteReader * reader)
+{
+  memset (tfhd, 0, sizeof (*tfhd));
+
+  if (gst_byte_reader_get_remaining (reader) < 4)
+    return FALSE;
+
+  tfhd->version = gst_byte_reader_get_uint8_unchecked (reader);
+  if (tfhd->version != 0)
+    return FALSE;
+
+  tfhd->flags = gst_byte_reader_get_uint24_be_unchecked (reader);
+
+  if (!gst_byte_reader_get_uint32_be (reader, &tfhd->track_id))
+    return FALSE;
+
+  if ((tfhd->flags & GST_TFHD_FLAGS_BASE_DATA_OFFSET_PRESENT) &&
+      !gst_byte_reader_get_uint64_be (reader, &tfhd->base_data_offset))
+    return FALSE;
+
+  if ((tfhd->flags & GST_TFHD_FLAGS_SAMPLE_DESCRIPTION_INDEX_PRESENT) &&
+      !gst_byte_reader_get_uint32_be (reader, &tfhd->sample_description_index))
+    return FALSE;
+
+  if ((tfhd->flags & GST_TFHD_FLAGS_DEFAULT_SAMPLE_DURATION_PRESENT) &&
+      !gst_byte_reader_get_uint32_be (reader, &tfhd->default_sample_duration))
+    return FALSE;
+
+  if ((tfhd->flags & GST_TFHD_FLAGS_DEFAULT_SAMPLE_SIZE_PRESENT) &&
+      !gst_byte_reader_get_uint32_be (reader, &tfhd->default_sample_size))
+    return FALSE;
+
+  if ((tfhd->flags & GST_TFHD_FLAGS_DEFAULT_SAMPLE_FLAGS_PRESENT) &&
+      !gst_byte_reader_get_uint32_be (reader, &tfhd->default_sample_flags))
+    return FALSE;
+
+  return TRUE;
+}
+
+static gboolean
+gst_isoff_trun_box_parse (GstTrunBox * trun, GstByteReader * reader)
+{
+  gint i;
+
+  memset (trun, 0, sizeof (*trun));
+
+  if (gst_byte_reader_get_remaining (reader) < 4)
+    return FALSE;
+
+  trun->version = gst_byte_reader_get_uint8_unchecked (reader);
+  if (trun->version != 0 && trun->version != 1)
+    return FALSE;
+
+  trun->flags = gst_byte_reader_get_uint24_be_unchecked (reader);
+
+  if (!gst_byte_reader_get_uint32_be (reader, &trun->sample_count))
+    return FALSE;
+
+  trun->samples =
+      g_array_sized_new (FALSE, FALSE, sizeof (GstTrunSample),
+      trun->sample_count);
+
+  if ((trun->flags & GST_TRUN_FLAGS_DATA_OFFSET_PRESENT) &&
+      !gst_byte_reader_get_uint32_be (reader, (guint32 *) & trun->data_offset))
+    return FALSE;
+
+  if ((trun->flags & GST_TRUN_FLAGS_FIRST_SAMPLE_FLAGS_PRESENT) &&
+      !gst_byte_reader_get_uint32_be (reader, &trun->first_sample_flags))
+    return FALSE;
+
+  for (i = 0; i < trun->sample_count; i++) {
+    GstTrunSample sample = { 0, };
+
+    if ((trun->flags & GST_TRUN_FLAGS_SAMPLE_DURATION_PRESENT) &&
+        !gst_byte_reader_get_uint32_be (reader, &sample.sample_duration))
+      goto error;
+
+    if ((trun->flags & GST_TRUN_FLAGS_SAMPLE_SIZE_PRESENT) &&
+        !gst_byte_reader_get_uint32_be (reader, &sample.sample_size))
+      goto error;
+
+    if ((trun->flags & GST_TRUN_FLAGS_SAMPLE_FLAGS_PRESENT) &&
+        !gst_byte_reader_get_uint32_be (reader, &sample.sample_flags))
+      goto error;
+
+    if ((trun->flags & GST_TRUN_FLAGS_SAMPLE_COMPOSITION_TIME_OFFSETS_PRESENT)
+        && !gst_byte_reader_get_uint32_be (reader,
+            &sample.sample_composition_time_offset.u))
+      goto error;
+
+    g_array_append_val (trun->samples, sample);
+  }
+
+  return TRUE;
+
+error:
+  gst_isoff_trun_box_clear (trun);
+  return FALSE;
+}
+
+static gboolean
+gst_isoff_traf_box_parse (GstTrafBox * traf, GstByteReader * reader)
+{
+  gboolean had_tfhd = FALSE;
+
+  memset (traf, 0, sizeof (*traf));
+  traf->trun = g_array_new (FALSE, FALSE, sizeof (GstTrunBox));
+  g_array_set_clear_func (traf->trun,
+      (GDestroyNotify) gst_isoff_trun_box_clear);
+
+  while (gst_byte_reader_get_remaining (reader) > 0) {
+    guint32 fourcc;
+    guint header_size;
+    guint64 size;
+
+    if (!gst_isoff_parse_box_header (reader, &fourcc, NULL, &header_size,
+            &size))
+      goto error;
+    if (gst_byte_reader_get_remaining (reader) < size - header_size)
+      goto error;
+
+    switch (fourcc) {
+      case GST_ISOFF_FOURCC_TFHD:{
+        GstByteReader sub_reader;
+
+        gst_byte_reader_get_sub_reader (reader, &sub_reader,
+            size - header_size);
+        if (!gst_isoff_tfhd_box_parse (&traf->tfhd, &sub_reader))
+          goto error;
+        had_tfhd = TRUE;
+        break;
+      }
+      case GST_ISOFF_FOURCC_TRUN:{
+        GstByteReader sub_reader;
+        GstTrunBox trun;
+
+        gst_byte_reader_get_sub_reader (reader, &sub_reader,
+            size - header_size);
+        if (!gst_isoff_trun_box_parse (&trun, &sub_reader))
+          goto error;
+
+        g_array_append_val (traf->trun, trun);
+        break;
+      }
+      default:
+        gst_byte_reader_skip (reader, size - header_size);
+        break;
+    }
+  }
+
+  if (!had_tfhd)
+    goto error;
+
+  return TRUE;
+
+error:
+  gst_isoff_traf_box_clear (traf);
+
+  return FALSE;
+}
+
+GstMoofBox *
+gst_isoff_moof_box_parse (GstByteReader * reader)
+{
+  GstMoofBox *moof;
+  gboolean had_mfhd = FALSE;
+
+  moof = g_new0 (GstMoofBox, 1);
+  moof->traf = g_array_new (FALSE, FALSE, sizeof (GstTrafBox));
+  g_array_set_clear_func (moof->traf,
+      (GDestroyNotify) gst_isoff_traf_box_clear);
+
+  while (gst_byte_reader_get_remaining (reader) > 0) {
+    guint32 fourcc;
+    guint header_size;
+    guint64 size;
+
+    if (!gst_isoff_parse_box_header (reader, &fourcc, NULL, &header_size,
+            &size))
+      goto error;
+    if (gst_byte_reader_get_remaining (reader) < size - header_size)
+      goto error;
+
+    switch (fourcc) {
+      case GST_ISOFF_FOURCC_MFHD:{
+        GstByteReader sub_reader;
+
+        gst_byte_reader_get_sub_reader (reader, &sub_reader,
+            size - header_size);
+        if (!gst_isoff_mfhd_box_parse (&moof->mfhd, &sub_reader))
+          goto error;
+        had_mfhd = TRUE;
+        break;
+      }
+      case GST_ISOFF_FOURCC_TRAF:{
+        GstByteReader sub_reader;
+        GstTrafBox traf;
+
+        gst_byte_reader_get_sub_reader (reader, &sub_reader,
+            size - header_size);
+        if (!gst_isoff_traf_box_parse (&traf, &sub_reader))
+          goto error;
+
+        g_array_append_val (moof->traf, traf);
+        break;
+      }
+      default:
+        gst_byte_reader_skip (reader, size - header_size);
+        break;
+    }
+  }
+
+  if (!had_mfhd)
+    goto error;
+
+  return moof;
+
+error:
+  gst_isoff_moof_box_free (moof);
+  return NULL;
+}
+
+void
+gst_isoff_moof_box_free (GstMoofBox * moof)
+{
+  g_array_free (moof->traf, TRUE);
+  g_free (moof);
+}
+
 void
 gst_isoff_sidx_parser_init (GstSidxParser * parser)
 {
@@ -75,30 +397,27 @@
 
   switch (parser->status) {
     case GST_ISOFF_SIDX_PARSER_INIT:
-      if (gst_byte_reader_get_remaining (&reader) < GST_ISOFF_FULL_BOX_SIZE) {
+      if (!gst_isoff_parse_box_header (&reader, &fourcc, NULL, NULL,
+              &parser->size))
         break;
-      }
 
-      parser->size = gst_byte_reader_get_uint32_be_unchecked (&reader);
-      fourcc = gst_byte_reader_get_uint32_le_unchecked (&reader);
       if (fourcc != GST_ISOFF_FOURCC_SIDX) {
         res = GST_ISOFF_PARSER_UNEXPECTED;
         gst_byte_reader_set_pos (&reader, 0);
         break;
       }
-      if (parser->size == 1) {
-        if (gst_byte_reader_get_remaining (&reader) < 12) {
-          gst_byte_reader_set_pos (&reader, 0);
-          break;
-        }
 
-        parser->size = gst_byte_reader_get_uint64_be_unchecked (&reader);
-      }
       if (parser->size == 0) {
         res = GST_ISOFF_PARSER_ERROR;
         gst_byte_reader_set_pos (&reader, 0);
         break;
       }
+
+      /* Try again once we have enough data for the FullBox header */
+      if (gst_byte_reader_get_remaining (&reader) < 4) {
+        gst_byte_reader_set_pos (&reader, 0);
+        break;
+      }
       parser->sidx.version = gst_byte_reader_get_uint8_unchecked (&reader);
       parser->sidx.flags = gst_byte_reader_get_uint24_le_unchecked (&reader);
 
diff --git a/ext/dash/gstisoff.h b/ext/dash/gstisoff.h
index e535c69..ca7663a 100644
--- a/ext/dash/gstisoff.h
+++ b/ext/dash/gstisoff.h
@@ -26,6 +26,7 @@
 #define __GST_ISOFF_H__
 
 #include <gst/gst.h>
+#include <gst/base/base.h>
 
 G_BEGIN_DECLS
 
@@ -36,11 +37,106 @@
   GST_ISOFF_PARSER_ERROR
 } GstIsoffParserResult;
 
-/* this is the minimum size, it can be larger if it
- * uses extended size or type */
-#define GST_ISOFF_FULL_BOX_SIZE 12
+gboolean gst_isoff_parse_box_header (GstByteReader * reader, guint32 * type, guint8 extended_type[16], guint * header_size, guint64 * size);
 
+#define GST_ISOFF_FOURCC_UUID GST_MAKE_FOURCC('u','u','i','d')
+#define GST_ISOFF_FOURCC_MOOF GST_MAKE_FOURCC('m','o','o','f')
+#define GST_ISOFF_FOURCC_MFHD GST_MAKE_FOURCC('m','f','h','d')
+#define GST_ISOFF_FOURCC_TFHD GST_MAKE_FOURCC('t','f','h','d')
+#define GST_ISOFF_FOURCC_TRUN GST_MAKE_FOURCC('t','r','u','n')
+#define GST_ISOFF_FOURCC_TRAF GST_MAKE_FOURCC('t','r','a','f')
+#define GST_ISOFF_FOURCC_MDAT GST_MAKE_FOURCC('m','d','a','t')
 #define GST_ISOFF_FOURCC_SIDX GST_MAKE_FOURCC('s','i','d','x')
+
+#define GST_ISOFF_SAMPLE_FLAGS_IS_LEADING(flags)                   (((flags) >> 26) & 0x03)
+#define GST_ISOFF_SAMPLE_FLAGS_SAMPLE_DEPENDS_ON(flags)            (((flags) >> 24) & 0x03)
+#define GST_ISOFF_SAMPLE_FLAGS_SAMPLE_IS_DEPENDED_ON(flags)        (((flags) >> 22) & 0x03)
+#define GST_ISOFF_SAMPLE_FLAGS_SAMPLE_HAS_REDUNDANCY(flags)        (((flags) >> 20) & 0x03)
+#define GST_ISOFF_SAMPLE_FLAGS_SAMPLE_PADDING_VALUE(flags)         (((flags) >> 17) & 0x07)
+#define GST_ISOFF_SAMPLE_FLAGS_SAMPLE_IS_NON_SYNC_SAMPLE(flags)    (((flags) >> 16) & 0x01)
+#define GST_ISOFF_SAMPLE_FLAGS_SAMPLE_DEGRADATION_PRIORITY(flags)  (((flags) >>  0) & 0x0f)
+
+typedef struct _GstMfhdBox
+{
+  guint32 sequence_number;
+} GstMfhdBox;
+
+typedef enum
+{
+  GST_TFHD_FLAGS_BASE_DATA_OFFSET_PRESENT         = 0x000001,
+  GST_TFHD_FLAGS_SAMPLE_DESCRIPTION_INDEX_PRESENT = 0x000002,
+  GST_TFHD_FLAGS_DEFAULT_SAMPLE_DURATION_PRESENT  = 0x000008,
+  GST_TFHD_FLAGS_DEFAULT_SAMPLE_SIZE_PRESENT      = 0x000010,
+  GST_TFHD_FLAGS_DEFAULT_SAMPLE_FLAGS_PRESENT     = 0x000020,
+  GST_TFHD_FLAGS_DURATION_IS_EMPTY                = 0x010000,
+  GST_TFHD_FLAGS_DEFAULT_BASE_IS_MOOF             = 0x020000
+} GstTfhdFlags;
+
+typedef struct _GstTfhdBox
+{
+  guint8 version;
+  GstTfhdFlags flags;
+
+  guint32 track_id;
+
+  /* optional */
+  guint64 base_data_offset;
+  guint32 sample_description_index;
+  guint32 default_sample_duration;
+  guint32 default_sample_size;
+  guint32 default_sample_flags;
+} GstTfhdBox;
+
+typedef enum
+{
+  GST_TRUN_FLAGS_DATA_OFFSET_PRESENT                     = 0x000001,
+  GST_TRUN_FLAGS_FIRST_SAMPLE_FLAGS_PRESENT              = 0x000004,
+  GST_TRUN_FLAGS_SAMPLE_DURATION_PRESENT                 = 0x000100,
+  GST_TRUN_FLAGS_SAMPLE_SIZE_PRESENT                     = 0x000200,
+  GST_TRUN_FLAGS_SAMPLE_FLAGS_PRESENT                    = 0x000400,
+  GST_TRUN_FLAGS_SAMPLE_COMPOSITION_TIME_OFFSETS_PRESENT = 0x000800
+} GstTrunFlags;
+
+typedef struct _GstTrunBox
+{
+  guint8 version;
+  GstTrunFlags flags;
+
+  guint32 sample_count;
+
+  /* optional */
+  gint32 data_offset;
+  guint32 first_sample_flags;
+  GArray *samples;
+} GstTrunBox;
+
+typedef struct _GstTrunSample
+{
+  guint32 sample_duration;
+  guint32 sample_size;
+  guint32 sample_flags;
+
+  union {
+    guint32 u; /* version 0 */
+    gint32  s; /* others */
+  } sample_composition_time_offset;
+} GstTrunSample;
+
+typedef struct _GstTrafBox
+{
+  GstTfhdBox tfhd;
+  GArray *trun;
+} GstTrafBox;
+
+typedef struct _GstMoofBox
+{
+  GstMfhdBox mfhd;
+  GArray *traf;
+} GstMoofBox;
+
+GstMoofBox * gst_isoff_moof_box_parse (GstByteReader *reader);
+void gst_isoff_moof_box_free (GstMoofBox *moof);
+
 typedef struct _GstSidxBoxEntry
 {
   gboolean ref_type;
diff --git a/ext/dash/gstmpdparser.c b/ext/dash/gstmpdparser.c
index 778ab2e..10f0149 100644
--- a/ext/dash/gstmpdparser.c
+++ b/ext/dash/gstmpdparser.c
@@ -38,6 +38,8 @@
     gboolean (*validator) (const char *));
 static gboolean gst_mpdparser_get_xml_prop_string (xmlNode * a_node,
     const gchar * property_name, gchar ** property_value);
+static gboolean gst_mpdparser_get_xml_prop_string_stripped (xmlNode * a_node,
+    const gchar * property_name, gchar ** property_value);
 static gboolean gst_mpdparser_get_xml_ns_prop_string (xmlNode * a_node,
     const gchar * ns_name, const gchar * property_name,
     gchar ** property_value);
@@ -311,6 +313,18 @@
 }
 
 static gboolean
+gst_mpdparser_get_xml_prop_string_stripped (xmlNode * a_node,
+    const gchar * property_name, gchar ** property_value)
+{
+  gboolean ret;
+  ret =
+      gst_mpdparser_get_xml_prop_string (a_node, property_name, property_value);
+  if (ret)
+    *property_value = g_strstrip (*property_value);
+  return ret;
+}
+
+static gboolean
 gst_mpdparser_validate_no_whitespace (const char *s)
 {
   return !strpbrk (s, "\r\n\t ");
@@ -1291,7 +1305,7 @@
   *list = g_list_append (*list, new_descriptor);
 
   GST_LOG ("attributes of %s node:", a_node->name);
-  gst_mpdparser_get_xml_prop_string (a_node, "schemeIdUri",
+  gst_mpdparser_get_xml_prop_string_stripped (a_node, "schemeIdUri",
       &new_descriptor->schemeIdUri);
   if (!gst_mpdparser_get_xml_prop_string (a_node, "value",
           &new_descriptor->value)) {
@@ -2439,7 +2453,8 @@
 
 gint
 gst_mpdparser_get_rep_idx_with_max_bandwidth (GList * Representations,
-    gint max_bandwidth)
+    gint max_bandwidth, gint max_video_width, gint max_video_height, gint
+    max_video_framerate_n, gint max_video_framerate_d)
 {
   GList *list = NULL, *best = NULL;
   GstRepresentationNode *representation;
@@ -2454,8 +2469,32 @@
     return gst_mpdparser_get_rep_idx_with_min_bandwidth (Representations);
 
   for (list = g_list_first (Representations); list; list = g_list_next (list)) {
+    GstFrameRate *framerate = NULL;
+
     representation = (GstRepresentationNode *) list->data;
-    if (representation && representation->bandwidth <= max_bandwidth &&
+
+    /* FIXME: Really? */
+    if (!representation)
+      continue;
+
+    framerate = representation->RepresentationBase->frameRate;
+    if (!framerate)
+      framerate = representation->RepresentationBase->maxFrameRate;
+
+    if (framerate && max_video_framerate_n > 0) {
+      if (gst_util_fraction_compare (framerate->num, framerate->den,
+              max_video_framerate_n, max_video_framerate_d) > 0)
+        continue;
+    }
+
+    if (max_video_width > 0
+        && representation->RepresentationBase->width > max_video_width)
+      continue;
+    if (max_video_height > 0
+        && representation->RepresentationBase->height > max_video_height)
+      continue;
+
+    if (representation->bandwidth <= max_bandwidth &&
         representation->bandwidth > best_bandwidth) {
       best = list;
       best_bandwidth = representation->bandwidth;
@@ -4054,18 +4093,47 @@
     }
   }
 
-  /* check duration of last segment */
-  last_media_segment = (stream->segments && stream->segments->len) ?
-      g_ptr_array_index (stream->segments, stream->segments->len - 1) : NULL;
+  /* clip duration of segments to stop at period end */
+  if (stream->segments && stream->segments->len) {
+    if (GST_CLOCK_TIME_IS_VALID (PeriodEnd)) {
+      for (guint n = 0; n < stream->segments->len; ++n) {
+        GstMediaSegment *media_segment =
+            g_ptr_array_index (stream->segments, n);
+        if (media_segment) {
+          if (media_segment->start + media_segment->duration >
+              PeriodEnd - PeriodStart) {
+            GstClockTime stop = PeriodEnd - PeriodStart;
+            if (n < stream->segments->len - 1) {
+              GstMediaSegment *next_segment =
+                  g_ptr_array_index (stream->segments, n + 1);
+              if (next_segment && next_segment->start < PeriodEnd - PeriodStart)
+                stop = next_segment->start;
+            }
+            media_segment->duration =
+                media_segment->start > stop ? 0 : stop - media_segment->start;
+            GST_LOG ("Fixed duration of segment %u: %" GST_TIME_FORMAT, n,
+                GST_TIME_ARGS (media_segment->duration));
 
-  if (last_media_segment && GST_CLOCK_TIME_IS_VALID (PeriodEnd)) {
-    if (last_media_segment->start + last_media_segment->duration > PeriodEnd) {
-      last_media_segment->duration =
-          PeriodEnd - PeriodStart - last_media_segment->start;
-      GST_LOG ("Fixed duration of last segment: %" GST_TIME_FORMAT,
-          GST_TIME_ARGS (last_media_segment->duration));
+            /* If the segment was clipped entirely, we discard it and all
+             * subsequent ones */
+            if (media_segment->duration == 0) {
+              GST_WARNING ("Discarding %u segments outside period",
+                  stream->segments->len - n);
+              /* _set_size should properly unref elements */
+              g_ptr_array_set_size (stream->segments, n);
+              break;
+            }
+          }
+        }
+      }
     }
-    GST_LOG ("Built a list of %d segments", last_media_segment->number);
+    if (stream->segments->len > 0) {
+      last_media_segment =
+          g_ptr_array_index (stream->segments, stream->segments->len - 1);
+      GST_LOG ("Built a list of %d segments", last_media_segment->number);
+    } else {
+      GST_LOG ("All media segments were clipped");
+    }
   }
 
   g_free (stream->baseURL);
@@ -5946,3 +6014,29 @@
   }
   return value;
 }
+
+GstClockTime
+gst_mpd_client_get_maximum_segment_duration (GstMpdClient * client)
+{
+  GstClockTime ret = GST_CLOCK_TIME_NONE, dur;
+  GList *stream;
+
+  g_return_val_if_fail (client != NULL, GST_CLOCK_TIME_NONE);
+  g_return_val_if_fail (client->mpd_node != NULL, GST_CLOCK_TIME_NONE);
+
+  if (client->mpd_node->maxSegmentDuration != GST_MPD_DURATION_NONE) {
+    return client->mpd_node->maxSegmentDuration * GST_MSECOND;
+  }
+
+  /* According to the DASH specification, if maxSegmentDuration is not present:
+     "If not present, then the maximum Segment duration shall be the maximum
+     duration of any Segment documented in this MPD"
+   */
+  for (stream = client->active_streams; stream; stream = g_list_next (stream)) {
+    dur = gst_mpd_client_get_segment_duration (client, stream->data, NULL);
+    if (dur != GST_CLOCK_TIME_NONE && (dur > ret || ret == GST_CLOCK_TIME_NONE)) {
+      ret = dur;
+    }
+  }
+  return ret;
+}
diff --git a/ext/dash/gstmpdparser.h b/ext/dash/gstmpdparser.h
index 1b303aa..85b97ea 100644
--- a/ext/dash/gstmpdparser.h
+++ b/ext/dash/gstmpdparser.h
@@ -538,6 +538,7 @@
 gboolean gst_mpd_client_setup_representation (GstMpdClient *client, GstActiveStream *stream, GstRepresentationNode *representation);
 GstClockTime gst_mpd_client_get_next_fragment_duration (GstMpdClient * client, GstActiveStream * stream);
 GstClockTime gst_mpd_client_get_media_presentation_duration (GstMpdClient *client);
+GstClockTime gst_mpd_client_get_maximum_segment_duration (GstMpdClient * client);
 gboolean gst_mpd_client_get_last_fragment_timestamp_end (GstMpdClient * client, guint stream_idx, GstClockTime * ts);
 gboolean gst_mpd_client_get_next_fragment_timestamp (GstMpdClient * client, guint stream_idx, GstClockTime * ts);
 gboolean gst_mpd_client_get_next_fragment (GstMpdClient *client, guint indexStream, GstMediaFragmentInfo * fragment);
@@ -560,7 +561,7 @@
 gboolean gst_mpd_client_has_previous_period (GstMpdClient * client);
 
 /* Representation selection */
-gint gst_mpdparser_get_rep_idx_with_max_bandwidth (GList *Representations, gint max_bandwidth);
+gint gst_mpdparser_get_rep_idx_with_max_bandwidth (GList *Representations, gint max_bandwidth, gint max_video_width, gint max_video_height, gint max_video_framerate_n, gint max_video_framerate_d);
 gint gst_mpdparser_get_rep_idx_with_min_bandwidth (GList * Representations);
 
 /* URL management */
diff --git a/ext/dc1394/Makefile.am b/ext/dc1394/Makefile.am
index eb1a4f7..985f63d 100644
--- a/ext/dc1394/Makefile.am
+++ b/ext/dc1394/Makefile.am
@@ -1,16 +1,22 @@
+plugin_LTLIBRARIES = \
+    libgstdc1394.la
 
-plugin_LTLIBRARIES =	libgstdc1394.la
+libgstdc1394_la_SOURCES = \
+    gstdc1394src.c
+libgstdc1394_la_CFLAGS = \
+    $(LIBDC1394_CFLAGS) \
+    $(GST_PLUGINS_BASE_CFLAGS) \
+    $(GST_BASE_CFLAGS) \
+    $(GST_CFLAGS)
+libgstdc1394_la_LIBADD = \
+    $(LIBDC1394_LIBS) \
+    $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
+    $(GST_BASE_LIBS) \
+    $(GST_LIBS)
+libgstdc1394_la_LDFLAGS = \
+    $(GST_PLUGIN_LDFLAGS)
+libgstdc1394_la_LIBTOOLFLAGS = \
+    $(GST_PLUGIN_LIBTOOLFLAGS)
 
-libgstdc1394_la_SOURCES =	gstdc1394.c 
-
-
-libgstdc1394_la_CFLAGS = 	$(GST_CFLAGS) \
-				$(LIBDC1394_CFLAGS)
-
-libgstdc1394_la_LDFLAGS = 	$(GST_PLUGIN_LDFLAGS)
-libgstdc1394_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-
-libgstdc1394_la_LIBADD = 	$(GST_BASE_LIBS) \
-				$(LIBDC1394_LIBS) 
-
-noinst_HEADERS = gstdc1394.h
+noinst_HEADERS = \
+    gstdc1394src.h
diff --git a/ext/dc1394/Makefile.in b/ext/dc1394/Makefile.in
index 7f1c184..c085c2f 100644
--- a/ext/dc1394/Makefile.in
+++ b/ext/dc1394/Makefile.in
@@ -164,8 +164,9 @@
 LTLIBRARIES = $(plugin_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 libgstdc1394_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1)
-am_libgstdc1394_la_OBJECTS = libgstdc1394_la-gstdc1394.lo
+am_libgstdc1394_la_OBJECTS = libgstdc1394_la-gstdc1394src.lo
 libgstdc1394_la_OBJECTS = $(am_libgstdc1394_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -302,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -323,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -372,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -517,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -643,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -777,17 +789,33 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 wayland_scanner = @wayland_scanner@
-plugin_LTLIBRARIES = libgstdc1394.la
-libgstdc1394_la_SOURCES = gstdc1394.c 
-libgstdc1394_la_CFLAGS = $(GST_CFLAGS) \
-				$(LIBDC1394_CFLAGS)
+plugin_LTLIBRARIES = \
+    libgstdc1394.la
 
-libgstdc1394_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstdc1394_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-libgstdc1394_la_LIBADD = $(GST_BASE_LIBS) \
-				$(LIBDC1394_LIBS) 
+libgstdc1394_la_SOURCES = \
+    gstdc1394src.c
 
-noinst_HEADERS = gstdc1394.h
+libgstdc1394_la_CFLAGS = \
+    $(LIBDC1394_CFLAGS) \
+    $(GST_PLUGINS_BASE_CFLAGS) \
+    $(GST_BASE_CFLAGS) \
+    $(GST_CFLAGS)
+
+libgstdc1394_la_LIBADD = \
+    $(LIBDC1394_LIBS) \
+    $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
+    $(GST_BASE_LIBS) \
+    $(GST_LIBS)
+
+libgstdc1394_la_LDFLAGS = \
+    $(GST_PLUGIN_LDFLAGS)
+
+libgstdc1394_la_LIBTOOLFLAGS = \
+    $(GST_PLUGIN_LIBTOOLFLAGS)
+
+noinst_HEADERS = \
+    gstdc1394src.h
+
 all: all-am
 
 .SUFFIXES:
@@ -866,7 +894,7 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdc1394_la-gstdc1394.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdc1394_la-gstdc1394src.Plo@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -892,12 +920,12 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
-libgstdc1394_la-gstdc1394.lo: gstdc1394.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdc1394_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdc1394_la_CFLAGS) $(CFLAGS) -MT libgstdc1394_la-gstdc1394.lo -MD -MP -MF $(DEPDIR)/libgstdc1394_la-gstdc1394.Tpo -c -o libgstdc1394_la-gstdc1394.lo `test -f 'gstdc1394.c' || echo '$(srcdir)/'`gstdc1394.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstdc1394_la-gstdc1394.Tpo $(DEPDIR)/libgstdc1394_la-gstdc1394.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstdc1394.c' object='libgstdc1394_la-gstdc1394.lo' libtool=yes @AMDEPBACKSLASH@
+libgstdc1394_la-gstdc1394src.lo: gstdc1394src.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdc1394_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdc1394_la_CFLAGS) $(CFLAGS) -MT libgstdc1394_la-gstdc1394src.lo -MD -MP -MF $(DEPDIR)/libgstdc1394_la-gstdc1394src.Tpo -c -o libgstdc1394_la-gstdc1394src.lo `test -f 'gstdc1394src.c' || echo '$(srcdir)/'`gstdc1394src.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstdc1394_la-gstdc1394src.Tpo $(DEPDIR)/libgstdc1394_la-gstdc1394src.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstdc1394src.c' object='libgstdc1394_la-gstdc1394src.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdc1394_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdc1394_la_CFLAGS) $(CFLAGS) -c -o libgstdc1394_la-gstdc1394.lo `test -f 'gstdc1394.c' || echo '$(srcdir)/'`gstdc1394.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdc1394_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdc1394_la_CFLAGS) $(CFLAGS) -c -o libgstdc1394_la-gstdc1394src.lo `test -f 'gstdc1394src.c' || echo '$(srcdir)/'`gstdc1394src.c
 
 mostlyclean-libtool:
 	-rm -f *.lo
diff --git a/ext/dc1394/gstdc1394.c b/ext/dc1394/gstdc1394.c
deleted file mode 100644
index 4a403b4..0000000
--- a/ext/dc1394/gstdc1394.c
+++ /dev/null
@@ -1,1335 +0,0 @@
-/* GStreamer
- * Copyright (C) <2006> Eric Jonas <jonas@mit.edu>
- * Copyright (C) <2006> Antoine Tremblay <hexa00@gmail.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-/**
- * SECTION:element-dc1394
- *
- * Source for IIDC (Instrumentation & Industrial Digital Camera) firewire
- * cameras.
- * 
- * <refsect2>
- * <title>Example launch line</title>
- * |[
- * gst-launch -v dc1394 camera-number=0 ! xvimagesink
- * ]|
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include "gstdc1394.h"
-#include <sys/time.h>
-#include <time.h>
-#include <string.h>
-
-GST_DEBUG_CATEGORY (dc1394_debug);
-#define GST_CAT_DEFAULT dc1394_debug
-
-enum
-{
-  PROP_0,
-  PROP_TIMESTAMP_OFFSET,
-  PROP_CAMNUM,
-  PROP_BUFSIZE,
-  PROP_ISO_SPEED
-      /* FILL ME */
-};
-
-
-GST_BOILERPLATE (GstDc1394, gst_dc1394, GstPushSrc, GST_TYPE_PUSH_SRC);
-
-static void gst_dc1394_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec);
-static void gst_dc1394_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec);
-
-static GstCaps *gst_dc1394_getcaps (GstBaseSrc * bsrc);
-static gboolean gst_dc1394_setcaps (GstBaseSrc * bsrc, GstCaps * caps);
-static void gst_dc1394_src_fixate (GstPad * pad, GstCaps * caps);
-
-static void gst_dc1394_get_times (GstBaseSrc * basesrc,
-    GstBuffer * buffer, GstClockTime * start, GstClockTime * end);
-
-static GstFlowReturn gst_dc1394_create (GstPushSrc * psrc, GstBuffer ** buffer);
-
-static GstStateChangeReturn
-gst_dc1394_change_state (GstElement * element, GstStateChange transition);
-
-static gboolean gst_dc1394_parse_caps (const GstCaps * caps,
-    gint * width,
-    gint * height,
-    gint * rate_numerator, gint * rate_denominator, gint * vmode, gint * bpp);
-
-static gint gst_dc1394_caps_set_format_vmode_caps (GstStructure * st,
-    gint mode);
-static gboolean gst_dc1394_set_caps_color (GstStructure * gs, gint mc);
-static void gst_dc1394_set_caps_framesize (GstStructure * gs, gint width,
-    gint height);
-static void gst_dc1394_set_caps_framesize_range (GstStructure * gs,
-    gint minwidth, gint maxwidth, gint incwidth,
-    gint minheight, gint maxheight, gint incheight);
-
-static gint gst_dc1394_caps_set_framerate_list (GstStructure * gs,
-    dc1394framerates_t * framerates);
-
-static GstCaps *gst_dc1394_get_all_dc1394_caps (void);
-static GstCaps *gst_dc1394_get_cam_caps (GstDc1394 * src);
-static gboolean gst_dc1394_open_cam_with_best_caps (GstDc1394 * src);
-static gint gst_dc1394_framerate_frac_to_const (gint num, gint denom);
-static void gst_dc1394_framerate_const_to_frac (gint framerateconst,
-    GValue * framefrac);
-static gboolean
-gst_dc1394_change_camera_transmission (GstDc1394 * src, gboolean on);
-static gboolean gst_dc1394_query (GstBaseSrc * bsrc, GstQuery * query);
-
-static void
-gst_dc1394_base_init (gpointer g_class)
-{
-  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
-  gst_element_class_set_static_metadata (element_class,
-      "1394 IIDC Video Source", "Source/Video",
-      "libdc1394 based source, supports 1394 IIDC cameras",
-      "Antoine Tremblay <hexa00@gmail.com>");
-
-  gst_element_class_add_pad_template (element_class,
-      gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
-          gst_dc1394_get_all_dc1394_caps ()));
-
-}
-
-static void
-gst_dc1394_class_init (GstDc1394Class * klass)
-{
-  GObjectClass *gobject_class;
-  GstBaseSrcClass *gstbasesrc_class;
-  GstPushSrcClass *gstpushsrc_class;
-  GstElementClass *gstelement_class;
-
-  gobject_class = (GObjectClass *) klass;
-  gstbasesrc_class = (GstBaseSrcClass *) klass;
-  gstpushsrc_class = (GstPushSrcClass *) klass;
-  gstelement_class = (GstElementClass *) klass;
-
-  gobject_class->set_property = gst_dc1394_set_property;
-  gobject_class->get_property = gst_dc1394_get_property;
-
-  g_object_class_install_property (G_OBJECT_CLASS (klass),
-      PROP_TIMESTAMP_OFFSET, g_param_spec_int64 ("timestamp-offset",
-          "Timestamp offset",
-          "An offset added to timestamps set on buffers (in ns)", G_MININT64,
-          G_MAXINT64, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
-  g_object_class_install_property (G_OBJECT_CLASS (klass),
-      PROP_CAMNUM, g_param_spec_int ("camera-number",
-          "The number of the camera on the firewire bus",
-          "The number of the camera on the firewire bus", 0,
-          G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
-  g_object_class_install_property (G_OBJECT_CLASS (klass),
-      PROP_BUFSIZE, g_param_spec_int ("buffer-size",
-          "The number of frames in the dma ringbuffer",
-          "The number of frames in the dma ringbuffer", 1,
-          G_MAXINT, 10, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
-  g_object_class_install_property (G_OBJECT_CLASS (klass),
-      PROP_ISO_SPEED, g_param_spec_int ("iso-speed",
-          "The iso bandwidth in Mbps (100, 200, 400, 800, 1600, 3200)",
-          "The iso bandwidth in Mbps (100, 200, 400, 800, 1600, 3200)", 100,
-          3200, 400, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
-  gstbasesrc_class->get_caps = gst_dc1394_getcaps;
-  gstbasesrc_class->set_caps = gst_dc1394_setcaps;
-  gstbasesrc_class->query = gst_dc1394_query;
-
-  gstbasesrc_class->get_times = gst_dc1394_get_times;
-  gstpushsrc_class->create = gst_dc1394_create;
-
-  gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_dc1394_change_state);
-}
-
-static void
-gst_dc1394_init (GstDc1394 * src, GstDc1394Class * g_class)
-{
-
-  src->segment_start_frame = -1;
-  src->segment_end_frame = -1;
-  src->timestamp_offset = 0;
-  src->caps = gst_dc1394_get_all_dc1394_caps ();
-  src->bufsize = 10;
-  src->iso_speed = 400;
-  src->camnum = 0;
-  src->n_frames = 0;
-
-  gst_pad_set_fixatecaps_function (GST_BASE_SRC_PAD (src),
-      gst_dc1394_src_fixate);
-
-  gst_base_src_set_live (GST_BASE_SRC (src), TRUE);
-}
-
-static void
-gst_dc1394_src_fixate (GstPad * pad, GstCaps * caps)
-{
-
-  GstDc1394 *src = GST_DC1394 (gst_pad_get_parent (pad));
-  GstStructure *structure;
-  int i;
-
-  GST_LOG_OBJECT (src, " fixating caps to closest to 320x240 , 30 fps");
-
-  for (i = 0; i < gst_caps_get_size (caps); ++i) {
-    structure = gst_caps_get_structure (caps, i);
-
-    gst_structure_fixate_field_nearest_int (structure, "width", 320);
-    gst_structure_fixate_field_nearest_int (structure, "height", 240);
-    gst_structure_fixate_field_nearest_fraction (structure, "framerate", 30, 1);
-  }
-  gst_object_unref (GST_OBJECT (src));
-}
-
-static gboolean
-gst_dc1394_query (GstBaseSrc * bsrc, GstQuery * query)
-{
-  gboolean res = TRUE;
-  GstDc1394 *src = GST_DC1394 (bsrc);
-
-  switch (GST_QUERY_TYPE (query)) {
-    case GST_QUERY_LATENCY:
-    {
-      GstClockTime min_latency, max_latency;
-
-      if (!src->camera) {
-        GST_WARNING_OBJECT (src,
-            "Can't give latency since device isn't open !");
-        res = FALSE;
-        goto done;
-      }
-
-      if (src->rate_denominator <= 0 || src->rate_numerator <= 0) {
-        GST_WARNING_OBJECT (bsrc,
-            "Can't give latency since framerate isn't fixated !");
-        res = FALSE;
-        goto done;
-      }
-
-      /* min latency is the time to capture one frame */
-      min_latency = gst_util_uint64_scale (GST_SECOND,
-          src->rate_denominator, src->rate_numerator);
-
-      /* max latency is total duration of the frame buffer */
-      max_latency = gst_util_uint64_scale (src->bufsize,
-          GST_SECOND * src->rate_denominator, src->rate_numerator);
-
-      GST_DEBUG_OBJECT (bsrc,
-          "report latency min %" GST_TIME_FORMAT " max %" GST_TIME_FORMAT,
-          GST_TIME_ARGS (min_latency), GST_TIME_ARGS (max_latency));
-
-      /* we are always live, the min latency is 1 frame and the max latency is
-       * the complete buffer of frames. */
-      gst_query_set_latency (query, TRUE, min_latency, max_latency);
-
-      res = TRUE;
-      break;
-    }
-    default:
-      res = GST_BASE_SRC_CLASS (parent_class)->query (bsrc, query);
-      break;
-  }
-
-done:
-  return res;
-}
-
-static void
-gst_dc1394_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec)
-{
-  GstDc1394 *src = GST_DC1394 (object);
-
-  switch (prop_id) {
-    case PROP_TIMESTAMP_OFFSET:
-      src->timestamp_offset = g_value_get_int64 (value);
-      break;
-    case PROP_CAMNUM:
-      src->camnum = g_value_get_int (value);
-      break;
-    case PROP_BUFSIZE:
-      src->bufsize = g_value_get_int (value);
-      break;
-    case PROP_ISO_SPEED:
-      switch (g_value_get_int (value)) {
-        case 100:
-        case 200:
-        case 300:
-        case 400:
-        case 800:
-        case 1600:
-        case 3200:
-          // fallthrough
-          src->iso_speed = g_value_get_int (value);
-          break;
-        default:
-          g_warning ("%s: Invalid iso speed %d, ignoring",
-              GST_ELEMENT_NAME (src), g_value_get_int (value));
-          break;
-      }
-    default:
-      break;
-  }
-}
-
-static void
-gst_dc1394_get_property (GObject * object, guint prop_id, GValue * value,
-    GParamSpec * pspec)
-{
-  GstDc1394 *src = GST_DC1394 (object);
-
-  switch (prop_id) {
-    case PROP_TIMESTAMP_OFFSET:
-      g_value_set_int64 (value, src->timestamp_offset);
-      break;
-    case PROP_CAMNUM:
-      g_value_set_int (value, src->camnum);
-      break;
-    case PROP_BUFSIZE:
-      g_value_set_int (value, src->bufsize);
-      break;
-    case PROP_ISO_SPEED:
-      g_value_set_int (value, src->iso_speed);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
-}
-
-static GstCaps *
-gst_dc1394_getcaps (GstBaseSrc * bsrc)
-{
-  GstDc1394 *gsrc;
-
-  gsrc = GST_DC1394 (bsrc);
-
-  g_return_val_if_fail (gsrc->caps, NULL);
-
-  return gst_caps_copy (gsrc->caps);
-}
-
-static gboolean
-gst_dc1394_setcaps (GstBaseSrc * bsrc, GstCaps * caps)
-{
-  gboolean res = TRUE;
-  GstDc1394 *dc1394;
-  gint width, height, rate_denominator, rate_numerator;
-  gint bpp, vmode;
-
-  dc1394 = GST_DC1394 (bsrc);
-
-  if (dc1394->caps) {
-    gst_caps_unref (dc1394->caps);
-  }
-
-  dc1394->caps = gst_caps_copy (caps);
-
-  res = gst_dc1394_parse_caps (caps, &width, &height,
-      &rate_numerator, &rate_denominator, &vmode, &bpp);
-
-  if (res) {
-    /* looks ok here */
-    dc1394->width = width;
-    dc1394->height = height;
-    dc1394->vmode = vmode;
-    dc1394->rate_numerator = rate_numerator;
-    dc1394->rate_denominator = rate_denominator;
-    dc1394->bpp = bpp;
-  }
-
-  return res;
-}
-
-static void
-gst_dc1394_get_times (GstBaseSrc * basesrc, GstBuffer * buffer,
-    GstClockTime * start, GstClockTime * end)
-{
-  /* for live sources, sync on the timestamp of the buffer */
-  if (gst_base_src_is_live (basesrc)) {
-    GstClockTime timestamp = GST_BUFFER_TIMESTAMP (buffer);
-
-    if (GST_CLOCK_TIME_IS_VALID (timestamp)) {
-      /* get duration to calculate end time */
-      GstClockTime duration = GST_BUFFER_DURATION (buffer);
-
-      if (GST_CLOCK_TIME_IS_VALID (duration)) {
-        *end = timestamp + duration;
-      }
-      *start = timestamp;
-    }
-  } else {
-    *start = -1;
-    *end = -1;
-  }
-}
-
-static GstFlowReturn
-gst_dc1394_create (GstPushSrc * psrc, GstBuffer ** buffer)
-{
-  GstDc1394 *src;
-  GstBuffer *outbuf;
-  GstCaps *caps;
-  dc1394video_frame_t *frame[1];
-  GstFlowReturn res = GST_FLOW_OK;
-  dc1394error_t err;
-
-  src = GST_DC1394 (psrc);
-
-  err = dc1394_capture_dequeue (src->camera, DC1394_CAPTURE_POLICY_WAIT, frame);
-
-  if (err != DC1394_SUCCESS) {
-    GST_ELEMENT_ERROR (src, RESOURCE, FAILED,
-        ("failed to dequeue frame"), ("failed to dequeue frame"));
-    goto error;
-  }
-
-  outbuf = gst_buffer_new_and_alloc (frame[0]->image_bytes);
-
-  memcpy (GST_BUFFER_MALLOCDATA (outbuf), (guchar *) frame[0]->image,
-      frame[0]->image_bytes * sizeof (guchar));
-
-  GST_BUFFER_DATA (outbuf) = GST_BUFFER_MALLOCDATA (outbuf);
-
-  caps = gst_pad_get_caps (GST_BASE_SRC_PAD (psrc));
-  gst_buffer_set_caps (outbuf, caps);
-  gst_caps_unref (caps);
-
-  GST_BUFFER_TIMESTAMP (outbuf) = src->timestamp_offset + src->running_time;
-  if (src->rate_numerator != 0) {
-    GST_BUFFER_DURATION (outbuf) = gst_util_uint64_scale_int (GST_SECOND,
-        src->rate_denominator, src->rate_numerator);
-  }
-
-  src->n_frames++;
-  if (src->rate_numerator != 0) {
-    src->running_time = gst_util_uint64_scale_int (src->n_frames * GST_SECOND,
-        src->rate_denominator, src->rate_numerator);
-  }
-
-  if (dc1394_capture_enqueue (src->camera, frame[0]) != DC1394_SUCCESS) {
-    GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("failed to enqueue frame"),
-        ("failed to enqueue frame"));
-    goto error;
-  }
-
-  *buffer = outbuf;
-
-  return res;
-
-error:
-  {
-    return GST_FLOW_ERROR;
-  }
-}
-
-
-static gboolean
-gst_dc1394_parse_caps (const GstCaps * caps,
-    gint * width,
-    gint * height,
-    gint * rate_numerator, gint * rate_denominator, gint * vmode, gint * bpp)
-{
-  const GstStructure *structure;
-  GstPadLinkReturn ret;
-  const GValue *framerate;
-
-  if (gst_caps_get_size (caps) < 1)
-    return FALSE;
-
-  structure = gst_caps_get_structure (caps, 0);
-
-  ret = gst_structure_get_int (structure, "width", width);
-  ret &= gst_structure_get_int (structure, "height", height);
-
-  framerate = gst_structure_get_value (structure, "framerate");
-
-  ret &= gst_structure_get_int (structure, "vmode", vmode);
-
-  ret &= gst_structure_get_int (structure, "bpp", bpp);
-
-
-  if (framerate) {
-    *rate_numerator = gst_value_get_fraction_numerator (framerate);
-    *rate_denominator = gst_value_get_fraction_denominator (framerate);
-  } else {
-    ret = FALSE;
-  }
-
-  return ret;
-}
-
-static GstStateChangeReturn
-gst_dc1394_change_state (GstElement * element, GstStateChange transition)
-{
-  GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
-  GstDc1394 *src = GST_DC1394 (element);
-
-  switch (transition) {
-    case GST_STATE_CHANGE_NULL_TO_READY:
-      GST_LOG_OBJECT (src, "State change null to ready");
-      src->dc1394 = dc1394_new ();
-      break;
-    case GST_STATE_CHANGE_READY_TO_PAUSED:
-      GST_LOG_OBJECT (src, "State ready to paused");
-
-      if (src->caps) {
-        gst_caps_unref (src->caps);
-        src->caps = NULL;
-      }
-      src->caps = gst_dc1394_get_cam_caps (src);
-      if (src->caps == NULL) {
-        GST_LOG_OBJECT (src,
-            "Error : Set property  could not get cam caps ! , reverting to default");
-        src->caps = gst_dc1394_get_all_dc1394_caps ();
-        ret = GST_STATE_CHANGE_FAILURE;
-      }
-
-      break;
-    case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
-      GST_LOG_OBJECT (src, "State change paused to playing");
-
-      if (!gst_dc1394_open_cam_with_best_caps (src)) {
-        ret = GST_STATE_CHANGE_FAILURE;
-      }
-
-      if (src->camera && !gst_dc1394_change_camera_transmission (src, TRUE)) {
-        ret = GST_STATE_CHANGE_FAILURE;
-      }
-
-      break;
-    default:
-      break;
-  }
-  if (ret == GST_STATE_CHANGE_FAILURE)
-    return ret;
-
-  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
-
-  switch (transition) {
-    case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
-      GST_LOG_OBJECT (src, "State change playing to paused");
-      break;
-    case GST_STATE_CHANGE_PAUSED_TO_READY:
-      GST_LOG_OBJECT (src, "State change paused to ready");
-
-      if (src->camera && !gst_dc1394_change_camera_transmission (src, FALSE)) {
-
-        if (src->camera) {
-          dc1394_camera_free (src->camera);
-        }
-        src->camera = NULL;
-
-        if (src->caps) {
-          gst_caps_unref (src->caps);
-          src->caps = NULL;
-        }
-
-        ret = GST_STATE_CHANGE_FAILURE;
-      }
-
-      break;
-    case GST_STATE_CHANGE_READY_TO_NULL:
-      GST_LOG_OBJECT (src, "State change ready to null");
-      if (src->camera) {
-        dc1394_camera_free (src->camera);
-      }
-      src->camera = NULL;
-
-      if (src->dc1394) {
-        dc1394_free (src->dc1394);
-      }
-      src->dc1394 = NULL;
-
-      if (src->caps) {
-        gst_caps_unref (src->caps);
-        src->caps = NULL;
-      }
-      break;
-    default:
-      break;
-  }
-
-  return ret;
-}
-
-
-static gint
-gst_dc1394_caps_set_format_vmode_caps (GstStructure * gs, gint mode)
-{
-  gint retval = 0;
-
-  switch (mode) {
-    case DC1394_VIDEO_MODE_160x120_YUV444:
-      gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_YUV444);
-      gst_dc1394_set_caps_framesize (gs, 160, 120);
-      break;
-    case DC1394_VIDEO_MODE_320x240_YUV422:
-      gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_YUV422);
-      gst_dc1394_set_caps_framesize (gs, 320, 240);
-      break;
-    case DC1394_VIDEO_MODE_640x480_YUV411:
-      gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_YUV411);
-      gst_dc1394_set_caps_framesize (gs, 640, 480);
-      break;
-    case DC1394_VIDEO_MODE_640x480_YUV422:
-      gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_YUV422);
-      gst_dc1394_set_caps_framesize (gs, 640, 480);
-      break;
-    case DC1394_VIDEO_MODE_640x480_RGB8:
-      gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_RGB8);
-      gst_dc1394_set_caps_framesize (gs, 640, 480);
-      break;
-    case DC1394_VIDEO_MODE_640x480_MONO8:
-      gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_MONO8);
-      gst_dc1394_set_caps_framesize (gs, 640, 480);
-      break;
-    case DC1394_VIDEO_MODE_640x480_MONO16:
-      gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_MONO16);
-      gst_dc1394_set_caps_framesize (gs, 640, 480);
-      break;
-    case DC1394_VIDEO_MODE_800x600_YUV422:
-      gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_YUV422);
-      gst_dc1394_set_caps_framesize (gs, 800, 600);
-      break;
-    case DC1394_VIDEO_MODE_800x600_RGB8:
-      gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_RGB8);
-      gst_dc1394_set_caps_framesize (gs, 800, 600);
-      break;
-    case DC1394_VIDEO_MODE_800x600_MONO8:
-      gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_MONO8);
-      gst_dc1394_set_caps_framesize (gs, 800, 600);
-      break;
-    case DC1394_VIDEO_MODE_1024x768_YUV422:
-      gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_YUV422);
-      gst_dc1394_set_caps_framesize (gs, 1024, 768);
-      break;
-    case DC1394_VIDEO_MODE_1024x768_RGB8:
-      gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_RGB8);
-      gst_dc1394_set_caps_framesize (gs, 1024, 768);
-      break;
-    case DC1394_VIDEO_MODE_1024x768_MONO8:
-      gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_MONO8);
-      gst_dc1394_set_caps_framesize (gs, 1024, 768);
-      break;
-    case DC1394_VIDEO_MODE_800x600_MONO16:
-      gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_MONO16);
-      gst_dc1394_set_caps_framesize (gs, 800, 600);
-      break;
-    case DC1394_VIDEO_MODE_1024x768_MONO16:
-      gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_MONO16);
-      gst_dc1394_set_caps_framesize (gs, 1024, 768);
-      break;
-    case DC1394_VIDEO_MODE_1280x960_YUV422:
-      gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_YUV422);
-      gst_dc1394_set_caps_framesize (gs, 1280, 960);
-      break;
-    case DC1394_VIDEO_MODE_1280x960_RGB8:
-      gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_RGB8);
-      gst_dc1394_set_caps_framesize (gs, 1280, 960);
-      break;
-    case DC1394_VIDEO_MODE_1280x960_MONO8:
-      gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_MONO8);
-      gst_dc1394_set_caps_framesize (gs, 1280, 960);
-      break;
-    case DC1394_VIDEO_MODE_1600x1200_YUV422:
-      gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_YUV422);
-      gst_dc1394_set_caps_framesize (gs, 1600, 1200);
-      break;
-    case DC1394_VIDEO_MODE_1600x1200_RGB8:
-      gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_RGB8);
-      gst_dc1394_set_caps_framesize (gs, 1600, 1200);
-      break;
-    case DC1394_VIDEO_MODE_1600x1200_MONO8:
-      gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_MONO8);
-      gst_dc1394_set_caps_framesize (gs, 1600, 1200);
-      break;
-    case DC1394_VIDEO_MODE_1280x960_MONO16:
-      gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_MONO16);
-      gst_dc1394_set_caps_framesize (gs, 1280, 960);
-      break;
-    case DC1394_VIDEO_MODE_1600x1200_MONO16:
-      gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_MONO8);
-      gst_dc1394_set_caps_framesize (gs, 1600, 1200);
-      break;
-
-    default:
-      retval = -1;
-  }
-
-  return retval;
-
-}
-
-
-static gboolean
-gst_dc1394_set_caps_color (GstStructure * gs, gint mc)
-{
-  gboolean ret = TRUE;
-  gint fourcc;
-
-  switch (mc) {
-    case DC1394_COLOR_CODING_YUV444:
-      gst_structure_set_name (gs, "video/x-raw-yuv");
-
-      fourcc = GST_MAKE_FOURCC ('I', 'Y', 'U', '2');
-      gst_structure_set (gs,
-          "format", GST_TYPE_FOURCC, fourcc, "bpp", G_TYPE_INT, 16, NULL);
-      break;
-
-    case DC1394_COLOR_CODING_YUV422:
-      gst_structure_set_name (gs, "video/x-raw-yuv");
-      fourcc = GST_MAKE_FOURCC ('U', 'Y', 'V', 'Y');
-      gst_structure_set (gs,
-          "format", GST_TYPE_FOURCC, fourcc, "bpp", G_TYPE_INT, 16, NULL);
-      break;
-
-    case DC1394_COLOR_CODING_YUV411:
-      gst_structure_set_name (gs, "video/x-raw-yuv");
-      fourcc = GST_MAKE_FOURCC ('I', 'Y', 'U', '1');
-      gst_structure_set (gs,
-          "format", GST_TYPE_FOURCC, fourcc, "bpp", G_TYPE_INT, 12, NULL);
-      break;
-    case DC1394_COLOR_CODING_RGB8:
-      gst_structure_set_name (gs, "video/x-raw-rgb");
-      gst_structure_set (gs,
-          "bpp", G_TYPE_INT, 24,
-          "depth", G_TYPE_INT, 24,
-          "endianness", G_TYPE_INT, G_BIG_ENDIAN,
-          "red_mask", G_TYPE_INT, 0xFF0000,
-          "green_mask", G_TYPE_INT, 0x00FF00,
-          "blue_mask", G_TYPE_INT, 0x0000FF, NULL);
-      break;
-    case DC1394_COLOR_CODING_MONO8:
-      gst_structure_set_name (gs, "video/x-raw-gray");
-      gst_structure_set (gs,
-          "bpp", G_TYPE_INT, 8, "depth", G_TYPE_INT, 8, NULL);
-
-      break;
-    case DC1394_COLOR_CODING_MONO16:
-      gst_structure_set_name (gs, "video/x-raw-gray");
-      gst_structure_set (gs,
-          "bpp", G_TYPE_INT, 16, "depth", G_TYPE_INT, 16, NULL);
-      // there is no fourcc for this format
-      break;
-    default:
-      GST_DEBUG ("Ignoring unsupported color format %d", mc);
-      ret = FALSE;
-      break;
-  }
-  return ret;
-}
-
-
-static void
-gst_dc1394_set_caps_framesize (GstStructure * gs, gint width, gint height)
-{
-  gst_structure_set (gs,
-      "width", G_TYPE_INT, width, "height", G_TYPE_INT, height, NULL);
-}
-
-static void
-gst_dc1394_set_caps_framesize_range (GstStructure * gs,
-    gint minwidth,
-    gint maxwidth,
-    gint incwidth, gint minheight, gint maxheight, gint incheight)
-{
-  /* 
-     Format 7 cameras allow you to change the camera width/height in multiples
-     of incwidth/incheight up to some max. This sets the necessary
-     list structure in the gst caps structure
-   */
-
-  GValue widthlist = { 0 };
-  GValue widthval = { 0 };
-  GValue heightlist = { 0 };
-  GValue heightval = { 0 };
-  gint x = 0;
-
-  g_value_init (&widthlist, GST_TYPE_LIST);
-  g_value_init (&widthval, G_TYPE_INT);
-  for (x = minwidth; x <= maxwidth; x += incwidth) {
-    g_value_set_int (&widthval, x);
-    gst_value_list_append_value (&widthlist, &widthval);
-  }
-  gst_structure_set_value (gs, "width", &widthlist);
-
-  g_value_unset (&widthlist);
-  g_value_unset (&widthval);
-
-  g_value_init (&heightlist, GST_TYPE_LIST);
-  g_value_init (&heightval, G_TYPE_INT);
-  for (x = minheight; x <= maxheight; x += incheight) {
-    g_value_set_int (&heightval, x);
-    gst_value_list_append_value (&heightlist, &heightval);
-  }
-
-  gst_structure_set_value (gs, "height", &heightlist);
-
-  g_value_unset (&heightlist);
-  g_value_unset (&heightval);
-}
-
-
-static gint
-gst_dc1394_caps_set_framerate_list (GstStructure * gs,
-    dc1394framerates_t * framerates)
-{
-  GValue framefrac = { 0 };
-  GValue frameratelist = { 0 };
-  gint f;
-
-  g_value_init (&frameratelist, GST_TYPE_LIST);
-  g_value_init (&framefrac, GST_TYPE_FRACTION);
-
-  // figure out the frame rate
-  for (f = framerates->num - 1; f >= 0; f--) {
-    /* reverse order so we place the faster frame rates higher in 
-       the sequence */
-    if (framerates->framerates[f]) {
-      gst_dc1394_framerate_const_to_frac (framerates->framerates[f],
-          &framefrac);
-
-      gst_value_list_append_value (&frameratelist, &framefrac);
-    }
-  }
-  gst_structure_set_value (gs, "framerate", &frameratelist);
-
-  g_value_unset (&framefrac);
-  g_value_unset (&frameratelist);
-  return 0;
-}
-
-
-
-static void
-gst_dc1394_framerate_const_to_frac (gint framerateconst, GValue * framefrac)
-{
-
-  // frac must have been already initialized
-
-  switch (framerateconst) {
-    case DC1394_FRAMERATE_1_875:
-      gst_value_set_fraction (framefrac, 15, 8);
-      break;
-    case DC1394_FRAMERATE_3_75:
-      gst_value_set_fraction (framefrac, 15, 4);
-      break;
-    case DC1394_FRAMERATE_7_5:
-      gst_value_set_fraction (framefrac, 15, 2);
-      break;
-    case DC1394_FRAMERATE_15:
-      gst_value_set_fraction (framefrac, 15, 1);
-      break;
-    case DC1394_FRAMERATE_30:
-      gst_value_set_fraction (framefrac, 30, 1);
-      break;
-    case DC1394_FRAMERATE_60:
-      gst_value_set_fraction (framefrac, 60, 1);
-      break;
-    case DC1394_FRAMERATE_120:
-      gst_value_set_fraction (framefrac, 120, 1);
-      break;
-    case DC1394_FRAMERATE_240:
-      gst_value_set_fraction (framefrac, 240, 1);
-      break;
-  }
-}
-
-static GstCaps *
-gst_dc1394_get_all_dc1394_caps (void)
-{
-  /* 
-     generate all possible caps
-
-   */
-
-  GstCaps *gcaps;
-  gint i = 0;
-
-  gcaps = gst_caps_new_empty ();
-  // first, the fixed mode caps
-  for (i = DC1394_VIDEO_MODE_MIN; i < DC1394_VIDEO_MODE_EXIF; i++) {
-    GstStructure *gs = gst_structure_empty_new ("video");
-    gint ret = gst_dc1394_caps_set_format_vmode_caps (gs, i);
-
-    gst_structure_set (gs,
-        "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, G_MAXINT, 1, NULL);
-    gst_structure_set (gs, "vmode", G_TYPE_INT, i, NULL);
-    if (ret >= 0) {
-      gst_caps_append_structure (gcaps, gs);
-    }
-  }
-
-  // then Format 7 options
-
-  for (i = DC1394_COLOR_CODING_MIN; i <= DC1394_COLOR_CODING_MAX; i++) {
-    GstStructure *gs = gst_structure_empty_new ("video");
-
-    //int ret =  gst_dc1394_caps_set_format_vmode_caps(gs, i); 
-
-    gst_structure_set (gs, "vmode", GST_TYPE_INT_RANGE, 1, G_MAXINT, NULL);
-
-    gst_structure_set (gs,
-        "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, G_MAXINT, 1, NULL);
-    gst_structure_set (gs,
-        "width", GST_TYPE_INT_RANGE, 1, G_MAXINT,
-        "height", GST_TYPE_INT_RANGE, 1, G_MAXINT, NULL);
-
-    if (gst_dc1394_set_caps_color (gs, i)) {
-      gst_caps_append_structure (gcaps, gs);
-    }
-  }
-  return gcaps;
-
-}
-
-GstCaps *
-gst_dc1394_get_cam_caps (GstDc1394 * src)
-{
-
-  dc1394camera_t *camera = NULL;
-  dc1394camera_list_t *cameras = NULL;
-  dc1394error_t camerr;
-  gint i, j;
-  dc1394video_modes_t modes;
-  dc1394framerates_t framerates;
-  GstCaps *gcaps = NULL;
-
-  gcaps = gst_caps_new_empty ();
-
-  camerr = dc1394_camera_enumerate (src->dc1394, &cameras);
-
-  if (camerr != DC1394_SUCCESS || cameras == NULL) {
-    GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND,
-        ("Can't find cameras error : %d", camerr),
-        ("Can't find cameras error : %d", camerr));
-    goto error;
-  }
-
-  if (cameras->num == 0) {
-    GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND, ("There were no cameras"),
-        ("There were no cameras"));
-    goto error;
-  }
-
-  if (src->camnum > (cameras->num - 1)) {
-    GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Invalid camera number"),
-        ("Invalid camera number %d", src->camnum));
-    goto error;
-  }
-
-  camera =
-      dc1394_camera_new_unit (src->dc1394, cameras->ids[src->camnum].guid,
-      cameras->ids[src->camnum].unit);
-
-  dc1394_camera_free_list (cameras);
-  cameras = NULL;
-
-  camerr = dc1394_video_get_supported_modes (camera, &modes);
-  if (camerr != DC1394_SUCCESS) {
-    GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Error getting supported modes"),
-        ("Error getting supported modes"));
-    goto error;
-  }
-
-  for (i = modes.num - 1; i >= 0; i--) {
-    int m = modes.modes[i];
-
-    if (m < DC1394_VIDEO_MODE_EXIF) {
-
-      GstStructure *gs = gst_structure_empty_new ("video");
-
-      gst_structure_set (gs, "vmode", G_TYPE_INT, m, NULL);
-
-      if (gst_dc1394_caps_set_format_vmode_caps (gs, m) < 0) {
-        GST_ELEMENT_ERROR (src, STREAM, FAILED,
-            ("attempt to set mode to %d failed", m),
-            ("attempt to set mode to %d failed", m));
-        goto error;
-      } else {
-
-        camerr = dc1394_video_get_supported_framerates (camera, m, &framerates);
-        gst_dc1394_caps_set_framerate_list (gs, &framerates);
-        gst_caps_append_structure (gcaps, gs);
-
-      }
-    } else {
-      // FORMAT 7
-      guint maxx, maxy;
-      GstStructure *gs = gst_structure_empty_new ("video");
-      dc1394color_codings_t colormodes;
-      guint xunit, yunit;
-
-      gst_structure_set (gs, "vmode", G_TYPE_INT, m, NULL);
-
-      // Get the maximum frame size
-      camerr = dc1394_format7_get_max_image_size (camera, m, &maxx, &maxy);
-      if (camerr != DC1394_SUCCESS) {
-        GST_ELEMENT_ERROR (src, RESOURCE, FAILED,
-            ("Error getting format 7 max image size"),
-            ("Error getting format 7 max image size"));
-        goto error;
-      }
-      GST_LOG_OBJECT (src, "Format 7 maxx=%d maxy=%d", maxx, maxy);
-
-      camerr = dc1394_format7_get_unit_size (camera, m, &xunit, &yunit);
-      if (camerr != DC1394_SUCCESS) {
-        GST_ELEMENT_ERROR (src, RESOURCE, FAILED,
-            ("Error getting format 7 image unit size"),
-            ("Error getting format 7 image unit size"));
-        goto error;
-      }
-      GST_LOG_OBJECT (src, "Format 7 unitx=%d unity=%d", xunit, yunit);
-
-      gst_dc1394_set_caps_framesize_range (gs, xunit, maxx, xunit,
-          yunit, maxy, yunit);
-
-      // note that format 7 has no concept of a framerate, so we pass the 
-      // full range
-      gst_structure_set (gs,
-          "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, G_MAXINT, 1, NULL);
-
-      // get the available color codings
-      camerr = dc1394_format7_get_color_codings (camera, m, &colormodes);
-      if (camerr != DC1394_SUCCESS) {
-        GST_ELEMENT_ERROR (src, RESOURCE, FAILED,
-            ("Error getting format 7 color modes"),
-            ("Error getting format 7 color modes"));
-        goto error;
-      }
-
-      for (j = 0; j < colormodes.num; j++) {
-        GstStructure *newgs = gst_structure_copy (gs);
-
-        gst_dc1394_set_caps_color (newgs, colormodes.codings[j]);
-        GST_LOG_OBJECT (src, "Format 7 colormode set : %d",
-            colormodes.codings[j]);
-        // note that since there are multiple color modes, we append
-        // multiple structures.
-        gst_caps_append_structure (gcaps, newgs);
-      }
-    }
-  }
-
-  if (camera) {
-    dc1394_camera_free (camera);
-  }
-
-  return gcaps;
-
-error:
-
-  if (gcaps) {
-    gst_caps_unref (gcaps);
-  }
-
-  if (cameras) {
-    dc1394_camera_free_list (cameras);
-    cameras = NULL;
-  }
-
-  if (camera) {
-    dc1394_camera_free (camera);
-    camera = NULL;
-  }
-
-  return NULL;
-}
-
-static gint
-gst_dc1394_framerate_frac_to_const (gint num, gint denom)
-{
-  // frac must have been already initialized
-  int retvalue = -1;
-
-  if (num == 15 && denom == 8)
-    retvalue = DC1394_FRAMERATE_1_875;
-
-  if (num == 15 && denom == 4)
-    retvalue = DC1394_FRAMERATE_3_75;
-
-  if (num == 15 && denom == 2)
-    retvalue = DC1394_FRAMERATE_7_5;
-
-  if (num == 15 && denom == 1)
-    retvalue = DC1394_FRAMERATE_15;
-
-
-  if (num == 30 && denom == 1)
-    retvalue = DC1394_FRAMERATE_30;
-
-  if (num == 60 && denom == 1)
-    retvalue = DC1394_FRAMERATE_60;
-
-  return retvalue;
-}
-
-
-static gboolean
-gst_dc1394_open_cam_with_best_caps (GstDc1394 * src)
-{
-  dc1394camera_list_t *cameras = NULL;
-  gint err = 0;
-  int framerateconst;
-
-  GST_LOG_OBJECT (src, "Opening the camera!!!");
-
-
-  if (dc1394_camera_enumerate (src->dc1394, &cameras) != DC1394_SUCCESS) {
-    GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Can't find cameras"),
-        ("Can't find cameras"));
-    goto error;
-  }
-
-  GST_LOG_OBJECT (src, "Found  %d  cameras", cameras->num);
-
-  if (src->camnum > (cameras->num - 1)) {
-    GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Invalid camera number"),
-        ("Invalid camera number"));
-    goto error;
-  }
-
-  GST_LOG_OBJECT (src, "Opening camera : %d", src->camnum);
-
-  src->camera =
-      dc1394_camera_new_unit (src->dc1394, cameras->ids[src->camnum].guid,
-      cameras->ids[src->camnum].unit);
-
-  dc1394_camera_free_list (cameras);
-  cameras = NULL;
-
-  // figure out mode
-  framerateconst = gst_dc1394_framerate_frac_to_const (src->rate_numerator,
-      src->rate_denominator);
-
-  GST_LOG_OBJECT (src, "The dma buffer queue size is %d  buffers",
-      src->bufsize);
-
-  switch (src->iso_speed) {
-    case 100:
-      err = dc1394_video_set_iso_speed (src->camera, DC1394_ISO_SPEED_100);
-      break;
-    case 200:
-      err = dc1394_video_set_iso_speed (src->camera, DC1394_ISO_SPEED_200);
-      break;
-    case 400:
-      err = dc1394_video_set_iso_speed (src->camera, DC1394_ISO_SPEED_400);
-      break;
-    case 800:
-      if (src->camera->bmode_capable > 0) {
-        dc1394_video_set_operation_mode (src->camera,
-            DC1394_OPERATION_MODE_1394B);
-        err = dc1394_video_set_iso_speed (src->camera, DC1394_ISO_SPEED_800);
-      }
-      break;
-    case 1600:
-      if (src->camera->bmode_capable > 0) {
-        dc1394_video_set_operation_mode (src->camera,
-            DC1394_OPERATION_MODE_1394B);
-        err = dc1394_video_set_iso_speed (src->camera, DC1394_ISO_SPEED_1600);
-      }
-      break;
-    case 3200:
-      if (src->camera->bmode_capable > 0) {
-        dc1394_video_set_operation_mode (src->camera,
-            DC1394_OPERATION_MODE_1394B);
-        err = dc1394_video_set_iso_speed (src->camera, DC1394_ISO_SPEED_3200);
-      }
-      break;
-    default:
-      GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Invalid ISO speed"),
-          ("Invalid ISO speed"));
-      goto error;
-      break;
-  }
-
-  if (err != DC1394_SUCCESS) {
-    GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Could not set ISO speed"),
-        ("Could not set ISO speed"));
-    goto error;
-  }
-
-  GST_LOG_OBJECT (src, "Setting mode :  %d", src->vmode);
-  err = dc1394_video_set_mode (src->camera, src->vmode);
-
-  if (err != DC1394_SUCCESS) {
-    GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Could not set video mode %d",
-            src->vmode), ("Could not set video mode %d", src->vmode));
-    goto error;
-  }
-
-  GST_LOG_OBJECT (src, "Setting framerate :  %d", framerateconst);
-  dc1394_video_set_framerate (src->camera, framerateconst);
-
-  if (err != DC1394_SUCCESS) {
-    GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Could not set framerate to %d",
-            framerateconst), ("Could not set framerate to %d", framerateconst));
-    goto error;
-  }
-  // set any format-7 parameters if this is a format-7 mode
-  if (src->vmode >= DC1394_VIDEO_MODE_FORMAT7_MIN &&
-      src->vmode <= DC1394_VIDEO_MODE_FORMAT7_MAX) {
-    // the big thing we care about right now is frame size
-    err = dc1394_format7_set_image_size (src->camera, src->vmode,
-        src->width, src->height);
-    if (err != DC1394_SUCCESS) {
-      GST_ELEMENT_ERROR (src, RESOURCE, FAILED,
-          ("Could not set format 7 image size to %d x %d", src->width,
-              src->height), ("Could not set format 7 image size to %d x %d",
-              src->width, src->height));
-
-      goto error;
-    }
-
-  }
-  err = dc1394_capture_setup (src->camera, src->bufsize,
-      DC1394_CAPTURE_FLAGS_DEFAULT);
-  if (err != DC1394_SUCCESS) {
-    GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Error setting capture mode"),
-        ("Error setting capture mode"));
-  }
-  if (err != DC1394_SUCCESS) {
-    if (err == DC1394_NO_BANDWIDTH) {
-      GST_LOG_OBJECT (src, "Capture setup_dma failed."
-          "Trying to cleanup the iso_channels_and_bandwidth and retrying");
-
-      // try to cleanup the bandwidth and retry 
-      err = dc1394_iso_release_all (src->camera);
-      if (err != DC1394_SUCCESS) {
-        GST_ELEMENT_ERROR (src, RESOURCE, FAILED,
-            ("Could not cleanup bandwidth"), ("Could not cleanup bandwidth"));
-        goto error;
-      } else {
-        err =
-            dc1394_capture_setup (src->camera, src->bufsize,
-            DC1394_CAPTURE_FLAGS_DEFAULT);
-        if (err != DC1394_SUCCESS) {
-          GST_ELEMENT_ERROR (src, RESOURCE, FAILED,
-              ("unable to setup camera error %d", err),
-              ("unable to setup camera error %d", err));
-          goto error;
-        }
-      }
-    } else {
-      GST_ELEMENT_ERROR (src, RESOURCE, FAILED,
-          ("unable to setup camera error %d", err),
-          ("unable to setup camera error %d", err));
-      goto error;
-
-    }
-  }
-
-
-  return TRUE;
-
-error:
-
-  if (src->camera) {
-    dc1394_camera_free (src->camera);
-    src->camera = NULL;
-  }
-
-  return FALSE;
-
-}
-
-
-gboolean
-gst_dc1394_change_camera_transmission (GstDc1394 * src, gboolean on)
-{
-  dc1394switch_t status = DC1394_OFF;
-  dc1394error_t err = DC1394_FAILURE;
-  gint i = 0;
-
-  g_return_val_if_fail (src->camera, FALSE);
-
-  if (on) {
-
-    status = dc1394_video_set_transmission (src->camera, DC1394_ON);
-
-    i = 0;
-    while (status == DC1394_OFF && i++ < 5) {
-      g_usleep (50000);
-      if (dc1394_video_get_transmission (src->camera,
-              &status) != DC1394_SUCCESS) {
-        if (status == DC1394_OFF) {
-          GST_LOG_OBJECT (src, "camera is still off , retrying");
-        }
-      }
-    }
-
-    if (i == 5) {
-      GST_ELEMENT_ERROR (src, RESOURCE, FAILED,
-          ("Camera doesn't seem to want to turn on!"),
-          ("Camera doesn't seem to want to turn on!"));
-      return FALSE;
-    }
-
-    GST_LOG_OBJECT (src, "got transmision status ON");
-
-  } else {
-
-    if (dc1394_video_set_transmission (src->camera,
-            DC1394_OFF) != DC1394_SUCCESS) {
-      GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Unable to stop transmision"),
-          ("Unable to stop transmision"));
-      return FALSE;
-    }
-
-    GST_LOG_OBJECT (src, "Stopping capture");
-
-    err = dc1394_capture_stop (src->camera);
-    if (err > 0) {
-      GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Capture stop error : %d ",
-              err), ("Capture stop error : %d ", err));
-      return FALSE;
-    } else {
-      GST_LOG_OBJECT (src, "Capture stoped successfully");
-    }
-  }
-
-  return TRUE;
-}
-
-
-static gboolean
-plugin_init (GstPlugin * plugin)
-{
-  GST_DEBUG_CATEGORY_INIT (dc1394_debug, "dc1394", 0, "DC1394 interface");
-
-  return gst_element_register (plugin, "dc1394src", GST_RANK_NONE,
-      GST_TYPE_DC1394);
-
-}
-
-
-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
-    GST_VERSION_MINOR,
-    dc1394,
-    "1394 IIDC Video Source",
-    plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/ext/dc1394/gstdc1394.h b/ext/dc1394/gstdc1394.h
deleted file mode 100644
index a27b1f8..0000000
--- a/ext/dc1394/gstdc1394.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/* GStreamer
- * Copyright (C) <2006> Eric Jonas <jonas@mit.edu>
- * Copyright (C) <2006> Antoine Tremblay <hexa00@gmail.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_DC1394_H__
-#define __GST_DC1394_H__
-
-#include <gst/gst.h>
-#include <gst/base/gstpushsrc.h>
-#include <dc1394/control.h>
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_DC1394 \
-  (gst_dc1394_get_type())
-#define GST_DC1394(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DC1394,GstDc1394))
-#define GST_DC1394_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_DC1394,GstDc1394))
-#define GST_IS_DC1394(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_DC1394))
-#define GST_IS_DC1394_CLASS(obj) \
-  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_DC1394))
-
-typedef struct _GstDc1394 GstDc1394;
-typedef struct _GstDc1394Class GstDc1394Class;
-
-struct _GstDc1394 {
-  GstPushSrc element;
-
-  /* video state */
-  gint width;
-  gint height;
-  gint vmode; 
-
-  gint bpp;
-  gint rate_numerator;
-  gint rate_denominator;
-
-  /* private */
-  gint64 timestamp_offset;		/* base offset */
-  GstClockTime running_time;		/* total running time */
-  gint64 n_frames;			/* total frames sent */
-  gint64 segment_start_frame;
-  gint64 segment_end_frame;
-  gboolean segment;
-  gint camnum; 
-  gint bufsize; 
-  gint iso_speed;
-
-  dc1394_t * dc1394;
-  dc1394camera_t * camera; 
-
-  GstCaps *caps;
-};
-
-struct _GstDc1394Class {
-  GstPushSrcClass parent_class;
-};
-
-GType gst_dc1394_get_type (void);
-
-G_END_DECLS
-
-#endif /* __GST_DC1394_H__ */
diff --git a/ext/dc1394/gstdc1394src.c b/ext/dc1394/gstdc1394src.c
new file mode 100644
index 0000000..3ab3026
--- /dev/null
+++ b/ext/dc1394/gstdc1394src.c
@@ -0,0 +1,1247 @@
+/* GStreamer
+ * Copyright (C) <2006> Eric Jonas <jonas@mit.edu>
+ * Copyright (C) <2006> Antoine Tremblay <hexa00@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/**
+ * SECTION:element-dc1394src
+ *
+ * Source for IIDC (Instrumentation & Industrial Digital Camera) firewire
+ * cameras. If several cameras are connected to the system, the desired one
+ * can be selected by its GUID and an optional unit number (most cameras are
+ * single unit and do not require it). The frame size, rate and format are set
+ * from capabilities. Although the IIDC specification includes a raw video
+ * mode, many cameras use mono video modes to capture in Bayer format.
+ * Thus, for each mono video mode supported by a camera, both gray raw and Bayer
+ * corresponding video formats are exposed in the capabilities.
+ * The Bayer pattern is left unspecified.
+ *
+ * <refsect2>
+ * <title>Example launch lines</title>
+ * |[
+ * gst-launch-1.0 -v dc1394src ! videoconvert ! autovideosink
+ * ]| Capture and display frames from the first camera available in the system.
+ * |[
+ * gst-launch-1.0 dc1394src guid=00074813004DF937 \
+ *     ! "video/x-bayer,format=gbrg,width=1280,height=960,framerate=15/2" \
+ *     ! bayer2rgb ! videoconvert ! autovideosink
+ * ]| Capture and display frames from a specific camera in the desired format.
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#include "gstdc1394src.h"
+#include <gst/video/video.h>
+
+GST_DEBUG_CATEGORY_STATIC (dc1394_debug);
+#define GST_CAT_DEFAULT dc1394_debug
+
+
+enum
+{
+  PROP_0,
+  PROP_CAMERA_GUID,
+  PROP_CAMERA_UNIT,
+  PROP_ISO_SPEED,
+  PROP_DMA_BUFFER_SIZE
+};
+
+
+#define GST_TYPE_DC1394_ISO_SPEED (gst_dc1394_iso_speed_get_type ())
+static GType
+gst_dc1394_iso_speed_get_type (void)
+{
+  static const GEnumValue iso_speeds[] = {
+    {100, "DC1394 ISO speed 100", "100"},
+    {200, "DC1394 ISO speed 200", "200"},
+    {400, "DC1394 ISO speed 400", "400"},
+    {800, "DC1394 ISO speed 800", "800"},
+    {1600, "DC1394 ISO speed 1600", "1600"},
+    {3200, "DC1394 ISO speed 3200", "3200"},
+    {0, NULL, NULL}
+  };
+  static GType type = 0;
+
+  if (!type) {
+    type = g_enum_register_static ("GstDC1394ISOSpeed", iso_speeds);
+  }
+  return type;
+}
+
+
+#define gst_dc1394_src_parent_class parent_class
+G_DEFINE_TYPE (GstDC1394Src, gst_dc1394_src, GST_TYPE_PUSH_SRC);
+
+static void gst_dc1394_src_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_dc1394_src_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+static gboolean gst_dc1394_src_start (GstBaseSrc * bsrc);
+static gboolean gst_dc1394_src_stop (GstBaseSrc * bsrc);
+static gboolean gst_dc1394_src_set_caps (GstBaseSrc * bsrc, GstCaps * caps);
+static GstCaps *gst_dc1394_src_get_caps (GstBaseSrc * bsrc, GstCaps * filter);
+static GstFlowReturn gst_dc1394_src_create (GstPushSrc * psrc,
+    GstBuffer ** buffer);
+
+static void gst_dc1394_src_set_prop_camera_guid (GstDC1394Src * src,
+    const gchar * guid);
+static gchar *gst_dc1394_src_get_prop_camera_guid (GstDC1394Src * src);
+static void gst_dc1394_src_set_prop_camera_unit (GstDC1394Src * src, gint unit);
+static gint gst_dc1394_src_get_prop_camera_unit (GstDC1394Src * src);
+static void gst_dc1394_src_set_prop_iso_speed (GstDC1394Src * src, guint speed);
+static guint gst_dc1394_src_get_prop_iso_speed (GstDC1394Src * src);
+static void gst_dc1394_src_set_prop_dma_buffer_size (GstDC1394Src * src,
+    guint size);
+static guint gst_dc1394_src_get_prop_dma_buffer_size (GstDC1394Src * src);
+static gboolean gst_dc1394_src_open_cam (GstDC1394Src * src);
+static void gst_dc1394_src_close_cam (GstDC1394Src * src);
+static gboolean gst_dc1394_src_start_cam (GstDC1394Src * src);
+static gboolean gst_dc1394_src_stop_cam (GstDC1394Src * src);
+static gboolean gst_dc1394_src_set_cam_caps (GstDC1394Src * src,
+    GstCaps * caps);
+static GstCaps *gst_dc1394_src_get_cam_caps (GstDC1394Src * src);
+static GstCaps *gst_dc1394_src_get_all_caps (void);
+
+static GstCaps *gst_dc1394_src_build_caps (const dc1394color_codings_t *
+    supported_codings, const dc1394framerates_t * supported_rates,
+    guint width_min, guint width_max, guint width_step, guint height_min,
+    guint height_max, guint height_step);
+static gboolean gst_dc1394_src_parse_caps (const GstCaps * caps,
+    dc1394color_codings_t * color_codings, dc1394framerate_t * rate,
+    gdouble * rate_decimal, guint * width, guint * height);
+
+static void
+gst_dc1394_src_class_init (GstDC1394SrcClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstElementClass *element_class;
+  GstBaseSrcClass *basesrc_class;
+  GstPushSrcClass *pushsrc_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  element_class = GST_ELEMENT_CLASS (klass);
+  basesrc_class = GST_BASE_SRC_CLASS (klass);
+  pushsrc_class = GST_PUSH_SRC_CLASS (klass);
+
+  gobject_class->set_property = gst_dc1394_src_set_property;
+  gobject_class->get_property = gst_dc1394_src_get_property;
+  g_object_class_install_property (gobject_class, PROP_CAMERA_GUID,
+      g_param_spec_string ("guid", "Camera GUID",
+          "The hexadecimal representation of the GUID of the camera"
+          " (use first camera available if null)",
+          NULL,
+          G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE |
+          GST_PARAM_MUTABLE_READY));
+  g_object_class_install_property (gobject_class, PROP_CAMERA_UNIT,
+      g_param_spec_int ("unit", "Camera unit",
+          "The unit number of the camera (-1 if no unit number is used)",
+          -1, G_MAXINT, -1,
+          G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE |
+          GST_PARAM_MUTABLE_READY));
+  g_object_class_install_property (gobject_class, PROP_ISO_SPEED,
+      g_param_spec_enum ("iso", "ISO bandwidth",
+          "The ISO bandwidth in Mbps",
+          GST_TYPE_DC1394_ISO_SPEED, 400,
+          G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE |
+          GST_PARAM_MUTABLE_READY));
+  g_object_class_install_property (gobject_class, PROP_DMA_BUFFER_SIZE,
+      g_param_spec_uint ("dma", "DMA ring buffer size",
+          "The number of frames in the Direct Memory Access ring buffer",
+          1, G_MAXUINT, 10,
+          G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE |
+          GST_PARAM_MUTABLE_READY));
+
+  gst_element_class_set_static_metadata (element_class,
+      "1394 IIDC Video Source", "Source/Video",
+      "libdc1394 based source for IIDC cameras",
+      "Antoine Tremblay <hexa00@gmail.com>");
+  gst_element_class_add_pad_template (element_class,
+      gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
+          gst_dc1394_src_get_all_caps ()));
+
+  basesrc_class->start = GST_DEBUG_FUNCPTR (gst_dc1394_src_start);
+  basesrc_class->stop = GST_DEBUG_FUNCPTR (gst_dc1394_src_stop);
+  basesrc_class->set_caps = GST_DEBUG_FUNCPTR (gst_dc1394_src_set_caps);
+  basesrc_class->get_caps = GST_DEBUG_FUNCPTR (gst_dc1394_src_get_caps);
+
+  pushsrc_class->create = GST_DEBUG_FUNCPTR (gst_dc1394_src_create);
+}
+
+
+static void
+gst_dc1394_src_init (GstDC1394Src * src)
+{
+  src->guid = -1;
+  src->unit = -1;
+  src->iso_speed = DC1394_ISO_SPEED_400;
+  src->dma_buffer_size = 10;
+  src->dc1394 = NULL;
+  src->camera = NULL;
+  src->caps = NULL;
+
+  gst_base_src_set_live (GST_BASE_SRC (src), TRUE);
+  gst_base_src_set_format (GST_BASE_SRC (src), GST_FORMAT_TIME);
+  gst_base_src_set_do_timestamp (GST_BASE_SRC (src), TRUE);
+}
+
+
+static void
+gst_dc1394_src_get_property (GObject * object, guint prop_id, GValue * value,
+    GParamSpec * pspec)
+{
+  GstDC1394Src *src;
+
+  src = GST_DC1394_SRC (object);
+  switch (prop_id) {
+    case PROP_CAMERA_GUID:
+      g_value_take_string (value, gst_dc1394_src_get_prop_camera_guid (src));
+      break;
+    case PROP_CAMERA_UNIT:
+      g_value_set_int (value, gst_dc1394_src_get_prop_camera_unit (src));
+      break;
+    case PROP_ISO_SPEED:
+      g_value_set_enum (value, gst_dc1394_src_get_prop_iso_speed (src));
+      break;
+    case PROP_DMA_BUFFER_SIZE:
+      g_value_set_uint (value, gst_dc1394_src_get_prop_dma_buffer_size (src));
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+
+static void
+gst_dc1394_src_set_property (GObject * object,
+    guint prop_id, const GValue * value, GParamSpec * pspec)
+{
+  GstDC1394Src *src;
+
+  src = GST_DC1394_SRC (object);
+  switch (prop_id) {
+    case PROP_CAMERA_GUID:
+      gst_dc1394_src_set_prop_camera_guid (src, g_value_get_string (value));
+      break;
+    case PROP_CAMERA_UNIT:
+      gst_dc1394_src_set_prop_camera_unit (src, g_value_get_int (value));
+      break;
+    case PROP_ISO_SPEED:
+      gst_dc1394_src_set_prop_iso_speed (src, g_value_get_enum (value));
+      break;
+    case PROP_DMA_BUFFER_SIZE:
+      gst_dc1394_src_set_prop_dma_buffer_size (src, g_value_get_uint (value));
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+
+static gboolean
+gst_dc1394_src_start (GstBaseSrc * bsrc)
+{
+  GstDC1394Src *src;
+
+  src = GST_DC1394_SRC (bsrc);
+  return gst_dc1394_src_open_cam (src);
+}
+
+
+static gboolean
+gst_dc1394_src_stop (GstBaseSrc * bsrc)
+{
+  GstDC1394Src *src;
+
+  src = GST_DC1394_SRC (bsrc);
+  if (!gst_dc1394_src_stop_cam (src))
+    return FALSE;
+  gst_dc1394_src_close_cam (src);
+  return TRUE;
+}
+
+
+static GstCaps *
+gst_dc1394_src_get_caps (GstBaseSrc * bsrc, GstCaps * filter)
+{
+  GstDC1394Src *src;
+  GstCaps *caps, *ret;
+
+  src = GST_DC1394_SRC (bsrc);
+  if (src->camera) {
+    caps = gst_dc1394_src_get_cam_caps (src);
+  } else {
+    caps = gst_dc1394_src_get_all_caps ();
+  }
+  if (caps && filter) {
+    ret = gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST);
+    gst_caps_unref (caps);
+  } else {
+    ret = caps;
+  }
+  return ret;
+}
+
+
+static gboolean
+gst_dc1394_src_set_caps (GstBaseSrc * bsrc, GstCaps * caps)
+{
+  GstDC1394Src *src;
+
+  src = GST_DC1394_SRC (bsrc);
+  return gst_dc1394_src_stop_cam (src)
+      && gst_dc1394_src_set_cam_caps (src, caps)
+      && gst_dc1394_src_start_cam (src);
+}
+
+
+static GstFlowReturn
+gst_dc1394_src_create (GstPushSrc * psrc, GstBuffer ** obuf)
+{
+  GstDC1394Src *src;
+  GstBuffer *buffer;
+  dc1394video_frame_t *frame;
+  dc1394error_t ret;
+
+  src = GST_DC1394_SRC (psrc);
+  buffer = NULL;
+  ret = dc1394_capture_dequeue (src->camera, DC1394_CAPTURE_POLICY_WAIT,
+      &frame);
+  if (ret != DC1394_SUCCESS) {
+    GST_ELEMENT_ERROR (src, RESOURCE, READ, (NULL),
+        ("Could not dequeue frame: %s.", dc1394_error_get_string (ret)));
+    goto error;
+  }
+  /*
+   * TODO: We could create the buffer by wrapping the image bytes in the frame
+   * (enqueing the frame in the notify function) to save the copy operation.
+   * It will only work if all the buffers are disposed before closing the camera
+   * when state changes from PAUSED to READY.
+   */
+  buffer = gst_buffer_new_allocate (NULL, frame->image_bytes, NULL);
+  gst_buffer_fill (buffer, 0, frame->image, frame->image_bytes);
+  /*
+   * TODO: There is a field timestamp in the frame structure,
+   * It is not sure if it could be used as PTS or DTS:
+   * we are not sure if it comes from a monotonic clock,
+   * and it seems to be left undefined under MS Windows.
+   */
+  ret = dc1394_capture_enqueue (src->camera, frame);
+  if (ret != DC1394_SUCCESS) {
+    GST_ELEMENT_WARNING (src, RESOURCE, READ, (NULL),
+        ("Could not enqueue frame: %s.", dc1394_error_get_string (ret)));
+  }
+  *obuf = buffer;
+  return GST_FLOW_OK;
+
+error:
+  if (buffer)
+    gst_buffer_unref (buffer);
+  return GST_FLOW_ERROR;
+}
+
+
+static void
+gst_dc1394_src_set_prop_camera_guid (GstDC1394Src * src, const gchar * guid)
+{
+  gchar *end;
+
+  if (!guid) {
+    GST_DEBUG_OBJECT (src, "Null camera GUID value: %s.",
+        "first camera available will be used");
+    src->guid = -1;
+    return;
+  }
+  errno = 0;
+  src->guid = g_ascii_strtoull (guid, &end, 16);
+  if (errno == ERANGE || end == guid || *end != '\0') {
+    GST_ERROR_OBJECT (src, "Invalid camera GUID value: %s.", guid);
+    return;
+  }
+}
+
+
+static gchar *
+gst_dc1394_src_get_prop_camera_guid (GstDC1394Src * src)
+{
+  if (src->guid == -1) {
+    return NULL;
+  }
+  return g_strdup_printf ("%016" G_GINT64_MODIFIER "X", src->guid);
+}
+
+
+static void
+gst_dc1394_src_set_prop_camera_unit (GstDC1394Src * src, gint unit)
+{
+  src->unit = unit;
+}
+
+
+static gint
+gst_dc1394_src_get_prop_camera_unit (GstDC1394Src * src)
+{
+  return src->unit;
+}
+
+
+static void
+gst_dc1394_src_set_prop_iso_speed (GstDC1394Src * src, guint speed)
+{
+  switch (speed) {
+    case 100:
+      src->iso_speed = DC1394_ISO_SPEED_100;
+      break;
+    case 200:
+      src->iso_speed = DC1394_ISO_SPEED_200;
+      break;
+    case 400:
+      src->iso_speed = DC1394_ISO_SPEED_400;
+      break;
+    case 800:
+      src->iso_speed = DC1394_ISO_SPEED_800;
+      break;
+    case 1600:
+      src->iso_speed = DC1394_ISO_SPEED_1600;
+      break;
+    case 3200:
+      src->iso_speed = DC1394_ISO_SPEED_3200;
+      break;
+    default:
+      GST_ERROR_OBJECT (src, "Invalid ISO speed value: %d.", speed);
+  }
+}
+
+
+static guint
+gst_dc1394_src_get_prop_iso_speed (GstDC1394Src * src)
+{
+  switch (src->iso_speed) {
+    case DC1394_ISO_SPEED_100:
+      return 100;
+    case DC1394_ISO_SPEED_200:
+      return 200;
+    case DC1394_ISO_SPEED_400:
+      return 400;
+    case DC1394_ISO_SPEED_800:
+      return 800;
+    case DC1394_ISO_SPEED_1600:
+      return 1600;
+    case DC1394_ISO_SPEED_3200:
+      return 3200;
+    default:                   /* never reached */
+      return DC1394_ISO_SPEED_MIN - 1;
+  }
+}
+
+
+static void
+gst_dc1394_src_set_prop_dma_buffer_size (GstDC1394Src * src, guint size)
+{
+  src->dma_buffer_size = size;
+}
+
+
+static guint
+gst_dc1394_src_get_prop_dma_buffer_size (GstDC1394Src * src)
+{
+  return src->dma_buffer_size;
+}
+
+
+static gboolean
+gst_dc1394_src_open_cam (GstDC1394Src * src)
+{
+  dc1394camera_list_t *cameras;
+  dc1394error_t ret;
+  int number;
+  uint64_t guid;
+  int unit, i;
+
+  src->dc1394 = dc1394_new ();
+  if (!src->dc1394) {
+    GST_ELEMENT_ERROR (src, LIBRARY, INIT, (NULL),
+        ("Could not initialize dc1394 library."));
+    goto error;
+  }
+
+  number = -1;
+  guid = -1;
+  unit = -1;
+  ret = dc1394_camera_enumerate (src->dc1394, &cameras);
+  if (ret != DC1394_SUCCESS) {
+    GST_ELEMENT_ERROR (src, LIBRARY, FAILED, (NULL),
+        ("Could not enumerate cameras: %s.", dc1394_error_get_string (ret)));
+    goto error;
+  }
+  for (i = 0; i < cameras->num; i++) {
+    GST_DEBUG_OBJECT (src, "Camera %2d is %016" G_GINT64_MODIFIER "X %d.",
+        i, cameras->ids[i].guid, cameras->ids[i].unit);
+    if ((src->guid == -1 || src->guid == cameras->ids[i].guid) &&
+        (src->unit == -1 || src->unit == cameras->ids[i].unit)) {
+      number = i;
+      guid = cameras->ids[i].guid;
+      unit = cameras->ids[i].unit;
+    }
+  }
+  dc1394_camera_free_list (cameras);
+  if (number < 0) {
+    if (src->guid == -1) {
+      GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND, (NULL),
+          ("No cameras found."));
+    } else {
+      GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND, (NULL),
+          ("Camera %016" G_GINT64_MODIFIER "X %d not found.",
+              src->guid, src->unit));
+    }
+    goto error;
+  }
+
+  GST_DEBUG_OBJECT (src, "Open camera %016" G_GINT64_MODIFIER "X %d.",
+      guid, unit);
+  src->camera = dc1394_camera_new_unit (src->dc1394, guid, unit);
+  if (!src->camera) {
+    GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ_WRITE, (NULL),
+        ("Could not open camera %016" G_GINT64_MODIFIER "X %d.", guid, unit));
+    goto error;
+  }
+  GST_DEBUG_OBJECT (src,
+      "Camera %016" G_GINT64_MODIFIER "X %d opened: \"%s %s\".",
+      src->camera->guid, src->camera->unit,
+      src->camera->vendor, src->camera->model);
+
+  if (src->iso_speed > DC1394_ISO_SPEED_400) {
+    ret = dc1394_video_set_operation_mode (src->camera,
+        DC1394_OPERATION_MODE_1394B);
+    if (ret != DC1394_SUCCESS) {
+      GST_ELEMENT_ERROR (src, RESOURCE, SETTINGS, (NULL),
+          ("Could not set 1394B operation mode: %s.",
+              dc1394_error_get_string (ret)));
+      goto error;
+    }
+  }
+  ret = dc1394_video_set_iso_speed (src->camera, src->iso_speed);
+  if (ret != DC1394_SUCCESS) {
+    GST_ELEMENT_ERROR (src, RESOURCE, SETTINGS, (NULL),
+        ("Could not set ISO speed %d: %s.", src->iso_speed,
+            dc1394_error_get_string (ret)));
+    goto error;
+  }
+
+  return TRUE;
+
+error:
+  if (src->camera) {
+    dc1394_camera_free (src->camera);
+    src->camera = NULL;
+  }
+  if (src->dc1394) {
+    dc1394_free (src->dc1394);
+    src->dc1394 = NULL;
+  }
+  return FALSE;
+}
+
+
+static void
+gst_dc1394_src_close_cam (GstDC1394Src * src)
+{
+  GST_DEBUG_OBJECT (src,
+      "Close camera %016" G_GINT64_MODIFIER "X %d: \"%s %s\".",
+      src->camera->guid, src->camera->unit,
+      src->camera->vendor, src->camera->model);
+  if (src->caps) {
+    gst_caps_unref (src->caps);
+    src->caps = NULL;
+  }
+  dc1394_camera_free (src->camera);
+  src->camera = NULL;
+  dc1394_free (src->dc1394);
+  src->dc1394 = NULL;
+  GST_DEBUG_OBJECT (src, "Camera closed.");
+}
+
+
+static gboolean
+gst_dc1394_src_start_cam (GstDC1394Src * src)
+{
+  dc1394error_t ret;
+  dc1394switch_t status;
+  guint trials;
+
+  GST_DEBUG_OBJECT (src, "Setup capture with a DMA buffer of %d frames",
+      src->dma_buffer_size);
+  ret = dc1394_capture_setup (src->camera, src->dma_buffer_size,
+      DC1394_CAPTURE_FLAGS_DEFAULT);
+  if (ret == DC1394_NO_BANDWIDTH) {
+    GST_DEBUG_OBJECT (src,
+        "Could not setup capture with available ISO bandwidth,"
+        "releasing channels and bandwidth and retrying...");
+    ret = dc1394_iso_release_all (src->camera);
+    if (ret != DC1394_SUCCESS) {
+      GST_ELEMENT_WARNING (src, RESOURCE, FAILED, (NULL),
+          ("Could not release ISO channels and bandwidth: %s",
+              dc1394_error_get_string (ret)));
+    }
+    ret = dc1394_capture_setup (src->camera, src->dma_buffer_size,
+        DC1394_CAPTURE_FLAGS_DEFAULT);
+  }
+  if (ret != DC1394_SUCCESS) {
+    GST_ELEMENT_ERROR (src, RESOURCE, FAILED, (NULL),
+        ("Could not setup capture: %s", dc1394_error_get_string (ret)));
+    goto error_capture;
+  }
+
+  /*
+   * TODO: dc1394_capture_setup/stop can start/stop the transmission
+   * when called with DC1394_CAPTURE_FLAGS_AUTO_ISO in the flags.
+   * The repeated trials check is a leftover of the original code,
+   * and might not be needed.
+   */
+  GST_DEBUG_OBJECT (src, "Enable camera transmission.");
+  ret = dc1394_video_set_transmission (src->camera, DC1394_ON);
+  if (ret != DC1394_SUCCESS) {
+    GST_ELEMENT_ERROR (src, RESOURCE, FAILED, (NULL),
+        ("Could not set transmission status: %s.",
+            dc1394_error_get_string (ret)));
+    goto error_transmission;
+  }
+  ret = dc1394_video_get_transmission (src->camera, &status);
+  for (trials = 10;
+      (trials > 0) && !(ret == DC1394_SUCCESS && status == DC1394_ON);
+      trials--) {
+    GST_DEBUG_OBJECT (src,
+        "Wait for camera to start transmission (%d trials left).", trials);
+    g_usleep (50000);
+    ret = dc1394_video_get_transmission (src->camera, &status);
+  }
+  if (!(ret == DC1394_SUCCESS && status == DC1394_ON)) {
+    GST_ELEMENT_ERROR (src, RESOURCE, FAILED, (NULL),
+        ("Could not get positive transmission status: %s.",
+            dc1394_error_get_string (ret)));
+    goto error_transmission;
+  }
+
+  GST_DEBUG_OBJECT (src, "Capture successfully started.");
+  return TRUE;
+
+error_transmission:
+  ret = dc1394_capture_stop (src->camera);
+  if (ret != DC1394_SUCCESS) {
+    GST_ELEMENT_WARNING (src, RESOURCE, FAILED, (NULL),
+        ("Could not stop capture: %s.", dc1394_error_get_string (ret)));
+  }
+error_capture:
+  return FALSE;
+}
+
+
+static gboolean
+gst_dc1394_src_stop_cam (GstDC1394Src * src)
+{
+  dc1394error_t ret;
+  dc1394switch_t status;
+  guint trials;
+
+  /*
+   * TODO: dc1394_capture_setup/stop can start/stop the transmission
+   * when called with DC1394_CAPTURE_FLAGS_AUTO_ISO in the flags.
+   * The repeated trials check is a leftover of the original code,
+   * and might not be needed.
+   */
+  GST_DEBUG_OBJECT (src, "Disable camera transmission.");
+  ret = dc1394_video_set_transmission (src->camera, DC1394_OFF);
+  if (ret != DC1394_SUCCESS) {
+    GST_ELEMENT_ERROR (src, RESOURCE, FAILED, (NULL),
+        ("Could not set transmission status: %s.",
+            dc1394_error_get_string (ret)));
+    return FALSE;
+  }
+  ret = dc1394_video_get_transmission (src->camera, &status);
+  for (trials = 10;
+      (trials > 0) && !(ret == DC1394_SUCCESS && status == DC1394_OFF);
+      trials--) {
+    GST_DEBUG_OBJECT (src,
+        "Wait for camera to stop transmission (%d trials left).", trials);
+    g_usleep (50000);
+    ret = dc1394_video_get_transmission (src->camera, &status);
+  }
+  if (!(ret == DC1394_SUCCESS && status == DC1394_OFF)) {
+    GST_WARNING_OBJECT (src,
+        "Could not get negative transmission status: %s.",
+        dc1394_error_get_string (ret));
+  }
+
+  GST_DEBUG_OBJECT (src, "Clear capture resources.");
+  ret = dc1394_capture_stop (src->camera);
+  if (ret != DC1394_SUCCESS && ret != DC1394_CAPTURE_IS_NOT_SET) {
+    GST_ELEMENT_ERROR (src, RESOURCE, FAILED, (NULL),
+        ("Could not clear capture: %s.", dc1394_error_get_string (ret)));
+    return FALSE;
+  }
+
+  switch (ret) {
+    case DC1394_CAPTURE_IS_NOT_SET:
+      GST_DEBUG_OBJECT (src, "Capture was not set up.");
+      break;
+    case DC1394_SUCCESS:
+      GST_DEBUG_OBJECT (src, "Capture successfully stopped.");
+      break;
+    default:
+      break;
+  }
+
+  return TRUE;
+}
+
+
+static gboolean
+gst_dc1394_src_set_cam_caps (GstDC1394Src * src, GstCaps * caps)
+{
+  GstCaps *mode_caps;
+  gboolean ok, supported;
+  dc1394video_modes_t supported_modes;
+  dc1394video_mode_t mode;
+  dc1394color_codings_t supported_codings;
+  dc1394color_coding_t coding;
+  dc1394framerates_t supported_rates;
+  dc1394framerate_t rate;
+  double rate_decimal;
+  uint64_t total_bytes;
+  uint32_t width, width_step, height, height_step;
+  guint m, c;
+
+  ok = dc1394_video_get_supported_modes (src->camera,
+      &supported_modes) == DC1394_SUCCESS;
+  if (!ok) {
+    GST_ELEMENT_ERROR (src, RESOURCE, SETTINGS, (NULL),
+        ("Could not get supported modes."));
+    goto error;
+  }
+  supported = FALSE;
+  for (m = 0; m < supported_modes.num && !supported; m++) {
+    mode = supported_modes.modes[m];
+    mode_caps = gst_caps_new_empty ();
+    if (dc1394_is_video_mode_scalable (mode)) {
+      ok &= dc1394_format7_get_color_codings (src->camera, mode,
+          &supported_codings) == DC1394_SUCCESS;
+      ok &= dc1394_format7_get_max_image_size (src->camera, mode,
+          &width, &height) == DC1394_SUCCESS;
+      ok &= dc1394_format7_get_unit_size (src->camera, mode,
+          &width_step, &height_step) == DC1394_SUCCESS;
+    } else {
+      ok &= dc1394_get_color_coding_from_video_mode (src->camera, mode,
+          &coding) == DC1394_SUCCESS;
+      ok &= dc1394_get_image_size_from_video_mode (src->camera, mode,
+          &width, &height) == DC1394_SUCCESS;
+      ok &= dc1394_video_get_supported_framerates (src->camera, mode,
+          &supported_rates) == DC1394_SUCCESS;
+    }
+    if (!ok) {
+      GST_ELEMENT_WARNING (src, RESOURCE, SETTINGS, (NULL),
+          ("Could not get video mode %d parameters.", mode));
+    } else if (dc1394_is_video_mode_scalable (mode)) {
+      gst_caps_append (mode_caps,
+          gst_dc1394_src_build_caps (&supported_codings, NULL,
+              width_step, width, width_step, height_step, height, height_step));
+    } else {
+      supported_codings.num = 1;
+      supported_codings.codings[0] = coding;
+      gst_caps_append (mode_caps,
+          gst_dc1394_src_build_caps (&supported_codings, &supported_rates,
+              width, width, 1, height, height, 1));
+    }
+    supported = gst_caps_can_intersect (caps, mode_caps);
+    gst_caps_unref (mode_caps);
+  }
+  ok = supported && gst_dc1394_src_parse_caps (caps, &supported_codings, &rate,
+      &rate_decimal, &width, &height);
+  if (!ok) {
+    GST_ELEMENT_ERROR (src, RESOURCE, SETTINGS, (NULL),
+        ("Unsupported caps %" GST_PTR_FORMAT, caps));
+    goto error;
+  }
+  GST_DEBUG_OBJECT (src, "Set video mode %d.", mode);
+  ok = dc1394_video_set_mode (src->camera, mode) == DC1394_SUCCESS;
+  if (!ok) {
+    GST_ELEMENT_ERROR (src, RESOURCE, SETTINGS, (NULL),
+        ("Could not set video mode %d.", mode));
+    goto error;
+  }
+  if (dc1394_is_video_mode_scalable (mode)) {
+    ok = FALSE;
+    for (c = 0; c < supported_codings.num && !ok; c++) {
+      coding = supported_codings.codings[c];
+      GST_DEBUG_OBJECT (src,
+          "Try format7 video mode %d with coding %d, size %d %d, and rate %.4f Hz.",
+          mode, coding, width, height, rate_decimal);
+      ok = (dc1394_format7_set_color_coding (src->camera, mode,
+              coding) == DC1394_SUCCESS)
+          && (dc1394_format7_set_image_size (src->camera, mode,
+              width, height) == DC1394_SUCCESS)
+          && (dc1394_format7_get_total_bytes (src->camera, mode,
+              &total_bytes) == DC1394_SUCCESS)
+          && (dc1394_format7_set_packet_size (src->camera, mode,
+              total_bytes * rate_decimal * 0.000125) == DC1394_SUCCESS);
+    }
+  } else {
+    GST_DEBUG_OBJECT (src, "Set fixed video mode %d rate %.4f Hz (%d).",
+        mode, rate_decimal, rate);
+    ok = dc1394_video_set_framerate (src->camera, rate) == DC1394_SUCCESS;
+  }
+  /* TODO: check feature framerate */
+  if (!ok) {
+    GST_ELEMENT_ERROR (src, RESOURCE, SETTINGS, (NULL),
+        ("Could not set video mode %d parameters.", mode));
+    goto error;
+  }
+  return TRUE;
+
+error:
+  return FALSE;
+}
+
+
+GstCaps *
+gst_dc1394_src_get_cam_caps (GstDC1394Src * src)
+{
+  gboolean ok;
+  dc1394video_modes_t supported_modes;
+  dc1394video_mode_t mode;
+  dc1394color_codings_t supported_codings;
+  dc1394color_coding_t coding;
+  dc1394framerates_t supported_rates;
+  uint32_t width, width_step, height, height_step;
+  guint m;
+
+  if (src->caps)
+    return gst_caps_ref (src->caps);
+
+  ok = dc1394_video_get_supported_modes (src->camera,
+      &supported_modes) == DC1394_SUCCESS;
+  if (!ok) {
+    GST_ELEMENT_ERROR (src, RESOURCE, SETTINGS, (NULL),
+        ("Could not get supported modes."));
+    return NULL;
+  }
+
+  src->caps = gst_caps_new_empty ();
+  for (m = 0; m < supported_modes.num; m++) {
+    mode = supported_modes.modes[m];
+    if (dc1394_is_video_mode_scalable (mode)) {
+      ok &= dc1394_format7_get_color_codings (src->camera, mode,
+          &supported_codings) == DC1394_SUCCESS;
+      ok &= dc1394_format7_get_max_image_size (src->camera, mode,
+          &width, &height) == DC1394_SUCCESS;
+      ok &= dc1394_format7_get_unit_size (src->camera, mode,
+          &width_step, &height_step) == DC1394_SUCCESS;
+      if (!ok) {
+        GST_ELEMENT_WARNING (src, RESOURCE, SETTINGS, (NULL),
+            ("Could not get format7 video mode %d parameters.", mode));
+      } else {
+        gst_caps_append (src->caps,
+            gst_dc1394_src_build_caps (&supported_codings, NULL,
+                width_step, width, width_step, height_step, height,
+                height_step));
+      }
+    } else {
+      ok &= dc1394_get_image_size_from_video_mode (src->camera, mode,
+          &width, &height) == DC1394_SUCCESS;
+      ok &= dc1394_video_get_supported_framerates (src->camera, mode,
+          &supported_rates) == DC1394_SUCCESS;
+      ok &= dc1394_get_color_coding_from_video_mode (src->camera, mode,
+          &coding) == DC1394_SUCCESS;
+      if (!ok) {
+        GST_ELEMENT_WARNING (src, RESOURCE, SETTINGS, (NULL),
+            ("Could not get fixed video mode %d parameters.", mode));
+      } else {
+        supported_codings.num = 1;
+        supported_codings.codings[0] = coding;
+        gst_caps_append (src->caps,
+            gst_dc1394_src_build_caps (&supported_codings, &supported_rates,
+                width, width, 1, height, height, 1));
+      }
+    }
+  }
+  GST_DEBUG_OBJECT (src, "Camera capabilities: \"%" GST_PTR_FORMAT "\".",
+      src->caps);
+  return gst_caps_ref (src->caps);
+}
+
+
+static GstCaps *
+gst_dc1394_src_get_all_caps (void)
+{
+  GstCaps *caps;
+  dc1394color_coding_t coding;
+  dc1394color_codings_t video_codings;
+  uint32_t width, height;
+
+  const dc1394color_codings_t supported_codings = { 7, {
+          /* DC1394_COLOR_CODING_RGB16S, DC1394_COLOR_CODING_RGB16, */
+          DC1394_COLOR_CODING_RGB8, DC1394_COLOR_CODING_YUV444,
+          DC1394_COLOR_CODING_YUV422, DC1394_COLOR_CODING_YUV411,
+          /* DC1394_COLOR_CODING_RAW16, DC1394_COLOR_CODING_MONO16S */
+          DC1394_COLOR_CODING_MONO16, DC1394_COLOR_CODING_RAW8,
+      DC1394_COLOR_CODING_MONO8}
+  };
+  const dc1394framerates_t all_rates = { 8, {
+          DC1394_FRAMERATE_1_875, DC1394_FRAMERATE_3_75, DC1394_FRAMERATE_7_5,
+          DC1394_FRAMERATE_15, DC1394_FRAMERATE_30, DC1394_FRAMERATE_60,
+      DC1394_FRAMERATE_120, DC1394_FRAMERATE_240}
+  };
+  dc1394video_mode_t mode;
+
+  caps = gst_caps_new_empty ();
+  /* First caps for fixed video modes */
+  for (mode = DC1394_VIDEO_MODE_MIN; mode < DC1394_VIDEO_MODE_EXIF; mode++) {
+    dc1394_get_image_size_from_video_mode (NULL, mode, &width, &height);
+    dc1394_get_color_coding_from_video_mode (NULL, mode, &coding);
+    video_codings.codings[0] = coding;
+    video_codings.num = 1;
+    gst_caps_append (caps,
+        gst_dc1394_src_build_caps (&video_codings, &all_rates,
+            width, width, 1, height, height, 1));
+  }
+  /* Then caps for Format 7 modes */
+  gst_caps_append (caps,
+      gst_dc1394_src_build_caps (&supported_codings, NULL,
+          1, G_MAXINT, 1, 1, G_MAXINT, 1));
+  return caps;
+}
+
+
+static GstCaps *
+gst_dc1394_src_build_caps (const dc1394color_codings_t * supported_codings,
+    const dc1394framerates_t * supported_rates,
+    uint32_t width_min, uint32_t width_max, uint32_t width_step,
+    uint32_t height_min, uint32_t height_max, uint32_t height_step)
+{
+  GstCaps *caps;
+  GstStructure *structure;
+  GstVideoFormat video_format;
+  dc1394color_coding_t coding;
+  dc1394framerate_t rate;
+  GValue format = { 0 };
+  GValue formats = { 0 };
+  GValue width = { 0 };
+  GValue widths = { 0 };
+  GValue height = { 0 };
+  GValue heights = { 0 };
+  GValue framerate = { 0 };
+  GValue framerates = { 0 };
+  guint c, w, h, r;
+
+  caps = gst_caps_new_empty ();
+  for (c = 0; c < supported_codings->num; c++) {
+    coding = supported_codings->codings[c];
+    switch (coding) {
+      case DC1394_COLOR_CODING_MONO8:
+        video_format = GST_VIDEO_FORMAT_GRAY8;
+        break;
+      case DC1394_COLOR_CODING_YUV411:
+        video_format = GST_VIDEO_FORMAT_IYU1;
+        break;
+      case DC1394_COLOR_CODING_YUV422:
+        video_format = GST_VIDEO_FORMAT_UYVY;
+        break;
+      case DC1394_COLOR_CODING_YUV444:
+        video_format = GST_VIDEO_FORMAT_IYU2;
+        break;
+      case DC1394_COLOR_CODING_RGB8:
+        video_format = GST_VIDEO_FORMAT_RGB;
+        break;
+      case DC1394_COLOR_CODING_RAW8:
+        video_format = GST_VIDEO_FORMAT_UNKNOWN;        /* GST_BAYER_FORMAT_XXXX8 */
+        break;
+      case DC1394_COLOR_CODING_MONO16:
+        video_format = GST_VIDEO_FORMAT_GRAY16_BE;
+        break;
+        /*
+         * The following formats do not exist in Gstreamer:
+         *case DC1394_COLOR_CODING_RGB16: // Unsigned RGB 16 bits per channel
+         *  video_format = GST_VIDEO_FORMAT_RGB48;
+         *  break;
+         *case DC1394_COLOR_CODING_MONO16S: // Signed grayscale 16 bits
+         *  video_format = GST_VIDEO_FORMAT_GRAY16_BE_SIGNED;
+         *  break;
+         *case DC1394_COLOR_CODING_RGB16S: // Signed RGB 16 bits per channel
+         *  video_format = GST_VIDEO_FORMAT_RGB48_SIGNED;
+         *  break;
+         *case DC1394_COLOR_CODING_RAW16: // Raw sensor output (bayer) 16 bits
+         *  video_format = GST_VIDEO_FORMAT_UNKNOWN; // GST_BAYER_FORMAT_XXXX16_BE
+         *  break;
+         */
+      default:
+        video_format = GST_VIDEO_FORMAT_UNKNOWN;
+        GST_DEBUG ("unsupported dc1394 video coding %d", coding);
+    }
+    if (video_format != GST_VIDEO_FORMAT_UNKNOWN) {
+      g_value_init (&formats, G_TYPE_STRING);
+      g_value_set_string (&formats, gst_video_format_to_string (video_format));
+      structure = gst_structure_new_empty ("video/x-raw");
+      gst_structure_set_value (structure, "format", &formats);
+      gst_caps_append_structure (caps, structure);
+      g_value_unset (&formats);
+    }
+    if (coding == DC1394_COLOR_CODING_MONO8 ||
+        coding == DC1394_COLOR_CODING_RAW8) {
+      g_value_init (&formats, GST_TYPE_LIST);
+      g_value_init (&format, G_TYPE_STRING);
+      g_value_set_static_string (&format, "bggr");
+      gst_value_list_append_value (&formats, &format);
+      g_value_set_static_string (&format, "rggb");
+      gst_value_list_append_value (&formats, &format);
+      g_value_set_static_string (&format, "grbg");
+      gst_value_list_append_value (&formats, &format);
+      g_value_set_static_string (&format, "gbrg");
+      gst_value_list_append_value (&formats, &format);
+      structure = gst_structure_new_empty ("video/x-bayer");
+      gst_structure_set_value (structure, "format", &formats);
+      gst_caps_append_structure (caps, structure);
+      g_value_unset (&format);
+      g_value_unset (&formats);
+    }
+  }
+
+  if (width_min == width_max) {
+    g_value_init (&widths, G_TYPE_INT);
+    g_value_set_int (&widths, width_min);
+  } else if (width_step == 1) {
+    g_value_init (&widths, GST_TYPE_INT_RANGE);
+    gst_value_set_int_range (&widths, width_min, width_max);
+  } else {
+    g_value_init (&widths, GST_TYPE_LIST);
+    g_value_init (&width, G_TYPE_INT);
+    for (w = width_min; w <= width_max; w += width_step) {
+      g_value_set_int (&width, w);
+      gst_value_list_append_value (&widths, &width);
+    }
+    g_value_unset (&width);
+  }
+  if (height_min == height_max) {
+    g_value_init (&heights, G_TYPE_INT);
+    g_value_set_int (&heights, height_min);
+  } else if (height_step == 1) {
+    g_value_init (&heights, GST_TYPE_INT_RANGE);
+    gst_value_set_int_range (&heights, height_min, height_max);
+  } else {
+    g_value_init (&heights, GST_TYPE_LIST);
+    g_value_init (&height, G_TYPE_INT);
+    for (h = height_min; h <= height_max; h += height_step) {
+      g_value_set_int (&height, h);
+      gst_value_list_append_value (&heights, &height);
+    }
+    g_value_unset (&height);
+  }
+  gst_caps_set_value (caps, "width", &widths);
+  gst_caps_set_value (caps, "height", &heights);
+  g_value_unset (&widths);
+  g_value_unset (&heights);
+
+  if (supported_rates) {
+    g_value_init (&framerates, GST_TYPE_LIST);
+    g_value_init (&framerate, GST_TYPE_FRACTION);
+    for (r = 0; r < supported_rates->num; r++) {
+      rate = supported_rates->framerates[r];
+      switch (rate) {
+        case DC1394_FRAMERATE_1_875:
+          gst_value_set_fraction (&framerate, 240, 128);
+          break;
+        case DC1394_FRAMERATE_3_75:
+          gst_value_set_fraction (&framerate, 240, 64);
+          break;
+        case DC1394_FRAMERATE_7_5:
+          gst_value_set_fraction (&framerate, 240, 32);
+          break;
+        case DC1394_FRAMERATE_15:
+          gst_value_set_fraction (&framerate, 240, 16);
+          break;
+        case DC1394_FRAMERATE_30:
+          gst_value_set_fraction (&framerate, 240, 8);
+          break;
+        case DC1394_FRAMERATE_60:
+          gst_value_set_fraction (&framerate, 240, 4);
+          break;
+        case DC1394_FRAMERATE_120:
+          gst_value_set_fraction (&framerate, 240, 2);
+          break;
+        case DC1394_FRAMERATE_240:
+          gst_value_set_fraction (&framerate, 240, 1);
+          break;
+      }
+      gst_value_list_append_value (&framerates, &framerate);
+    }
+    g_value_unset (&framerate);
+  } else {
+    g_value_init (&framerates, GST_TYPE_FRACTION_RANGE);
+    gst_value_set_fraction_range_full (&framerates, 1, G_MAXINT, G_MAXINT, 1);
+  }
+  gst_caps_set_value (caps, "framerate", &framerates);
+  g_value_unset (&framerates);
+  return caps;
+}
+
+
+static gboolean
+gst_dc1394_src_parse_caps (const GstCaps * caps,
+    dc1394color_codings_t * color_codings,
+    dc1394framerate_t * rate, double *rate_decimal,
+    uint32_t * width, uint32_t * height)
+{
+  const GstStructure *structure;
+  const gchar *format;
+  gint w, h, num, den;
+  gdouble dec;
+
+  structure = gst_caps_get_structure (caps, 0);
+  if (!structure)
+    goto error;
+
+  if (!gst_structure_get_int (structure, "width", &w)
+      || !gst_structure_get_int (structure, "height", &h))
+    goto error;
+
+  *width = w;
+  *height = h;
+
+  if (!gst_structure_get_fraction (structure, "framerate", &num, &den))
+    goto error;
+
+  if (gst_util_fraction_compare (num, den, 240, 128) <= 0) {
+    *rate = DC1394_FRAMERATE_1_875;
+  } else if (gst_util_fraction_compare (num, den, 240, 64) <= 0) {
+    *rate = DC1394_FRAMERATE_3_75;
+  } else if (gst_util_fraction_compare (num, den, 240, 32) <= 0) {
+    *rate = DC1394_FRAMERATE_7_5;
+  } else if (gst_util_fraction_compare (num, den, 240, 16) <= 0) {
+    *rate = DC1394_FRAMERATE_15;
+  } else if (gst_util_fraction_compare (num, den, 240, 8) <= 0) {
+    *rate = DC1394_FRAMERATE_30;
+  } else if (gst_util_fraction_compare (num, den, 240, 4) <= 0) {
+    *rate = DC1394_FRAMERATE_60;
+  } else if (gst_util_fraction_compare (num, den, 240, 2) <= 0) {
+    *rate = DC1394_FRAMERATE_120;
+  } else if (gst_util_fraction_compare (num, den, 240, 1) <= 0) {
+    *rate = DC1394_FRAMERATE_240;
+  } else {
+    *rate = DC1394_FRAMERATE_240;
+  }
+
+  gst_util_fraction_to_double (num, den, &dec);
+  *rate_decimal = dec;
+
+  if (gst_structure_has_name (structure, "video/x-raw")) {
+    format = gst_structure_get_string (structure, "format");
+    switch (gst_video_format_from_string (format)) {
+      case GST_VIDEO_FORMAT_GRAY8:
+        color_codings->num = 1;
+        color_codings->codings[0] = DC1394_COLOR_CODING_MONO8;
+        break;
+      case GST_VIDEO_FORMAT_IYU1:
+        color_codings->num = 1;
+        color_codings->codings[0] = DC1394_COLOR_CODING_YUV411;
+        break;
+      case GST_VIDEO_FORMAT_UYVY:
+        color_codings->num = 1;
+        color_codings->codings[0] = DC1394_COLOR_CODING_YUV422;
+        break;
+      case GST_VIDEO_FORMAT_IYU2:
+        color_codings->num = 1;
+        color_codings->codings[0] = DC1394_COLOR_CODING_YUV444;
+        break;
+      case GST_VIDEO_FORMAT_RGB:
+        color_codings->num = 1;
+        color_codings->codings[0] = DC1394_COLOR_CODING_RGB8;
+        break;
+      case GST_VIDEO_FORMAT_GRAY16_BE:
+        color_codings->num = 1;
+        color_codings->codings[0] = DC1394_COLOR_CODING_MONO16;
+        break;
+        /*
+         * The following formats do not exist in Gstreamer:
+         *case GST_VIDEO_FORMAT_RGB48: // Unsigned RGB format 16 bits per channel
+         *  color_codings->num = 1
+         *  color_codings->codings[0] = DC1394_COLOR_CODING_RGB16;
+         *  break;
+         *case GST_VIDEO_FORMAT_GRAY16_BE_SIGNED: // Signed grayscale format 16 bits
+         *  color_codings->num = 1
+         *  color_codings->codings[0] = DC1394_COLOR_CODING_MONO16S;
+         *  break;
+         *case GST_VIDEO_FORMAT_RGB48_SIGNED: // Signed RGB format 16 bits per channel
+         *  color_codings->num = 1
+         *  color_codings->codings[0] = DC1394_COLOR_CODING_RGB16S;
+         *  break;
+         */
+      default:
+        GST_ERROR ("unsupported raw video format %s", format);
+        goto error;
+    }
+  } else if (gst_structure_has_name (structure, "video/x-bayer")) {
+    /*
+     * The following formats do not exist in Gstreamer:
+     *switch (gst_bayer_format_from_string(format)) {
+     *  case GST_BAYER_FORMAT_BGGR8:
+     *  case GST_BAYER_FORMAT_GBRG8:
+     *  case GST_BAYER_FORMAT_GRBG8:
+     *  case GST_BAYER_FORMAT_BGGR8:
+     *    *coding = DC1394_COLOR_CODING_RAW8;
+     *    break;
+     *  case GST_BAYER_FORMAT_BGGR16_BE:
+     *  case GST_BAYER_FORMAT_GBRG16_BE:
+     *  case GST_BAYER_FORMAT_GRBG16_BE:
+     *  case GST_BAYER_FORMAT_BGGR16_BE:
+     *    *coding = DC1394_COLOR_CODING_RAW16;
+     *    break;
+     *  default:
+     *    GST_ERROR("unsupported raw video format %s", format);
+     *    goto error;
+     *}
+     */
+    color_codings->num = 2;
+    color_codings->codings[0] = DC1394_COLOR_CODING_RAW8;
+    color_codings->codings[1] = DC1394_COLOR_CODING_MONO8;
+  } else {
+    goto error;
+  }
+
+  return TRUE;
+
+error:
+  return FALSE;
+}
+
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+  GST_DEBUG_CATEGORY_INIT (dc1394_debug, "dc1394", 0, "DC1394 interface");
+
+  return gst_element_register (plugin, "dc1394src", GST_RANK_NONE,
+      GST_TYPE_DC1394_SRC);
+}
+
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    dc1394,
+    "1394 IIDC video source",
+    plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/ext/dc1394/gstdc1394src.h b/ext/dc1394/gstdc1394src.h
new file mode 100644
index 0000000..8767826
--- /dev/null
+++ b/ext/dc1394/gstdc1394src.h
@@ -0,0 +1,60 @@
+/* GStreamer
+ * Copyright (C) <2006> Eric Jonas <jonas@mit.edu>
+ * Copyright (C) <2006> Antoine Tremblay <hexa00@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_DC1394_H__
+#define __GST_DC1394_H__
+
+#include <gst/gst.h>
+#include <gst/base/gstpushsrc.h>
+#include <dc1394/control.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_DC1394_SRC            (gst_dc1394_src_get_type())
+#define GST_DC1394_SRC(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DC1394_SRC,GstDC1394Src))
+#define GST_DC1394_SRC_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_DC1394_SRC,GstDC1394SrcClass))
+#define GST_IS_DC1394_SRC(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_DC1394_SRC))
+#define GST_IS_DC1394_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_DC1394_SRC))
+
+typedef struct _GstDC1394Src GstDC1394Src;
+typedef struct _GstDC1394SrcClass GstDC1394SrcClass;
+
+struct _GstDC1394Src {
+  GstPushSrc pushsrc;
+
+  GstCaps * caps;
+
+  uint64_t guid;
+  int unit;
+  dc1394speed_t iso_speed;
+  uint32_t dma_buffer_size;
+  dc1394camera_t * camera;
+  dc1394_t * dc1394;
+};
+
+struct _GstDC1394SrcClass {
+  GstPushSrcClass parent_class;
+};
+
+GType gst_dc1394_src_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_DC1394_H__ */
diff --git a/ext/directfb/Makefile.in b/ext/directfb/Makefile.in
index 0d4c313..3146226 100644
--- a/ext/directfb/Makefile.in
+++ b/ext/directfb/Makefile.in
@@ -312,6 +312,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -333,6 +335,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -382,6 +386,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -527,6 +533,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -653,8 +661,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -697,8 +703,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/directfb/dfbvideosink.c b/ext/directfb/dfbvideosink.c
index 7ef617f..a6f433b 100644
--- a/ext/directfb/dfbvideosink.c
+++ b/ext/directfb/dfbvideosink.c
@@ -168,6 +168,19 @@
   return type;
 }
 
+static gboolean
+gst_meta_dfbsurface_init (GstMetaDfbSurface * meta, gpointer params,
+    GstBuffer * buf)
+{
+  meta->surface = NULL;
+  meta->width = meta->height = 0;
+  meta->locked = FALSE;
+  meta->pixel_format = 0;
+  meta->dfbvideosink = NULL;
+
+  return TRUE;
+}
+
 /* our metadata */
 const GstMetaInfo *
 gst_meta_dfbsurface_get_info (void)
@@ -178,7 +191,8 @@
     const GstMetaInfo *meta =
         gst_meta_register (gst_meta_dfbsurface_api_get_type (),
         "GstMetaDfbSurface", sizeof (GstMetaDfbSurface),
-        (GstMetaInitFunction) NULL, (GstMetaFreeFunction) NULL,
+        (GstMetaInitFunction) gst_meta_dfbsurface_init,
+        (GstMetaFreeFunction) NULL,
         (GstMetaTransformFunction) NULL);
     g_once_init_leave (&meta_info, meta);
   }
@@ -2420,8 +2434,8 @@
       "DirectFB video sink", "Sink/Video", "A DirectFB based videosink",
       "Julien Moutte <julien@moutte.net>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_dfbvideosink_sink_template_factory));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_dfbvideosink_sink_template_factory);
 
   gstelement_class->change_state = gst_dfbvideosink_change_state;
 
diff --git a/ext/dtls/Makefile.in b/ext/dtls/Makefile.in
index c92a0a0..ea4d400 100644
--- a/ext/dtls/Makefile.in
+++ b/ext/dtls/Makefile.in
@@ -243,7 +243,7 @@
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
-am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp README
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -309,6 +309,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -330,6 +332,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -379,6 +383,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -524,6 +530,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -650,8 +658,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -694,8 +700,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/dtls/README b/ext/dtls/README
new file mode 100644
index 0000000..8d165ec
--- /dev/null
+++ b/ext/dtls/README
@@ -0,0 +1,153 @@
+INTRODUCTION
+============
+This document is an attempt to describe the basics of the DTLS element.
+It hasn't been written by the author(s) and so, besides being incomplete,
+*IT MIGHT ALSO BE INCORRECT*. So take it with a pinch of salt.
+
+As always, if in doubt ask the #gstreamer IRC channel.
+
+THE INTERNALS
+=============
+This plugin provides two main elements (dtlssrtpdec and dtlssrtpenc) and a few
+minor elements necessary to implement them. The two elements dtlssrtpdec and
+dtlssrtpenc are the only ones you are supposed to include in, respectively, the
+RX and TX pipelines of your DTLS-enabled application. This means you're not
+supposed to directly include those minor elements in your pipelines.
+
+dtlssrtpenc
+-----------
+This element is to be included in the TX pipeline and will initiate the DTLS
+handshake if configured to be the client. Its main configuration parameters are:
+
+  - connection-id: a string that must match the connection-id in dtlssrtpdec;
+  - is-client: a boolean that indicates whether this is going to be the client
+							 or the server during the DTLS handshake.
+
+Internally this element comprises the standard srtpenc element, the dtlsenc
+element and a funnel to connect both these elements to one single output.
+The srtpenc can be used to encrypt SRTP/SRTCP packets while the dtlsenc can be
+used to encrypt generic data, e.g. for non-SRTP applications.
+
+NB With the current implementation the TX pipeline containing the dtlssrtpenc
+	 must be created *AFTER* the RX pipeline.
+
+dtlssrtpdec
+-----------
+It is to be included in the RX pipeline. Its main configuration parameters are:
+
+  - connection-id: a string that must match the connection-id in dtlssrtpenc;
+	- pem: a string that can be used to provide your own certificate *AND* private
+				 key in PEM format. The private key is required to carry out the
+				 handshake so do not forget it or the DTLS negotiation will fail;
+  - peer_pem: a read only parameter that can be used to retrieve the
+							certificate sent from the other party in PEM format once the
+							handshake is completed.
+
+Internally this element comprises a dtlssrtpdemux, a standard srtpdec element
+and the dtlsdec element. The dtlssrtpdemux element switches SRT(C)P packets to
+the srtpdec element and DTLS packets to the dtlsdec element and discards any
+other unknown packet. So, similarly for the dtlssrtpenc case, DTLS-SRTP
+applications would exercise the srtpdec element and any other non-SRTP
+application would exercise the dtlsdec element.
+
+NB With the current implementation the RX pipeline containing the dtlssrtpdec
+	 must be created *BEFORE* the TX pipeline.
+
+EXAMPLE PIPELINE
+================
+The following is an example usage of the DTLS plugin. It is a python script that
+creates two endpoints that exchange encrypted audio using DTLS to exchange the
+encryption keys.
+
+NB In theory we would show an example gst-launch command. However that would not
+	 be enough because you need two pairs of TX/RX pipelines for a proper
+	 handshake and you can't use gst-launch two start 4 different pipelines.
+	 This why there is a python script in here.
+
+```
+#!/usr/bin/env python3
+
+# create two endpoints, each with tx and rx pipelines using the DTLS
+# elements and let audio flowing for a while to give time for a packet capture
+
+import time
+from gi.repository import Gst, GObject, GLib
+GObject.threads_init()
+Gst.init(None)
+
+
+def _start_pipeline(pipeline):
+    pipeline.set_state(Gst.State.PLAYING)
+    pipeline.get_state(Gst.CLOCK_TIME_NONE)
+
+
+def _sleep_while_iterating_gloop(secs):
+    """ block for secs seconds but iterate the gloop while you do """
+    for _ in range(10 * secs):
+        gloop = GLib.MainLoop()
+        gloop_context = gloop.get_context()
+        gloop_context.iteration(may_block=False)
+        time.sleep(0.1)
+
+def dtls_tx_pipeline_description(name, is_client, port):
+    return ' ! '.join([
+        'audiotestsrc is-live=true',
+        'audio/x-raw, rate=8000, format=S16LE, channels=1',
+        'opusenc frame-size=10',
+        'rtpopuspay pt=103',
+        '.rtp_sink_0 dtlssrtpenc connection-id={name} is-client={client} .src',
+        'udpsink port={port}'
+    ]).format(name=name, client=is_client, port=port)
+
+
+def dtls_rx_pipeline_description(name, port):
+    return ' ! '.join([
+        'udpsrc port={port}',
+        '.sink dtlssrtpdec connection-id={name} .rtp_src',
+        'queue',
+        'fakesink async=false'
+    ]).format(name=name, port=port)
+
+
+class Endpoint:
+    def __init__(self, name, is_client, tx_port, rx_port):
+        self.name = name
+        tx_pipeline_description = dtls_tx_pipeline_description(
+            name, is_client, tx_port
+        )
+        rx_pipeline_description = dtls_rx_pipeline_description(name, rx_port)
+        print(rx_pipeline_description)
+        print(tx_pipeline_description)
+
+        self.rx_pipeline = Gst.parse_launch(rx_pipeline_description)
+        self.tx_pipeline = Gst.parse_launch(tx_pipeline_description)
+
+    def start(self):
+				# Start RX first, otherwise it fails due to the current implementation
+        self.start_rx_pipeline()
+        self.start_tx_pipeline()
+
+    def start_rx_pipeline(self):
+        _start_pipeline(self.rx_pipeline)
+
+    def start_tx_pipeline(self):
+        _start_pipeline(self.tx_pipeline)
+
+    def stop(self):
+        def stop_pipeline(p):
+            p.set_state(Gst.State.NULL)
+            p.get_state(Gst.CLOCK_TIME_NONE)
+        stop_pipeline(self.tx_pipeline)
+        stop_pipeline(self.rx_pipeline)
+
+blue = Endpoint("blue", is_client=True, tx_port=23000, rx_port=23002)
+red = Endpoint("red", is_client=False, tx_port=23002, rx_port=23000)
+
+red.start()
+blue.start()
+
+_sleep_while_iterating_gloop(3)
+
+red.stop()
+blue.stop()
+```
diff --git a/ext/dtls/gstdtlsdec.c b/ext/dtls/gstdtlsdec.c
index f05b4f1..3770de0 100644
--- a/ext/dtls/gstdtlsdec.c
+++ b/ext/dtls/gstdtlsdec.c
@@ -173,10 +173,8 @@
 
   g_object_class_install_properties (gobject_class, NUM_PROPERTIES, properties);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (element_class, &src_template);
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
 
   gst_element_class_set_static_metadata (element_class,
       "DTLS Decoder",
diff --git a/ext/dtls/gstdtlsenc.c b/ext/dtls/gstdtlsenc.c
index 060f053..9c64935 100644
--- a/ext/dtls/gstdtlsenc.c
+++ b/ext/dtls/gstdtlsenc.c
@@ -162,10 +162,8 @@
 
   g_object_class_install_properties (gobject_class, NUM_PROPERTIES, properties);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (element_class, &src_template);
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
 
   gst_element_class_set_static_metadata (element_class,
       "DTLS Encoder",
diff --git a/ext/dtls/gstdtlssrtpdec.c b/ext/dtls/gstdtlssrtpdec.c
index 5e29a0f..300fb9c 100644
--- a/ext/dtls/gstdtlssrtpdec.c
+++ b/ext/dtls/gstdtlssrtpdec.c
@@ -133,14 +133,10 @@
 
   g_object_class_install_properties (gobject_class, NUM_PROPERTIES, properties);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&rtp_src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&rtcp_src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&data_src_template));
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
+  gst_element_class_add_static_pad_template (element_class, &rtp_src_template);
+  gst_element_class_add_static_pad_template (element_class, &rtcp_src_template);
+  gst_element_class_add_static_pad_template (element_class, &data_src_template);
 
   gst_element_class_set_static_metadata (element_class,
       "DTLS-SRTP Decoder",
@@ -169,19 +165,19 @@
                                  +-----------+
 */
 
-  self->srtp_dec = gst_element_factory_make ("srtpdec", "srtp-decoder");
+  self->srtp_dec = gst_element_factory_make ("srtpdec", NULL);
   if (!self->srtp_dec) {
     GST_ERROR_OBJECT (self,
         "failed to create srtp_dec, is the srtp plugin registered?");
     return;
   }
   self->dtls_srtp_demux =
-      gst_element_factory_make ("dtlssrtpdemux", "dtls-srtp-demux");
+      gst_element_factory_make ("dtlssrtpdemux", NULL);
   if (!self->dtls_srtp_demux) {
     GST_ERROR_OBJECT (self, "failed to create dtls_srtp_demux");
     return;
   }
-  self->bin.dtls_element = gst_element_factory_make ("dtlsdec", "dtls-decoder");
+  self->bin.dtls_element = gst_element_factory_make ("dtlsdec", NULL);
   if (!self->bin.dtls_element) {
     GST_ERROR_OBJECT (self, "failed to create dtls_dec");
     return;
diff --git a/ext/dtls/gstdtlssrtpdemux.c b/ext/dtls/gstdtlssrtpdemux.c
index f52d5fb..ab1ef70 100644
--- a/ext/dtls/gstdtlssrtpdemux.c
+++ b/ext/dtls/gstdtlssrtpdemux.c
@@ -69,12 +69,9 @@
 
   element_class = (GstElementClass *) klass;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&rtp_src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&dtls_src_template));
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
+  gst_element_class_add_static_pad_template (element_class, &rtp_src_template);
+  gst_element_class_add_static_pad_template (element_class, &dtls_src_template);
 
   gst_element_class_set_static_metadata (element_class,
       "DTLS SRTP Demultiplexer",
diff --git a/ext/dtls/gstdtlssrtpenc.c b/ext/dtls/gstdtlssrtpenc.c
index 941afac..237aec5 100644
--- a/ext/dtls/gstdtlssrtpenc.c
+++ b/ext/dtls/gstdtlssrtpenc.c
@@ -139,14 +139,12 @@
 
   g_object_class_install_properties (gobject_class, NUM_PROPERTIES, properties);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&rtp_sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&rtcp_sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&data_sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (element_class, &rtp_sink_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &rtcp_sink_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &data_sink_template);
+  gst_element_class_add_static_pad_template (element_class, &src_template);
 
   gst_element_class_set_static_metadata (element_class,
       "DTLS-SRTP Encoder",
@@ -174,19 +172,19 @@
                  +--------------------+     +-----------------+
 */
 
-  self->srtp_enc = gst_element_factory_make ("srtpenc", "srtp-encoder");
+  self->srtp_enc = gst_element_factory_make ("srtpenc", NULL);
   if (!self->srtp_enc) {
     GST_ERROR_OBJECT (self,
         "failed to create srtp encoder, is the srtp plugin registered?");
     return;
   }
   g_return_if_fail (self->srtp_enc);
-  self->bin.dtls_element = gst_element_factory_make ("dtlsenc", "dtls-encoder");
+  self->bin.dtls_element = gst_element_factory_make ("dtlsenc", NULL);
   if (!self->bin.dtls_element) {
     GST_ERROR_OBJECT (self, "failed to create dtls encoder");
     return;
   }
-  self->funnel = gst_element_factory_make ("funnel", "funnel");
+  self->funnel = gst_element_factory_make ("funnel", NULL);
   if (!self->funnel) {
     GST_ERROR_OBJECT (self, "failed to create funnel");
     return;
diff --git a/ext/dts/Makefile.in b/ext/dts/Makefile.in
index e5f7fa7..1e08d81 100644
--- a/ext/dts/Makefile.in
+++ b/ext/dts/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/dts/gstdtsdec.c b/ext/dts/gstdtsdec.c
index 767b6bf..70ffbc7 100644
--- a/ext/dts/gstdtsdec.c
+++ b/ext/dts/gstdtsdec.c
@@ -38,8 +38,11 @@
 #include "config.h"
 #endif
 
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
+
 #include <string.h>
-#include "_stdint.h"
 #include <stdlib.h>
 
 #include <gst/gst.h>
@@ -156,10 +159,8 @@
   gobject_class->set_property = gst_dtsdec_set_property;
   gobject_class->get_property = gst_dtsdec_get_property;
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
+  gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
   gst_element_class_set_static_metadata (gstelement_class, "DTS audio decoder",
       "Codec/Decoder/Audio",
       "Decodes DTS audio streams",
diff --git a/ext/faac/Makefile.in b/ext/faac/Makefile.in
index 09b85a3..1a73219 100644
--- a/ext/faac/Makefile.in
+++ b/ext/faac/Makefile.in
@@ -302,6 +302,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -323,6 +325,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -372,6 +376,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -517,6 +523,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -643,8 +651,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,8 +693,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/faac/gstfaac.c b/ext/faac/gstfaac.c
index 6804cbf..7e3cf41 100644
--- a/ext/faac/gstfaac.c
+++ b/ext/faac/gstfaac.c
@@ -191,8 +191,7 @@
 
   GST_DEBUG_CATEGORY_INIT (faac_debug, "faac", 0, "AAC encoding");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_template);
 
   sink_caps = gst_faac_enc_generate_sink_caps ();
   sink_templ = gst_pad_template_new ("sink",
diff --git a/ext/faad/Makefile.in b/ext/faad/Makefile.in
index 86ddefa..0d8f095 100644
--- a/ext/faad/Makefile.in
+++ b/ext/faad/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/faad/gstfaad.c b/ext/faad/gstfaad.c
index b72b42d..07cca30 100644
--- a/ext/faad/gstfaad.c
+++ b/ext/faad/gstfaad.c
@@ -111,10 +111,8 @@
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
   GstAudioDecoderClass *base_class = GST_AUDIO_DECODER_CLASS (klass);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (element_class, &src_template);
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
 
   gst_element_class_set_static_metadata (element_class, "AAC audio decoder",
       "Codec/Decoder/Audio",
diff --git a/ext/fdkaac/Makefile.am b/ext/fdkaac/Makefile.am
new file mode 100644
index 0000000..95cae3e
--- /dev/null
+++ b/ext/fdkaac/Makefile.am
@@ -0,0 +1,13 @@
+plugin_LTLIBRARIES = libgstfdkaac.la
+
+libgstfdkaac_la_SOURCES = plugin.c gstfdkaacenc.c gstfdkaacdec.c
+libgstfdkaac_la_CFLAGS = -DGST_USE_UNSTABLE_API \
+	$(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) \
+	$(GST_CFLAGS) $(FDK_AAC_CFLAGS)
+libgstfdkaac_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
+	-lgstaudio-@GST_API_VERSION@ -lgstpbutils-@GST_API_VERSION@ \
+	$(GST_BASE_LIBS) $(FDK_AAC_LIBS)
+libgstfdkaac_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstfdkaac_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
+
+noinst_HEADERS = gstfdkaacenc.h gstfdkaacdec.h
diff --git a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.in b/ext/fdkaac/Makefile.in
similarity index 71%
copy from tests/examples/gl/gtk/gtkvideooverlay/Makefile.in
copy to ext/fdkaac/Makefile.in
index aef9ed4..1f4bbb4 100644
--- a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.in
+++ b/ext/fdkaac/Makefile.in
@@ -14,6 +14,7 @@
 
 @SET_MAKE@
 
+
 VPATH = @srcdir@
 am__is_gnu_make = { \
   if test -z '$(MAKELEVEL)'; then \
@@ -89,8 +90,7 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-noinst_PROGRAMS = gtkvideooverlay$(EXEEXT)
-subdir = tests/examples/gl/gtk/gtkvideooverlay
+subdir = ext/fdkaac
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -127,27 +127,56 @@
 	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
+	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-am_gtkvideooverlay_OBJECTS = gtkvideooverlay-main.$(OBJEXT)
-gtkvideooverlay_OBJECTS = $(am_gtkvideooverlay_OBJECTS)
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
 am__DEPENDENCIES_1 =
-gtkvideooverlay_DEPENDENCIES = ../libgstgtkhelper.la \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1)
+libgstfdkaac_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am_libgstfdkaac_la_OBJECTS = libgstfdkaac_la-plugin.lo \
+	libgstfdkaac_la-gstfdkaacenc.lo \
+	libgstfdkaac_la-gstfdkaacdec.lo
+libgstfdkaac_la_OBJECTS = $(am_libgstfdkaac_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 am__v_lt_1 = 
-gtkvideooverlay_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
-	$(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+libgstfdkaac_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(libgstfdkaac_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+	$(CCLD) $(libgstfdkaac_la_CFLAGS) $(CFLAGS) \
+	$(libgstfdkaac_la_LDFLAGS) $(LDFLAGS) -o $@
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -164,31 +193,32 @@
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
 am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_@AM_V@)
-am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
-am__v_CXX_0 = @echo "  CXX     " $@;
-am__v_CXX_1 = 
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo "  CXXLD   " $@;
-am__v_CXXLD_1 = 
-SOURCES = $(gtkvideooverlay_SOURCES)
-DIST_SOURCES = $(gtkvideooverlay_SOURCES)
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(libgstfdkaac_la_SOURCES)
+DIST_SOURCES = $(libgstfdkaac_la_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+HEADERS = $(noinst_HEADERS)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 # Read a list of newline-separated strings from the standard input,
 # and print each of them once, without duplicates.  Input order is
@@ -274,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -295,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -344,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -489,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -615,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -659,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -749,19 +790,23 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 wayland_scanner = @wayland_scanner@
-gtkvideooverlay_SOURCES = main.cpp
-gtkvideooverlay_CXXFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
-	$(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
-	$(GL_CFLAGS) $(GTK3_CFLAGS)  $(X11_CFLAGS)
+plugin_LTLIBRARIES = libgstfdkaac.la
+libgstfdkaac_la_SOURCES = plugin.c gstfdkaacenc.c gstfdkaacdec.c
+libgstfdkaac_la_CFLAGS = -DGST_USE_UNSTABLE_API \
+	$(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) \
+	$(GST_CFLAGS) $(FDK_AAC_CFLAGS)
 
-gtkvideooverlay_LDADD = ../libgstgtkhelper.la \
-	$(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
-	$(GL_LIBS) -lgstvideo-$(GST_API_VERSION) $(X11_LIBS)
+libgstfdkaac_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
+	-lgstaudio-@GST_API_VERSION@ -lgstpbutils-@GST_API_VERSION@ \
+	$(GST_BASE_LIBS) $(FDK_AAC_LIBS)
 
+libgstfdkaac_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstfdkaac_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
+noinst_HEADERS = gstfdkaacenc.h gstfdkaacdec.h
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .cpp .lo .o .obj
+.SUFFIXES: .c .lo .o .obj
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -771,9 +816,9 @@
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/gl/gtk/gtkvideooverlay/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ext/fdkaac/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu tests/examples/gl/gtk/gtkvideooverlay/Makefile
+	  $(AUTOMAKE) --gnu ext/fdkaac/Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -792,18 +837,43 @@
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 
-clean-noinstPROGRAMS:
-	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
+install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
+	}
 
-gtkvideooverlay$(EXEEXT): $(gtkvideooverlay_OBJECTS) $(gtkvideooverlay_DEPENDENCIES) $(EXTRA_gtkvideooverlay_DEPENDENCIES) 
-	@rm -f gtkvideooverlay$(EXEEXT)
-	$(AM_V_CXXLD)$(gtkvideooverlay_LINK) $(gtkvideooverlay_OBJECTS) $(gtkvideooverlay_LDADD) $(LIBS)
+uninstall-pluginLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
+	done
+
+clean-pluginLTLIBRARIES:
+	-test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
+	@list='$(plugin_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+libgstfdkaac.la: $(libgstfdkaac_la_OBJECTS) $(libgstfdkaac_la_DEPENDENCIES) $(EXTRA_libgstfdkaac_la_DEPENDENCIES) 
+	$(AM_V_CCLD)$(libgstfdkaac_la_LINK) -rpath $(plugindir) $(libgstfdkaac_la_OBJECTS) $(libgstfdkaac_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -811,45 +881,54 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkvideooverlay-main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstfdkaac_la-gstfdkaacdec.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstfdkaac_la-gstfdkaacenc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstfdkaac_la-plugin.Plo@am__quote@
 
-.cpp.o:
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+.c.o:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
 
-.cpp.obj:
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+.c.obj:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
-.cpp.lo:
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+.c.lo:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
-gtkvideooverlay-main.o: main.cpp
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -MT gtkvideooverlay-main.o -MD -MP -MF $(DEPDIR)/gtkvideooverlay-main.Tpo -c -o gtkvideooverlay-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/gtkvideooverlay-main.Tpo $(DEPDIR)/gtkvideooverlay-main.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='main.cpp' object='gtkvideooverlay-main.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -c -o gtkvideooverlay-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
+libgstfdkaac_la-plugin.lo: plugin.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstfdkaac_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstfdkaac_la_CFLAGS) $(CFLAGS) -MT libgstfdkaac_la-plugin.lo -MD -MP -MF $(DEPDIR)/libgstfdkaac_la-plugin.Tpo -c -o libgstfdkaac_la-plugin.lo `test -f 'plugin.c' || echo '$(srcdir)/'`plugin.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstfdkaac_la-plugin.Tpo $(DEPDIR)/libgstfdkaac_la-plugin.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='plugin.c' object='libgstfdkaac_la-plugin.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstfdkaac_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstfdkaac_la_CFLAGS) $(CFLAGS) -c -o libgstfdkaac_la-plugin.lo `test -f 'plugin.c' || echo '$(srcdir)/'`plugin.c
 
-gtkvideooverlay-main.obj: main.cpp
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -MT gtkvideooverlay-main.obj -MD -MP -MF $(DEPDIR)/gtkvideooverlay-main.Tpo -c -o gtkvideooverlay-main.obj `if test -f 'main.cpp'; then $(CYGPATH_W) 'main.cpp'; else $(CYGPATH_W) '$(srcdir)/main.cpp'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/gtkvideooverlay-main.Tpo $(DEPDIR)/gtkvideooverlay-main.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='main.cpp' object='gtkvideooverlay-main.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -c -o gtkvideooverlay-main.obj `if test -f 'main.cpp'; then $(CYGPATH_W) 'main.cpp'; else $(CYGPATH_W) '$(srcdir)/main.cpp'; fi`
+libgstfdkaac_la-gstfdkaacenc.lo: gstfdkaacenc.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstfdkaac_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstfdkaac_la_CFLAGS) $(CFLAGS) -MT libgstfdkaac_la-gstfdkaacenc.lo -MD -MP -MF $(DEPDIR)/libgstfdkaac_la-gstfdkaacenc.Tpo -c -o libgstfdkaac_la-gstfdkaacenc.lo `test -f 'gstfdkaacenc.c' || echo '$(srcdir)/'`gstfdkaacenc.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstfdkaac_la-gstfdkaacenc.Tpo $(DEPDIR)/libgstfdkaac_la-gstfdkaacenc.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstfdkaacenc.c' object='libgstfdkaac_la-gstfdkaacenc.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstfdkaac_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstfdkaac_la_CFLAGS) $(CFLAGS) -c -o libgstfdkaac_la-gstfdkaacenc.lo `test -f 'gstfdkaacenc.c' || echo '$(srcdir)/'`gstfdkaacenc.c
+
+libgstfdkaac_la-gstfdkaacdec.lo: gstfdkaacdec.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstfdkaac_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstfdkaac_la_CFLAGS) $(CFLAGS) -MT libgstfdkaac_la-gstfdkaacdec.lo -MD -MP -MF $(DEPDIR)/libgstfdkaac_la-gstfdkaacdec.Tpo -c -o libgstfdkaac_la-gstfdkaacdec.lo `test -f 'gstfdkaacdec.c' || echo '$(srcdir)/'`gstfdkaacdec.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstfdkaac_la-gstfdkaacdec.Tpo $(DEPDIR)/libgstfdkaac_la-gstfdkaacdec.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstfdkaacdec.c' object='libgstfdkaac_la-gstfdkaacdec.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstfdkaac_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstfdkaac_la_CFLAGS) $(CFLAGS) -c -o libgstfdkaac_la-gstfdkaacdec.lo `test -f 'gstfdkaacdec.c' || echo '$(srcdir)/'`gstfdkaacdec.c
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -941,8 +1020,11 @@
 	done
 check-am: all-am
 check: check-am
-all-am: Makefile $(PROGRAMS)
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
 installdirs:
+	for dir in "$(DESTDIR)$(plugindir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
 install: install-am
 install-exec: install-exec-am
 install-data: install-data-am
@@ -975,7 +1057,7 @@
 	@echo "it deletes files that may require special tools to rebuild."
 clean: clean-am
 
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
 	mostlyclean-am
 
 distclean: distclean-am
@@ -996,7 +1078,7 @@
 
 info-am:
 
-install-data-am:
+install-data-am: install-pluginLTLIBRARIES
 
 install-dvi: install-dvi-am
 
@@ -1042,23 +1124,24 @@
 
 ps-am:
 
-uninstall-am:
+uninstall-am: uninstall-pluginLTLIBRARIES
 
 .MAKE: install-am install-strip
 
 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
+	clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \
 	ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
 	install-exec-am install-html install-html-am install-info \
 	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am
+	install-pluginLTLIBRARIES install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+	uninstall-pluginLTLIBRARIES
 
 .PRECIOUS: Makefile
 
diff --git a/ext/fdkaac/gstfdkaacdec.c b/ext/fdkaac/gstfdkaacdec.c
new file mode 100644
index 0000000..c271837
--- /dev/null
+++ b/ext/fdkaac/gstfdkaacdec.c
@@ -0,0 +1,450 @@
+/*
+ * Copyright (C) 2016 Sebastian Dröge <sebastian@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gstfdkaacdec.h"
+
+#include <gst/pbutils/pbutils.h>
+
+#include <string.h>
+
+/* TODO:
+ * - LOAS / LATM support
+ * - Error concealment
+ */
+
+static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/mpeg, "
+        "mpegversion = (int) 4, "
+        "stream-format = (string) { adts, adif, raw }")
+    );
+
+static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/x-raw, "
+        "format = (string) " GST_AUDIO_NE (S16) ", "
+        "layout = (string) interleaved, "
+        "rate = (int) [8000, 96000], " "channels = (int) [1, 8]")
+    );
+
+GST_DEBUG_CATEGORY_STATIC (gst_fdkaacdec_debug);
+#define GST_CAT_DEFAULT gst_fdkaacdec_debug
+
+static gboolean gst_fdkaacdec_start (GstAudioDecoder * dec);
+static gboolean gst_fdkaacdec_stop (GstAudioDecoder * dec);
+static gboolean gst_fdkaacdec_set_format (GstAudioDecoder * dec,
+    GstCaps * caps);
+static GstFlowReturn gst_fdkaacdec_handle_frame (GstAudioDecoder * dec,
+    GstBuffer * in_buf);
+static void gst_fdkaacdec_flush (GstAudioDecoder * dec, gboolean hard);
+
+G_DEFINE_TYPE (GstFdkAacDec, gst_fdkaacdec, GST_TYPE_AUDIO_DECODER);
+
+static gboolean
+gst_fdkaacdec_start (GstAudioDecoder * dec)
+{
+  GstFdkAacDec *self = GST_FDKAACDEC (dec);
+
+  GST_DEBUG_OBJECT (self, "start");
+
+  return TRUE;
+}
+
+static gboolean
+gst_fdkaacdec_stop (GstAudioDecoder * dec)
+{
+  GstFdkAacDec *self = GST_FDKAACDEC (dec);
+
+  GST_DEBUG_OBJECT (self, "stop");
+
+  g_free (self->decode_buffer);
+  self->decode_buffer = NULL;
+
+  if (self->dec)
+    aacDecoder_Close (self->dec);
+  self->dec = NULL;
+
+  return TRUE;
+}
+
+static gboolean
+gst_fdkaacdec_set_format (GstAudioDecoder * dec, GstCaps * caps)
+{
+  GstFdkAacDec *self = GST_FDKAACDEC (dec);
+  TRANSPORT_TYPE transport_format;
+  GstStructure *s;
+  const gchar *stream_format;
+  AAC_DECODER_ERROR err;
+
+  if (self->dec) {
+    /* drain */
+    gst_fdkaacdec_handle_frame (dec, NULL);
+    aacDecoder_Close (self->dec);
+    self->dec = NULL;
+  }
+
+  s = gst_caps_get_structure (caps, 0);
+  stream_format = gst_structure_get_string (s, "stream-format");
+  if (strcmp (stream_format, "raw") == 0) {
+    transport_format = TT_MP4_RAW;
+  } else if (strcmp (stream_format, "adif") == 0) {
+    transport_format = TT_MP4_ADIF;
+  } else if (strcmp (stream_format, "adts") == 0) {
+    transport_format = TT_MP4_ADTS;
+  } else {
+    g_assert_not_reached ();
+  }
+
+  self->dec = aacDecoder_Open (transport_format, 1);
+  if (!self->dec) {
+    GST_ERROR_OBJECT (self, "Failed to open decoder");
+    return FALSE;
+  }
+
+  if (transport_format == TT_MP4_RAW) {
+    GstBuffer *codec_data = NULL;
+    GstMapInfo map;
+    guint8 *data;
+    guint size;
+
+    gst_structure_get (s, "codec_data", GST_TYPE_BUFFER, &codec_data, NULL);
+
+    if (!codec_data) {
+      GST_ERROR_OBJECT (self, "Raw AAC without codec_data not supported");
+      return FALSE;
+    }
+
+    gst_buffer_map (codec_data, &map, GST_MAP_READ);
+    data = map.data;
+    size = map.size;
+
+    if ((err = aacDecoder_ConfigRaw (self->dec, &data, &size)) != AAC_DEC_OK) {
+      gst_buffer_unmap (codec_data, &map);
+      gst_buffer_unref (codec_data);
+      GST_ERROR_OBJECT (self, "Invalid codec_data: %d", err);
+      return FALSE;
+    }
+
+    gst_buffer_unmap (codec_data, &map);
+    gst_buffer_unref (codec_data);
+  }
+
+  if ((err =
+          aacDecoder_SetParam (self->dec, AAC_PCM_OUTPUT_CHANNEL_MAPPING,
+              0)) != AAC_DEC_OK) {
+    GST_ERROR_OBJECT (self, "Failed to set output channel mapping: %d", err);
+    return FALSE;
+  }
+
+  if ((err =
+          aacDecoder_SetParam (self->dec, AAC_PCM_OUTPUT_INTERLEAVED,
+              1)) != AAC_DEC_OK) {
+    GST_ERROR_OBJECT (self, "Failed to set interleaved output: %d", err);
+    return FALSE;
+  }
+
+  /* 8 channels * 2 bytes per sample * 2048 samples */
+  if (!self->decode_buffer) {
+    self->decode_buffer_size = 8 * 2048;
+    self->decode_buffer = g_new (gint16, self->decode_buffer_size);
+  }
+
+  return TRUE;
+}
+
+static GstFlowReturn
+gst_fdkaacdec_handle_frame (GstAudioDecoder * dec, GstBuffer * inbuf)
+{
+  GstFdkAacDec *self = GST_FDKAACDEC (dec);
+  GstFlowReturn ret = GST_FLOW_OK;
+  GstBuffer *outbuf;
+  GstMapInfo imap;
+  AAC_DECODER_ERROR err;
+  guint size, valid;
+  CStreamInfo *stream_info;
+  GstAudioInfo info;
+  guint flags = 0, i;
+  GstAudioChannelPosition pos[64], gst_pos[64];
+  gboolean need_reorder;
+
+  if (inbuf) {
+    gst_buffer_ref (inbuf);
+    gst_buffer_map (inbuf, &imap, GST_MAP_READ);
+    valid = size = imap.size;
+
+    if ((err =
+            aacDecoder_Fill (self->dec, (guint8 **) & imap.data, &size,
+                &valid)) != AAC_DEC_OK) {
+      GST_AUDIO_DECODER_ERROR (self, 1, STREAM, DECODE, (NULL),
+          ("filling error: %d", err), ret);
+      goto out;
+    }
+
+    if (GST_BUFFER_IS_DISCONT (inbuf))
+      flags |= AACDEC_INTR;
+  } else {
+    flags |= AACDEC_FLUSH;
+  }
+
+  if ((err =
+          aacDecoder_DecodeFrame (self->dec, self->decode_buffer,
+              self->decode_buffer_size, flags)) != AAC_DEC_OK) {
+    if (err == AAC_DEC_TRANSPORT_SYNC_ERROR) {
+      ret = GST_FLOW_OK;
+      outbuf = NULL;
+      goto finish;
+    }
+    GST_AUDIO_DECODER_ERROR (self, 1, STREAM, DECODE, (NULL),
+        ("decoding error: %d", err), ret);
+    goto out;
+  }
+
+  stream_info = aacDecoder_GetStreamInfo (self->dec);
+  if (!stream_info) {
+    GST_AUDIO_DECODER_ERROR (self, 1, STREAM, DECODE, (NULL),
+        ("failed to get stream info"), ret);
+    goto out;
+  }
+
+  /* FIXME: Don't recalculate this on every buffer */
+  if (stream_info->numChannels == 1) {
+    pos[0] = GST_AUDIO_CHANNEL_POSITION_MONO;
+  } else {
+    gint n_front = 0, n_side = 0, n_back = 0, n_lfe = 0;
+
+    /* FIXME: Can this be simplified somehow? */
+    for (i = 0; i < stream_info->numChannels; i++) {
+      if (stream_info->pChannelType[i] == ACT_FRONT) {
+        n_front++;
+      } else if (stream_info->pChannelType[i] == ACT_SIDE) {
+        n_side++;
+      } else if (stream_info->pChannelType[i] == ACT_BACK) {
+        n_back++;
+      } else if (stream_info->pChannelType[i] == ACT_LFE) {
+        n_lfe++;
+      } else {
+        GST_ERROR_OBJECT (self, "Channel type %d not supported",
+            stream_info->pChannelType[i]);
+        ret = GST_FLOW_NOT_NEGOTIATED;
+        goto out;
+      }
+    }
+
+    for (i = 0; i < stream_info->numChannels; i++) {
+      if (stream_info->pChannelType[i] == ACT_FRONT) {
+        if (stream_info->pChannelIndices[i] == 0) {
+          if (n_front & 1)
+            pos[i] = GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER;
+          else if (n_front > 2)
+            pos[i] = GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER;
+          else
+            pos[i] = GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT;
+        } else if (stream_info->pChannelIndices[i] == 1) {
+          if ((n_front & 1) && n_front > 3)
+            pos[i] = GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER;
+          else if (n_front & 1)
+            pos[i] = GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT;
+          else if (n_front > 2)
+            pos[i] = GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER;
+          else
+            pos[i] = GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT;
+        } else if (stream_info->pChannelIndices[i] == 2) {
+          if ((n_front & 1) && n_front > 3)
+            pos[i] = GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER;
+          else if (n_front & 1)
+            pos[i] = GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT;
+          else if (n_front > 2)
+            pos[i] = GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT;
+          else
+            g_assert_not_reached ();
+        } else if (stream_info->pChannelIndices[i] == 3) {
+          if ((n_front & 1) && n_front > 3)
+            pos[i] = GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT;
+          else if (n_front & 1)
+            g_assert_not_reached ();
+          else if (n_front > 2)
+            pos[i] = GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT;
+          else
+            g_assert_not_reached ();
+        } else if (stream_info->pChannelIndices[i] == 4) {
+          if ((n_front & 1) && n_front > 2)
+            pos[i] = GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT;
+          else if (n_front & 1)
+            g_assert_not_reached ();
+          else if (n_front > 2)
+            g_assert_not_reached ();
+          else
+            g_assert_not_reached ();
+        } else {
+          GST_ERROR_OBJECT (self, "Front channel index %d not supported",
+              stream_info->pChannelIndices[i]);
+          ret = GST_FLOW_NOT_NEGOTIATED;
+          goto out;
+        }
+      } else if (stream_info->pChannelType[i] == ACT_SIDE) {
+        if (n_side & 1) {
+          GST_ERROR_OBJECT (self, "Odd number of side channels not supported");
+          ret = GST_FLOW_NOT_NEGOTIATED;
+          goto out;
+        } else if (stream_info->pChannelIndices[i] == 0) {
+          pos[i] = GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT;
+        } else if (stream_info->pChannelIndices[i] == 1) {
+          pos[i] = GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT;
+        } else {
+          GST_ERROR_OBJECT (self, "Side channel index %d not supported",
+              stream_info->pChannelIndices[i]);
+          ret = GST_FLOW_NOT_NEGOTIATED;
+          goto out;
+        }
+      } else if (stream_info->pChannelType[i] == ACT_BACK) {
+        if (stream_info->pChannelIndices[i] == 0) {
+          if (n_back & 1)
+            pos[i] = GST_AUDIO_CHANNEL_POSITION_REAR_CENTER;
+          else
+            pos[i] = GST_AUDIO_CHANNEL_POSITION_REAR_LEFT;
+        } else if (stream_info->pChannelIndices[i] == 1) {
+          if (n_back & 1)
+            pos[i] = GST_AUDIO_CHANNEL_POSITION_REAR_LEFT;
+          else
+            pos[i] = GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT;
+        } else if (stream_info->pChannelIndices[i] == 2) {
+          if (n_back & 1)
+            pos[i] = GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT;
+          else
+            g_assert_not_reached ();
+        } else {
+          GST_ERROR_OBJECT (self, "Side channel index %d not supported",
+              stream_info->pChannelIndices[i]);
+          ret = GST_FLOW_NOT_NEGOTIATED;
+          goto out;
+        }
+      } else if (stream_info->pChannelType[i] == ACT_LFE) {
+        if (stream_info->pChannelIndices[i] == 0) {
+          pos[i] = GST_AUDIO_CHANNEL_POSITION_LFE1;
+        } else {
+          GST_ERROR_OBJECT (self, "LFE channel index %d not supported",
+              stream_info->pChannelIndices[i]);
+          ret = GST_FLOW_NOT_NEGOTIATED;
+          goto out;
+        }
+      } else {
+        GST_ERROR_OBJECT (self, "Channel type %d not supported",
+            stream_info->pChannelType[i]);
+        ret = GST_FLOW_NOT_NEGOTIATED;
+        goto out;
+      }
+    }
+  }
+
+  memcpy (gst_pos, pos,
+      sizeof (GstAudioChannelPosition) * stream_info->numChannels);
+  if (!gst_audio_channel_positions_to_valid_order (gst_pos,
+          stream_info->numChannels)) {
+    ret = GST_FLOW_NOT_NEGOTIATED;
+    goto out;
+  }
+
+  need_reorder =
+      memcmp (pos, gst_pos,
+      sizeof (GstAudioChannelPosition) * stream_info->numChannels) != 0;
+
+  gst_audio_info_set_format (&info, GST_AUDIO_FORMAT_S16,
+      stream_info->sampleRate, stream_info->numChannels, gst_pos);
+  if (!gst_audio_decoder_set_output_format (dec, &info)) {
+    GST_ERROR_OBJECT (self, "Failed to set output format");
+    ret = GST_FLOW_NOT_NEGOTIATED;
+    goto out;
+  }
+
+  outbuf =
+      gst_audio_decoder_allocate_output_buffer (dec,
+      stream_info->frameSize * GST_AUDIO_INFO_BPF (&info));
+  gst_buffer_fill (outbuf, 0, self->decode_buffer,
+      gst_buffer_get_size (outbuf));
+
+  if (need_reorder) {
+    gst_audio_buffer_reorder_channels (outbuf, GST_AUDIO_INFO_FORMAT (&info),
+        GST_AUDIO_INFO_CHANNELS (&info), pos, gst_pos);
+  }
+
+finish:
+  ret = gst_audio_decoder_finish_frame (dec, outbuf, 1);
+
+out:
+
+  if (inbuf) {
+    gst_buffer_unmap (inbuf, &imap);
+    gst_buffer_unref (inbuf);
+  }
+
+  return ret;
+}
+
+static void
+gst_fdkaacdec_flush (GstAudioDecoder * dec, gboolean hard)
+{
+  GstFdkAacDec *self = GST_FDKAACDEC (dec);
+
+  if (self->dec) {
+    AAC_DECODER_ERROR err;
+    if ((err =
+            aacDecoder_DecodeFrame (self->dec, self->decode_buffer,
+                self->decode_buffer_size, AACDEC_FLUSH)) != AAC_DEC_OK) {
+      GST_ERROR_OBJECT (self, "flushing error: %d", err);
+    }
+  }
+}
+
+static void
+gst_fdkaacdec_init (GstFdkAacDec * self)
+{
+  self->dec = NULL;
+
+  gst_audio_decoder_set_drainable (GST_AUDIO_DECODER (self), TRUE);
+  gst_audio_decoder_set_needs_format (GST_AUDIO_DECODER (self), TRUE);
+}
+
+static void
+gst_fdkaacdec_class_init (GstFdkAacDecClass * klass)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+  GstAudioDecoderClass *base_class = GST_AUDIO_DECODER_CLASS (klass);
+
+  base_class->start = GST_DEBUG_FUNCPTR (gst_fdkaacdec_start);
+  base_class->stop = GST_DEBUG_FUNCPTR (gst_fdkaacdec_stop);
+  base_class->set_format = GST_DEBUG_FUNCPTR (gst_fdkaacdec_set_format);
+  base_class->handle_frame = GST_DEBUG_FUNCPTR (gst_fdkaacdec_handle_frame);
+  base_class->flush = GST_DEBUG_FUNCPTR (gst_fdkaacdec_flush);
+
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
+  gst_element_class_add_static_pad_template (element_class, &src_template);
+
+  gst_element_class_set_static_metadata (element_class, "FDK AAC audio decoder",
+      "Codec/Decoder/Audio", "FDK AAC audio decoder",
+      "Sebastian Dröge <sebastian@centricular.com>");
+
+  GST_DEBUG_CATEGORY_INIT (gst_fdkaacdec_debug, "fdkaacdec", 0,
+      "fdkaac decoder");
+}
diff --git a/ext/fdkaac/gstfdkaacdec.h b/ext/fdkaac/gstfdkaacdec.h
new file mode 100644
index 0000000..5f766bc
--- /dev/null
+++ b/ext/fdkaac/gstfdkaacdec.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2016 Sebastian Dröge <sebastian@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_FDKAACDEC_H__
+#define __GST_FDKAACDEC_H__
+
+#include <gst/gst.h>
+#include <gst/audio/gstaudiodecoder.h>
+
+#include <fdk-aac/aacdecoder_lib.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_FDKAACDEC \
+  (gst_fdkaacdec_get_type())
+#define GST_FDKAACDEC(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_FDKAACDEC, GstFdkAacDec))
+#define GST_FDKAACDEC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_FDKAACDEC, GstFdkAacDecClass))
+#define GST_IS_FDKAACDEC(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_FDKAACDEC))
+#define GST_IS_FDKAACDEC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_FDKAACDEC))
+
+typedef struct _GstFdkAacDec GstFdkAacDec;
+typedef struct _GstFdkAacDecClass GstFdkAacDecClass;
+
+struct _GstFdkAacDec {
+  GstAudioDecoder element;
+
+  HANDLE_AACDECODER dec;
+  gint16 *decode_buffer;
+  gint decode_buffer_size;
+};
+
+struct _GstFdkAacDecClass {
+  GstAudioDecoderClass parent_class;
+};
+
+GType gst_fdkaacdec_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_FDKAACDEC_H__ */
diff --git a/ext/fdkaac/gstfdkaacenc.c b/ext/fdkaac/gstfdkaacenc.c
new file mode 100644
index 0000000..8c6ff8b
--- /dev/null
+++ b/ext/fdkaac/gstfdkaacenc.c
@@ -0,0 +1,611 @@
+/*
+ * Copyright (C) 2016 Sebastian Dröge <sebastian@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gstfdkaacenc.h"
+
+#include <gst/pbutils/pbutils.h>
+
+#include <string.h>
+
+/* TODO:
+ * - Add support for other AOT / profiles
+ * - Expose more properties, e.g. afterburner and vbr
+ * - Signal encoder delay
+ * - LOAS / LATM support
+ */
+
+enum
+{
+  PROP_0,
+  PROP_BITRATE
+};
+
+#define DEFAULT_BITRATE (0)
+
+#define SAMPLE_RATES " 8000, " \
+                    "11025, " \
+                    "12000, " \
+                    "16000, " \
+                    "22050, " \
+                    "24000, " \
+                    "32000, " \
+                    "44100, " \
+                    "48000, " \
+                    "64000, " \
+                    "88200, " \
+                    "96000"
+
+static const struct
+{
+  gint channels;
+  CHANNEL_MODE mode;
+  GstAudioChannelPosition positions[8];
+} channel_layouts[] = {
+  {
+    1, MODE_1, {
+  GST_AUDIO_CHANNEL_POSITION_MONO}}, {
+    2, MODE_2, {
+  GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
+          GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT}}, {
+    3, MODE_1_2, {
+  GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER,
+          GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
+          GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT}}, {
+    3, MODE_2_1, {
+  GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
+          GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT,
+          GST_AUDIO_CHANNEL_POSITION_LFE1}}, {
+    4, MODE_1_2_1, {
+  GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER,
+          GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
+          GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT,
+          GST_AUDIO_CHANNEL_POSITION_REAR_CENTER}}, {
+    5, MODE_1_2_2, {
+  GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER,
+          GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
+          GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT,
+          GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT,
+          GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT}}, {
+    6, MODE_1_2_2_1, {
+  GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER,
+          GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
+          GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT,
+          GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT,
+          GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT,
+          GST_AUDIO_CHANNEL_POSITION_LFE1}}, {
+    8, MODE_7_1_REAR_SURROUND, {
+  GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER,
+          GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
+          GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT,
+          GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT,
+          GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT,
+          GST_AUDIO_CHANNEL_POSITION_REAR_LEFT,
+          GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT,
+          GST_AUDIO_CHANNEL_POSITION_LFE1}}, {
+    8, MODE_7_1_FRONT_CENTER, {
+  GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER,
+          GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER,
+          GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER,
+          GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
+          GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT,
+          GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT,
+          GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT,
+          GST_AUDIO_CHANNEL_POSITION_LFE1}}
+};
+
+static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/x-raw, "
+        "format = (string) " GST_AUDIO_NE (S16) ", "
+        "layout = (string) interleaved, "
+        "rate = (int) { " SAMPLE_RATES " }, "
+        "channels = (int) {1, 2, 3, 4, 5, 6, 8}")
+    );
+
+static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/mpeg, "
+        "mpegversion = (int) 4, "
+        "rate = (int) { " SAMPLE_RATES " }, "
+        "channels = (int) {1, 2, 3, 4, 5, 6, 8}, "
+        "stream-format = (string) { adts, adif, raw }, "
+        "base-profile = (string) lc, " "framed = (boolean) true")
+    );
+
+GST_DEBUG_CATEGORY_STATIC (gst_fdkaacenc_debug);
+#define GST_CAT_DEFAULT gst_fdkaacenc_debug
+
+static void gst_fdkaacenc_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_fdkaacenc_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+static gboolean gst_fdkaacenc_start (GstAudioEncoder * enc);
+static gboolean gst_fdkaacenc_stop (GstAudioEncoder * enc);
+static gboolean gst_fdkaacenc_set_format (GstAudioEncoder * enc,
+    GstAudioInfo * info);
+static GstFlowReturn gst_fdkaacenc_handle_frame (GstAudioEncoder * enc,
+    GstBuffer * in_buf);
+static GstCaps *gst_fdkaacenc_get_caps (GstAudioEncoder * enc,
+    GstCaps * filter);
+
+G_DEFINE_TYPE (GstFdkAacEnc, gst_fdkaacenc, GST_TYPE_AUDIO_ENCODER);
+
+static void
+gst_fdkaacenc_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstFdkAacEnc *self = GST_FDKAACENC (object);
+
+  switch (prop_id) {
+    case PROP_BITRATE:
+      self->bitrate = g_value_get_int (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+  return;
+}
+
+static void
+gst_fdkaacenc_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstFdkAacEnc *self = GST_FDKAACENC (object);
+
+  switch (prop_id) {
+    case PROP_BITRATE:
+      g_value_set_int (value, self->bitrate);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+  return;
+}
+
+static gboolean
+gst_fdkaacenc_start (GstAudioEncoder * enc)
+{
+  GstFdkAacEnc *self = GST_FDKAACENC (enc);
+
+  GST_DEBUG_OBJECT (self, "start");
+
+  return TRUE;
+}
+
+static gboolean
+gst_fdkaacenc_stop (GstAudioEncoder * enc)
+{
+  GstFdkAacEnc *self = GST_FDKAACENC (enc);
+
+  GST_DEBUG_OBJECT (self, "stop");
+
+  if (self->enc)
+    aacEncClose (&self->enc);
+
+  return TRUE;
+}
+
+static GstCaps *
+gst_fdkaacenc_get_caps (GstAudioEncoder * enc, GstCaps * filter)
+{
+  GstCaps *res, *caps;
+  gint i;
+
+  caps = gst_caps_new_empty ();
+
+  for (i = 0; i < G_N_ELEMENTS (channel_layouts); i++) {
+    guint64 channel_mask;
+    GstCaps *tmp =
+        gst_caps_make_writable (gst_pad_get_pad_template_caps
+        (GST_AUDIO_ENCODER_SINK_PAD (enc)));
+
+    if (channel_layouts[i].channels == 1) {
+      gst_caps_set_simple (tmp, "channels", G_TYPE_INT,
+          channel_layouts[i].channels, NULL);
+    } else {
+      gst_audio_channel_positions_to_mask (channel_layouts[i].positions,
+          channel_layouts[i].channels, FALSE, &channel_mask);
+      gst_caps_set_simple (tmp, "channels", G_TYPE_INT,
+          channel_layouts[i].channels, "channel-mask", GST_TYPE_BITMASK,
+          channel_mask, NULL);
+    }
+
+    gst_caps_append (caps, tmp);
+  }
+
+  res = gst_audio_encoder_proxy_getcaps (enc, caps, filter);
+  gst_caps_unref (caps);
+
+  return res;
+}
+
+static gboolean
+gst_fdkaacenc_set_format (GstAudioEncoder * enc, GstAudioInfo * info)
+{
+  GstFdkAacEnc *self = GST_FDKAACENC (enc);
+  gboolean ret = FALSE;
+  GstCaps *allowed_caps;
+  GstCaps *src_caps;
+  AACENC_ERROR err;
+  gint transmux = 0, aot = AOT_AAC_LC;
+  gint mpegversion = 4;
+  CHANNEL_MODE channel_mode;
+  AACENC_InfoStruct enc_info = { 0 };
+  gint bitrate;
+
+  if (self->enc) {
+    /* drain */
+    gst_fdkaacenc_handle_frame (enc, NULL);
+    aacEncClose (&self->enc);
+  }
+
+  allowed_caps = gst_pad_get_allowed_caps (GST_AUDIO_ENCODER_SRC_PAD (self));
+
+  GST_DEBUG_OBJECT (self, "allowed caps: %" GST_PTR_FORMAT, allowed_caps);
+
+  if (allowed_caps && gst_caps_get_size (allowed_caps) > 0) {
+    GstStructure *s = gst_caps_get_structure (allowed_caps, 0);
+    const gchar *str = NULL;
+
+    if ((str = gst_structure_get_string (s, "stream-format"))) {
+      if (strcmp (str, "adts") == 0) {
+        GST_DEBUG_OBJECT (self, "use ADTS format for output");
+        transmux = 2;
+      } else if (strcmp (str, "adif") == 0) {
+        GST_DEBUG_OBJECT (self, "use ADIF format for output");
+        transmux = 1;
+      } else if (strcmp (str, "raw") == 0) {
+        GST_DEBUG_OBJECT (self, "use RAW format for output");
+        transmux = 0;
+      }
+    }
+
+    gst_structure_get_int (s, "mpegversion", &mpegversion);
+  }
+  if (allowed_caps)
+    gst_caps_unref (allowed_caps);
+
+  if ((err =
+          aacEncOpen (&self->enc, 0,
+              GST_AUDIO_INFO_CHANNELS (info))) != AACENC_OK) {
+    GST_ERROR_OBJECT (self, "Unable to open encoder: %d\n", err);
+    return FALSE;
+  }
+
+  aot = AOT_AAC_LC;
+
+  if ((err = aacEncoder_SetParam (self->enc, AACENC_AOT, aot)) != AACENC_OK) {
+    GST_ERROR_OBJECT (self, "Unable to set AOT %d: %d\n", aot, err);
+    return FALSE;
+  }
+
+  if ((err = aacEncoder_SetParam (self->enc, AACENC_SAMPLERATE,
+              GST_AUDIO_INFO_RATE (info))) != AACENC_OK) {
+    GST_ERROR_OBJECT (self, "Unable to set sample rate %d: %d\n",
+        GST_AUDIO_INFO_RATE (info), err);
+    return FALSE;
+  }
+
+  if (GST_AUDIO_INFO_CHANNELS (info) == 1) {
+    channel_mode = MODE_1;
+    self->need_reorder = FALSE;
+    self->aac_positions = NULL;
+  } else {
+    guint64 in_channel_mask, out_channel_mask;
+    gint i;
+
+    for (i = 0; i < G_N_ELEMENTS (channel_layouts); i++) {
+      if (channel_layouts[i].channels != GST_AUDIO_INFO_CHANNELS (info))
+        continue;
+
+      gst_audio_channel_positions_to_mask (&GST_AUDIO_INFO_POSITION (info, 0),
+          GST_AUDIO_INFO_CHANNELS (info), FALSE, &in_channel_mask);
+      gst_audio_channel_positions_to_mask (channel_layouts[i].positions,
+          channel_layouts[i].channels, FALSE, &out_channel_mask);
+      if (in_channel_mask == out_channel_mask) {
+        channel_mode = channel_layouts[i].mode;
+        self->need_reorder =
+            memcmp (channel_layouts[i].positions,
+            &GST_AUDIO_INFO_POSITION (info, 0),
+            GST_AUDIO_INFO_CHANNELS (info) *
+            sizeof (GstAudioChannelPosition)) != 0;
+        self->aac_positions = channel_layouts[i].positions;
+        break;
+      }
+    }
+
+    if (i == G_N_ELEMENTS (channel_layouts)) {
+      GST_ERROR_OBJECT (self, "Couldn't find a valid channel layout");
+      return FALSE;
+    }
+  }
+
+  if ((err = aacEncoder_SetParam (self->enc, AACENC_CHANNELMODE,
+              channel_mode)) != AACENC_OK) {
+    GST_ERROR_OBJECT (self, "Unable to set channel mode %d: %d", channel_mode,
+        err);
+    return FALSE;
+  }
+
+  /* MPEG channel order */
+  if ((err = aacEncoder_SetParam (self->enc, AACENC_CHANNELORDER,
+              0)) != AACENC_OK) {
+    GST_ERROR_OBJECT (self, "Unable to set channel order %d: %d", channel_mode,
+        err);
+    return FALSE;
+  }
+
+  bitrate = self->bitrate;
+  /* See
+   * http://wiki.hydrogenaud.io/index.php?title=Fraunhofer_FDK_AAC#Recommended_Sampling_Rate_and_Bitrate_Combinations
+   */
+  if (bitrate == 0) {
+    if (GST_AUDIO_INFO_CHANNELS (info) == 1) {
+      if (GST_AUDIO_INFO_RATE (info) < 16000) {
+        bitrate = 8000;
+      } else if (GST_AUDIO_INFO_RATE (info) == 16000) {
+        bitrate = 16000;
+      } else if (GST_AUDIO_INFO_RATE (info) < 32000) {
+        bitrate = 24000;
+      } else if (GST_AUDIO_INFO_RATE (info) == 32000) {
+        bitrate = 32000;
+      } else if (GST_AUDIO_INFO_RATE (info) <= 44100) {
+        bitrate = 56000;
+      } else {
+        bitrate = 160000;
+      }
+    } else if (GST_AUDIO_INFO_CHANNELS (info) == 2) {
+      if (GST_AUDIO_INFO_RATE (info) < 16000) {
+        bitrate = 16000;
+      } else if (GST_AUDIO_INFO_RATE (info) == 16000) {
+        bitrate = 24000;
+      } else if (GST_AUDIO_INFO_RATE (info) < 22050) {
+        bitrate = 32000;
+      } else if (GST_AUDIO_INFO_RATE (info) < 32000) {
+        bitrate = 40000;
+      } else if (GST_AUDIO_INFO_RATE (info) == 32000) {
+        bitrate = 96000;
+      } else if (GST_AUDIO_INFO_RATE (info) <= 44100) {
+        bitrate = 112000;
+      } else {
+        bitrate = 320000;
+      }
+    } else {
+      /* 5, 5.1 */
+      if (GST_AUDIO_INFO_RATE (info) < 32000) {
+        bitrate = 160000;
+      } else if (GST_AUDIO_INFO_RATE (info) <= 44100) {
+        bitrate = 240000;
+      } else {
+        bitrate = 320000;
+      }
+    }
+  }
+
+  if ((err = aacEncoder_SetParam (self->enc, AACENC_TRANSMUX,
+              transmux)) != AACENC_OK) {
+    GST_ERROR_OBJECT (self, "Unable to set transmux %d: %d", transmux, err);
+    return FALSE;
+  }
+
+  if ((err = aacEncoder_SetParam (self->enc, AACENC_BITRATE,
+              bitrate)) != AACENC_OK) {
+    GST_ERROR_OBJECT (self, "Unable to set bitrate %d: %d", bitrate, err);
+    return FALSE;
+  }
+
+  if ((err = aacEncEncode (self->enc, NULL, NULL, NULL, NULL)) != AACENC_OK) {
+    GST_ERROR_OBJECT (self, "Unable to initialize encoder: %d", err);
+    return FALSE;
+  }
+
+  if ((err = aacEncInfo (self->enc, &enc_info)) != AACENC_OK) {
+    GST_ERROR_OBJECT (self, "Unable to get encoder info: %d", err);
+    return FALSE;
+  }
+
+  gst_audio_encoder_set_frame_max (enc, 1);
+  gst_audio_encoder_set_frame_samples_min (enc, enc_info.frameLength);
+  gst_audio_encoder_set_frame_samples_max (enc, enc_info.frameLength);
+  gst_audio_encoder_set_hard_min (enc, FALSE);
+  self->outbuf_size = enc_info.maxOutBufBytes;
+  self->samples_per_frame = enc_info.frameLength;
+
+  src_caps = gst_caps_new_simple ("audio/mpeg",
+      "mpegversion", G_TYPE_INT, mpegversion,
+      "channels", G_TYPE_INT, GST_AUDIO_INFO_CHANNELS (info),
+      "framed", G_TYPE_BOOLEAN, TRUE,
+      "rate", G_TYPE_INT, GST_AUDIO_INFO_RATE (info), NULL);
+
+  /* raw */
+  if (transmux == 0) {
+    GstBuffer *codec_data =
+        gst_buffer_new_wrapped (g_memdup (enc_info.confBuf, enc_info.confSize),
+        enc_info.confSize);
+    gst_caps_set_simple (src_caps, "codec_data", GST_TYPE_BUFFER, codec_data,
+        "stream-format", G_TYPE_STRING, "raw", NULL);
+    gst_buffer_unref (codec_data);
+  } else if (transmux == 1) {
+    gst_caps_set_simple (src_caps, "stream-format", G_TYPE_STRING, "adif",
+        NULL);
+  } else if (transmux == 2) {
+    gst_caps_set_simple (src_caps, "stream-format", G_TYPE_STRING, "adts",
+        NULL);
+  } else {
+    g_assert_not_reached ();
+  }
+
+  gst_codec_utils_aac_caps_set_level_and_profile (src_caps, enc_info.confBuf,
+      enc_info.confSize);
+
+  ret = gst_audio_encoder_set_output_format (enc, src_caps);
+  gst_caps_unref (src_caps);
+
+  return ret;
+}
+
+static GstFlowReturn
+gst_fdkaacenc_handle_frame (GstAudioEncoder * enc, GstBuffer * inbuf)
+{
+  GstFdkAacEnc *self = GST_FDKAACENC (enc);
+  GstFlowReturn ret = GST_FLOW_OK;
+  GstAudioInfo *info;
+  GstMapInfo imap, omap;
+  GstBuffer *outbuf;
+  AACENC_BufDesc in_desc = { 0 };
+  AACENC_BufDesc out_desc = { 0 };
+  AACENC_InArgs in_args = { 0 };
+  AACENC_OutArgs out_args = { 0 };
+  gint in_id = IN_AUDIO_DATA, out_id = OUT_BITSTREAM_DATA;
+  gint in_sizes, out_sizes;
+  gint in_el_sizes, out_el_sizes;
+  AACENC_ERROR err;
+
+  info = gst_audio_encoder_get_audio_info (enc);
+
+  if (!inbuf) {
+    in_args.numInSamples = -1;
+  } else {
+    if (self->need_reorder) {
+      inbuf = gst_buffer_copy (inbuf);
+      gst_buffer_map (inbuf, &imap, GST_MAP_READWRITE);
+      gst_audio_reorder_channels (imap.data, imap.size,
+          GST_AUDIO_INFO_FORMAT (info), GST_AUDIO_INFO_CHANNELS (info),
+          &GST_AUDIO_INFO_POSITION (info, 0), self->aac_positions);
+    } else {
+      gst_buffer_map (inbuf, &imap, GST_MAP_READ);
+    }
+
+    in_args.numInSamples = imap.size / GST_AUDIO_INFO_BPS (info);
+
+    in_sizes = imap.size;
+    in_el_sizes = 2;
+    in_desc.bufferIdentifiers = &in_id;
+    in_desc.numBufs = 1;
+    in_desc.bufs = (void *) &imap.data;
+    in_desc.bufSizes = &in_sizes;
+    in_desc.bufElSizes = &in_el_sizes;
+  }
+
+  outbuf = gst_audio_encoder_allocate_output_buffer (enc, self->outbuf_size);
+  if (!outbuf) {
+    ret = GST_FLOW_ERROR;
+    goto out;
+  }
+
+  gst_buffer_map (outbuf, &omap, GST_MAP_WRITE);
+  out_sizes = omap.size;
+  out_el_sizes = 1;
+  out_desc.bufferIdentifiers = &out_id;
+  out_desc.numBufs = 1;
+  out_desc.bufs = (void *) &omap.data;
+  out_desc.bufSizes = &out_sizes;
+  out_desc.bufElSizes = &out_el_sizes;
+
+  if ((err = aacEncEncode (self->enc, &in_desc, &out_desc, &in_args,
+              &out_args)) != AACENC_OK) {
+    if (!inbuf && err == AACENC_ENCODE_EOF)
+      goto out;
+
+    GST_ERROR_OBJECT (self, "Failed to encode data: %d", err);
+    ret = GST_FLOW_ERROR;
+    goto out;
+  }
+
+  if (inbuf) {
+    gst_buffer_unmap (inbuf, &imap);
+    if (self->need_reorder)
+      gst_buffer_unref (inbuf);
+    inbuf = NULL;
+  }
+
+  if (!out_args.numOutBytes)
+    goto out;
+
+  gst_buffer_unmap (outbuf, &omap);
+  gst_buffer_set_size (outbuf, out_args.numOutBytes);
+
+  ret = gst_audio_encoder_finish_frame (enc, outbuf, self->samples_per_frame);
+  outbuf = NULL;
+
+out:
+  if (outbuf) {
+    gst_buffer_unmap (outbuf, &omap);
+    gst_buffer_unref (outbuf);
+  }
+  if (inbuf) {
+    gst_buffer_unmap (inbuf, &imap);
+    if (self->need_reorder)
+      gst_buffer_unref (inbuf);
+  }
+
+  return ret;
+}
+
+static void
+gst_fdkaacenc_init (GstFdkAacEnc * self)
+{
+  self->bitrate = DEFAULT_BITRATE;
+  self->enc = NULL;
+
+  gst_audio_encoder_set_drainable (GST_AUDIO_ENCODER (self), TRUE);
+}
+
+static void
+gst_fdkaacenc_class_init (GstFdkAacEncClass * klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+  GstAudioEncoderClass *base_class = GST_AUDIO_ENCODER_CLASS (klass);
+
+  object_class->set_property = GST_DEBUG_FUNCPTR (gst_fdkaacenc_set_property);
+  object_class->get_property = GST_DEBUG_FUNCPTR (gst_fdkaacenc_get_property);
+
+  base_class->start = GST_DEBUG_FUNCPTR (gst_fdkaacenc_start);
+  base_class->stop = GST_DEBUG_FUNCPTR (gst_fdkaacenc_stop);
+  base_class->set_format = GST_DEBUG_FUNCPTR (gst_fdkaacenc_set_format);
+  base_class->getcaps = GST_DEBUG_FUNCPTR (gst_fdkaacenc_get_caps);
+  base_class->handle_frame = GST_DEBUG_FUNCPTR (gst_fdkaacenc_handle_frame);
+
+  g_object_class_install_property (object_class, PROP_BITRATE,
+      g_param_spec_int ("bitrate",
+          "Bitrate",
+          "Target Audio Bitrate (0 = fixed value based on "
+          " sample rate and channel count)",
+          0, G_MAXINT, DEFAULT_BITRATE,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
+  gst_element_class_add_static_pad_template (element_class, &src_template);
+
+  gst_element_class_set_static_metadata (element_class, "FDK AAC audio encoder",
+      "Codec/Encoder/Audio", "FDK AAC audio encoder",
+      "Sebastian Dröge <sebastian@centricular.com>");
+
+  GST_DEBUG_CATEGORY_INIT (gst_fdkaacenc_debug, "fdkaacenc", 0,
+      "fdkaac encoder");
+}
diff --git a/ext/fdkaac/gstfdkaacenc.h b/ext/fdkaac/gstfdkaacenc.h
new file mode 100644
index 0000000..8c3df47
--- /dev/null
+++ b/ext/fdkaac/gstfdkaacenc.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2016 Sebastian Dröge <sebastian@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_FDKAACENC_H__
+#define __GST_FDKAACENC_H__
+
+#include <gst/gst.h>
+#include <gst/audio/gstaudioencoder.h>
+
+#include <fdk-aac/aacenc_lib.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_FDKAACENC \
+  (gst_fdkaacenc_get_type())
+#define GST_FDKAACENC(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_FDKAACENC, GstFdkAacEnc))
+#define GST_FDKAACENC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_FDKAACENC, GstFdkAacEncClass))
+#define GST_IS_FDKAACENC(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_FDKAACENC))
+#define GST_IS_FDKAACENC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_FDKAACENC))
+
+typedef struct _GstFdkAacEnc GstFdkAacEnc;
+typedef struct _GstFdkAacEncClass GstFdkAacEncClass;
+
+struct _GstFdkAacEnc {
+  GstAudioEncoder element;
+
+  HANDLE_AACENCODER enc;
+  gint bitrate;
+
+  guint outbuf_size, samples_per_frame;
+  gboolean need_reorder;
+  const GstAudioChannelPosition *aac_positions;
+};
+
+struct _GstFdkAacEncClass {
+  GstAudioEncoderClass parent_class;
+};
+
+GType gst_fdkaacenc_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_FDKAACENC_H__ */
diff --git a/ext/fdkaac/plugin.c b/ext/fdkaac/plugin.c
new file mode 100644
index 0000000..e3aadec
--- /dev/null
+++ b/ext/fdkaac/plugin.c
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2016 Sebastian Dröge <sebastian@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <gst/gst.h>
+#include "gstfdkaacenc.h"
+#include "gstfdkaacdec.h"
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+  return gst_element_register (plugin, "fdkaacenc", GST_RANK_PRIMARY,
+      GST_TYPE_FDKAACENC)
+      && gst_element_register (plugin, "fdkaacdec", GST_RANK_MARGINAL,
+      GST_TYPE_FDKAACDEC);
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    fdkaac,
+    "Fraunhofer FDK AAC Codec plugin",
+    plugin_init, VERSION, "LGPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/ext/flite/Makefile.in b/ext/flite/Makefile.in
index c53146e..8bb2029 100644
--- a/ext/flite/Makefile.in
+++ b/ext/flite/Makefile.in
@@ -301,6 +301,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -322,6 +324,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -371,6 +375,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -516,6 +522,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -642,8 +650,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -686,8 +692,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/flite/gstflitetestsrc.c b/ext/flite/gstflitetestsrc.c
index b6c5667..63ed90d 100644
--- a/ext/flite/gstflitetestsrc.c
+++ b/ext/flite/gstflitetestsrc.c
@@ -126,8 +126,8 @@
           1, G_MAXINT, DEFAULT_SAMPLES_PER_BUFFER,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_flite_test_src_src_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_flite_test_src_src_template);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "Flite speech test source", "Source/Audio",
diff --git a/ext/fluidsynth/Makefile.in b/ext/fluidsynth/Makefile.in
index 8fd5276..9a2541a 100644
--- a/ext/fluidsynth/Makefile.in
+++ b/ext/fluidsynth/Makefile.in
@@ -310,6 +310,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -331,6 +333,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -380,6 +384,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -525,6 +531,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -651,8 +659,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -695,8 +701,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/fluidsynth/gstfluiddec.c b/ext/fluidsynth/gstfluiddec.c
index 124825b..62262ec 100644
--- a/ext/fluidsynth/gstfluiddec.c
+++ b/ext/fluidsynth/gstfluiddec.c
@@ -177,10 +177,8 @@
           "Synth Polyphony", "The number of simultaneous voices", 1, 65535,
           DEFAULT_SYNTH_POLYPHONY, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
 
   gst_element_class_set_static_metadata (gstelement_class, "Fluidsynth",
       "Codec/Decoder/Audio",
diff --git a/ext/gl/Makefile.am b/ext/gl/Makefile.am
index 5d55f54..5a82853 100644
--- a/ext/gl/Makefile.am
+++ b/ext/gl/Makefile.am
@@ -40,7 +40,10 @@
 	gstglfilterapp.c \
 	gstglviewconvert.c \
 	gstglstereosplit.c \
-	gstglstereomix.c
+	gstgldeinterlace.c \
+	gstglstereomix.c \
+	gltestsrc.c \
+	gstgltestsrc.c
 
 noinst_HEADERS = \
 	gstglbasemixer.h \
@@ -63,22 +66,19 @@
 	gstglfilterapp.h \
 	gstglstereosplit.h \
 	gstglstereomix.h \
-	gstglviewconvert.h
+	gstgldeinterlace.h \
+	gstglviewconvert.h \
+	gltestsrc.h \
+	gstgltestsrc.h
 
 # full opengl required
 if USE_OPENGL
 libgstopengl_la_SOURCES += \
 	gstglfilterglass.c \
-	gstgldeinterlace.c \
-	gltestsrc.c \
-	gstgltestsrc.c \
 	gstglmosaic.c
 
 noinst_HEADERS += \
 	gstglfilterglass.h \
-	gstgldeinterlace.h \
-	gltestsrc.h \
-	gstgltestsrc.h \
 	gstglmosaic.h \
 	effects/gstgleffectscurves.h \
 	effects/gstgleffectlumatocurve.h
diff --git a/ext/gl/Makefile.in b/ext/gl/Makefile.in
index 2b2ecdf..beffad6 100644
--- a/ext/gl/Makefile.in
+++ b/ext/gl/Makefile.in
@@ -94,16 +94,10 @@
 # full opengl required
 @USE_OPENGL_TRUE@am__append_1 = \
 @USE_OPENGL_TRUE@	gstglfilterglass.c \
-@USE_OPENGL_TRUE@	gstgldeinterlace.c \
-@USE_OPENGL_TRUE@	gltestsrc.c \
-@USE_OPENGL_TRUE@	gstgltestsrc.c \
 @USE_OPENGL_TRUE@	gstglmosaic.c
 
 @USE_OPENGL_TRUE@am__append_2 = \
 @USE_OPENGL_TRUE@	gstglfilterglass.h \
-@USE_OPENGL_TRUE@	gstgldeinterlace.h \
-@USE_OPENGL_TRUE@	gltestsrc.h \
-@USE_OPENGL_TRUE@	gstgltestsrc.h \
 @USE_OPENGL_TRUE@	gstglmosaic.h \
 @USE_OPENGL_TRUE@	effects/gstgleffectscurves.h \
 @USE_OPENGL_TRUE@	effects/gstgleffectlumatocurve.h
@@ -231,15 +225,12 @@
 	effects/gstgleffectlaplacian.c gstglcolorscale.c \
 	gstglcolorbalance.c gstglmixer.c gstglvideomixer.c \
 	gstglfiltershader.c gstglfilterapp.c gstglviewconvert.c \
-	gstglstereosplit.c gstglstereomix.c gstglfilterglass.c \
-	gstgldeinterlace.c gltestsrc.c gstgltestsrc.c gstglmosaic.c \
+	gstglstereosplit.c gstgldeinterlace.c gstglstereomix.c \
+	gltestsrc.c gstgltestsrc.c gstglfilterglass.c gstglmosaic.c \
 	gstgldifferencematte.c gstgltransformation.c gstglvideoflip.c \
 	gstgloverlay.c caopengllayersink.m
 am__dirstamp = $(am__leading_dot)dirstamp
 @USE_OPENGL_TRUE@am__objects_1 = libgstopengl_la-gstglfilterglass.lo \
-@USE_OPENGL_TRUE@	libgstopengl_la-gstgldeinterlace.lo \
-@USE_OPENGL_TRUE@	libgstopengl_la-gltestsrc.lo \
-@USE_OPENGL_TRUE@	libgstopengl_la-gstgltestsrc.lo \
 @USE_OPENGL_TRUE@	libgstopengl_la-gstglmosaic.lo
 @HAVE_PNG_TRUE@@USE_OPENGL_TRUE@am__objects_2 = libgstopengl_la-gstgldifferencematte.lo
 @HAVE_GRAPHENE_TRUE@am__objects_3 =  \
@@ -286,7 +277,9 @@
 	libgstopengl_la-gstglfilterapp.lo \
 	libgstopengl_la-gstglviewconvert.lo \
 	libgstopengl_la-gstglstereosplit.lo \
-	libgstopengl_la-gstglstereomix.lo $(am__objects_1) \
+	libgstopengl_la-gstgldeinterlace.lo \
+	libgstopengl_la-gstglstereomix.lo libgstopengl_la-gltestsrc.lo \
+	libgstopengl_la-gstgltestsrc.lo $(am__objects_1) \
 	$(am__objects_2) $(am__objects_3) $(am__objects_4) \
 	$(am__objects_5)
 libgstopengl_la_OBJECTS = $(am_libgstopengl_la_OBJECTS)
@@ -364,8 +357,8 @@
 	effects/gstgleffectssources.h gstglcolorscale.h \
 	gstglcolorbalance.h gstglmixer.h gstglvideomixer.h \
 	gstglfiltershader.h gstglfilterapp.h gstglstereosplit.h \
-	gstglstereomix.h gstglviewconvert.h gstglfilterglass.h \
-	gstgldeinterlace.h gltestsrc.h gstgltestsrc.h gstglmosaic.h \
+	gstglstereomix.h gstgldeinterlace.h gstglviewconvert.h \
+	gltestsrc.h gstgltestsrc.h gstglfilterglass.h gstglmosaic.h \
 	effects/gstgleffectscurves.h effects/gstgleffectlumatocurve.h \
 	gstgldifferencematte.h gstgltransformation.h gstglvideoflip.h \
 	gstgloverlay.h caopengllayersink.h
@@ -455,6 +448,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -476,6 +471,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -525,6 +522,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -670,6 +669,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -796,8 +797,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -840,8 +839,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -948,9 +952,9 @@
 	effects/gstgleffectlaplacian.c gstglcolorscale.c \
 	gstglcolorbalance.c gstglmixer.c gstglvideomixer.c \
 	gstglfiltershader.c gstglfilterapp.c gstglviewconvert.c \
-	gstglstereosplit.c gstglstereomix.c $(am__append_1) \
-	$(am__append_3) $(am__append_5) $(am__append_7) \
-	$(am__append_9)
+	gstglstereosplit.c gstgldeinterlace.c gstglstereomix.c \
+	gltestsrc.c gstgltestsrc.c $(am__append_1) $(am__append_3) \
+	$(am__append_5) $(am__append_7) $(am__append_9)
 noinst_HEADERS = gstglbasemixer.h gstgluploadelement.h \
 	gstgldownloadelement.h gstglcolorconvertelement.h \
 	gstglfilterbin.h gstglmixerbin.h gstglsinkbin.h gstglsrcbin.h \
@@ -958,9 +962,9 @@
 	effects/gstgleffectssources.h gstglcolorscale.h \
 	gstglcolorbalance.h gstglmixer.h gstglvideomixer.h \
 	gstglfiltershader.h gstglfilterapp.h gstglstereosplit.h \
-	gstglstereomix.h gstglviewconvert.h $(am__append_2) \
-	$(am__append_4) $(am__append_6) $(am__append_8) \
-	$(am__append_10)
+	gstglstereomix.h gstgldeinterlace.h gstglviewconvert.h \
+	gltestsrc.h gstgltestsrc.h $(am__append_2) $(am__append_4) \
+	$(am__append_6) $(am__append_8) $(am__append_10)
 libgstopengl_la_OBJCFLAGS = \
 	-I$(top_srcdir)/gst-libs \
 	-I$(top_builddir)/gst-libs \
@@ -1469,20 +1473,6 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -c -o libgstopengl_la-gstglstereosplit.lo `test -f 'gstglstereosplit.c' || echo '$(srcdir)/'`gstglstereosplit.c
 
-libgstopengl_la-gstglstereomix.lo: gstglstereomix.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -MT libgstopengl_la-gstglstereomix.lo -MD -MP -MF $(DEPDIR)/libgstopengl_la-gstglstereomix.Tpo -c -o libgstopengl_la-gstglstereomix.lo `test -f 'gstglstereomix.c' || echo '$(srcdir)/'`gstglstereomix.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstopengl_la-gstglstereomix.Tpo $(DEPDIR)/libgstopengl_la-gstglstereomix.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstglstereomix.c' object='libgstopengl_la-gstglstereomix.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -c -o libgstopengl_la-gstglstereomix.lo `test -f 'gstglstereomix.c' || echo '$(srcdir)/'`gstglstereomix.c
-
-libgstopengl_la-gstglfilterglass.lo: gstglfilterglass.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -MT libgstopengl_la-gstglfilterglass.lo -MD -MP -MF $(DEPDIR)/libgstopengl_la-gstglfilterglass.Tpo -c -o libgstopengl_la-gstglfilterglass.lo `test -f 'gstglfilterglass.c' || echo '$(srcdir)/'`gstglfilterglass.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstopengl_la-gstglfilterglass.Tpo $(DEPDIR)/libgstopengl_la-gstglfilterglass.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstglfilterglass.c' object='libgstopengl_la-gstglfilterglass.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -c -o libgstopengl_la-gstglfilterglass.lo `test -f 'gstglfilterglass.c' || echo '$(srcdir)/'`gstglfilterglass.c
-
 libgstopengl_la-gstgldeinterlace.lo: gstgldeinterlace.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -MT libgstopengl_la-gstgldeinterlace.lo -MD -MP -MF $(DEPDIR)/libgstopengl_la-gstgldeinterlace.Tpo -c -o libgstopengl_la-gstgldeinterlace.lo `test -f 'gstgldeinterlace.c' || echo '$(srcdir)/'`gstgldeinterlace.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstopengl_la-gstgldeinterlace.Tpo $(DEPDIR)/libgstopengl_la-gstgldeinterlace.Plo
@@ -1490,6 +1480,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -c -o libgstopengl_la-gstgldeinterlace.lo `test -f 'gstgldeinterlace.c' || echo '$(srcdir)/'`gstgldeinterlace.c
 
+libgstopengl_la-gstglstereomix.lo: gstglstereomix.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -MT libgstopengl_la-gstglstereomix.lo -MD -MP -MF $(DEPDIR)/libgstopengl_la-gstglstereomix.Tpo -c -o libgstopengl_la-gstglstereomix.lo `test -f 'gstglstereomix.c' || echo '$(srcdir)/'`gstglstereomix.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstopengl_la-gstglstereomix.Tpo $(DEPDIR)/libgstopengl_la-gstglstereomix.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstglstereomix.c' object='libgstopengl_la-gstglstereomix.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -c -o libgstopengl_la-gstglstereomix.lo `test -f 'gstglstereomix.c' || echo '$(srcdir)/'`gstglstereomix.c
+
 libgstopengl_la-gltestsrc.lo: gltestsrc.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -MT libgstopengl_la-gltestsrc.lo -MD -MP -MF $(DEPDIR)/libgstopengl_la-gltestsrc.Tpo -c -o libgstopengl_la-gltestsrc.lo `test -f 'gltestsrc.c' || echo '$(srcdir)/'`gltestsrc.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstopengl_la-gltestsrc.Tpo $(DEPDIR)/libgstopengl_la-gltestsrc.Plo
@@ -1504,6 +1501,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -c -o libgstopengl_la-gstgltestsrc.lo `test -f 'gstgltestsrc.c' || echo '$(srcdir)/'`gstgltestsrc.c
 
+libgstopengl_la-gstglfilterglass.lo: gstglfilterglass.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -MT libgstopengl_la-gstglfilterglass.lo -MD -MP -MF $(DEPDIR)/libgstopengl_la-gstglfilterglass.Tpo -c -o libgstopengl_la-gstglfilterglass.lo `test -f 'gstglfilterglass.c' || echo '$(srcdir)/'`gstglfilterglass.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstopengl_la-gstglfilterglass.Tpo $(DEPDIR)/libgstopengl_la-gstglfilterglass.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstglfilterglass.c' object='libgstopengl_la-gstglfilterglass.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -c -o libgstopengl_la-gstglfilterglass.lo `test -f 'gstglfilterglass.c' || echo '$(srcdir)/'`gstglfilterglass.c
+
 libgstopengl_la-gstglmosaic.lo: gstglmosaic.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -MT libgstopengl_la-gstglmosaic.lo -MD -MP -MF $(DEPDIR)/libgstopengl_la-gstglmosaic.Tpo -c -o libgstopengl_la-gstglmosaic.lo `test -f 'gstglmosaic.c' || echo '$(srcdir)/'`gstglmosaic.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstopengl_la-gstglmosaic.Tpo $(DEPDIR)/libgstopengl_la-gstglmosaic.Plo
diff --git a/ext/gl/caopengllayersink.h b/ext/gl/caopengllayersink.h
index e3de325..3507154 100644
--- a/ext/gl/caopengllayersink.h
+++ b/ext/gl/caopengllayersink.h
@@ -63,7 +63,6 @@
 
     GstGLCAOpenGLLayer *layer;
 
-    volatile gint to_quit;
     gboolean keep_aspect_ratio;
 
     /* avoid replacing the stored_buffer while drawing */
diff --git a/ext/gl/caopengllayersink.m b/ext/gl/caopengllayersink.m
index 367b59a..f547c73 100644
--- a/ext/gl/caopengllayersink.m
+++ b/ext/gl/caopengllayersink.m
@@ -227,8 +227,7 @@
       "Sink/Video", "A video sink based on CAOpenGLLayer",
       "Matthew Waters <matthew@centricular.com>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_ca_opengl_layer_sink_template));
+  gst_element_class_add_static_pad_template (element_class, &gst_ca_opengl_layer_sink_template);
 
   gobject_class->finalize = gst_ca_opengl_layer_sink_finalize;
 
@@ -384,7 +383,6 @@
 gst_ca_opengl_layer_sink_query (GstBaseSink * bsink, GstQuery * query)
 {
   GstCAOpenGLLayerSink *ca_sink = GST_CA_OPENGL_LAYER_SINK (bsink);
-  gboolean res = FALSE;
 
   switch (GST_QUERY_TYPE (query)) {
     case GST_QUERY_CONTEXT:
@@ -494,7 +492,6 @@
       _ensure_gl_setup (ca_sink);
       break;
     case GST_STATE_CHANGE_READY_TO_PAUSED:
-      g_atomic_int_set (&ca_sink->to_quit, 0);
       break;
     case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
       break;
@@ -742,12 +739,6 @@
   if (old_sync)
     gst_buffer_unref (old_sync);
 
-  if (g_atomic_int_get (&ca_sink->to_quit) != 0) {
-    GST_ELEMENT_ERROR (ca_sink, RESOURCE, NOT_FOUND,
-        ("%s", gst_gl_context_get_error ()), (NULL));
-    return GST_FLOW_ERROR;
-  }
-
   return GST_FLOW_OK;
 }
 
diff --git a/ext/gl/effects/gstgleffectblur.c b/ext/gl/effects/gstgleffectblur.c
index f03af37..074519a 100644
--- a/ext/gl/effects/gstgleffectblur.c
+++ b/ext/gl/effects/gstgleffectblur.c
@@ -40,79 +40,29 @@
   return kernel;
 }
 
-static void
-gst_gl_effects_blur_callback_hconv (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLShader *shader = NULL;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-
-  if (NULL != (shader = gst_gl_effects_get_fragment_shader (effects, "hconv0",
-              hconv7_fragment_source_gles2))) {
-    GstGLFilter *filter = GST_GL_FILTER (effects);
-    GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
-
-#if GST_GL_HAVE_OPENGL
-    if (USING_OPENGL (GST_GL_BASE_FILTER (filter)->context)) {
-      gl->MatrixMode (GL_PROJECTION);
-      gl->LoadIdentity ();
-    }
-#endif
-
-    gst_gl_shader_use (shader);
-
-    gl->ActiveTexture (GL_TEXTURE0);
-    gl->BindTexture (GL_TEXTURE_2D, texture);
-
-    gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-    gst_gl_shader_set_uniform_1f (shader, "gauss_width", width);
-    gst_gl_shader_set_uniform_1fv (shader, "kernel", 7,
-        gst_gl_effects_blur_kernel ());
-
-    gst_gl_filter_draw_texture (filter, texture, width, height);
-  }
-}
-
-static void
-gst_gl_effects_blur_callback_vconv (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLShader *shader = NULL;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-
-  if (NULL != (shader = gst_gl_effects_get_fragment_shader (effects, "vconv0",
-              vconv7_fragment_source_gles2))) {
-    GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
-
-#if GST_GL_HAVE_OPENGL
-    if (USING_OPENGL (GST_GL_BASE_FILTER (filter)->context)) {
-      gl->MatrixMode (GL_PROJECTION);
-      gl->LoadIdentity ();
-    }
-#endif
-
-    gst_gl_shader_use (shader);
-
-    gl->ActiveTexture (GL_TEXTURE0);
-    gl->BindTexture (GL_TEXTURE_2D, texture);
-
-    gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-    gst_gl_shader_set_uniform_1f (shader, "gauss_height", height);
-    gst_gl_shader_set_uniform_1fv (shader, "kernel", 7,
-        gst_gl_effects_blur_kernel ());
-
-    gst_gl_filter_draw_texture (filter, texture, width, height);
-  }
-}
-
 void
 gst_gl_effects_blur (GstGLEffects * effects)
 {
   GstGLFilter *filter = GST_GL_FILTER (effects);
+  GstGLShader *shader;
 
-  gst_gl_filter_render_to_target (filter, TRUE, effects->intexture,
-      effects->midtexture[0], gst_gl_effects_blur_callback_hconv, effects);
-  gst_gl_filter_render_to_target (filter, FALSE, effects->midtexture[0],
-      effects->outtexture, gst_gl_effects_blur_callback_vconv, effects);
+  shader = gst_gl_effects_get_fragment_shader (effects, "hconv0",
+      hconv7_fragment_source_gles2);
+  gst_gl_shader_use (shader);
+  gst_gl_shader_set_uniform_1f (shader, "gauss_width",
+      GST_VIDEO_INFO_WIDTH (&filter->in_info));
+  gst_gl_shader_set_uniform_1fv (shader, "kernel", 7,
+      gst_gl_effects_blur_kernel ());
+  gst_gl_filter_render_to_target_with_shader (filter, effects->intexture,
+      effects->midtexture[0], shader);
+
+  shader = gst_gl_effects_get_fragment_shader (effects, "vconv0",
+      vconv7_fragment_source_gles2);
+  gst_gl_shader_use (shader);
+  gst_gl_shader_set_uniform_1f (shader, "gauss_height",
+      GST_VIDEO_INFO_HEIGHT (&filter->in_info));
+  gst_gl_shader_set_uniform_1fv (shader, "kernel", 7,
+      gst_gl_effects_blur_kernel ());
+  gst_gl_filter_render_to_target_with_shader (filter, effects->midtexture[0],
+      effects->outtexture, shader);
 }
diff --git a/ext/gl/effects/gstgleffectbulge.c b/ext/gl/effects/gstgleffectbulge.c
index 9856321..d2a9a14 100644
--- a/ext/gl/effects/gstgleffectbulge.c
+++ b/ext/gl/effects/gstgleffectbulge.c
@@ -23,44 +23,14 @@
 
 #include "../gstgleffects.h"
 
-static void
-gst_gl_effects_bulge_callback (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLShader *shader;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  GstGLFuncs *gl = context->gl_vtable;
-
-  shader = gst_gl_effects_get_fragment_shader (effects, "bulge",
-      bulge_fragment_source_gles2);
-
-  if (!shader)
-    return;
-
-#if GST_GL_HAVE_OPENGL
-  if (USING_OPENGL (context)) {
-    gl->MatrixMode (GL_PROJECTION);
-    gl->LoadIdentity ();
-  }
-#endif
-
-  gst_gl_shader_use (shader);
-
-  gl->ActiveTexture (GL_TEXTURE0);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
-
-  gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
-
 void
 gst_gl_effects_bulge (GstGLEffects * effects)
 {
   GstGLFilter *filter = GST_GL_FILTER (effects);
+  GstGLShader *shader;
 
-  gst_gl_filter_render_to_target (filter, TRUE, effects->intexture,
-      effects->outtexture, gst_gl_effects_bulge_callback, effects);
+  shader = gst_gl_effects_get_fragment_shader (effects, "bulge",
+      bulge_fragment_source_gles2);
+  gst_gl_filter_render_to_target_with_shader (filter, effects->intexture,
+      effects->outtexture, shader);
 }
diff --git a/ext/gl/effects/gstgleffectfisheye.c b/ext/gl/effects/gstgleffectfisheye.c
index 285deb3..fe3ebdc 100644
--- a/ext/gl/effects/gstgleffectfisheye.c
+++ b/ext/gl/effects/gstgleffectfisheye.c
@@ -23,44 +23,14 @@
 
 #include "../gstgleffects.h"
 
-static void
-gst_gl_effects_fisheye_callback (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLShader *shader;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  GstGLFuncs *gl = context->gl_vtable;
-
-  shader = gst_gl_effects_get_fragment_shader (effects, "fisheye",
-      fisheye_fragment_source_gles2);
-
-  if (!shader)
-    return;
-
-#if GST_GL_HAVE_OPENGL
-  if (USING_OPENGL (context)) {
-    gl->MatrixMode (GL_PROJECTION);
-    gl->LoadIdentity ();
-  }
-#endif
-
-  gst_gl_shader_use (shader);
-
-  gl->ActiveTexture (GL_TEXTURE0);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
-
-  gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
-
 void
 gst_gl_effects_fisheye (GstGLEffects * effects)
 {
   GstGLFilter *filter = GST_GL_FILTER (effects);
+  GstGLShader *shader;
 
-  gst_gl_filter_render_to_target (filter, TRUE, effects->intexture,
-      effects->outtexture, gst_gl_effects_fisheye_callback, effects);
+  shader = gst_gl_effects_get_fragment_shader (effects, "fisheye",
+      fisheye_fragment_source_gles2);
+  gst_gl_filter_render_to_target_with_shader (filter, effects->intexture,
+      effects->outtexture, shader);
 }
diff --git a/ext/gl/effects/gstgleffectglow.c b/ext/gl/effects/gstgleffectglow.c
index 9fc09e0..6309ce7 100644
--- a/ext/gl/effects/gstgleffectglow.c
+++ b/ext/gl/effects/gstgleffectglow.c
@@ -26,170 +26,61 @@
 static gboolean kernel_ready = FALSE;
 static float gauss_kernel[7];
 
-static void
-gst_gl_effects_glow_step_one (gint width, gint height, guint texture,
-    gpointer data)
+void
+gst_gl_effects_glow (GstGLEffects * effects)
 {
-  GstGLShader *shader;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
+  const GstGLFuncs *gl = GST_GL_BASE_FILTER (effects)->context->gl_vtable;
   GstGLFilter *filter = GST_GL_FILTER (effects);
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  GstGLFuncs *gl = context->gl_vtable;
-
-  shader = gst_gl_effects_get_fragment_shader (effects, "luma_threshold",
-      luma_threshold_fragment_source_gles2);
-
-  if (!shader)
-    return;
-
-#if GST_GL_HAVE_OPENGL
-  if (USING_OPENGL (context)) {
-    gl->MatrixMode (GL_PROJECTION);
-    gl->LoadIdentity ();
-  }
-#endif
-
-  gst_gl_shader_use (shader);
-
-  gl->ActiveTexture (GL_TEXTURE0);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
-
-  gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
-
-static void
-gst_gl_effects_glow_step_two (gint width, gint height, guint texture,
-    gpointer data)
-{
   GstGLShader *shader;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  GstGLFuncs *gl = context->gl_vtable;
-
-  shader = gst_gl_effects_get_fragment_shader (effects, "hconv7",
-      hconv7_fragment_source_gles2);
-
-  if (!shader)
-    return;
 
   if (!kernel_ready) {
     fill_gaussian_kernel (gauss_kernel, 7, 10.0);
     kernel_ready = TRUE;
   }
-#if GST_GL_HAVE_OPENGL
-  if (USING_OPENGL (context)) {
-    gl->MatrixMode (GL_PROJECTION);
-    gl->LoadIdentity ();
-  }
-#endif
 
+  /* threshold */
+  shader = gst_gl_effects_get_fragment_shader (effects, "luma_threshold",
+      luma_threshold_fragment_source_gles2);
+  gst_gl_filter_render_to_target_with_shader (filter, effects->intexture,
+      effects->midtexture[0], shader);
+
+  /* blur */
+  shader = gst_gl_effects_get_fragment_shader (effects, "hconv7",
+      hconv7_fragment_source_gles2);
   gst_gl_shader_use (shader);
-
-  gl->ActiveTexture (GL_TEXTURE1);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
-
-  gst_gl_shader_set_uniform_1i (shader, "tex", 1);
   gst_gl_shader_set_uniform_1fv (shader, "kernel", 7, gauss_kernel);
-  gst_gl_shader_set_uniform_1f (shader, "gauss_width", width);
-
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
-
-static void
-gst_gl_effects_glow_step_three (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLShader *shader;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  GstGLFuncs *gl = context->gl_vtable;
+  gst_gl_shader_set_uniform_1f (shader, "gauss_width",
+      GST_VIDEO_INFO_WIDTH (&filter->out_info));
+  gst_gl_filter_render_to_target_with_shader (filter, effects->midtexture[0],
+      effects->midtexture[1], shader);
 
   shader = gst_gl_effects_get_fragment_shader (effects, "vconv7",
       vconv7_fragment_source_gles2);
-
-  if (!shader)
-    return;
-
-#if GST_GL_HAVE_OPENGL
-  if (USING_OPENGL (context)) {
-    gl->MatrixMode (GL_PROJECTION);
-    gl->LoadIdentity ();
-  }
-#endif
-
   gst_gl_shader_use (shader);
-
-  gl->ActiveTexture (GL_TEXTURE1);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
-
-  gst_gl_shader_set_uniform_1i (shader, "tex", 1);
   gst_gl_shader_set_uniform_1fv (shader, "kernel", 7, gauss_kernel);
-  gst_gl_shader_set_uniform_1f (shader, "gauss_height", height);
+  gst_gl_shader_set_uniform_1f (shader, "gauss_height",
+      GST_VIDEO_INFO_HEIGHT (&filter->out_info));
+  gst_gl_filter_render_to_target_with_shader (filter, effects->midtexture[1],
+      effects->midtexture[2], shader);
 
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
-
-static void
-gst_gl_effects_glow_step_four (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLShader *shader;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  GstGLFuncs *gl = context->gl_vtable;
-
+  /* add blurred luma to intexture */
   shader = gst_gl_effects_get_fragment_shader (effects, "sum",
       sum_fragment_source_gles2);
-
-  if (!shader)
-    return;
-
-#if GST_GL_HAVE_OPENGL
-  if (USING_OPENGL (context)) {
-    gl->MatrixMode (GL_PROJECTION);
-    gl->LoadIdentity ();
-  }
-#endif
-
   gst_gl_shader_use (shader);
 
   gl->ActiveTexture (GL_TEXTURE2);
-  gl->BindTexture (GL_TEXTURE_2D, effects->intexture);
+  gl->BindTexture (GL_TEXTURE_2D,
+      gst_gl_memory_get_texture_id (effects->intexture));
 
   gst_gl_shader_set_uniform_1f (shader, "alpha", 1.0f);
   gst_gl_shader_set_uniform_1i (shader, "base", 2);
 
   gl->ActiveTexture (GL_TEXTURE1);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
+  gl->BindTexture (GL_TEXTURE_2D,
+      gst_gl_memory_get_texture_id (effects->midtexture[2]));
 
   gst_gl_shader_set_uniform_1f (shader, "beta", (gfloat) 1 / 3.5f);
   gst_gl_shader_set_uniform_1i (shader, "blend", 1);
-
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
-
-void
-gst_gl_effects_glow (GstGLEffects * effects)
-{
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-
-  /* threshold */
-  gst_gl_filter_render_to_target (filter, TRUE, effects->intexture,
-      effects->midtexture[0], gst_gl_effects_glow_step_one, effects);
-
-  /* blur */
-  gst_gl_filter_render_to_target (filter, FALSE, effects->midtexture[0],
-      effects->midtexture[1], gst_gl_effects_glow_step_two, effects);
-
-  gst_gl_filter_render_to_target (filter, FALSE, effects->midtexture[1],
-      effects->midtexture[2], gst_gl_effects_glow_step_three, effects);
-
-  /* add blurred luma to intexture */
-  gst_gl_filter_render_to_target (filter, FALSE, effects->midtexture[2],
-      effects->outtexture, gst_gl_effects_glow_step_four, effects);
+  gst_gl_filter_render_to_target_with_shader (filter, effects->midtexture[2],
+      effects->outtexture, shader);
 }
diff --git a/ext/gl/effects/gstgleffectidentity.c b/ext/gl/effects/gstgleffectidentity.c
index 5687d64..b81c32d 100644
--- a/ext/gl/effects/gstgleffectidentity.c
+++ b/ext/gl/effects/gstgleffectidentity.c
@@ -23,23 +23,13 @@
 
 #include "../gstgleffects.h"
 
-static void
-gst_gl_effects_identity_callback (gint width, gint height, guint texture,
-    gpointer data)
+void
+gst_gl_effects_identity (GstGLEffects * effects)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
+  GstGLContext *context = GST_GL_BASE_FILTER (effects)->context;
   GstGLFilter *filter = GST_GL_FILTER (effects);
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  GstGLFuncs *gl = context->gl_vtable;
   GstGLShader *shader;
 
-#if GST_GL_HAVE_OPENGL
-  if (USING_OPENGL (context)) {
-    gl->MatrixMode (GL_PROJECTION);
-    gl->LoadIdentity ();
-  }
-#endif
-
   shader = g_hash_table_lookup (effects->shaderstable, "identity0");
   if (!shader) {
     GError *error = NULL;
@@ -50,28 +40,10 @@
       return;
     }
 
-    filter->draw_attr_position_loc =
-        gst_gl_shader_get_attribute_location (shader, "a_position");
-    filter->draw_attr_texture_loc =
-        gst_gl_shader_get_attribute_location (shader, "a_texcoord");
-
     g_hash_table_insert (effects->shaderstable, (gchar *) "identity0", shader);
   }
   gst_gl_shader_use (shader);
 
-  gl->ActiveTexture (GL_TEXTURE0);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
-
-  gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
-
-void
-gst_gl_effects_identity (GstGLEffects * effects)
-{
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-
-  gst_gl_filter_render_to_target (filter, TRUE, effects->intexture,
-      effects->outtexture, gst_gl_effects_identity_callback, effects);
+  gst_gl_filter_render_to_target_with_shader (filter, effects->intexture,
+      effects->outtexture, shader);
 }
diff --git a/ext/gl/effects/gstgleffectlaplacian.c b/ext/gl/effects/gstgleffectlaplacian.c
index ca5b88c..4652b0f 100644
--- a/ext/gl/effects/gstgleffectlaplacian.c
+++ b/ext/gl/effects/gstgleffectlaplacian.c
@@ -25,48 +25,28 @@
 
 #include "../gstgleffects.h"
 
-static void
-gst_gl_effects_laplacian_callback (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLShader *shader = NULL;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-
-  if (NULL != (shader = gst_gl_effects_get_fragment_shader (effects, "conv0",
-              conv9_fragment_source_gles2))) {
-    GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
-    static gfloat kernel[9] = { 0.0, -1.0, 0.0,
-      -1.0, 4.0, -1.0,
-      0.0, -1.0, 0.0
-    };
-
-#if GST_GL_HAVE_OPENGL
-    if (USING_OPENGL (GST_GL_BASE_FILTER (filter)->context)) {
-      gl->MatrixMode (GL_PROJECTION);
-      gl->LoadIdentity ();
-    }
-#endif
-
-    gst_gl_shader_use (shader);
-
-    gl->ActiveTexture (GL_TEXTURE0);
-    gl->BindTexture (GL_TEXTURE_2D, texture);
-
-    gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-    gst_gl_shader_set_uniform_1f (shader, "height", height);
-    gst_gl_shader_set_uniform_1f (shader, "width", width);
-    gst_gl_shader_set_uniform_1fv (shader, "kernel", 9, kernel);
-    gst_gl_shader_set_uniform_1i (shader, "invert", effects->invert);
-
-    gst_gl_filter_draw_texture (filter, texture, width, height);
-  }
-}
+static gfloat kernel[9] = {
+  0.0, -1.0, 0.0,
+  -1.0, 4.0, -1.0,
+  0.0, -1.0, 0.0
+};
 
 void
 gst_gl_effects_laplacian (GstGLEffects * effects)
 {
-  gst_gl_filter_render_to_target (GST_GL_FILTER (effects), TRUE,
-      effects->intexture, effects->outtexture,
-      gst_gl_effects_laplacian_callback, effects);
+  GstGLFilter *filter = GST_GL_FILTER (effects);
+  GstGLShader *shader;
+
+  shader = gst_gl_effects_get_fragment_shader (effects, "conv0",
+      conv9_fragment_source_gles2);
+  gst_gl_shader_use (shader);
+  gst_gl_shader_set_uniform_1f (shader, "height",
+      GST_VIDEO_INFO_HEIGHT (&filter->in_info));
+  gst_gl_shader_set_uniform_1f (shader, "width",
+      GST_VIDEO_INFO_WIDTH (&filter->in_info));
+  gst_gl_shader_set_uniform_1fv (shader, "kernel", 9, kernel);
+  gst_gl_shader_set_uniform_1i (shader, "invert", effects->invert);
+
+  gst_gl_filter_render_to_target_with_shader (filter, effects->intexture,
+      effects->outtexture, shader);
 }
diff --git a/ext/gl/effects/gstgleffectlumatocurve.c b/ext/gl/effects/gstgleffectlumatocurve.c
index 158fda0..a9c2a5b 100644
--- a/ext/gl/effects/gstgleffectlumatocurve.c
+++ b/ext/gl/effects/gstgleffectlumatocurve.c
@@ -26,13 +26,13 @@
 
 void
 gst_gl_effects_luma_to_curve (GstGLEffects * effects,
-    const GstGLEffectsCurve * curve,
-    gint curve_index, gint width, gint height, GLuint texture)
+    const GstGLEffectsCurve * curve, gint curve_index, GstGLMemory * in_tex,
+    GstGLMemory * out_tex)
 {
-  GstGLShader *shader;
+  GstGLContext *context = GST_GL_BASE_FILTER (effects)->context;
   GstGLFilter *filter = GST_GL_FILTER (effects);
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  GstGLFuncs *gl = context->gl_vtable;
+  const GstGLFuncs *gl = context->gl_vtable;
+  GstGLShader *shader;
 
   shader = gst_gl_effects_get_fragment_shader (effects, "luma_to_curve",
       luma_to_curve_fragment_source_gles2);
@@ -47,112 +47,46 @@
   }
 #endif
 
-  gst_gl_shader_use (shader);
-
   if (effects->curve[curve_index] == 0) {
     /* this parameters are needed to have a right, predictable, mapping */
     gl->GenTextures (1, &effects->curve[curve_index]);
 
-#if GST_GL_HAVE_OPENGL
-    if (USING_OPENGL (context)) {
-      gl->BindTexture (GL_TEXTURE_1D, effects->curve[curve_index]);
-      gl->TexParameteri (GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-      gl->TexParameteri (GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-      gl->TexParameteri (GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP);
-      gl->TexParameteri (GL_TEXTURE_1D, GL_TEXTURE_WRAP_T, GL_CLAMP);
-
-      gl->TexImage1D (GL_TEXTURE_1D, 0, curve->bytes_per_pixel,
-          curve->width, 0, GL_RGB, GL_UNSIGNED_BYTE, curve->pixel_data);
-    }
-#endif
-    if (USING_GLES2 (context) || USING_OPENGL3 (context)) {
-      gl->BindTexture (GL_TEXTURE_2D, effects->curve[curve_index]);
-      gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-      gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-      gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-      gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-
-      gl->TexImage2D (GL_TEXTURE_2D, 0, GL_RGB,
-          curve->width, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, curve->pixel_data);
-    }
-  }
-
-  gl->ActiveTexture (GL_TEXTURE2);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
-
-  gst_gl_shader_set_uniform_1i (shader, "tex", 2);
-
-#if GST_GL_HAVE_OPENGL
-  if (USING_OPENGL (context)) {
-    gl->ActiveTexture (GL_TEXTURE1);
-    gl->BindTexture (GL_TEXTURE_1D, effects->curve[curve_index]);
-
-    gst_gl_shader_set_uniform_1i (shader, "curve", 1);
-  }
-#endif
-  if (USING_GLES2 (context) || USING_OPENGL3 (context)) {
-    gl->ActiveTexture (GL_TEXTURE1);
     gl->BindTexture (GL_TEXTURE_2D, effects->curve[curve_index]);
+    gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+    gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+    gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+    gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
 
-    gst_gl_shader_set_uniform_1i (shader, "curve", 1);
+    gl->TexImage2D (GL_TEXTURE_2D, 0, GL_RGB,
+        curve->width, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, curve->pixel_data);
   }
 
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
+  gst_gl_shader_use (shader);
+  gl->ActiveTexture (GL_TEXTURE2);
+  gl->BindTexture (GL_TEXTURE_2D, effects->curve[curve_index]);
 
-static void
-gst_gl_effects_heat_callback (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
+  gst_gl_shader_set_uniform_1i (shader, "curve", 2);
 
-  gst_gl_effects_luma_to_curve (effects, &heat_curve, GST_GL_EFFECTS_CURVE_HEAT,
-      width, height, texture);
+  gst_gl_filter_render_to_target_with_shader (filter, in_tex, out_tex, shader);
 }
 
 void
 gst_gl_effects_heat (GstGLEffects * effects)
 {
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-
-  gst_gl_filter_render_to_target (filter, TRUE, effects->intexture,
-      effects->outtexture, gst_gl_effects_heat_callback, effects);
-}
-
-static void
-gst_gl_effects_sepia_callback (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-
-  gst_gl_effects_luma_to_curve (effects, &sepia_curve,
-      GST_GL_EFFECTS_CURVE_SEPIA, width, height, texture);
+  gst_gl_effects_luma_to_curve (effects, &heat_curve,
+      GST_GL_EFFECTS_CURVE_HEAT, effects->intexture, effects->outtexture);
 }
 
 void
 gst_gl_effects_sepia (GstGLEffects * effects)
 {
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-
-  gst_gl_filter_render_to_target (filter, TRUE, effects->intexture,
-      effects->outtexture, gst_gl_effects_sepia_callback, effects);
-}
-
-static void
-gst_gl_effects_luma_xpro_callback (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-
-  gst_gl_effects_luma_to_curve (effects, &luma_xpro_curve,
-      GST_GL_EFFECTS_CURVE_LUMA_XPRO, width, height, texture);
+  gst_gl_effects_luma_to_curve (effects, &sepia_curve,
+      GST_GL_EFFECTS_CURVE_SEPIA, effects->intexture, effects->outtexture);
 }
 
 void
 gst_gl_effects_luma_xpro (GstGLEffects * effects)
 {
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-
-  gst_gl_filter_render_to_target (filter, TRUE, effects->intexture,
-      effects->outtexture, gst_gl_effects_luma_xpro_callback, effects);
+  gst_gl_effects_luma_to_curve (effects, &luma_xpro_curve,
+      GST_GL_EFFECTS_CURVE_LUMA_XPRO, effects->intexture, effects->outtexture);
 }
diff --git a/ext/gl/effects/gstgleffectlumatocurve.h b/ext/gl/effects/gstgleffectlumatocurve.h
index 509b45b..f90577f 100644
--- a/ext/gl/effects/gstgleffectlumatocurve.h
+++ b/ext/gl/effects/gstgleffectlumatocurve.h
@@ -28,8 +28,8 @@
 void gst_gl_effects_luma_to_curve (GstGLEffects *effects,
                                    const GstGLEffectsCurve *curve,
                                    gint curve_index,
-                                   gint width, gint height,
-                                   GLuint texture);
+                                   GstGLMemory *in_tex,
+                                   GstGLMemory *out_tex);
 G_END_DECLS
 
 #endif /* __GST_GL_LUMA_TO_CURVE_H__ */
diff --git a/ext/gl/effects/gstgleffectmirror.c b/ext/gl/effects/gstgleffectmirror.c
index 5080099..a25d874 100644
--- a/ext/gl/effects/gstgleffectmirror.c
+++ b/ext/gl/effects/gstgleffectmirror.c
@@ -23,44 +23,14 @@
 
 #include "../gstgleffects.h"
 
-static void
-gst_gl_effects_mirror_callback (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLShader *shader;
-  GstGLFilter *filter = GST_GL_FILTER (data);
-  GstGLEffects *effects = GST_GL_EFFECTS (filter);
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  GstGLFuncs *gl = context->gl_vtable;
-
-  shader = gst_gl_effects_get_fragment_shader (effects, "mirror",
-      mirror_fragment_source_gles2);
-
-  if (!shader)
-    return;
-
-#if GST_GL_HAVE_OPENGL
-  if (USING_OPENGL (context)) {
-    gl->MatrixMode (GL_PROJECTION);
-    gl->LoadIdentity ();
-  }
-#endif
-
-  gst_gl_shader_use (shader);
-
-  gl->ActiveTexture (GL_TEXTURE0);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
-
-  gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
-
 void
 gst_gl_effects_mirror (GstGLEffects * effects)
 {
   GstGLFilter *filter = GST_GL_FILTER (effects);
+  GstGLShader *shader;
 
-  gst_gl_filter_render_to_target (filter, TRUE, effects->intexture,
-      effects->outtexture, gst_gl_effects_mirror_callback, effects);
+  shader = gst_gl_effects_get_fragment_shader (effects, "mirror",
+      mirror_fragment_source_gles2);
+  gst_gl_filter_render_to_target_with_shader (filter, effects->intexture,
+      effects->outtexture, shader);
 }
diff --git a/ext/gl/effects/gstgleffectrgbtocurve.c b/ext/gl/effects/gstgleffectrgbtocurve.c
index e2b6bdb..5bead68 100644
--- a/ext/gl/effects/gstgleffectrgbtocurve.c
+++ b/ext/gl/effects/gstgleffectrgbtocurve.c
@@ -26,13 +26,13 @@
 
 static void
 gst_gl_effects_rgb_to_curve (GstGLEffects * effects,
-    const GstGLEffectsCurve * curve,
-    gint curve_index, gint width, gint height, GLuint texture)
+    const GstGLEffectsCurve * curve, gint curve_index, GstGLMemory * in_tex,
+    GstGLMemory * out_tex)
 {
-  GstGLShader *shader;
+  GstGLContext *context = GST_GL_BASE_FILTER (effects)->context;
   GstGLFilter *filter = GST_GL_FILTER (effects);
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  GstGLFuncs *gl = context->gl_vtable;
+  const GstGLFuncs *gl = context->gl_vtable;
+  GstGLShader *shader;
 
   shader = gst_gl_effects_get_fragment_shader (effects, "rgb_to_curve",
       rgb_to_curve_fragment_source_gles2);
@@ -47,73 +47,32 @@
   }
 #endif
 
-  gst_gl_shader_use (shader);
-
   if (effects->curve[curve_index] == 0) {
     /* this parameters are needed to have a right, predictable, mapping */
     gl->GenTextures (1, &effects->curve[curve_index]);
-#if GST_GL_HAVE_OPENGL
-    if (USING_OPENGL (context)) {
-      gl->BindTexture (GL_TEXTURE_1D, effects->curve[curve_index]);
-      gl->TexParameteri (GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-      gl->TexParameteri (GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-      gl->TexParameteri (GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP);
-      gl->TexParameteri (GL_TEXTURE_1D, GL_TEXTURE_WRAP_T, GL_CLAMP);
 
-      gl->TexImage1D (GL_TEXTURE_1D, 0, GL_RGB,
-          curve->width, 0, GL_RGB, GL_UNSIGNED_BYTE, curve->pixel_data);
-    }
-#endif
-    if (USING_GLES2 (context) || USING_OPENGL3 (context)) {
-      gl->BindTexture (GL_TEXTURE_2D, effects->curve[curve_index]);
-      gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-      gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-      gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-      gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-
-      gl->TexImage2D (GL_TEXTURE_2D, 0, GL_RGB,
-          curve->width, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, curve->pixel_data);
-    }
-  }
-
-  gl->ActiveTexture (GL_TEXTURE0);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
-
-  gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-
-#if GST_GL_HAVE_OPENGL
-  if (USING_OPENGL (context)) {
-    gl->ActiveTexture (GL_TEXTURE1);
-    gl->BindTexture (GL_TEXTURE_1D, effects->curve[curve_index]);
-
-    gst_gl_shader_set_uniform_1i (shader, "curve", 1);
-  }
-#endif
-  if (USING_GLES2 (context) || USING_OPENGL3 (context)) {
-    gl->ActiveTexture (GL_TEXTURE1);
     gl->BindTexture (GL_TEXTURE_2D, effects->curve[curve_index]);
+    gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+    gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+    gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+    gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
 
-    gst_gl_shader_set_uniform_1i (shader, "curve", 1);
+    gl->TexImage2D (GL_TEXTURE_2D, 0, GL_RGB,
+        curve->width, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, curve->pixel_data);
   }
 
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
+  gst_gl_shader_use (shader);
+  gl->ActiveTexture (GL_TEXTURE2);
+  gl->BindTexture (GL_TEXTURE_2D, effects->curve[curve_index]);
 
-static void
-gst_gl_effects_xpro_callback (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
+  gst_gl_shader_set_uniform_1i (shader, "curve", 2);
 
-  gst_gl_effects_rgb_to_curve (effects, &xpro_curve, GST_GL_EFFECTS_CURVE_XPRO,
-      width, height, texture);
+  gst_gl_filter_render_to_target_with_shader (filter, in_tex, out_tex, shader);
 }
 
 void
 gst_gl_effects_xpro (GstGLEffects * effects)
 {
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-
-  gst_gl_filter_render_to_target (filter, TRUE, effects->intexture,
-      effects->outtexture, gst_gl_effects_xpro_callback, effects);
+  gst_gl_effects_rgb_to_curve (effects, &xpro_curve, GST_GL_EFFECTS_CURVE_XPRO,
+      effects->intexture, effects->outtexture);
 }
diff --git a/ext/gl/effects/gstgleffectsin.c b/ext/gl/effects/gstgleffectsin.c
index 5c09e8b..24b6613 100644
--- a/ext/gl/effects/gstgleffectsin.c
+++ b/ext/gl/effects/gstgleffectsin.c
@@ -23,44 +23,14 @@
 
 #include "../gstgleffects.h"
 
-static void
-gst_gl_effects_sin_callback (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLShader *shader;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  GstGLFuncs *gl = context->gl_vtable;
-
-  shader = gst_gl_effects_get_fragment_shader (effects, "sin",
-      sin_fragment_source_gles2);
-
-  if (!shader)
-    return;
-
-#if GST_GL_HAVE_OPENGL
-  if (USING_OPENGL (context)) {
-    gl->MatrixMode (GL_PROJECTION);
-    gl->LoadIdentity ();
-  }
-#endif
-
-  gst_gl_shader_use (shader);
-
-  gl->ActiveTexture (GL_TEXTURE0);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
-
-  gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
-
 void
 gst_gl_effects_sin (GstGLEffects * effects)
 {
   GstGLFilter *filter = GST_GL_FILTER (effects);
+  GstGLShader *shader;
 
-  gst_gl_filter_render_to_target (filter, TRUE, effects->intexture,
-      effects->outtexture, gst_gl_effects_sin_callback, effects);
+  shader = gst_gl_effects_get_fragment_shader (effects, "sin",
+      sin_fragment_source_gles2);
+  gst_gl_filter_render_to_target_with_shader (filter, effects->intexture,
+      effects->outtexture, shader);
 }
diff --git a/ext/gl/effects/gstgleffectsobel.c b/ext/gl/effects/gstgleffectsobel.c
index 8996b93..4fbe60f 100644
--- a/ext/gl/effects/gstgleffectsobel.c
+++ b/ext/gl/effects/gstgleffectsobel.c
@@ -25,144 +25,37 @@
 
 #include "../gstgleffects.h"
 
-static void
-gst_gl_effects_sobel_callback_desaturate (gint width, gint height,
-    guint texture, gpointer data)
-{
-  GstGLShader *shader = NULL;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-
-  if (NULL != (shader = gst_gl_effects_get_fragment_shader (effects, "desat0",
-              desaturate_fragment_source_gles2))) {
-    GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
-
-#if GST_GL_HAVE_OPENGL
-    if (USING_OPENGL (GST_GL_BASE_FILTER (filter)->context)) {
-      gl->MatrixMode (GL_PROJECTION);
-      gl->LoadIdentity ();
-    }
-#endif
-
-    gst_gl_shader_use (shader);
-
-    gl->ActiveTexture (GL_TEXTURE0);
-    gl->BindTexture (GL_TEXTURE_2D, texture);
-
-    gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-
-    gst_gl_filter_draw_texture (filter, texture, width, height);
-  }
-}
-
-static void
-gst_gl_effects_sobel_callback_hconv (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLShader *shader = NULL;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-
-  if (NULL != (shader = gst_gl_effects_get_fragment_shader (effects, "hconv0",
-              sep_sobel_hconv3_fragment_source_gles2))) {
-    GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
-
-#if GST_GL_HAVE_OPENGL
-    if (USING_OPENGL (GST_GL_BASE_FILTER (filter)->context)) {
-      gl->MatrixMode (GL_PROJECTION);
-      gl->LoadIdentity ();
-    }
-#endif
-
-    gst_gl_shader_use (shader);
-
-    gl->ActiveTexture (GL_TEXTURE0);
-    gl->BindTexture (GL_TEXTURE_2D, texture);
-
-    gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-    gst_gl_shader_set_uniform_1f (shader, "width", width);
-
-    gst_gl_filter_draw_texture (filter, texture, width, height);
-  }
-}
-
-static void
-gst_gl_effects_sobel_callback_vconv (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLShader *shader = NULL;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-
-  if (NULL != (shader = gst_gl_effects_get_fragment_shader (effects, "vconv0",
-              sep_sobel_vconv3_fragment_source_gles2))) {
-    GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
-
-#if GST_GL_HAVE_OPENGL
-    if (USING_OPENGL (GST_GL_BASE_FILTER (filter)->context)) {
-      gl->MatrixMode (GL_PROJECTION);
-      gl->LoadIdentity ();
-    }
-#endif
-
-    gst_gl_shader_use (shader);
-
-    gl->ActiveTexture (GL_TEXTURE0);
-    gl->BindTexture (GL_TEXTURE_2D, texture);
-
-    gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-    gst_gl_shader_set_uniform_1f (shader, "height", height);
-
-    gst_gl_filter_draw_texture (filter, texture, width, height);
-  }
-}
-
-static void
-gst_gl_effects_sobel_callback_length (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLShader *shader = NULL;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-
-  if (NULL != (shader = gst_gl_effects_get_fragment_shader (effects, "len0",
-              sep_sobel_length_fragment_source_gles2))) {
-    GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
-
-#if GST_GL_HAVE_OPENGL
-    if (USING_OPENGL (GST_GL_BASE_FILTER (filter)->context)) {
-      gl->MatrixMode (GL_PROJECTION);
-      gl->LoadIdentity ();
-    }
-#endif
-
-    gst_gl_shader_use (shader);
-
-    gl->ActiveTexture (GL_TEXTURE0);
-    gl->BindTexture (GL_TEXTURE_2D, texture);
-
-    gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-    gst_gl_shader_set_uniform_1i (shader, "invert", effects->invert);
-
-    gst_gl_filter_draw_texture (filter, texture, width, height);
-  }
-}
-
 void
 gst_gl_effects_sobel (GstGLEffects * effects)
 {
   GstGLFilter *filter = GST_GL_FILTER (effects);
+  GstGLShader *shader;
 
-  gst_gl_filter_render_to_target (filter, TRUE,
-      effects->intexture, effects->midtexture[0],
-      gst_gl_effects_sobel_callback_desaturate, effects);
-  gst_gl_filter_render_to_target (filter, FALSE,
-      effects->midtexture[0], effects->midtexture[1],
-      gst_gl_effects_sobel_callback_hconv, effects);
-  gst_gl_filter_render_to_target (filter, FALSE,
-      effects->midtexture[1], effects->midtexture[0],
-      gst_gl_effects_sobel_callback_vconv, effects);
-  gst_gl_filter_render_to_target (filter, FALSE,
-      effects->midtexture[0], effects->outtexture,
-      gst_gl_effects_sobel_callback_length, effects);
+  shader = gst_gl_effects_get_fragment_shader (effects, "desat0",
+      desaturate_fragment_source_gles2);
+  gst_gl_filter_render_to_target_with_shader (filter, effects->intexture,
+      effects->midtexture[0], shader);
+
+  shader = gst_gl_effects_get_fragment_shader (effects, "hconv0",
+      sep_sobel_hconv3_fragment_source_gles2);
+  gst_gl_shader_use (shader);
+  gst_gl_shader_set_uniform_1f (shader, "height",
+      GST_VIDEO_INFO_HEIGHT (&filter->out_info));
+  gst_gl_filter_render_to_target_with_shader (filter, effects->midtexture[0],
+      effects->midtexture[1], shader);
+
+  shader = gst_gl_effects_get_fragment_shader (effects, "vconv0",
+      sep_sobel_vconv3_fragment_source_gles2);
+  gst_gl_shader_use (shader);
+  gst_gl_shader_set_uniform_1f (shader, "width",
+      GST_VIDEO_INFO_WIDTH (&filter->out_info));
+  gst_gl_filter_render_to_target_with_shader (filter, effects->midtexture[1],
+      effects->midtexture[0], shader);
+
+  shader = gst_gl_effects_get_fragment_shader (effects, "len0",
+      sep_sobel_length_fragment_source_gles2);
+  gst_gl_shader_use (shader);
+  gst_gl_shader_set_uniform_1i (shader, "invert", effects->invert);
+  gst_gl_filter_render_to_target_with_shader (filter, effects->midtexture[0],
+      effects->outtexture, shader);
 }
diff --git a/ext/gl/effects/gstgleffectsquare.c b/ext/gl/effects/gstgleffectsquare.c
index e74c943..911d30f 100644
--- a/ext/gl/effects/gstgleffectsquare.c
+++ b/ext/gl/effects/gstgleffectsquare.c
@@ -23,44 +23,14 @@
 
 #include "../gstgleffects.h"
 
-static void
-gst_gl_effects_square_callback (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLShader *shader;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  GstGLFuncs *gl = context->gl_vtable;
-
-  shader = gst_gl_effects_get_fragment_shader (effects, "square",
-      square_fragment_source_gles2);
-
-  if (!shader)
-    return;
-
-#if GST_GL_HAVE_OPENGL
-  if (USING_OPENGL (context)) {
-    gl->MatrixMode (GL_PROJECTION);
-    gl->LoadIdentity ();
-  }
-#endif
-
-  gst_gl_shader_use (shader);
-
-  gl->ActiveTexture (GL_TEXTURE0);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
-
-  gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
-
 void
 gst_gl_effects_square (GstGLEffects * effects)
 {
   GstGLFilter *filter = GST_GL_FILTER (effects);
+  GstGLShader *shader;
 
-  gst_gl_filter_render_to_target (filter, TRUE, effects->intexture,
-      effects->outtexture, gst_gl_effects_square_callback, effects);
+  shader = gst_gl_effects_get_fragment_shader (effects, "square",
+      square_fragment_source_gles2);
+  gst_gl_filter_render_to_target_with_shader (filter, effects->intexture,
+      effects->outtexture, shader);
 }
diff --git a/ext/gl/effects/gstgleffectsqueeze.c b/ext/gl/effects/gstgleffectsqueeze.c
index 2dbded5..1999978 100644
--- a/ext/gl/effects/gstgleffectsqueeze.c
+++ b/ext/gl/effects/gstgleffectsqueeze.c
@@ -23,44 +23,14 @@
 
 #include "../gstgleffects.h"
 
-static void
-gst_gl_effects_squeeze_callback (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLShader *shader;
-  GstGLFilter *filter = GST_GL_FILTER (data);
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  GstGLFuncs *gl = context->gl_vtable;
-
-  shader = gst_gl_effects_get_fragment_shader (effects, "squeeze",
-      squeeze_fragment_source_gles2);
-
-  if (!shader)
-    return;
-
-#if GST_GL_HAVE_OPENGL
-  if (USING_OPENGL (context)) {
-    gl->MatrixMode (GL_PROJECTION);
-    gl->LoadIdentity ();
-  }
-#endif
-
-  gst_gl_shader_use (shader);
-
-  gl->ActiveTexture (GL_TEXTURE0);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
-
-  gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
-
 void
 gst_gl_effects_squeeze (GstGLEffects * effects)
 {
   GstGLFilter *filter = GST_GL_FILTER (effects);
+  GstGLShader *shader;
 
-  gst_gl_filter_render_to_target (filter, TRUE, effects->intexture,
-      effects->outtexture, gst_gl_effects_squeeze_callback, effects);
+  shader = gst_gl_effects_get_fragment_shader (effects, "squeeze",
+      squeeze_fragment_source_gles2);
+  gst_gl_filter_render_to_target_with_shader (filter, effects->intexture,
+      effects->outtexture, shader);
 }
diff --git a/ext/gl/effects/gstgleffectssources.c b/ext/gl/effects/gstgleffectssources.c
index 3e87b8b..b83e1d7 100644
--- a/ext/gl/effects/gstgleffectssources.c
+++ b/ext/gl/effects/gstgleffectssources.c
@@ -468,32 +468,44 @@
   "}";
 
 const gchar *interpolate_fragment_source =
+  "#ifdef GL_ES\n"
+  "precision mediump float;\n"
+  "#endif\n"
+  "varying vec2 v_texcoord;"
   "uniform sampler2D base;"
   "uniform sampler2D blend;"
   "void main () {"
-  "vec4 basecolor = texture2D (base, gl_TexCoord[0].st);"
-  "vec4 blendcolor = texture2D (blend, gl_TexCoord[0].st);"
+  "vec4 basecolor = texture2D (base, v_texcoord);"
+  "vec4 blendcolor = texture2D (blend, v_texcoord);"
   "vec4 white = vec4(1.0);"
   "gl_FragColor = blendcolor + (1.0 - blendcolor.a) * basecolor;"
   "}";
 
 const gchar *texture_interp_fragment_source =
+  "#ifdef GL_ES\n"
+  "precision mediump float;\n"
+  "#endif\n"
+  "varying vec2 v_texcoord;"
   "uniform sampler2D base;"
   "uniform sampler2D blend;"
   "uniform sampler2D alpha;"
   "void main () {"
-  "  vec4 basecolor = texture2D (base, gl_TexCoord[0].st);"
-  "  vec4 blendcolor = texture2D (blend, gl_TexCoord[0].st);"
-  "  vec4 alphacolor = texture2D (alpha, gl_TexCoord[0].st);"
+  "  vec4 basecolor = texture2D (base, v_texcoord);"
+  "  vec4 blendcolor = texture2D (blend, v_texcoord);"
+  "  vec4 alphacolor = texture2D (alpha, v_texcoord);"
   "  gl_FragColor = (alphacolor * blendcolor) + (1.0 - alphacolor) * basecolor;"
   "}";
 
 const gchar *difference_fragment_source =
+  "#ifdef GL_ES\n"
+  "precision mediump float;\n"
+  "#endif\n"
+  "varying vec2 v_texcoord;"
   "uniform sampler2D saved;"
   "uniform sampler2D current;"
   "void main () {"
-  "vec4 savedcolor = texture2D (saved, gl_TexCoord[0].st);"
-  "vec4 currentcolor = texture2D (current, gl_TexCoord[0].st);"
+  "vec4 savedcolor = texture2D (saved, v_texcoord);"
+  "vec4 currentcolor = texture2D (current, v_texcoord);"
   "gl_FragColor = vec4 (step (0.12, length (savedcolor - currentcolor)));"
   "}";
 
diff --git a/ext/gl/effects/gstgleffectstretch.c b/ext/gl/effects/gstgleffectstretch.c
index d132bd0..bbc0c4c 100644
--- a/ext/gl/effects/gstgleffectstretch.c
+++ b/ext/gl/effects/gstgleffectstretch.c
@@ -23,43 +23,14 @@
 
 #include "../gstgleffects.h"
 
-static void
-gst_gl_effects_stretch_callback (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLShader *shader;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  GstGLFuncs *gl = context->gl_vtable;
-
-  shader = gst_gl_effects_get_fragment_shader (effects, "stretch",
-      stretch_fragment_source_gles2);
-
-  if (!shader)
-    return;
-
-#if GST_GL_HAVE_OPENGL
-  if (USING_OPENGL (context)) {
-    gl->MatrixMode (GL_PROJECTION);
-    gl->LoadIdentity ();
-  }
-#endif
-  gst_gl_shader_use (shader);
-
-  gl->ActiveTexture (GL_TEXTURE0);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
-
-  gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
-
 void
 gst_gl_effects_stretch (GstGLEffects * effects)
 {
   GstGLFilter *filter = GST_GL_FILTER (effects);
+  GstGLShader *shader;
 
-  gst_gl_filter_render_to_target (filter, TRUE, effects->intexture,
-      effects->outtexture, gst_gl_effects_stretch_callback, effects);
+  shader = gst_gl_effects_get_fragment_shader (effects, "stretch",
+      stretch_fragment_source_gles2);
+  gst_gl_filter_render_to_target_with_shader (filter, effects->intexture,
+      effects->outtexture, shader);
 }
diff --git a/ext/gl/effects/gstgleffecttunnel.c b/ext/gl/effects/gstgleffecttunnel.c
index 5029c51..4990b83 100644
--- a/ext/gl/effects/gstgleffecttunnel.c
+++ b/ext/gl/effects/gstgleffecttunnel.c
@@ -23,44 +23,14 @@
 
 #include "../gstgleffects.h"
 
-static void
-gst_gl_effects_tunnel_callback (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLShader *shader;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  GstGLFuncs *gl = context->gl_vtable;
-
-  shader = gst_gl_effects_get_fragment_shader (effects, "tunnel",
-      tunnel_fragment_source_gles2);
-
-  if (!shader)
-    return;
-
-#if GST_GL_HAVE_OPENGL
-  if (USING_OPENGL (context)) {
-    gl->MatrixMode (GL_PROJECTION);
-    gl->LoadIdentity ();
-  }
-#endif
-
-  gst_gl_shader_use (shader);
-
-  gl->ActiveTexture (GL_TEXTURE0);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
-
-  gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
-
 void
 gst_gl_effects_tunnel (GstGLEffects * effects)
 {
   GstGLFilter *filter = GST_GL_FILTER (effects);
+  GstGLShader *shader;
 
-  gst_gl_filter_render_to_target (filter, TRUE, effects->intexture,
-      effects->outtexture, gst_gl_effects_tunnel_callback, effects);
+  shader = gst_gl_effects_get_fragment_shader (effects, "tunnel",
+      tunnel_fragment_source_gles2);
+  gst_gl_filter_render_to_target_with_shader (filter, effects->intexture,
+      effects->outtexture, shader);
 }
diff --git a/ext/gl/effects/gstgleffecttwirl.c b/ext/gl/effects/gstgleffecttwirl.c
index 6c73f19..57a9b53 100644
--- a/ext/gl/effects/gstgleffecttwirl.c
+++ b/ext/gl/effects/gstgleffecttwirl.c
@@ -23,44 +23,14 @@
 
 #include "../gstgleffects.h"
 
-static void
-gst_gl_effects_twirl_callback (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLShader *shader;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  GstGLFuncs *gl = context->gl_vtable;
-
-  shader = gst_gl_effects_get_fragment_shader (effects, "twirl",
-      twirl_fragment_source_gles2);
-
-  if (!shader)
-    return;
-
-#if GST_GL_HAVE_OPENGL
-  if (USING_OPENGL (context)) {
-    gl->MatrixMode (GL_PROJECTION);
-    gl->LoadIdentity ();
-  }
-#endif
-
-  gst_gl_shader_use (shader);
-
-  gl->ActiveTexture (GL_TEXTURE0);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
-
-  gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
-
 void
 gst_gl_effects_twirl (GstGLEffects * effects)
 {
   GstGLFilter *filter = GST_GL_FILTER (effects);
+  GstGLShader *shader;
 
-  gst_gl_filter_render_to_target (filter, TRUE, effects->intexture,
-      effects->outtexture, gst_gl_effects_twirl_callback, effects);
+  shader = gst_gl_effects_get_fragment_shader (effects, "twirl",
+      twirl_fragment_source_gles2);
+  gst_gl_filter_render_to_target_with_shader (filter, effects->intexture,
+      effects->outtexture, shader);
 }
diff --git a/ext/gl/effects/gstgleffectxray.c b/ext/gl/effects/gstgleffectxray.c
index c045cb6..a7c9b36 100644
--- a/ext/gl/effects/gstgleffectxray.c
+++ b/ext/gl/effects/gstgleffectxray.c
@@ -28,297 +28,97 @@
 static gboolean kernel_ready = FALSE;
 static float gauss_kernel[7];
 
-static void
-gst_gl_effects_xray_step_one (gint width, gint height, guint texture,
-    gpointer data)
+void
+gst_gl_effects_xray (GstGLEffects * effects)
 {
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-
-  gst_gl_effects_luma_to_curve (effects, &xray_curve, GST_GL_EFFECTS_CURVE_XRAY,
-      width, height, texture);
-}
-
-static void
-gst_gl_effects_xray_step_two (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLShader *shader;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
+  const GstGLFuncs *gl = GST_GL_BASE_FILTER (effects)->context->gl_vtable;
   GstGLFilter *filter = GST_GL_FILTER (effects);
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  GstGLFuncs *gl = context->gl_vtable;
-
-  shader = gst_gl_effects_get_fragment_shader (effects, "hconv7",
-      hconv7_fragment_source_gles2);
-
-  if (!shader)
-    return;
+  GstGLShader *shader;
 
   if (!kernel_ready) {
     fill_gaussian_kernel (gauss_kernel, 7, 1.5);
     kernel_ready = TRUE;
   }
-#if GST_GL_HAVE_OPENGL
-  if (USING_OPENGL (context)) {
-    gl->MatrixMode (GL_PROJECTION);
-    gl->LoadIdentity ();
-  }
-#endif
-
-  gst_gl_shader_use (shader);
-
-  gl->ActiveTexture (GL_TEXTURE1);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
-
-  gst_gl_shader_set_uniform_1i (shader, "tex", 1);
-  gst_gl_shader_set_uniform_1fv (shader, "kernel", 9, gauss_kernel);
-  gst_gl_shader_set_uniform_1f (shader, "gauss_width", width);
-
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
-
-static void
-gst_gl_effects_xray_step_three (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLShader *shader;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  GstGLFuncs *gl = context->gl_vtable;
-
-  shader = gst_gl_effects_get_fragment_shader (effects, "vconv7",
-      vconv7_fragment_source_gles2);
-
-  if (!shader)
-    return;
-
-#if GST_GL_HAVE_OPENGL
-  if (USING_OPENGL (context)) {
-    gl->MatrixMode (GL_PROJECTION);
-    gl->LoadIdentity ();
-  }
-#endif
-
-  gst_gl_shader_use (shader);
-
-  gl->ActiveTexture (GL_TEXTURE1);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
-
-  gst_gl_shader_set_uniform_1i (shader, "tex", 1);
-  gst_gl_shader_set_uniform_1fv (shader, "kernel", 9, gauss_kernel);
-  gst_gl_shader_set_uniform_1f (shader, "gauss_height", height);
-
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
-
-/* multipass separable sobel */
-static void
-gst_gl_effects_xray_desaturate (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLShader *shader;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  GstGLFuncs *gl = context->gl_vtable;
-
-  shader = gst_gl_effects_get_fragment_shader (effects, "desaturate",
-      desaturate_fragment_source_gles2);
-
-  if (!shader)
-    return;
-
-#if GST_GL_HAVE_OPENGL
-  if (USING_OPENGL (context)) {
-    gl->MatrixMode (GL_PROJECTION);
-    gl->LoadIdentity ();
-  }
-#endif
-
-  gst_gl_shader_use (shader);
-
-  gl->ActiveTexture (GL_TEXTURE1);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
-
-  gst_gl_shader_set_uniform_1i (shader, "tex", 1);
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
-
-static void
-gst_gl_effects_xray_sobel_hconv (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLShader *shader;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  GstGLFuncs *gl = context->gl_vtable;
-
-  shader = gst_gl_effects_get_fragment_shader (effects, "sobel_hconv3",
-      sep_sobel_hconv3_fragment_source_gles2);
-
-  if (!shader)
-    return;
-
-#if GST_GL_HAVE_OPENGL
-  if (USING_OPENGL (context)) {
-    gl->MatrixMode (GL_PROJECTION);
-    gl->LoadIdentity ();
-  }
-#endif
-
-  gst_gl_shader_use (shader);
-
-  gl->ActiveTexture (GL_TEXTURE1);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
-
-  gst_gl_shader_set_uniform_1i (shader, "tex", 1);
-  gst_gl_shader_set_uniform_1f (shader, "width", width);
-
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
-
-static void
-gst_gl_effects_xray_sobel_vconv (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLShader *shader;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  GstGLFuncs *gl = context->gl_vtable;
-
-  shader = gst_gl_effects_get_fragment_shader (effects, "sobel_vconv3",
-      sep_sobel_vconv3_fragment_source_gles2);
-
-  if (!shader)
-    return;
-
-#if GST_GL_HAVE_OPENGL
-  if (USING_OPENGL (context)) {
-    gl->MatrixMode (GL_PROJECTION);
-    gl->LoadIdentity ();
-  }
-#endif
-
-  gst_gl_shader_use (shader);
-
-  gl->ActiveTexture (GL_TEXTURE1);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
-
-  gst_gl_shader_set_uniform_1i (shader, "tex", 1);
-  gst_gl_shader_set_uniform_1f (shader, "height", height);
-
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
-
-static void
-gst_gl_effects_xray_sobel_length (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLShader *shader;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  GstGLFuncs *gl = context->gl_vtable;
-
-  shader = gst_gl_effects_get_fragment_shader (effects, "sobel_length",
-      sep_sobel_length_fragment_source_gles2);
-
-  if (!shader)
-    return;
-
-#if GST_GL_HAVE_OPENGL
-  if (USING_OPENGL (context)) {
-    gl->MatrixMode (GL_PROJECTION);
-    gl->LoadIdentity ();
-  }
-#endif
-
-  gst_gl_shader_use (shader);
-
-  gl->ActiveTexture (GL_TEXTURE1);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
-
-  gst_gl_shader_set_uniform_1i (shader, "tex", 1);
-  gst_gl_shader_set_uniform_1i (shader, "invert", TRUE);
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
-
-/* end of sobel passes */
-
-static void
-gst_gl_effects_xray_step_five (gint width, gint height, guint texture,
-    gpointer data)
-{
-  GstGLShader *shader;
-  GstGLEffects *effects = GST_GL_EFFECTS (data);
-  GstGLFilter *filter = GST_GL_FILTER (effects);
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  GstGLFuncs *gl = context->gl_vtable;
-
-  shader = gst_gl_effects_get_fragment_shader (effects, "multiply",
-      multiply_fragment_source_gles2);
-
-  if (!shader)
-    return;
-
-#if GST_GL_HAVE_OPENGL
-  if (USING_OPENGL (context)) {
-    gl->MatrixMode (GL_PROJECTION);
-    gl->LoadIdentity ();
-  }
-#endif
-
-  gst_gl_shader_use (shader);
-
-  gl->ActiveTexture (GL_TEXTURE2);
-  gl->BindTexture (GL_TEXTURE_2D, effects->midtexture[2]);
-
-  gst_gl_shader_set_uniform_1i (shader, "base", 2);
-
-  gl->ActiveTexture (GL_TEXTURE1);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
-
-  gst_gl_shader_set_uniform_1f (shader, "alpha", (gfloat) 0.5f);
-  gst_gl_shader_set_uniform_1i (shader, "blend", 1);
-
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
-
-void
-gst_gl_effects_xray (GstGLEffects * effects)
-{
-  GstGLFilter *filter = GST_GL_FILTER (effects);
 
   /* map luma to xray curve */
-  gst_gl_filter_render_to_target (filter, TRUE, effects->intexture,
-      effects->midtexture[0], gst_gl_effects_xray_step_one, effects);
+  gst_gl_effects_luma_to_curve (effects, &xray_curve, GST_GL_EFFECTS_CURVE_XRAY,
+      effects->intexture, effects->midtexture[0]);
+
   /* horizontal blur */
-  gst_gl_filter_render_to_target (filter, FALSE, effects->midtexture[0],
-      effects->midtexture[1], gst_gl_effects_xray_step_two, effects);
+  shader = gst_gl_effects_get_fragment_shader (effects, "hconv7",
+      hconv7_fragment_source_gles2);
+  gst_gl_shader_use (shader);
+  gst_gl_shader_set_uniform_1fv (shader, "kernel", 9, gauss_kernel);
+  gst_gl_shader_set_uniform_1f (shader, "gauss_width",
+      GST_VIDEO_INFO_WIDTH (&filter->in_info));
+  gst_gl_filter_render_to_target_with_shader (filter, effects->midtexture[0],
+      effects->midtexture[1], shader);
+
   /* vertical blur */
-  gst_gl_filter_render_to_target (filter, FALSE, effects->midtexture[1],
-      effects->midtexture[2], gst_gl_effects_xray_step_three, effects);
+  shader = gst_gl_effects_get_fragment_shader (effects, "vconv7",
+      vconv7_fragment_source_gles2);
+  gst_gl_shader_use (shader);
+  gst_gl_shader_set_uniform_1fv (shader, "kernel", 9, gauss_kernel);
+  gst_gl_shader_set_uniform_1f (shader, "gauss_height",
+      GST_VIDEO_INFO_HEIGHT (&filter->out_info));
+  gst_gl_filter_render_to_target_with_shader (filter, effects->midtexture[1],
+      effects->midtexture[2], shader);
+
   /* detect edges with Sobel */
   /* the old version used edges from the blurred texture, this uses
    * the ones from original texture, still not sure what I like
    * more. This one gives better edges obviously but behaves badly
    * with noise */
   /* desaturate */
-  gst_gl_filter_render_to_target (filter, TRUE, effects->intexture,
-      effects->midtexture[3], gst_gl_effects_xray_desaturate, effects);
+  shader = gst_gl_effects_get_fragment_shader (effects, "desaturate",
+      desaturate_fragment_source_gles2);
+  gst_gl_filter_render_to_target_with_shader (filter, effects->intexture,
+      effects->midtexture[3], shader);
+
   /* horizonal convolution */
-  gst_gl_filter_render_to_target (filter, FALSE, effects->midtexture[3],
-      effects->midtexture[4], gst_gl_effects_xray_sobel_hconv, effects);
+  shader = gst_gl_effects_get_fragment_shader (effects, "sobel_hconv3",
+      sep_sobel_hconv3_fragment_source_gles2);
+  gst_gl_shader_use (shader);
+  gst_gl_shader_set_uniform_1f (shader, "width",
+      GST_VIDEO_INFO_WIDTH (&filter->out_info));
+  gst_gl_filter_render_to_target_with_shader (filter, effects->midtexture[3],
+      effects->midtexture[4], shader);
+
   /* vertical convolution */
-  gst_gl_filter_render_to_target (filter, FALSE, effects->midtexture[4],
-      effects->midtexture[3], gst_gl_effects_xray_sobel_vconv, effects);
+  shader = gst_gl_effects_get_fragment_shader (effects, "sobel_vconv3",
+      sep_sobel_vconv3_fragment_source_gles2);
+  gst_gl_shader_use (shader);
+  gst_gl_shader_set_uniform_1f (shader, "height",
+      GST_VIDEO_INFO_HEIGHT (&filter->out_info));
+  gst_gl_filter_render_to_target_with_shader (filter, effects->midtexture[4],
+      effects->midtexture[3], shader);
+
   /* gradient length */
-  gst_gl_filter_render_to_target (filter, FALSE, effects->midtexture[3],
-      effects->midtexture[4], gst_gl_effects_xray_sobel_length, effects);
+  shader = gst_gl_effects_get_fragment_shader (effects, "sobel_length",
+      sep_sobel_length_fragment_source_gles2);
+  gst_gl_shader_use (shader);
+  gst_gl_shader_set_uniform_1i (shader, "invert", TRUE);
+  gst_gl_filter_render_to_target_with_shader (filter, effects->midtexture[3],
+      effects->midtexture[4], shader);
+
   /* multiply edges with the blurred image */
-  gst_gl_filter_render_to_target (filter, FALSE, effects->midtexture[4],
-      effects->outtexture, gst_gl_effects_xray_step_five, effects);
+  shader = gst_gl_effects_get_fragment_shader (effects, "multiply",
+      multiply_fragment_source_gles2);
+  gst_gl_shader_use (shader);
+
+  gl->ActiveTexture (GL_TEXTURE2);
+  gl->BindTexture (GL_TEXTURE_2D,
+      gst_gl_memory_get_texture_id (effects->midtexture[2]));
+
+  gst_gl_shader_set_uniform_1i (shader, "base", 2);
+
+  gl->ActiveTexture (GL_TEXTURE1);
+  gl->BindTexture (GL_TEXTURE_2D,
+      gst_gl_memory_get_texture_id (effects->midtexture[4]));
+
+  gst_gl_shader_set_uniform_1f (shader, "alpha", (gfloat) 0.5f);
+  gst_gl_shader_set_uniform_1i (shader, "blend", 1);
+
+  gst_gl_filter_render_to_target_with_shader (filter, effects->midtexture[4],
+      effects->outtexture, shader);
 }
diff --git a/ext/gl/gltestsrc.c b/ext/gl/gltestsrc.c
index c4a2765..80e3c55 100644
--- a/ext/gl/gltestsrc.c
+++ b/ext/gl/gltestsrc.c
@@ -1,5 +1,6 @@
 /* GStreamer
  * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ * Copyright (C) <2016> Matthew Waters <matthew@centricular.com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -21,17 +22,19 @@
 #include "config.h"
 #endif
 
-/* non-GST-specific stuff */
-
 #include "gltestsrc.h"
 
-#include <string.h>
-#include <stdlib.h>
-#include <math.h>
+#define MAX_ATTRIBUTES 4
 
-#ifndef M_PI
-#define M_PI  3.14159265358979323846
-#endif
+struct vts_color_struct
+{
+  gfloat R, G, B;
+};
+
+struct XYZWRGB
+{
+  gfloat X, Y, Z, W, R, G, B;
+};
 
 enum
 {
@@ -51,408 +54,1115 @@
 
 static const struct vts_color_struct vts_colors[] = {
   /* 100% white */
-  {255, 128, 128, 255, 255, 255, 255},
+  {1.0f, 1.0f, 1.0f},
   /* yellow */
-  {226, 0, 155, 255, 255, 0, 255},
+  {1.0f, 1.0f, 0.0f},
   /* cyan */
-  {179, 170, 0, 0, 255, 255, 255},
+  {0.0f, 1.0f, 1.0f},
   /* green */
-  {150, 46, 21, 0, 255, 0, 255},
+  {0.0f, 1.0f, 0.0f},
   /* magenta */
-  {105, 212, 235, 255, 0, 255, 255},
+  {1.0f, 0.0f, 1.0f},
   /* red */
-  {76, 85, 255, 255, 0, 0, 255},
+  {1.0f, 0.0f, 0.0f},
   /* blue */
-  {29, 255, 107, 0, 0, 255, 255},
+  {0.0f, 0.0f, 1.0f},
   /* black */
-  {16, 128, 128, 0, 0, 0, 255},
+  {0.0f, 0.0f, 0.0f},
   /* -I */
-  {16, 198, 21, 0, 0, 128, 255},
+  {0.0, 0.0f, 0.5f},
   /* +Q */
-  {16, 235, 198, 0, 128, 255, 255},
+  {0.0f, 0.5, 1.0f},
   /* superblack */
-  {0, 128, 128, 0, 0, 0, 255},
-  /* 5% grey */
-  {32, 128, 128, 32, 32, 32, 255},
+  {0.0f, 0.0f, 0.0f},
+  /* 7.421875% grey */
+  {19. / 256.0f, 19. / 256.0f, 19. / 256.0},
 };
 
-static void
-gst_gl_test_src_unicolor (GstGLTestSrc * v, GstBuffer * buffer, int w,
-    int h, const struct vts_color_struct *color);
-
-void
-gst_gl_test_src_smpte (GstGLTestSrc * v, GstBuffer * buffer, int w, int h)
-{
-#if GST_GL_HAVE_OPENGL
-  int i;
-
-  if (gst_gl_context_get_gl_api (v->context) & GST_GL_API_OPENGL) {
-
-    glClearColor (0.0, 0.0, 0.0, 1.0);
-    glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
-    glDisable (GL_CULL_FACE);
-
-    glMatrixMode (GL_PROJECTION);
-    glLoadIdentity ();
-
-    for (i = 0; i < 7; i++) {
-      glColor4f (vts_colors[i].R * (1 / 255.0f), vts_colors[i].G * (1 / 255.0f),
-          vts_colors[i].B * (1 / 255.0f), 1.0f);
-      glBegin (GL_QUADS);
-      glVertex3f (-1.0f + i * (2.0f / 7.0f), -1.0f + 2.0 * (2.0f / 3.0f), 0);
-      glVertex3f (-1.0f + (i + 1.0f) * (2.0f / 7.0f),
-          -1.0f + 2.0f * (2.0f / 3.0f), 0);
-      glVertex3f (-1.0f + (i + 1.0f) * (2.0f / 7.0f), -1.0f, 0);
-      glVertex3f (-1.0f + i * (2.0f / 7.0f), -1.0f, 0);
-      glEnd ();
-    }
-
-    for (i = 0; i < 7; i++) {
-      int k;
-
-      if (i & 1) {
-        k = 7;
-      } else {
-        k = 6 - i;
-      }
-
-      glColor4f (vts_colors[k].R * (1 / 255.0f), vts_colors[k].G * (1 / 255.0f),
-          vts_colors[k].B * (1 / 255.0f), 1.0f);
-      glBegin (GL_QUADS);
-      glVertex3f (-1.0f + i * (2.0f / 7.0f), -1.0f + 2.0f * (3.0f / 4.0f), 0);
-      glVertex3f (-1.0f + (i + 1) * (2.0f / 7.0f), -1.0f + 2.0f * (3.0f / 4.0f),
-          0);
-      glVertex3f (-1.0f + (i + 1) * (2.0f / 7.0f), -1.0f + 2.0f * (2.0f / 3.0f),
-          0);
-      glVertex3f (-1.0f + i * (2.0f / 7.0f), -1.0f + 2.0f * (2.0f / 3.0f), 0);
-      glEnd ();
-    }
-
-    for (i = 0; i < 3; i++) {
-      int k;
-
-      if (i == 0) {
-        k = 8;
-      } else if (i == 1) {
-        k = 0;
-      } else {
-        k = 9;
-      }
-
-      glColor4f (vts_colors[k].R * (1 / 255.0f), vts_colors[k].G * (1 / 255.0f),
-          vts_colors[k].B * (1 / 255.0f), 1.0f);
-      glBegin (GL_QUADS);
-      glVertex3f (-1.0f + i * (2.0f / 6.0f), -1.0f + 2.0f * 1, 0);
-      glVertex3f (-1.0f + (i + 1) * (2.0f / 6.0f), -1.0f + 2.0f * 1, 0);
-      glVertex3f (-1.0f + (i + 1) * (2.0f / 6.0f), -1.0f + 2.0f * (3.0f / 4.0f),
-          0);
-      glVertex3f (-1.0f + i * (2.0f / 6.0f), -1.0f + 2.0f * (3.0f / 4.0f), 0);
-      glEnd ();
-    }
-
-    for (i = 0; i < 3; i++) {
-      int k;
-
-      if (i == 0) {
-        k = COLOR_SUPER_BLACK;
-      } else if (i == 1) {
-        k = COLOR_BLACK;
-      } else {
-        k = COLOR_DARK_GREY;
-      }
-
-      glColor4f (vts_colors[k].R * (1 / 255.0f), vts_colors[k].G * (1 / 255.0f),
-          vts_colors[k].B * (1 / 255.0f), 1.0f);
-      glBegin (GL_QUADS);
-      glVertex3f (-1.0f + 2.0f * (0.5f + i * (1.0f / 12.0f)), -1.0 + 2.0f * 1,
-          0);
-      glVertex3f (-1.0f + 2.0f * (0.5f + (i + 1) * (1.0f / 12.0f)),
-          -1.0f + 2.0f * 1, 0);
-      glVertex3f (-1.0f + 2.0f * (0.5f + (i + 1) * (1.0f / 12.0f)),
-          -1.0f + 2.0f * (3.0f / 4.0f), 0);
-      glVertex3f (-1.0f + 2.0f * (0.5f + i * (1.0f / 12.0f)),
-          -1.0f + 2.0f * (3.0f / 4.0f), 0);
-      glEnd ();
-    }
-
-    glColor4f (1.0, 1.0, 1.0, 1.0);
-    glBegin (GL_QUADS);
-    glVertex3f (-1.0 + 2.0 * (0.75), -1.0 + 2.0 * 1, 0);
-    glVertex3f (-1.0 + 2.0 * (1.0), -1.0 + 2.0 * 1, 0);
-    glVertex3f (-1.0 + 2.0 * (1.0), -1.0 + 2.0 * (3.0 / 4.0), 0);
-    glVertex3f (-1.0 + 2.0 * (0.75), -1.0 + 2.0 * (3.0 / 4.0), 0);
-    glEnd ();
-  }
-#endif
-}
-
 /* *INDENT-OFF* */
-
 static const GLfloat positions[] = {
      -1.0,  1.0,  0.0, 1.0,
       1.0,  1.0,  0.0, 1.0,
       1.0, -1.0,  0.0, 1.0,
      -1.0, -1.0,  0.0, 1.0,
-  };
-static const GLfloat identitiy_matrix[] = {
-      1.0,  0.0,  0.0, 0.0,
-      0.0,  1.0,  0.0, 0.0,
-      0.0,  0.0,  1.0, 0.0,
-      0.0,  0.0,  0.0, 1.0,
-  };
+};
 
+static const GLushort indices_quad[] = { 0, 1, 2, 0, 2, 3 };
 /* *INDENT-ON* */
 
-void
-gst_gl_test_src_shader (GstGLTestSrc * v, GstBuffer * buffer, int w, int h)
+struct attribute
 {
+  const gchar *name;
+  gint location;
+  guint n_elements;
+  GLenum element_type;
+  guint offset;                 /* in bytes */
+  guint stride;                 /* in bytes */
+};
 
-  GstGLFuncs *gl = v->context->gl_vtable;
+struct SrcShader
+{
+  struct BaseSrcImpl base;
+
+  GstGLShader *shader;
+
+  guint vao;
+  guint vbo;
+  guint vbo_indices;
+
+  guint n_attributes;
+  struct attribute attributes[MAX_ATTRIBUTES];
+
+  gconstpointer vertices;
+  gsize vertices_size;
+  const gushort *indices;
+  guint index_offset;
+  guint n_indices;
+};
+
+static void
+_bind_buffer (struct SrcShader *src)
+{
+  GstGLContext *context = src->base.context;
+  const GstGLFuncs *gl = context->gl_vtable;
+  gint i;
+
+  gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, src->vbo_indices);
+  gl->BindBuffer (GL_ARRAY_BUFFER, src->vbo);
+
+  /* Load the vertex position */
+  for (i = 0; i < src->n_attributes; i++) {
+    struct attribute *attr = &src->attributes[i];
+
+    if (attr->location == -1)
+      attr->location =
+          gst_gl_shader_get_attribute_location (src->shader, attr->name);
+
+    gl->VertexAttribPointer (attr->location, attr->n_elements,
+        attr->element_type, GL_FALSE, attr->stride,
+        (void *) (gintptr) attr->offset);
+
+    gl->EnableVertexAttribArray (attr->location);
+  }
+}
+
+static void
+_unbind_buffer (struct SrcShader *src)
+{
+  GstGLContext *context = src->base.context;
+  const GstGLFuncs *gl = context->gl_vtable;
+  gint i;
+
+  gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, 0);
+  gl->BindBuffer (GL_ARRAY_BUFFER, 0);
+
+  for (i = 0; i < src->n_attributes; i++) {
+    struct attribute *attr = &src->attributes[i];
+
+    gl->DisableVertexAttribArray (attr->location);
+  }
+}
+
+static gboolean
+_src_shader_init (gpointer impl, GstGLContext * context, GstVideoInfo * v_info)
+{
+  struct SrcShader *src = impl;
+  const GstGLFuncs *gl = context->gl_vtable;
+
+  src->base.context = context;
+
+  if (!src->vbo) {
+    if (gl->GenVertexArrays) {
+      gl->GenVertexArrays (1, &src->vao);
+      gl->BindVertexArray (src->vao);
+    }
+
+    gl->GenBuffers (1, &src->vbo);
+    gl->BindBuffer (GL_ARRAY_BUFFER, src->vbo);
+    gl->BufferData (GL_ARRAY_BUFFER, src->vertices_size,
+        src->vertices, GL_STATIC_DRAW);
+
+    gl->GenBuffers (1, &src->vbo_indices);
+    gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, src->vbo_indices);
+    gl->BufferData (GL_ELEMENT_ARRAY_BUFFER, src->n_indices * sizeof (gushort),
+        src->indices, GL_STATIC_DRAW);
+
+    if (gl->GenVertexArrays) {
+      _bind_buffer (src);
+      gl->BindVertexArray (0);
+    }
+
+    gl->BindBuffer (GL_ARRAY_BUFFER, 0);
+    gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, 0);
+  }
+
+  return TRUE;
+}
+
+static gboolean
+_src_shader_fill_bound_fbo (gpointer impl)
+{
+  struct SrcShader *src = impl;
+  const GstGLFuncs *gl;
+
+  g_return_val_if_fail (src->base.context, FALSE);
+  g_return_val_if_fail (src->shader, FALSE);
+  gl = src->base.context->gl_vtable;
+
+  gst_gl_shader_use (src->shader);
+
+  if (gl->GenVertexArrays)
+    gl->BindVertexArray (src->vao);
+  else
+    _bind_buffer (src);
+
+  gl->DrawElements (GL_TRIANGLES, src->n_indices, GL_UNSIGNED_SHORT,
+      (gpointer) (gintptr) src->index_offset);
+
+  if (gl->GenVertexArrays)
+    gl->BindVertexArray (0);
+  else
+    _unbind_buffer (src);
+
+  gst_gl_context_clear_shader (src->base.context);
+
+  return TRUE;
+}
+
+static void
+_src_shader_deinit (gpointer impl)
+{
+  struct SrcShader *src = impl;
+  const GstGLFuncs *gl = src->base.context->gl_vtable;
+
+  if (src->shader)
+    gst_object_unref (src->shader);
+  src->shader = NULL;
+
+  if (src->vao)
+    gl->DeleteVertexArrays (1, &src->vao);
+  src->vao = 0;
+
+  if (src->vbo)
+    gl->DeleteBuffers (1, &src->vbo);
+  src->vbo = 0;
+
+  if (src->vbo_indices)
+    gl->DeleteBuffers (1, &src->vbo_indices);
+  src->vbo_indices = 0;
+}
 
 /* *INDENT-OFF* */
-  const GLfloat uvs[] = {
-     0.0,  1.0,
-     1.0,  1.0,
-     1.0,  0.0,
-     0.0,  0.0,
-  };
+static const gchar *smpte_vertex_src =
+    "attribute vec4 position;\n"
+    "attribute vec4 a_color;\n"
+    "varying vec4 color;\n"
+    "void main()\n"
+    "{\n"
+    "  gl_Position = position;\n"
+    "  color = a_color;\n"
+    "}";
+
+static const gchar *smpte_fragment_src =
+    "#ifdef GL_ES\n"
+    "precision mediump float;\n"
+    "#endif\n"
+    "varying vec4 color;\n"
+    "void main()\n"
+    "{\n"
+    "  gl_FragColor = color;\n"
+    "}";
+
+static const gchar *snow_vertex_src =
+    "attribute vec4 position;\n"
+    "varying vec2 out_uv;\n"
+    "void main()\n"
+    "{\n"
+    "   gl_Position = position;\n"
+    "   out_uv = position.xy;\n"
+    "}";
+
+static const gchar *snow_fragment_src = 
+    "#ifdef GL_ES\n"
+    "precision mediump float;\n"
+    "#endif\n"
+    "uniform float time;\n"
+    "varying vec2 out_uv;\n"
+    "\n"
+    "float rand(vec2 co){\n"
+    "    return fract(sin(dot(co.xy, vec2(12.9898,78.233))) * 43758.5453);\n"
+    "}\n"
+    "void main()\n"
+    "{\n"
+    "  gl_FragColor = vec4(rand(time * out_uv));\n"
+    "}";
 /* *INDENT-ON* */
 
-  GLushort indices[] = { 0, 1, 2, 3, 0 };
+#define N_QUADS 21
+struct SrcSMPTE
+{
+  struct SrcShader base;
 
-  GLint attr_position_loc = -1;
-  GLint attr_uv_loc = -1;
+  GstGLShader *snow_shader;
+  GstGLShader *color_shader;
+  gint attr_snow_position;
+};
 
-  if (gst_gl_context_get_gl_api (v->context)) {
+static gpointer
+_src_smpte_new (GstGLTestSrc * test)
+{
+  struct SrcSMPTE *src = g_new0 (struct SrcSMPTE, 1);
 
-    gst_gl_context_clear_shader (v->context);
-    gl->BindTexture (GL_TEXTURE_2D, 0);
+  src->base.base.src = test;
 
-    gst_gl_shader_use (v->shader);
-
-    attr_position_loc =
-        gst_gl_shader_get_attribute_location (v->shader, "position");
-
-    attr_uv_loc = gst_gl_shader_get_attribute_location (v->shader, "uv");
-
-    /* Load the vertex position */
-    gl->VertexAttribPointer (attr_position_loc, 4, GL_FLOAT,
-        GL_FALSE, 0, positions);
-    /* Load the texture coordinate */
-    gl->VertexAttribPointer (attr_uv_loc, 2, GL_FLOAT, GL_FALSE, 0, uvs);
-
-    gl->EnableVertexAttribArray (attr_position_loc);
-    gl->EnableVertexAttribArray (attr_uv_loc);
-
-    gst_gl_shader_set_uniform_matrix_4fv (v->shader, "mvp",
-        1, GL_FALSE, identitiy_matrix);
-
-    gst_gl_shader_set_uniform_1f (v->shader, "time",
-        (gfloat) v->running_time / GST_SECOND);
-
-    gst_gl_shader_set_uniform_1f (v->shader, "aspect_ratio",
-        (gfloat) w / (gfloat) h);
-
-    gl->DrawElements (GL_TRIANGLE_STRIP, 5, GL_UNSIGNED_SHORT, indices);
-
-    gl->DisableVertexAttribArray (attr_position_loc);
-    gl->DisableVertexAttribArray (attr_uv_loc);
-
-    gst_gl_context_clear_shader (v->context);
-  }
+  return src;
 }
 
-static void
-gst_gl_test_src_unicolor (GstGLTestSrc * v, GstBuffer * buffer, int w,
-    int h, const struct vts_color_struct *color)
+static gboolean
+_src_smpte_init (gpointer impl, GstGLContext * context, GstVideoInfo * v_info)
 {
-#if GST_GL_HAVE_OPENGL
-  if (gst_gl_context_get_gl_api (v->context) & GST_GL_API_OPENGL) {
-    glClearColor (color->R * (1 / 255.0f), color->G * (1 / 255.0f),
-        color->B * (1 / 255.0f), 1.0f);
-    glClear (GL_COLOR_BUFFER_BIT);
-  }
-#endif
-}
-
-void
-gst_gl_test_src_black (GstGLTestSrc * v, GstBuffer * buffer, int w, int h)
-{
-  gst_gl_test_src_unicolor (v, buffer, w, h, vts_colors + COLOR_BLACK);
-}
-
-void
-gst_gl_test_src_white (GstGLTestSrc * v, GstBuffer * buffer, int w, int h)
-{
-  gst_gl_test_src_unicolor (v, buffer, w, h, vts_colors + COLOR_WHITE);
-}
-
-void
-gst_gl_test_src_red (GstGLTestSrc * v, GstBuffer * buffer, int w, int h)
-{
-  gst_gl_test_src_unicolor (v, buffer, w, h, vts_colors + COLOR_RED);
-}
-
-void
-gst_gl_test_src_green (GstGLTestSrc * v, GstBuffer * buffer, int w, int h)
-{
-  gst_gl_test_src_unicolor (v, buffer, w, h, vts_colors + COLOR_GREEN);
-}
-
-void
-gst_gl_test_src_blue (GstGLTestSrc * v, GstBuffer * buffer, int w, int h)
-{
-  gst_gl_test_src_unicolor (v, buffer, w, h, vts_colors + COLOR_BLUE);
-}
-
-static void
-gst_gl_test_src_checkers (GstGLTestSrc * v, gint checker_width)
-{
-
-  GstGLFuncs *gl = v->context->gl_vtable;
-
-  GLushort indices[] = { 0, 1, 2, 3, 0 };
-
-  GLint attr_position_loc = -1;
-
-  if (gst_gl_context_get_gl_api (v->context)) {
-
-    gst_gl_context_clear_shader (v->context);
-    gl->BindTexture (GL_TEXTURE_2D, 0);
-
-    gst_gl_shader_use (v->shader);
-
-    attr_position_loc =
-        gst_gl_shader_get_attribute_location (v->shader, "position");
-
-    /* Load the vertex position */
-    gl->VertexAttribPointer (attr_position_loc, 4, GL_FLOAT,
-        GL_FALSE, 0, positions);
-
-    gl->EnableVertexAttribArray (attr_position_loc);
-
-    gst_gl_shader_set_uniform_matrix_4fv (v->shader, "mvp",
-        1, GL_FALSE, identitiy_matrix);
-
-    gst_gl_shader_set_uniform_1f (v->shader, "checker_width", checker_width);
-
-    gl->DrawElements (GL_TRIANGLE_STRIP, 5, GL_UNSIGNED_SHORT, indices);
-
-    gl->DisableVertexAttribArray (attr_position_loc);
-
-    gst_gl_context_clear_shader (v->context);
-  }
-}
-
-
-void
-gst_gl_test_src_checkers1 (GstGLTestSrc * v, GstBuffer * buffer, int w, int h)
-{
-  gst_gl_test_src_checkers (v, 1);
-}
-
-
-void
-gst_gl_test_src_checkers2 (GstGLTestSrc * v, GstBuffer * buffer, int w, int h)
-{
-  gst_gl_test_src_checkers (v, 2);
-}
-
-void
-gst_gl_test_src_checkers4 (GstGLTestSrc * v, GstBuffer * buffer, int w, int h)
-{
-  gst_gl_test_src_checkers (v, 4);
-
-}
-
-void
-gst_gl_test_src_checkers8 (GstGLTestSrc * v, GstBuffer * buffer, int w, int h)
-{
-  gst_gl_test_src_checkers (v, 8);
-}
-
-void
-gst_gl_test_src_circular (GstGLTestSrc * v, GstBuffer * buffer, int w, int h)
-{
-#if 0
+  struct SrcSMPTE *src = impl;
+  struct XYZWRGB *coord;
+  gushort *plane_indices;
+  GError *error = NULL;
+  int color_idx = 0;
   int i;
-  int j;
-  paintinfo pi = { NULL, };
-  paintinfo *p = &pi;
-  struct fourcc_list_struct *fourcc;
-  struct vts_color_struct color;
-  static uint8_t sine_array[256];
-  static int sine_array_inited = FALSE;
-  double freq[8];
 
-#ifdef SCALE_AMPLITUDE
-  double ampl[8];
-#endif
-  int d;
+  src->base.base.context = context;
 
-  if (!sine_array_inited) {
-    for (i = 0; i < 256; i++) {
-      sine_array[i] =
-          floor (255 * (0.5 + 0.5 * sin (i * 2 * M_PI / 256)) + 0.5);
-    }
-    sine_array_inited = TRUE;
+  coord = g_new0 (struct XYZWRGB, N_QUADS * 4);
+  plane_indices = g_new0 (gushort, N_QUADS * 6);
+
+  /* top row */
+  for (int i = 0; i < 7; i++) {
+    coord[color_idx * 4 + 0].X = -1.0f + i * (2.0f / 7.0f);
+    coord[color_idx * 4 + 0].Y = 1.0f / 3.0f;
+    coord[color_idx * 4 + 1].X = -1.0f + (i + 1) * (2.0f / 7.0f);
+    coord[color_idx * 4 + 1].Y = 1.0f / 3.0f;
+    coord[color_idx * 4 + 2].X = -1.0f + (i + 1) * (2.0f / 7.0f);
+    coord[color_idx * 4 + 2].Y = -1.0f;
+    coord[color_idx * 4 + 3].X = -1.0f + i * (2.0f / 7.0f);
+    coord[color_idx * 4 + 3].Y = -1.0f;
+    color_idx++;
   }
 
-  p->width = w;
-  p->height = h;
-  fourcc = v->fourcc;
-  if (fourcc == NULL)
+  /* middle row */
+  for (int i = 0; i < 7; i++) {
+    coord[color_idx * 4 + 0].X = -1.0f + i * (2.0f / 7.0f);
+    coord[color_idx * 4 + 0].Y = 0.5f;
+    coord[color_idx * 4 + 1].X = -1.0f + (i + 1) * (2.0f / 7.0f);
+    coord[color_idx * 4 + 1].Y = 0.5f;
+    coord[color_idx * 4 + 2].X = -1.0f + (i + 1) * (2.0f / 7.0f);
+    coord[color_idx * 4 + 2].Y = 1.0f / 3.0f;
+    coord[color_idx * 4 + 3].X = -1.0f + i * (2.0f / 7.0f);
+    coord[color_idx * 4 + 3].Y = 1.0f / 3.0f;
+    color_idx++;
+  }
+
+  /* bottom row, left three */
+  for (int i = 0; i < 3; i++) {
+    coord[color_idx * 4 + 0].X = -1.0f + i / 3.0f;
+    coord[color_idx * 4 + 0].Y = 1.0f;
+    coord[color_idx * 4 + 1].X = -1.0f + (i + 1) / 3.0f;
+    coord[color_idx * 4 + 1].Y = 1.0f;
+    coord[color_idx * 4 + 2].X = -1.0f + (i + 1) / 3.0f;
+    coord[color_idx * 4 + 2].Y = 0.5f;
+    coord[color_idx * 4 + 3].X = -1.0f + i / 3.0f;
+    coord[color_idx * 4 + 3].Y = 0.5f;
+    color_idx++;
+  }
+
+  /* bottom row, middle three (the blacks) */
+  for (int i = 0; i < 3; i++) {
+    coord[color_idx * 4 + 0].X = i / 6.0f;
+    coord[color_idx * 4 + 0].Y = 1.0f;
+    coord[color_idx * 4 + 1].X = (i + 1) / 6.0f;
+    coord[color_idx * 4 + 1].Y = 1.0f;
+    coord[color_idx * 4 + 2].X = (i + 1) / 6.0f;
+    coord[color_idx * 4 + 2].Y = 0.5f;
+    coord[color_idx * 4 + 3].X = i / 6.0f;
+    coord[color_idx * 4 + 3].Y = 0.5f;
+    color_idx++;
+  }
+
+  g_assert (color_idx < N_QUADS);
+
+  for (i = 0; i < N_QUADS - 1; i++) {
+    int j, k;
+    if (i < 7) {
+      k = i;
+    } else if ((i - 7) & 1) {
+      k = COLOR_BLACK;
+    } else {
+      k = 13 - i;
+    }
+
+    if (i == 14) {
+      k = COLOR_NEG_I;
+    } else if (i == 15) {
+      k = COLOR_WHITE;
+    } else if (i == 16) {
+      k = COLOR_POS_Q;
+    } else if (i == 17) {
+      k = COLOR_SUPER_BLACK;
+    } else if (i == 18) {
+      k = COLOR_BLACK;
+    } else if (i == 19) {
+      k = COLOR_DARK_GREY;
+    }
+
+    for (j = 0; j < 4; j++) {
+      coord[i * 4 + j].Z = 0.0f;
+      coord[i * 4 + j].W = 1.0f;
+      coord[i * 4 + j].R = vts_colors[k].R;
+      coord[i * 4 + j].G = vts_colors[k].G;
+      coord[i * 4 + j].B = vts_colors[k].B;
+    }
+
+    for (j = 0; j < 6; j++)
+      plane_indices[i * 6 + j] = i * 4 + indices_quad[j];
+  }
+
+  /* snow */
+  coord[color_idx * 4 + 0].X = 0.5f;
+  coord[color_idx * 4 + 0].Y = 1.0f;
+  coord[color_idx * 4 + 0].Z = 0.0f;
+  coord[color_idx * 4 + 0].W = 1.0f;
+  coord[color_idx * 4 + 1].X = 1.0f;
+  coord[color_idx * 4 + 1].Y = 1.0f;
+  coord[color_idx * 4 + 1].Z = 0.0f;
+  coord[color_idx * 4 + 1].W = 1.0f;
+  coord[color_idx * 4 + 2].X = 1.0f;
+  coord[color_idx * 4 + 2].Y = 0.5f;
+  coord[color_idx * 4 + 2].Z = 0.0f;
+  coord[color_idx * 4 + 2].W = 1.0f;
+  coord[color_idx * 4 + 3].X = 0.5f;
+  coord[color_idx * 4 + 3].Y = 0.5f;
+  coord[color_idx * 4 + 3].Z = 0.0f;
+  coord[color_idx * 4 + 3].W = 1.0f;
+  for (i = 0; i < 6; i++)
+    plane_indices[color_idx * 6 + i] = color_idx * 4 + indices_quad[i];
+  color_idx++;
+
+  if (src->color_shader)
+    gst_object_unref (src->color_shader);
+  src->color_shader = gst_gl_shader_new_link_with_stages (context, &error,
+      gst_glsl_stage_new_with_string (context, GL_VERTEX_SHADER,
+          GST_GLSL_VERSION_NONE,
+          GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+          smpte_vertex_src),
+      gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER,
+          GST_GLSL_VERSION_NONE,
+          GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+          smpte_fragment_src), NULL);
+  if (!src->color_shader) {
+    GST_ERROR_OBJECT (src->base.base.src, "%s", error->message);
+    return FALSE;
+  }
+
+  if (src->snow_shader)
+    gst_object_unref (src->snow_shader);
+  src->snow_shader = gst_gl_shader_new_link_with_stages (context, &error,
+      gst_glsl_stage_new_with_string (context, GL_VERTEX_SHADER,
+          GST_GLSL_VERSION_NONE,
+          GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+          snow_vertex_src),
+      gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER,
+          GST_GLSL_VERSION_NONE,
+          GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+          snow_fragment_src), NULL);
+  if (!src->snow_shader) {
+    GST_ERROR_OBJECT (src->base.base.src, "%s", error->message);
+    return FALSE;
+  }
+
+  src->attr_snow_position = -1;
+
+  src->base.n_attributes = 2;
+
+  src->base.attributes[0].name = "position";
+  src->base.attributes[0].location = -1;
+  src->base.attributes[0].n_elements = 4;
+  src->base.attributes[0].element_type = GL_FLOAT;
+  src->base.attributes[0].offset = 0;
+  src->base.attributes[0].stride = sizeof (struct XYZWRGB);
+
+  src->base.attributes[1].name = "a_color";
+  src->base.attributes[1].location = -1;
+  src->base.attributes[1].n_elements = 3;
+  src->base.attributes[1].element_type = GL_FLOAT;
+  src->base.attributes[1].offset = 4 * sizeof (gfloat);
+  src->base.attributes[1].stride = sizeof (struct XYZWRGB);
+
+  if (src->base.shader)
+    gst_object_unref (src->base.shader);
+  src->base.shader = gst_object_ref (src->color_shader);
+  src->base.vertices = (gfloat *) coord;
+  src->base.vertices_size = sizeof (struct XYZWRGB) * N_QUADS * 4;
+  src->base.indices = plane_indices;
+  src->base.n_indices = N_QUADS * 6;
+
+  return _src_shader_init (impl, context, v_info);
+}
+
+static gboolean
+_src_smpte_fill_bound_fbo (gpointer impl)
+{
+  struct SrcSMPTE *src = impl;
+  gint attr_color_position = -1;
+
+  src->base.n_attributes = 2;
+  if (src->base.shader)
+    gst_object_unref (src->base.shader);
+  src->base.shader = gst_object_ref (src->color_shader);
+  src->base.n_indices = (N_QUADS - 1) * 6;
+  src->base.index_offset = 0;
+  if (!_src_shader_fill_bound_fbo (impl))
+    return FALSE;
+  attr_color_position = src->base.attributes[0].location;
+
+  src->base.attributes[0].location = src->attr_snow_position;
+  src->base.n_attributes = 1;
+  if (src->base.shader)
+    gst_object_unref (src->base.shader);
+  src->base.shader = gst_object_ref (src->snow_shader);
+  src->base.n_indices = 6;
+  src->base.index_offset = (N_QUADS - 1) * 6 * sizeof (gushort);
+  gst_gl_shader_use (src->snow_shader);
+  gst_gl_shader_set_uniform_1f (src->snow_shader, "time",
+      (gfloat) src->base.base.src->running_time / GST_SECOND);
+  if (!_src_shader_fill_bound_fbo (impl))
+    return FALSE;
+  src->attr_snow_position = src->base.attributes[0].location;
+  src->base.attributes[0].location = attr_color_position;
+
+  return TRUE;
+}
+
+static void
+_src_smpte_free (gpointer impl)
+{
+  struct SrcSMPTE *src = impl;
+
+  if (!impl)
     return;
 
-  fourcc->paint_setup (p, dest);
-  p->paint_hline = fourcc->paint_hline;
+  _src_shader_deinit (impl);
 
-  color = vts_colors[COLOR_BLACK];
-  p->color = &color;
+  g_free ((gpointer) src->base.vertices);
+  g_free ((gpointer) src->base.indices);
 
-  for (i = 1; i < 8; i++) {
-    freq[i] = 200 * pow (2.0, -(i - 1) / 4.0);
-#ifdef SCALE_AMPLITUDE
-    {
-      double x;
+  if (src->snow_shader)
+    gst_object_unref (src->snow_shader);
+  if (src->color_shader)
+    gst_object_unref (src->color_shader);
 
-      x = 2 * M_PI * freq[i] / w;
-      ampl[i] = sin (x) / x;
-    }
-#endif
+  g_free (impl);
+}
+
+static const struct SrcFuncs src_smpte = {
+  GST_GL_TEST_SRC_SMPTE,
+  _src_smpte_new,
+  _src_smpte_init,
+  _src_smpte_fill_bound_fbo,
+  _src_smpte_free,
+};
+
+#undef N_QUADS
+
+struct SrcUniColor
+{
+  struct BaseSrcImpl base;
+
+  struct vts_color_struct color;
+};
+
+static gpointer
+_src_uni_color_new (GstGLTestSrc * test)
+{
+  struct SrcUniColor *src = g_new0 (struct SrcUniColor, 1);
+
+  src->base.src = test;
+
+  return src;
+}
+
+static gboolean
+_src_uni_color_init (gpointer impl, GstGLContext * context,
+    GstVideoInfo * v_info)
+{
+  struct SrcUniColor *src = impl;
+
+  src->base.context = context;
+  src->base.v_info = *v_info;
+
+  return TRUE;
+}
+
+static gboolean
+_src_uni_color_fill_bound_fbo (gpointer impl)
+{
+  struct SrcUniColor *src = impl;
+  const GstGLFuncs *gl = src->base.context->gl_vtable;
+
+  gl->ClearColor (src->color.R, src->color.G, src->color.B, 1.0f);
+  gl->Clear (GL_COLOR_BUFFER_BIT);
+
+  return TRUE;
+}
+
+static void
+_src_uni_color_free (gpointer impl)
+{
+  g_free (impl);
+}
+
+#define SRC_UNICOLOR(name, cap_name) \
+static gpointer \
+G_PASTE(G_PASTE(_src_unicolor_,name),_new) (GstGLTestSrc * test) \
+{ \
+  struct SrcUniColor *src = _src_uni_color_new (test); \
+  src->color = vts_colors[G_PASTE(COLOR_,cap_name)]; \
+  return src; \
+} \
+static const struct SrcFuncs G_PASTE (src_,name) = { \
+  G_PASTE(GST_GL_TEST_SRC_,cap_name), \
+  G_PASTE(G_PASTE(_src_unicolor_,name),_new), \
+  _src_uni_color_init, \
+  _src_uni_color_fill_bound_fbo, \
+  _src_uni_color_free, \
+}
+
+SRC_UNICOLOR (white, WHITE);
+SRC_UNICOLOR (black, BLACK);
+SRC_UNICOLOR (red, RED);
+SRC_UNICOLOR (green, GREEN);
+SRC_UNICOLOR (blue, BLUE);
+
+static gpointer
+_src_blink_new (GstGLTestSrc * test)
+{
+  struct SrcUniColor *src = _src_uni_color_new (test);
+
+  src->color = vts_colors[COLOR_WHITE];
+
+  return src;
+}
+
+static gboolean
+_src_blink_fill_bound_fbo (gpointer impl)
+{
+  struct SrcUniColor *src = impl;
+
+  if (src->color.R > 0.5) {
+    src->color = vts_colors[COLOR_BLACK];
+  } else {
+    src->color = vts_colors[COLOR_WHITE];
   }
 
-  for (i = 0; i < w; i++) {
-    for (j = 0; j < h; j++) {
-      double dist;
-      int seg;
+  return _src_uni_color_fill_bound_fbo (impl);
+}
 
-      dist =
-          sqrt ((2 * i - w) * (2 * i - w) + (2 * j - h) * (2 * j -
-              h)) / (2 * w);
-      seg = floor (dist * 16);
-      if (seg == 0 || seg >= 8) {
-        color.Y = 255;
-      } else {
-#ifdef SCALE_AMPLITUDE
-        double a;
-#endif
-        d = floor (256 * dist * freq[seg] + 0.5);
-#ifdef SCALE_AMPLITUDE
-        a = ampl[seg];
-        if (a < 0)
-          a = 0;
-        color.Y = 128 + a * (sine_array[d & 0xff] - 128);
-#else
-        color.Y = sine_array[d & 0xff];
-#endif
-      }
-      color.R = color.Y;
-      color.G = color.Y;
-      color.B = color.Y;
-      p->paint_hline (p, i, j, 1);
-    }
+static const struct SrcFuncs src_blink = {
+  GST_GL_TEST_SRC_BLINK,
+  _src_blink_new,
+  _src_uni_color_init,
+  _src_blink_fill_bound_fbo,
+  _src_uni_color_free,
+};
+
+/* *INDENT-OFF* */
+static const gchar *checkers_vertex_src = "attribute vec4 position;\n"
+    "varying vec2 uv;\n"
+    "void main()\n"
+    "{\n"
+    "  gl_Position = position;\n"
+    /* RPi gives incorrect results for positive uv (plus it makes us start on
+     * the right pixel color i.e. red) */
+    "  uv = position.xy - 1.0;\n"
+    "}";
+
+static const gchar *checkers_fragment_src =
+    "#ifdef GL_ES\n"
+    "precision mediump float;\n"
+    "#endif\n"
+    "uniform float checker_width;\n"
+    "uniform float width;\n"
+    "uniform float height;\n"
+    "varying vec2 uv;\n"
+    "void main()\n"
+    "{\n"
+    "  vec2 xy_mod = floor (0.5 * uv * vec2(width, height) / (checker_width));\n"
+    "  float result = mod (xy_mod.x + xy_mod.y, 2.0);\n"
+    "  gl_FragColor.r = step (result, 0.5);\n"
+    "  gl_FragColor.g = 1.0 - gl_FragColor.r;\n"
+    "  gl_FragColor.ba = vec2(0.0, 1.0);\n"
+    "}";
+/* *INDENT-ON* */
+
+struct SrcCheckers
+{
+  struct SrcShader base;
+
+  guint checker_width;
+};
+
+static gboolean
+_src_checkers_init (gpointer impl, GstGLContext * context,
+    GstVideoInfo * v_info)
+{
+  struct SrcCheckers *src = impl;
+  GError *error = NULL;
+
+  src->base.base.context = context;
+
+  if (src->base.shader)
+    gst_object_unref (src->base.shader);
+  src->base.shader = gst_gl_shader_new_link_with_stages (context, &error,
+      gst_glsl_stage_new_with_string (context, GL_VERTEX_SHADER,
+          GST_GLSL_VERSION_NONE,
+          GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+          checkers_vertex_src),
+      gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER,
+          GST_GLSL_VERSION_NONE,
+          GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+          checkers_fragment_src), NULL);
+  if (!src->base.shader) {
+    GST_ERROR_OBJECT (src->base.base.src, "%s", error->message);
+    return FALSE;
   }
-#endif
+
+  src->base.n_attributes = 1;
+
+  src->base.attributes[0].name = "position";
+  src->base.attributes[0].location = -1;
+  src->base.attributes[0].n_elements = 4;
+  src->base.attributes[0].element_type = GL_FLOAT;
+  src->base.attributes[0].offset = 0;
+  src->base.attributes[0].stride = 4 * sizeof (gfloat);
+
+  src->base.vertices = positions;
+  src->base.vertices_size = sizeof (positions);
+  src->base.indices = indices_quad;
+  src->base.n_indices = 6;
+
+  gst_gl_shader_use (src->base.shader);
+  gst_gl_shader_set_uniform_1f (src->base.shader, "checker_width",
+      src->checker_width);
+  gst_gl_shader_set_uniform_1f (src->base.shader, "width",
+      (gfloat) GST_VIDEO_INFO_WIDTH (v_info));
+  gst_gl_shader_set_uniform_1f (src->base.shader, "height",
+      (gfloat) GST_VIDEO_INFO_HEIGHT (v_info));
+  gst_gl_context_clear_shader (src->base.base.context);
+
+  return _src_shader_init (impl, context, v_info);
+}
+
+static void
+_src_checkers_free (gpointer impl)
+{
+  struct SrcCheckers *src = impl;
+
+  if (!src)
+    return;
+
+  _src_shader_deinit (impl);
+
+  g_free (impl);
+}
+
+static gpointer
+_src_checkers_new (GstGLTestSrc * test)
+{
+  struct SrcCheckers *src = g_new0 (struct SrcCheckers, 1);
+
+  src->base.base.src = test;
+
+  return src;
+}
+
+#define SRC_CHECKERS(spacing) \
+static gpointer \
+G_PASTE(G_PASTE(_src_checkers,spacing),_new) (GstGLTestSrc * test) \
+{ \
+  struct SrcCheckers *src = _src_checkers_new (test); \
+  src->checker_width = spacing; \
+  return src; \
+} \
+static const struct SrcFuncs G_PASTE(src_checkers,spacing) = { \
+  G_PASTE(GST_GL_TEST_SRC_CHECKERS,spacing), \
+  G_PASTE(G_PASTE(_src_checkers,spacing),_new), \
+  _src_checkers_init, \
+  _src_shader_fill_bound_fbo, \
+  _src_checkers_free, \
+}
+
+SRC_CHECKERS (1);
+SRC_CHECKERS (2);
+SRC_CHECKERS (4);
+SRC_CHECKERS (8);
+
+static gboolean
+_src_snow_init (gpointer impl, GstGLContext * context, GstVideoInfo * v_info)
+{
+  struct SrcShader *src = impl;
+  GError *error = NULL;
+
+  src->base.context = context;
+
+  if (src->shader)
+    gst_object_unref (src->shader);
+  src->shader = gst_gl_shader_new_link_with_stages (context, &error,
+      gst_glsl_stage_new_with_string (context, GL_VERTEX_SHADER,
+          GST_GLSL_VERSION_NONE,
+          GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+          snow_vertex_src),
+      gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER,
+          GST_GLSL_VERSION_NONE,
+          GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+          snow_fragment_src), NULL);
+  if (!src->shader) {
+    GST_ERROR_OBJECT (src->base.src, "%s", error->message);
+    return FALSE;
+  }
+
+  src->n_attributes = 1;
+
+  src->attributes[0].name = "position";
+  src->attributes[0].location = -1;
+  src->attributes[0].n_elements = 4;
+  src->attributes[0].element_type = GL_FLOAT;
+  src->attributes[0].offset = 0;
+  src->attributes[0].stride = 4 * sizeof (gfloat);
+
+  src->vertices = positions;
+  src->vertices_size = sizeof (positions);
+  src->indices = indices_quad;
+  src->n_indices = 6;
+
+  return _src_shader_init (impl, context, v_info);
+}
+
+static gboolean
+_src_snow_fill_bound_fbo (gpointer impl)
+{
+  struct SrcShader *src = impl;
+
+  g_return_val_if_fail (src->base.context, FALSE);
+  g_return_val_if_fail (src->shader, FALSE);
+
+  gst_gl_shader_use (src->shader);
+  gst_gl_shader_set_uniform_1f (src->shader, "time",
+      (gfloat) src->base.src->running_time / GST_SECOND);
+
+  return _src_shader_fill_bound_fbo (impl);
+}
+
+static void
+_src_snow_free (gpointer impl)
+{
+  struct SrcShader *src = impl;
+
+  if (!src)
+    return;
+
+  _src_shader_deinit (impl);
+
+  g_free (impl);
+}
+
+static gpointer
+_src_snow_new (GstGLTestSrc * test)
+{
+  struct SrcShader *src = g_new0 (struct SrcShader, 1);
+
+  src->base.src = test;
+
+  return src;
+}
+
+static const struct SrcFuncs src_snow = {
+  GST_GL_TEST_SRC_SNOW,
+  _src_snow_new,
+  _src_snow_init,
+  _src_snow_fill_bound_fbo,
+  _src_snow_free,
+};
+
+/* *INDENT-OFF* */
+static const gchar *mandelbrot_vertex_src = "attribute vec4 position;\n"
+    "uniform float aspect_ratio;\n"
+    "varying vec2 fractal_position;\n"
+    "void main()\n"
+    "{\n"
+    "  gl_Position = position;\n"
+    "  fractal_position = vec2(position.y * 0.5 - 0.3, aspect_ratio * position.x * 0.5);\n"
+    "  fractal_position *= 2.5;\n"
+    "}";
+
+static const gchar *mandelbrot_fragment_src = 
+    "#ifdef GL_ES\n"
+    "precision mediump float;\n"
+    "#endif\n"
+    "uniform float time;\n"
+    "varying vec2 fractal_position;\n"
+    "const vec4 K = vec4(1.0, 0.66, 0.33, 3.0);\n"
+    "vec4 hsv_to_rgb(float hue, float saturation, float value) {\n"
+    "  vec4 p = abs(fract(vec4(hue) + K) * 6.0 - K.wwww);\n"
+    "  return value * mix(K.xxxx, clamp(p - K.xxxx, 0.0, 1.0), saturation);\n"
+    "}\n"
+    "vec4 i_to_rgb(int i) {\n"
+    "  float hue = float(i) / 100.0 + sin(time);\n"
+    "  return hsv_to_rgb(hue, 0.5, 0.8);\n"
+    "}\n"
+    "vec2 pow_2_complex(vec2 c) {\n"
+    "  return vec2(c.x*c.x - c.y*c.y, 2.0 * c.x * c.y);\n"
+    "}\n"
+    "vec2 mandelbrot(vec2 c, vec2 c0) {\n"
+    "  return pow_2_complex(c) + c0;\n"
+    "}\n"
+    "vec4 iterate_pixel(vec2 position) {\n"
+    "  vec2 c = vec2(0);\n"
+    "  for (int i=0; i < 20; i++) {\n"
+    "    if (c.x*c.x + c.y*c.y > 2.0*2.0)\n"
+    "      return i_to_rgb(i);\n"
+    "    c = mandelbrot(c, position);\n"
+    "  }\n"
+    "  return vec4(0, 0, 0, 1);\n"
+    "}\n"
+    "void main() {\n"
+    "  gl_FragColor = iterate_pixel(fractal_position);\n"
+    "}";
+/* *INDENT-ON* */
+
+static gboolean
+_src_mandelbrot_init (gpointer impl, GstGLContext * context,
+    GstVideoInfo * v_info)
+{
+  struct SrcShader *src = impl;
+  GError *error = NULL;
+
+  src->base.context = context;
+
+  if (src->shader)
+    gst_object_unref (src->shader);
+  src->shader = gst_gl_shader_new_link_with_stages (context, &error,
+      gst_glsl_stage_new_with_string (context, GL_VERTEX_SHADER,
+          GST_GLSL_VERSION_NONE,
+          GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+          mandelbrot_vertex_src),
+      gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER,
+          GST_GLSL_VERSION_NONE,
+          GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+          mandelbrot_fragment_src), NULL);
+  if (!src->shader) {
+    GST_ERROR_OBJECT (src->base.src, "%s", error->message);
+    return FALSE;
+  }
+
+  src->n_attributes = 1;
+
+  src->attributes[0].name = "position";
+  src->attributes[0].location = -1;
+  src->attributes[0].n_elements = 4;
+  src->attributes[0].element_type = GL_FLOAT;
+  src->attributes[0].offset = 0;
+  src->attributes[0].stride = 4 * sizeof (gfloat);
+
+  src->vertices = positions;
+  src->vertices_size = sizeof (positions);
+  src->indices = indices_quad;
+  src->n_indices = 6;
+
+  gst_gl_shader_use (src->shader);
+  gst_gl_shader_set_uniform_1f (src->shader, "aspect_ratio",
+      (gfloat) GST_VIDEO_INFO_WIDTH (v_info) /
+      (gfloat) GST_VIDEO_INFO_HEIGHT (v_info));
+  gst_gl_context_clear_shader (src->base.context);
+
+  return _src_shader_init (impl, context, v_info);
+}
+
+static gboolean
+_src_mandelbrot_fill_bound_fbo (gpointer impl)
+{
+  struct SrcShader *src = impl;
+
+  g_return_val_if_fail (src->base.context, FALSE);
+  g_return_val_if_fail (src->shader, FALSE);
+
+  gst_gl_shader_use (src->shader);
+  gst_gl_shader_set_uniform_1f (src->shader, "time",
+      (gfloat) src->base.src->running_time / GST_SECOND);
+
+  return _src_shader_fill_bound_fbo (impl);
+}
+
+static void
+_src_mandelbrot_free (gpointer impl)
+{
+  struct SrcShader *src = impl;
+
+  if (!src)
+    return;
+
+  _src_shader_deinit (impl);
+
+  g_free (impl);
+}
+
+static gpointer
+_src_mandelbrot_new (GstGLTestSrc * test)
+{
+  struct SrcShader *src = g_new0 (struct SrcShader, 1);
+
+  src->base.src = test;
+
+  return src;
+}
+
+static const struct SrcFuncs src_mandelbrot = {
+  GST_GL_TEST_SRC_MANDELBROT,
+  _src_mandelbrot_new,
+  _src_mandelbrot_init,
+  _src_mandelbrot_fill_bound_fbo,
+  _src_mandelbrot_free,
+};
+
+/* *INDENT-OFF* */
+static const gchar *circular_vertex_src =
+    "attribute vec4 position;\n"
+    "varying vec2 uv;\n"
+    "void main()\n"
+    "{\n"
+    "  gl_Position = position;\n"
+    "  uv = position.xy;\n"
+    "}";
+
+static const gchar *circular_fragment_src =
+    "#ifdef GL_ES\n"
+    "precision mediump float;\n"
+    "#endif\n"
+    "uniform float aspect_ratio;\n"
+    "varying vec2 uv;\n"
+    "#define PI 3.14159265\n"
+    "void main() {\n"
+    "  float dist = 0.5 * sqrt(uv.x * uv.x + uv.y / aspect_ratio * uv.y / aspect_ratio);\n"
+    "  float seg = floor(dist * 16.0);\n"
+    "  if (seg <= 0.0 || seg >= 8.0) {\n"
+    "    gl_FragColor = vec4(vec3(0.0), 1.0);\n"
+    "  } else {\n"
+    "    float d = floor (256.0 * dist * 200.0 * pow (2.0, - (seg - 1.0) / 4.0) + 0.5) / 128.0;\n"
+    "    gl_FragColor = vec4 (vec3(sin (d * PI) * 0.5 + 0.5), 1.0);\n"
+    "  }\n"
+    "}";
+/* *INDENT-ON* */
+
+static gboolean
+_src_circular_init (gpointer impl, GstGLContext * context,
+    GstVideoInfo * v_info)
+{
+  struct SrcShader *src = impl;
+  GError *error = NULL;
+
+  src->base.context = context;
+
+  if (src->shader)
+    gst_object_unref (src->shader);
+  src->shader = gst_gl_shader_new_link_with_stages (context, &error,
+      gst_glsl_stage_new_with_string (context, GL_VERTEX_SHADER,
+          GST_GLSL_VERSION_NONE,
+          GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+          circular_vertex_src),
+      gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER,
+          GST_GLSL_VERSION_NONE,
+          GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+          circular_fragment_src), NULL);
+  if (!src->shader) {
+    GST_ERROR_OBJECT (src->base.src, "%s", error->message);
+    return FALSE;
+  }
+
+  src->n_attributes = 1;
+
+  src->attributes[0].name = "position";
+  src->attributes[0].location = -1;
+  src->attributes[0].n_elements = 4;
+  src->attributes[0].element_type = GL_FLOAT;
+  src->attributes[0].offset = 0;
+  src->attributes[0].stride = 4 * sizeof (gfloat);
+
+  src->vertices = positions;
+  src->vertices_size = sizeof (positions);
+  src->indices = indices_quad;
+  src->n_indices = 6;
+
+  gst_gl_shader_use (src->shader);
+  gst_gl_shader_set_uniform_1f (src->shader, "aspect_ratio",
+      (gfloat) GST_VIDEO_INFO_WIDTH (v_info) /
+      (gfloat) GST_VIDEO_INFO_HEIGHT (v_info));
+  gst_gl_context_clear_shader (src->base.context);
+
+  return _src_shader_init (impl, context, v_info);
+}
+
+static void
+_src_circular_free (gpointer impl)
+{
+  struct SrcShader *src = impl;
+
+  if (!src)
+    return;
+
+  _src_shader_deinit (impl);
+
+  g_free (impl);
+}
+
+static gpointer
+_src_circular_new (GstGLTestSrc * test)
+{
+  struct SrcShader *src = g_new0 (struct SrcShader, 1);
+
+  src->base.src = test;
+
+  return src;
+}
+
+static const struct SrcFuncs src_circular = {
+  GST_GL_TEST_SRC_CIRCULAR,
+  _src_circular_new,
+  _src_circular_init,
+  _src_mandelbrot_fill_bound_fbo,
+  _src_circular_free,
+};
+
+static const struct SrcFuncs *src_impls[] = {
+  &src_smpte,
+  &src_snow,
+  &src_black,
+  &src_white,
+  &src_red,
+  &src_green,
+  &src_blue,
+  &src_checkers1,
+  &src_checkers2,
+  &src_checkers4,
+  &src_checkers8,
+  &src_circular,
+  &src_blink,
+  &src_mandelbrot,
+};
+
+const struct SrcFuncs *
+gst_gl_test_src_get_src_funcs_for_pattern (GstGLTestSrcPattern pattern)
+{
+  gint i;
+
+  for (i = 0; i < G_N_ELEMENTS (src_impls); i++) {
+    if (src_impls[i]->pattern == pattern)
+      return src_impls[i];
+  }
+
+  return NULL;
 }
diff --git a/ext/gl/gltestsrc.h b/ext/gl/gltestsrc.h
index 102109e..dbcab0c 100644
--- a/ext/gl/gltestsrc.h
+++ b/ext/gl/gltestsrc.h
@@ -22,37 +22,60 @@
 
 #include <glib.h>
 
+typedef struct _GstGLTestSrc GstGLTestSrc;
+
+/**
+ * GstGLTestSrcPattern:
+ * @GST_GL_TEST_SRC_SMPTE: A standard SMPTE test pattern
+ * @GST_GL_TEST_SRC_SNOW: Random noise
+ * @GST_GL_TEST_SRC_BLACK: A black image
+ * @GST_GL_TEST_SRC_WHITE: A white image
+ * @GST_GL_TEST_SRC_RED: A red image
+ * @GST_GL_TEST_SRC_GREEN: A green image
+ * @GST_GL_TEST_SRC_BLUE: A blue image
+ * @GST_GL_TEST_SRC_CHECKERS1: Checkers pattern (1px)
+ * @GST_GL_TEST_SRC_CHECKERS2: Checkers pattern (2px)
+ * @GST_GL_TEST_SRC_CHECKERS4: Checkers pattern (4px)
+ * @GST_GL_TEST_SRC_CHECKERS8: Checkers pattern (8px)
+ * @GST_GL_TEST_SRC_CIRCULAR: Circular pattern
+ * @GST_GL_TEST_SRC_BLINK: Alternate between black and white
+ *
+ * The test pattern to produce.
+ */
+typedef enum {
+    GST_GL_TEST_SRC_SMPTE,
+    GST_GL_TEST_SRC_SNOW,
+    GST_GL_TEST_SRC_BLACK,
+    GST_GL_TEST_SRC_WHITE,
+    GST_GL_TEST_SRC_RED,
+    GST_GL_TEST_SRC_GREEN,
+    GST_GL_TEST_SRC_BLUE,
+    GST_GL_TEST_SRC_CHECKERS1,
+    GST_GL_TEST_SRC_CHECKERS2,
+    GST_GL_TEST_SRC_CHECKERS4,
+    GST_GL_TEST_SRC_CHECKERS8,
+    GST_GL_TEST_SRC_CIRCULAR,
+    GST_GL_TEST_SRC_BLINK,
+    GST_GL_TEST_SRC_MANDELBROT
+} GstGLTestSrcPattern;
+
 #include "gstgltestsrc.h"
 
-struct vts_color_struct {
-        guint8 Y, U, V;
-        guint8 R, G, B;
-	guint8 A;
+struct BaseSrcImpl {
+  GstGLTestSrc *src;
+  GstGLContext *context;
+  GstVideoInfo v_info;
 };
 
-void    gst_gl_test_src_smpte        (GstGLTestSrc * v,
-                                         GstBuffer *buffer, int w, int h);
-void    gst_gl_test_src_shader       (GstGLTestSrc * v,
-                                         GstBuffer *buffer, int w, int h);
-void    gst_gl_test_src_black        (GstGLTestSrc * v,
-                                         GstBuffer *buffer, int w, int h);
-void    gst_gl_test_src_white        (GstGLTestSrc * v,
-                                         GstBuffer *buffer, int w, int h);
-void    gst_gl_test_src_red          (GstGLTestSrc * v,
-                                         GstBuffer *buffer, int w, int h);
-void    gst_gl_test_src_green        (GstGLTestSrc * v,
-                                         GstBuffer *buffer, int w, int h);
-void    gst_gl_test_src_blue         (GstGLTestSrc * v,
-                                         GstBuffer *buffer, int w, int h);
-void    gst_gl_test_src_checkers1    (GstGLTestSrc * v,
-                                         GstBuffer *buffer, int w, int h);
-void    gst_gl_test_src_checkers2    (GstGLTestSrc * v,
-                                         GstBuffer *buffer, int w, int h);
-void    gst_gl_test_src_checkers4    (GstGLTestSrc * v,
-                                         GstBuffer *buffer, int w, int h);
-void    gst_gl_test_src_checkers8    (GstGLTestSrc * v,
-                                         GstBuffer *buffer, int w, int h);
-void    gst_gl_test_src_circular     (GstGLTestSrc * v,
-                                         GstBuffer *buffer, int w, int h);
+struct SrcFuncs
+{
+  GstGLTestSrcPattern pattern;
+  gpointer (*new) (GstGLTestSrc * src);
+  gboolean (*init) (gpointer impl, GstGLContext * context, GstVideoInfo * v_info);
+  gboolean (*fill_bound_fbo) (gpointer impl);
+  void (*free) (gpointer impl);
+};
+
+const struct SrcFuncs * gst_gl_test_src_get_src_funcs_for_pattern (GstGLTestSrcPattern pattern);
 
 #endif
diff --git a/ext/gl/gstglbasemixer.c b/ext/gl/gstglbasemixer.c
index d207883..410a420 100644
--- a/ext/gl/gstglbasemixer.c
+++ b/ext/gl/gstglbasemixer.c
@@ -123,6 +123,131 @@
 }
 
 static gboolean
+gst_gl_base_mixer_sink_event (GstAggregator * agg, GstAggregatorPad * bpad,
+    GstEvent * event)
+{
+  GstGLBaseMixerPad *pad = GST_GL_BASE_MIXER_PAD (bpad);
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_CAPS:
+      if (!GST_AGGREGATOR_CLASS (parent_class)->sink_event (agg, bpad, event))
+        return FALSE;
+
+      pad->negotiated = TRUE;
+      return TRUE;
+    default:
+      break;
+  }
+
+  return GST_AGGREGATOR_CLASS (parent_class)->sink_event (agg, bpad, event);
+}
+
+static gboolean
+_find_local_gl_context (GstGLBaseMixer * mix)
+{
+  GstQuery *query;
+  GstContext *context;
+  const GstStructure *s;
+
+  if (mix->context)
+    return TRUE;
+
+  query = gst_query_new_context ("gst.gl.local_context");
+  if (!mix->context && gst_gl_run_query (GST_ELEMENT (mix), query, GST_PAD_SRC)) {
+    gst_query_parse_context (query, &context);
+    if (context) {
+      s = gst_context_get_structure (context);
+      gst_structure_get (s, "context", GST_GL_TYPE_CONTEXT, &mix->context,
+          NULL);
+    }
+  }
+  if (!mix->context
+      && gst_gl_run_query (GST_ELEMENT (mix), query, GST_PAD_SINK)) {
+    gst_query_parse_context (query, &context);
+    if (context) {
+      s = gst_context_get_structure (context);
+      gst_structure_get (s, "context", GST_GL_TYPE_CONTEXT, &mix->context,
+          NULL);
+    }
+  }
+
+  GST_DEBUG_OBJECT (mix, "found local context %p", mix->context);
+
+  gst_query_unref (query);
+
+  if (mix->context)
+    return TRUE;
+
+  return FALSE;
+}
+
+static gboolean
+_get_gl_context (GstGLBaseMixer * mix)
+{
+  GstGLBaseMixerClass *mix_class = GST_GL_BASE_MIXER_GET_CLASS (mix);
+  GError *error = NULL;
+
+  if (!gst_gl_ensure_element_data (mix, &mix->display,
+          &mix->priv->other_context))
+    return FALSE;
+
+  gst_gl_display_filter_gl_api (mix->display, mix_class->supported_gl_api);
+
+  _find_local_gl_context (mix);
+
+  GST_OBJECT_LOCK (mix->display);
+  if (!mix->context) {
+    do {
+      if (mix->context) {
+        gst_object_unref (mix->context);
+        mix->context = NULL;
+      }
+      /* just get a GL context.  we don't care */
+      mix->context =
+          gst_gl_display_get_gl_context_for_thread (mix->display, NULL);
+      if (!mix->context) {
+        if (!gst_gl_display_create_context (mix->display,
+                mix->priv->other_context, &mix->context, &error)) {
+          GST_OBJECT_UNLOCK (mix->display);
+          goto context_error;
+        }
+      }
+    } while (!gst_gl_display_add_context (mix->display, mix->context));
+  }
+  GST_OBJECT_UNLOCK (mix->display);
+
+  {
+    GstGLAPI current_gl_api = gst_gl_context_get_gl_api (mix->context);
+    if ((current_gl_api & mix_class->supported_gl_api) == 0)
+      goto unsupported_gl_api;
+  }
+
+  return TRUE;
+
+unsupported_gl_api:
+  {
+    GstGLAPI gl_api = gst_gl_context_get_gl_api (mix->context);
+    gchar *gl_api_str = gst_gl_api_to_string (gl_api);
+    gchar *supported_gl_api_str =
+        gst_gl_api_to_string (mix_class->supported_gl_api);
+    GST_ELEMENT_ERROR (mix, RESOURCE, BUSY,
+        ("GL API's not compatible context: %s supported: %s", gl_api_str,
+            supported_gl_api_str), (NULL));
+
+    g_free (supported_gl_api_str);
+    g_free (gl_api_str);
+    return FALSE;
+  }
+context_error:
+  {
+    GST_ELEMENT_ERROR (mix, RESOURCE, NOT_FOUND, ("%s", error->message),
+        (NULL));
+    g_clear_error (&error);
+    return FALSE;
+  }
+}
+
+static gboolean
 gst_gl_base_mixer_sink_query (GstAggregator * agg, GstAggregatorPad * bpad,
     GstQuery * query)
 {
@@ -139,16 +264,20 @@
       GstQuery *decide_query = NULL;
 
       GST_OBJECT_LOCK (mix);
-      if (G_UNLIKELY (!mix->priv->negotiated)) {
+      if (G_UNLIKELY (!pad->negotiated)) {
         GST_DEBUG_OBJECT (mix,
             "not negotiated yet, can't answer ALLOCATION query");
         GST_OBJECT_UNLOCK (mix);
         return FALSE;
       }
+
       if ((decide_query = mix->priv->query))
         gst_query_ref (decide_query);
       GST_OBJECT_UNLOCK (mix);
 
+      if (!_get_gl_context (mix))
+        return FALSE;
+
       GST_DEBUG_OBJECT (mix,
           "calling propose allocation with query %" GST_PTR_FORMAT,
           decide_query);
@@ -273,6 +402,7 @@
 
   agg_class->sinkpads_type = GST_TYPE_GL_BASE_MIXER_PAD;
   agg_class->sink_query = gst_gl_base_mixer_sink_query;
+  agg_class->sink_event = gst_gl_base_mixer_sink_event;
   agg_class->src_query = gst_gl_base_mixer_src_query;
   agg_class->src_activate = gst_gl_base_mixer_src_activate_mode;
   agg_class->stop = gst_gl_base_mixer_stop;
@@ -294,11 +424,24 @@
   klass->supported_gl_api = GST_GL_API_ANY;
 }
 
+static gboolean
+_reset_pad (GstAggregator * self, GstAggregatorPad * base_pad,
+    gpointer user_data)
+{
+  GstGLBaseMixerPad *mix_pad = GST_GL_BASE_MIXER_PAD (base_pad);
+
+  mix_pad->negotiated = FALSE;
+
+  return TRUE;
+}
+
 static void
 gst_gl_base_mixer_reset (GstGLBaseMixer * mix)
 {
   /* clean up collect data */
-  mix->priv->negotiated = FALSE;
+
+  gst_aggregator_iterate_sinkpads (GST_AGGREGATOR (mix),
+      (GstAggregatorPadForeachFunc) _reset_pad, NULL);
 }
 
 static void
@@ -415,112 +558,18 @@
 }
 
 static gboolean
-_find_local_gl_context (GstGLBaseMixer * mix)
-{
-  GstQuery *query;
-  GstContext *context;
-  const GstStructure *s;
-
-  if (mix->context)
-    return TRUE;
-
-  query = gst_query_new_context ("gst.gl.local_context");
-  if (!mix->context && gst_gl_run_query (GST_ELEMENT (mix), query, GST_PAD_SRC)) {
-    gst_query_parse_context (query, &context);
-    if (context) {
-      s = gst_context_get_structure (context);
-      gst_structure_get (s, "context", GST_GL_TYPE_CONTEXT, &mix->context,
-          NULL);
-    }
-  }
-  if (!mix->context
-      && gst_gl_run_query (GST_ELEMENT (mix), query, GST_PAD_SINK)) {
-    gst_query_parse_context (query, &context);
-    if (context) {
-      s = gst_context_get_structure (context);
-      gst_structure_get (s, "context", GST_GL_TYPE_CONTEXT, &mix->context,
-          NULL);
-    }
-  }
-
-  GST_DEBUG_OBJECT (mix, "found local context %p", mix->context);
-
-  gst_query_unref (query);
-
-  if (mix->context)
-    return TRUE;
-
-  return FALSE;
-}
-
-static gboolean
 gst_gl_base_mixer_decide_allocation (GstGLBaseMixer * mix, GstQuery * query)
 {
   GstGLBaseMixerClass *mix_class = GST_GL_BASE_MIXER_GET_CLASS (mix);
-  GError *error = NULL;
-  gboolean ret = TRUE;
 
-  if (!gst_gl_ensure_element_data (mix, &mix->display,
-          &mix->priv->other_context))
+  if (!_get_gl_context (mix))
     return FALSE;
 
-  gst_gl_display_filter_gl_api (mix->display, mix_class->supported_gl_api);
-
-  _find_local_gl_context (mix);
-
-  if (!mix->context) {
-    GST_OBJECT_LOCK (mix->display);
-    do {
-      if (mix->context) {
-        gst_object_unref (mix->context);
-        mix->context = NULL;
-      }
-      /* just get a GL context.  we don't care */
-      mix->context =
-          gst_gl_display_get_gl_context_for_thread (mix->display, NULL);
-      if (!mix->context) {
-        if (!gst_gl_display_create_context (mix->display,
-                mix->priv->other_context, &mix->context, &error)) {
-          GST_OBJECT_UNLOCK (mix->display);
-          goto context_error;
-        }
-      }
-    } while (!gst_gl_display_add_context (mix->display, mix->context));
-    GST_OBJECT_UNLOCK (mix->display);
-  }
-
-  {
-    GstGLAPI current_gl_api = gst_gl_context_get_gl_api (mix->context);
-    if ((current_gl_api & mix_class->supported_gl_api) == 0)
-      goto unsupported_gl_api;
-  }
-
   if (mix_class->decide_allocation)
-    ret = mix_class->decide_allocation (mix, query);
+    if (!mix_class->decide_allocation (mix, query))
+      return FALSE;
 
-  return ret;
-
-unsupported_gl_api:
-  {
-    GstGLAPI gl_api = gst_gl_context_get_gl_api (mix->context);
-    gchar *gl_api_str = gst_gl_api_to_string (gl_api);
-    gchar *supported_gl_api_str =
-        gst_gl_api_to_string (mix_class->supported_gl_api);
-    GST_ELEMENT_ERROR (mix, RESOURCE, BUSY,
-        ("GL API's not compatible context: %s supported: %s", gl_api_str,
-            supported_gl_api_str), (NULL));
-
-    g_free (supported_gl_api_str);
-    g_free (gl_api_str);
-    return FALSE;
-  }
-context_error:
-  {
-    GST_ELEMENT_ERROR (mix, RESOURCE, NOT_FOUND, ("%s", error->message),
-        (NULL));
-    g_clear_error (&error);
-    return FALSE;
-  }
+  return TRUE;
 }
 
 /* takes ownership of the pool, allocator and query */
@@ -665,7 +714,7 @@
 static gboolean
 gst_gl_base_mixer_start (GstAggregator * agg)
 {
-  return TRUE;
+  return GST_AGGREGATOR_CLASS (parent_class)->start (agg);;
 }
 
 static gboolean
diff --git a/ext/gl/gstglbasemixer.h b/ext/gl/gstglbasemixer.h
index 6282ccb..cba8184 100644
--- a/ext/gl/gstglbasemixer.h
+++ b/ext/gl/gstglbasemixer.h
@@ -47,6 +47,8 @@
 struct _GstGLBaseMixerPad
 {
   GstVideoAggregatorPad parent;                /* subclass the pad */
+
+  gboolean negotiated;
 };
 
 struct _GstGLBaseMixerPadClass
diff --git a/ext/gl/gstglcolorbalance.c b/ext/gl/gstglcolorbalance.c
index 27dcb00..33b5a50 100644
--- a/ext/gl/gstglcolorbalance.c
+++ b/ext/gl/gstglcolorbalance.c
@@ -150,14 +150,17 @@
 static void
 gst_gl_color_balance_update_properties (GstGLColorBalance * glcolorbalance)
 {
-  gboolean passthrough;
+  gboolean current_passthrough, passthrough;
   GstBaseTransform *base = GST_BASE_TRANSFORM (glcolorbalance);
 
   GST_OBJECT_LOCK (glcolorbalance);
   passthrough = gst_gl_color_balance_is_passthrough (glcolorbalance);
   GST_OBJECT_UNLOCK (glcolorbalance);
+  current_passthrough = gst_base_transform_is_passthrough (base);
 
   gst_base_transform_set_passthrough (base, passthrough);
+  if (current_passthrough != passthrough)
+    gst_base_transform_reconfigure_src (base);
 }
 
 static gboolean
@@ -231,13 +234,11 @@
     gst_object_sync_values (GST_OBJECT (balance), stream_time);
 }
 
-static void
-gst_gl_color_balance_callback (gint width, gint height, guint tex_id,
-    gpointer data)
+static gboolean
+gst_gl_color_balance_filter_texture (GstGLFilter * filter, GstGLMemory * in_tex,
+    GstGLMemory * out_tex)
 {
-  GstGLColorBalance *balance = GST_GL_COLOR_BALANCE (data);
-  GstGLFilter *filter = GST_GL_FILTER (data);
-  const GstGLFuncs *gl = GST_GL_BASE_FILTER (data)->context->gl_vtable;
+  GstGLColorBalance *balance = GST_GL_COLOR_BALANCE (filter);
 
   if (!balance->shader)
     _create_shader (balance);
@@ -252,17 +253,8 @@
   gst_gl_shader_set_uniform_1f (balance->shader, "hue", balance->hue);
   GST_OBJECT_UNLOCK (balance);
 
-  gl->BindTexture (GL_TEXTURE_2D, tex_id);
-
-  gst_gl_filter_draw_texture (filter, tex_id, width, height);
-}
-
-static gboolean
-gst_gl_color_balance_filter_texture (GstGLFilter * filter, guint in_tex,
-    guint out_tex)
-{
-  gst_gl_filter_render_to_target (filter, TRUE, in_tex, out_tex,
-      (GLCB) gst_gl_color_balance_callback, filter);
+  gst_gl_filter_render_to_target_with_shader (filter, in_tex, out_tex,
+      balance->shader);
 
   return TRUE;
 }
diff --git a/ext/gl/gstglcolorconvertelement.c b/ext/gl/gstglcolorconvertelement.c
index bd4fbeb..642b494 100644
--- a/ext/gl/gstglcolorconvertelement.c
+++ b/ext/gl/gstglcolorconvertelement.c
@@ -103,12 +103,10 @@
 
   bt_class->passthrough_on_same_caps = TRUE;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get
-      (&gst_gl_color_convert_element_src_pad_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get
-      (&gst_gl_color_convert_element_sink_pad_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_gl_color_convert_element_src_pad_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_gl_color_convert_element_sink_pad_template);
 
   gst_element_class_set_metadata (element_class,
       "OpenGL color converter", "Filter/Converter/Video",
diff --git a/ext/gl/gstglcolorscale.c b/ext/gl/gstglcolorscale.c
index c7df0a8..2ca5480 100644
--- a/ext/gl/gstglcolorscale.c
+++ b/ext/gl/gstglcolorscale.c
@@ -74,7 +74,7 @@
 static void gst_gl_colorscale_gl_stop (GstGLBaseFilter * base_filter);
 
 static gboolean gst_gl_colorscale_filter_texture (GstGLFilter * filter,
-    guint in_tex, guint out_tex);
+    GstGLMemory * in_tex, GstGLMemory * out_tex);
 
 static void
 gst_gl_colorscale_class_init (GstGLColorscaleClass * klass)
@@ -175,13 +175,13 @@
 }
 
 static gboolean
-gst_gl_colorscale_filter_texture (GstGLFilter * filter, guint in_tex,
-    guint out_tex)
+gst_gl_colorscale_filter_texture (GstGLFilter * filter, GstGLMemory * in_tex,
+    GstGLMemory * out_tex)
 {
   GstGLColorscale *colorscale = GST_GL_COLORSCALE (filter);
 
   if (gst_gl_context_get_gl_api (GST_GL_BASE_FILTER (filter)->context))
-    gst_gl_filter_render_to_target_with_shader (filter, TRUE, in_tex, out_tex,
+    gst_gl_filter_render_to_target_with_shader (filter, in_tex, out_tex,
         colorscale->shader);
 
   return TRUE;
diff --git a/ext/gl/gstgldeinterlace.c b/ext/gl/gstgldeinterlace.c
index bd0eff0..fe207cc 100644
--- a/ext/gl/gstgldeinterlace.c
+++ b/ext/gl/gstgldeinterlace.c
@@ -43,7 +43,8 @@
 
 enum
 {
-  PROP_0
+  PROP_0,
+  PROP_METHOD
 };
 
 #define DEBUG_INIT \
@@ -57,17 +58,23 @@
 static void gst_gl_deinterlace_get_property (GObject * object,
     guint prop_id, GValue * value, GParamSpec * pspec);
 
+static gboolean gst_gl_deinterlace_start (GstBaseTransform * trans);
 static gboolean gst_gl_deinterlace_reset (GstBaseTransform * trans);
-static gboolean gst_gl_deinterlace_init_shader (GstGLFilter * filter);
+static gboolean gst_gl_deinterlace_init_fbo (GstGLFilter * filter);
 static gboolean gst_gl_deinterlace_filter (GstGLFilter * filter,
     GstBuffer * inbuf, GstBuffer * outbuf);
 static gboolean gst_gl_deinterlace_filter_texture (GstGLFilter * filter,
-    guint in_tex, guint out_tex);
-static void gst_gl_deinterlace_callback (gint width, gint height,
-    guint texture, gpointer stuff);
+    GstGLMemory * in_tex, GstGLMemory * out_tex);
+static gboolean gst_gl_deinterlace_vfir_callback (GstGLFilter * filter,
+    GstGLMemory * in_tex, gpointer stuff);
+static gboolean gst_gl_deinterlace_greedyh_callback (GstGLFilter * filter,
+    GstGLMemory * in_tex, gpointer stuff);
 
 /* *INDENT-OFF* */
 static const gchar *greedyh_fragment_source =
+  "#ifdef GL_ES\n"
+  "precision mediump float;\n"
+  "#endif\n"
   "uniform sampler2D tex;\n"
   "uniform sampler2D tex_prev;\n"
   "uniform float max_comb;\n"
@@ -75,35 +82,35 @@
   "uniform float motion_sense;\n"
   "uniform float width;\n"
   "uniform float height;\n"
+  "varying vec2 v_texcoord;\n"
 
   "void main () {\n"
-  "  vec2 texcoord = gl_TexCoord[0].xy;\n"
-  "  if (int(mod(texcoord.y * height, 2.0)) == 0) {\n"
-  "    gl_FragColor = vec4(texture2D(tex_prev, texcoord).rgb, 1.0);\n"
+  "  if (int(mod(v_texcoord.y * height, 2.0)) == 0) {\n"
+  "    gl_FragColor = vec4(texture2D(tex_prev, v_texcoord).rgb, 1.0);\n"
   "  } else {\n"
   "    vec2 texcoord_L1_a1, texcoord_L3_a1, texcoord_L1, texcoord_L3, texcoord_L1_1, texcoord_L3_1;\n"
   "    vec3 L1_a1, L3_a1, L1, L3, L1_1, L3_1;\n"
 
-  "    texcoord_L1 = vec2(texcoord.x, texcoord.y - 1.0 / height);\n"
-  "    texcoord_L3 = vec2(texcoord.x, texcoord.y + 1.0 / height);\n"
+  "    texcoord_L1 = vec2(v_texcoord.x, v_texcoord.y - 1.0 / height);\n"
+  "    texcoord_L3 = vec2(v_texcoord.x, v_texcoord.y + 1.0 / height);\n"
   "    L1 = texture2D(tex_prev, texcoord_L1).rgb;\n"
   "    L3 = texture2D(tex_prev, texcoord_L3).rgb;\n"
-  "    if (texcoord.x == 1.0 && texcoord.y == 1.0) {\n"
+  "    if (v_texcoord.x == 1.0 && v_texcoord.y == 1.0) {\n"
   "      L1_1 = L1;\n"
   "      L3_1 = L3;\n"
   "    } else {\n"
-  "      texcoord_L1_1 = vec2(texcoord.x + 1.0 / width, texcoord.y - 1.0 / height);\n"
-  "      texcoord_L3_1 = vec2(texcoord.x + 1.0 / width, texcoord.y + 1.0 / height);\n"
+  "      texcoord_L1_1 = vec2(v_texcoord.x + 1.0 / width, v_texcoord.y - 1.0 / height);\n"
+  "      texcoord_L3_1 = vec2(v_texcoord.x + 1.0 / width, v_texcoord.y + 1.0 / height);\n"
   "      L1_1 = texture2D(tex_prev, texcoord_L1_1).rgb;\n"
   "      L3_1 = texture2D(tex_prev, texcoord_L3_1).rgb;\n"
   "    }\n"
 
-  "    if (int(ceil(texcoord.x + texcoord.y)) == 0) {\n"
+  "    if (int(ceil(v_texcoord.x + v_texcoord.y)) == 0) {\n"
   "      L1_a1 = L1;\n"
   "      L3_a1 = L3;\n"
   "    } else {\n"
-  "      texcoord_L1_a1 = vec2(texcoord.x - 1.0 / width, texcoord.y - 1.0 / height);\n"
-  "      texcoord_L3_a1 = vec2(texcoord.x - 1.0 / width, texcoord.y + 1.0 / height);\n"
+  "      texcoord_L1_a1 = vec2(v_texcoord.x - 1.0 / width, v_texcoord.y - 1.0 / height);\n"
+  "      texcoord_L3_a1 = vec2(v_texcoord.x - 1.0 / width, v_texcoord.y + 1.0 / height);\n"
   "      L1_a1 = texture2D(tex_prev, texcoord_L1_a1).rgb;\n"
   "      L3_a1 = texture2D(tex_prev, texcoord_L3_a1).rgb;\n"
   "    }\n"
@@ -113,8 +120,8 @@
   "    vec3 avg_1 = (L1_1 + L3_1) / 2.0;\n"
   "    vec3 avg_s = (avg_a1 + avg_1) / 2.0;\n"
   "    vec3 avg_sc = (avg_s + avg) / 2.0;\n"
-  "    vec3 L2 = texture2D(tex, texcoord).rgb;\n"
-  "    vec3 LP2 = texture2D(tex_prev, texcoord).rgb;\n"
+  "    vec3 L2 = texture2D(tex, v_texcoord).rgb;\n"
+  "    vec3 LP2 = texture2D(tex_prev, v_texcoord).rgb;\n"
   "    vec3 best;\n"
   "    if (abs(L2.r - avg_sc.r) < abs(LP2.r - avg_sc.r)) {\n"
   "      best.r = L2.r;\n" "    } else {\n"
@@ -144,8 +151,87 @@
   "    gl_FragColor = vec4(last, 1.0);\n"
   "  }\n"
   "}\n";
+
+const gchar *vfir_fragment_source =
+  "#ifdef GL_ES\n"
+  "precision mediump float;\n"
+  "#endif\n"
+  "uniform sampler2D tex;\n"
+  "uniform float width;\n"
+  "uniform float height;\n"
+  "varying vec2 v_texcoord;\n"
+  "void main()\n"
+  "{\n"
+  "  vec2 topcoord, botcoord;\n"
+  "  vec4 cur_color, top_color, bot_color;\n"
+  "  topcoord.x = v_texcoord.x;\n"
+  "  botcoord.x = v_texcoord.x;\n"
+  "  if (v_texcoord.y == 0.0 || v_texcoord.y == 1.0) {\n"
+  "    topcoord.y = v_texcoord.y ;\n"
+  "    botcoord.y = v_texcoord.y ;\n"
+  "  }\n"
+  "  else {\n"
+  "    topcoord.y = v_texcoord.y - 1.0/height;\n"
+  "    botcoord.y = v_texcoord.y + 1.0/height;\n"
+  "  }\n"
+  "  cur_color = texture2D(tex, v_texcoord);\n"
+  "  top_color = texture2D(tex, topcoord);\n"
+  "  bot_color = texture2D(tex, botcoord);\n"
+  "  gl_FragColor = 0.5*cur_color + 0.25*top_color + 0.25*bot_color;\n"
+  "}";
 /* *INDENT-ON* */
 
+/* dont' forget to edit the following when a new method is added */
+typedef enum
+{
+  GST_GL_DEINTERLACE_VFIR,
+  GST_GL_DEINTERLACE_GREEDYH
+} GstGLDeinterlaceMethod;
+
+static const GEnumValue *
+gst_gl_deinterlace_get_methods (void)
+{
+  static const GEnumValue method_types[] = {
+    {GST_GL_DEINTERLACE_VFIR, "Blur Vertical", "vfir"},
+    {GST_GL_DEINTERLACE_GREEDYH, "Motion Adaptive: Advanced Detection",
+        "greedyh"},
+    {0, NULL, NULL}
+  };
+  return method_types;
+}
+
+#define GST_TYPE_GL_DEINTERLACE_METHODS (gst_gl_deinterlace_method_get_type ())
+static GType
+gst_gl_deinterlace_method_get_type (void)
+{
+  static GType gl_deinterlace_method_type = 0;
+  if (!gl_deinterlace_method_type) {
+    gl_deinterlace_method_type =
+        g_enum_register_static ("GstGLDeinterlaceMethod",
+        gst_gl_deinterlace_get_methods ());
+  }
+  return gl_deinterlace_method_type;
+}
+
+static void
+gst_gl_deinterlace_set_method (GstGLDeinterlace * deinterlace,
+    guint method_types)
+{
+  switch (method_types) {
+    case GST_GL_DEINTERLACE_VFIR:
+      deinterlace->deinterlacefunc = gst_gl_deinterlace_vfir_callback;
+      deinterlace->current_method = method_types;
+      break;
+    case GST_GL_DEINTERLACE_GREEDYH:
+      deinterlace->deinterlacefunc = gst_gl_deinterlace_greedyh_callback;
+      deinterlace->current_method = method_types;
+      break;
+    default:
+      g_assert_not_reached ();
+      break;
+  }
+}
+
 static void
 gst_gl_deinterlace_class_init (GstGLDeinterlaceClass * klass)
 {
@@ -163,22 +249,57 @@
       "Deinterlacing based on fragment shaders",
       "Julien Isorce <julien.isorce@mail.com>");
 
+  g_object_class_install_property (gobject_class,
+      PROP_METHOD,
+      g_param_spec_enum ("method",
+          "Deinterlace Method",
+          "Select which deinterlace method apply to GL video texture",
+          GST_TYPE_GL_DEINTERLACE_METHODS,
+          GST_GL_DEINTERLACE_VFIR, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  GST_BASE_TRANSFORM_CLASS (klass)->start = gst_gl_deinterlace_start;
   GST_BASE_TRANSFORM_CLASS (klass)->stop = gst_gl_deinterlace_reset;
 
   GST_GL_FILTER_CLASS (klass)->filter = gst_gl_deinterlace_filter;
   GST_GL_FILTER_CLASS (klass)->filter_texture =
       gst_gl_deinterlace_filter_texture;
-  GST_GL_FILTER_CLASS (klass)->init_fbo = gst_gl_deinterlace_init_shader;
+  GST_GL_FILTER_CLASS (klass)->init_fbo = gst_gl_deinterlace_init_fbo;
 
-  GST_GL_BASE_FILTER_CLASS (klass)->supported_gl_api = GST_GL_API_OPENGL;
+  GST_GL_BASE_FILTER_CLASS (klass)->supported_gl_api =
+      GST_GL_API_OPENGL | GST_GL_API_GLES2 | GST_GL_API_OPENGL3;
 }
 
 static void
 gst_gl_deinterlace_init (GstGLDeinterlace * filter)
 {
-  filter->shader = NULL;
+  filter->shaderstable = NULL;
+  filter->deinterlacefunc = gst_gl_deinterlace_vfir_callback;
+  filter->current_method = GST_GL_DEINTERLACE_VFIR;
   filter->prev_buffer = NULL;
-  filter->prev_tex = 0;
+  filter->prev_tex = NULL;
+}
+
+static gboolean
+gst_gl_deinterlace_start (GstBaseTransform * trans)
+{
+  GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (trans);
+
+  deinterlace_filter->shaderstable = g_hash_table_new (g_str_hash, g_str_equal);
+
+  return GST_BASE_TRANSFORM_CLASS (parent_class)->start (trans);
+}
+
+static void
+gst_gl_deinterlace_ghash_func_clean (gpointer key, gpointer value,
+    gpointer data)
+{
+  GstGLShader *shader = (GstGLShader *) value;
+  GstGLFilter *filter = (GstGLFilter *) data;
+
+  //blocking call, wait the opengl thread has destroyed the shader
+  gst_gl_context_del_shader (GST_GL_BASE_FILTER (filter)->context, shader);
+
+  value = NULL;
 }
 
 static gboolean
@@ -189,10 +310,17 @@
   gst_buffer_replace (&deinterlace_filter->prev_buffer, NULL);
 
   //blocking call, wait the opengl thread has destroyed the shader
-  if (deinterlace_filter->shader)
-    gst_gl_context_del_shader (GST_GL_BASE_FILTER (trans)->context,
-        deinterlace_filter->shader);
-  deinterlace_filter->shader = NULL;
+  if (deinterlace_filter->shaderstable) {
+    /* release shaders in the gl thread */
+    g_hash_table_foreach (deinterlace_filter->shaderstable,
+        gst_gl_deinterlace_ghash_func_clean, deinterlace_filter);
+
+    /* clean the htable without calling values destructors
+     * because shaders have been released in the glthread
+     * through the foreach func */
+    g_hash_table_unref (deinterlace_filter->shaderstable);
+    deinterlace_filter->shaderstable = NULL;
+  }
 
   return GST_BASE_TRANSFORM_CLASS (parent_class)->stop (trans);
 }
@@ -201,9 +329,12 @@
 gst_gl_deinterlace_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec)
 {
-  //GstGLDeinterlace *filter = GST_GL_DEINTERLACE (object);
+  GstGLDeinterlace *filter = GST_GL_DEINTERLACE (object);
 
   switch (prop_id) {
+    case PROP_METHOD:
+      gst_gl_deinterlace_set_method (filter, g_value_get_enum (value));
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -214,9 +345,12 @@
 gst_gl_deinterlace_get_property (GObject * object, guint prop_id,
     GValue * value, GParamSpec * pspec)
 {
-  //GstGLDeinterlace *filter = GST_GL_DEINTERLACE (object);
+  GstGLDeinterlace *filter = GST_GL_DEINTERLACE (object);
 
   switch (prop_id) {
+    case PROP_METHOD:
+      g_value_set_enum (value, filter->current_method);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -224,24 +358,20 @@
 }
 
 static gboolean
-gst_gl_deinterlace_init_shader (GstGLFilter * filter)
+gst_gl_deinterlace_init_fbo (GstGLFilter * filter)
 {
-  GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (filter);
-
-  //blocking call, wait the opengl thread has compiled the shader
-  return gst_gl_context_gen_shader (GST_GL_BASE_FILTER (filter)->context, 0,
-      greedyh_fragment_source, &deinterlace_filter->shader);
+  return TRUE;
 }
 
 static gboolean
-gst_gl_deinterlace_filter_texture (GstGLFilter * filter, guint in_tex,
-    guint out_tex)
+gst_gl_deinterlace_filter_texture (GstGLFilter * filter, GstGLMemory * in_tex,
+    GstGLMemory * out_tex)
 {
   GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (filter);
 
   //blocking call, use a FBO
-  gst_gl_filter_render_to_target (filter, TRUE, in_tex, out_tex,
-      gst_gl_deinterlace_callback, deinterlace_filter);
+  gst_gl_filter_render_to_target (filter, in_tex, out_tex,
+      deinterlace_filter->deinterlacefunc, deinterlace_filter);
 
   return TRUE;
 }
@@ -259,89 +389,127 @@
   return TRUE;
 }
 
-//opengl scene, params: input texture (not the output filter->texture)
-static void
-gst_gl_deinterlace_callback (gint width, gint height, guint texture,
-    gpointer stuff)
+static GstGLShader *
+gst_gl_deinterlace_get_fragment_shader (GstGLFilter * filter,
+    const gchar * shader_name, const gchar * shader_source)
 {
-  GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (stuff);
-  GstGLFilter *filter = GST_GL_FILTER (stuff);
-  GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
-  guint temp;
+  GstGLShader *shader = NULL;
+  GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (filter);
+  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
 
-  GLfloat verts[] = { -1.0, -1.0,
-    1.0, -1.0,
-    1.0, 1.0,
-    -1.0, 1.0
-  };
-  GLfloat texcoords0[] = { 0.0f, 0.0f,
-    1.0f, 0.0f,
-    1.0f, 1.0f,
-    0.0f, 1.0f
-  };
-  GLfloat texcoords1[] = { 0.0f, 0.0f,
-    1.0f, 0.0f,
-    1.0f, 1.0f,
-    0.0f, 1.0f
-  };
+  shader = g_hash_table_lookup (deinterlace_filter->shaderstable, shader_name);
 
-  gl->MatrixMode (GL_PROJECTION);
-  gl->LoadIdentity ();
+  if (!shader) {
+    GError *error = NULL;
 
-  gst_gl_shader_use (deinterlace_filter->shader);
+    if (!(shader = gst_gl_shader_new_link_with_stages (context, &error,
+                gst_glsl_stage_new_default_vertex (context),
+                gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER,
+                    GST_GLSL_VERSION_NONE,
+                    GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+                    shader_source), NULL))) {
+      GST_ELEMENT_ERROR (deinterlace_filter, RESOURCE, NOT_FOUND,
+          ("Failed to initialize %s shader", shader_name), (NULL));
+    }
 
-  if (G_UNLIKELY (deinterlace_filter->prev_tex == 0)) {
-    gst_gl_context_gen_texture (GST_GL_BASE_FILTER (filter)->context,
-        &deinterlace_filter->prev_tex,
-        GST_VIDEO_INFO_FORMAT (&filter->out_info),
-        GST_VIDEO_INFO_WIDTH (&filter->out_info),
-        GST_VIDEO_INFO_HEIGHT (&filter->out_info));
-  } else {
+    filter->draw_attr_position_loc =
+        gst_gl_shader_get_attribute_location (shader, "a_position");
+    filter->draw_attr_texture_loc =
+        gst_gl_shader_get_attribute_location (shader, "a_texcoord");
+  }
+
+  g_hash_table_insert (deinterlace_filter->shaderstable, (gchar *) shader_name,
+      shader);
+
+  return shader;
+}
+
+static gboolean
+gst_gl_deinterlace_vfir_callback (GstGLFilter * filter, GstGLMemory * in_tex,
+    gpointer user_data)
+{
+  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
+  const GstGLFuncs *gl = context->gl_vtable;
+  GstGLShader *shader;
+
+  shader = gst_gl_deinterlace_get_fragment_shader (filter, "vfir",
+      vfir_fragment_source);
+
+  if (!shader)
+    return FALSE;
+
+#if GST_GL_HAVE_OPENGL
+  if (USING_OPENGL (context)) {
+    gl->MatrixMode (GL_PROJECTION);
+    gl->LoadIdentity ();
+  }
+#endif
+
+  gst_gl_shader_use (shader);
+
+  gl->ActiveTexture (GL_TEXTURE0);
+  gl->BindTexture (GL_TEXTURE_2D, gst_gl_memory_get_texture_id (in_tex));
+
+  gst_gl_shader_set_uniform_1i (shader, "tex", 0);
+  gst_gl_shader_set_uniform_1f (shader, "width",
+      GST_VIDEO_INFO_WIDTH (&filter->out_info));
+  gst_gl_shader_set_uniform_1f (shader, "height",
+      GST_VIDEO_INFO_HEIGHT (&filter->out_info));
+
+  gst_gl_filter_draw_fullscreen_quad (filter);
+
+  return TRUE;
+}
+
+static gboolean
+gst_gl_deinterlace_greedyh_callback (GstGLFilter * filter, GstGLMemory * in_tex,
+    gpointer user_data)
+{
+  GstGLShader *shader;
+  GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (filter);
+  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
+  GstGLFuncs *gl = context->gl_vtable;
+
+  shader =
+      gst_gl_deinterlace_get_fragment_shader (filter, "greedhy",
+      greedyh_fragment_source);
+
+  if (!shader)
+    return FALSE;
+
+#if GST_GL_HAVE_OPENGL
+  if (USING_OPENGL (context)) {
+    gl->MatrixMode (GL_PROJECTION);
+    gl->LoadIdentity ();
+  }
+#endif
+
+  gst_gl_shader_use (shader);
+
+  if (G_LIKELY (deinterlace_filter->prev_tex != NULL)) {
     gl->ActiveTexture (GL_TEXTURE1);
-    gst_gl_shader_set_uniform_1i (deinterlace_filter->shader, "tex_prev", 1);
-    gl->BindTexture (GL_TEXTURE_2D, deinterlace_filter->prev_tex);
+    gst_gl_shader_set_uniform_1i (shader, "tex_prev", 1);
+    gl->BindTexture (GL_TEXTURE_2D,
+        gst_gl_memory_get_texture_id (deinterlace_filter->prev_tex));
   }
 
   gl->ActiveTexture (GL_TEXTURE0);
-  gst_gl_shader_set_uniform_1i (deinterlace_filter->shader, "tex", 0);
+  gl->BindTexture (GL_TEXTURE_2D, gst_gl_memory_get_texture_id (in_tex));
 
-  gst_gl_shader_set_uniform_1f (deinterlace_filter->shader, "max_comb",
-      5.0f / 255.0f);
-  gst_gl_shader_set_uniform_1f (deinterlace_filter->shader, "motion_threshold",
-      25.0f / 255.0f);
-  gst_gl_shader_set_uniform_1f (deinterlace_filter->shader, "motion_sense",
-      30.0f / 255.0f);
+  gst_gl_shader_set_uniform_1i (shader, "tex", 0);
+  gst_gl_shader_set_uniform_1f (shader, "max_comb", 5.0f / 255.0f);
+  gst_gl_shader_set_uniform_1f (shader, "motion_threshold", 25.0f / 255.0f);
+  gst_gl_shader_set_uniform_1f (shader, "motion_sense", 30.0f / 255.0f);
 
-  gst_gl_shader_set_uniform_1f (deinterlace_filter->shader, "width",
+  gst_gl_shader_set_uniform_1f (shader, "width",
       GST_VIDEO_INFO_WIDTH (&filter->out_info));
-  gst_gl_shader_set_uniform_1f (deinterlace_filter->shader, "height",
+  gst_gl_shader_set_uniform_1f (shader, "height",
       GST_VIDEO_INFO_HEIGHT (&filter->out_info));
 
-  gl->ClientActiveTexture (GL_TEXTURE0);
+  gst_gl_filter_draw_fullscreen_quad (filter);
 
-  gl->EnableClientState (GL_TEXTURE_COORD_ARRAY);
-  gl->EnableClientState (GL_VERTEX_ARRAY);
+  /* we keep the previous buffer around so this is safe */
+  deinterlace_filter->prev_tex = in_tex;
 
-  gl->VertexPointer (2, GL_FLOAT, 0, &verts);
-  gl->TexCoordPointer (2, GL_FLOAT, 0, &texcoords0);
-
-  gl->ClientActiveTexture (GL_TEXTURE1);
-  gl->EnableClientState (GL_TEXTURE_COORD_ARRAY);
-  gl->TexCoordPointer (2, GL_FLOAT, 0, &texcoords1);
-
-  gl->DrawArrays (GL_TRIANGLE_FAN, 0, 4);
-
-  gl->DisableClientState (GL_VERTEX_ARRAY);
-  gl->DisableClientState (GL_TEXTURE_COORD_ARRAY);
-
-  gl->ClientActiveTexture (GL_TEXTURE0);
-  gl->DisableClientState (GL_TEXTURE_COORD_ARRAY);
-
-  if (texture == filter->in_tex_id) {
-    temp = filter->in_tex_id;
-    filter->in_tex_id = deinterlace_filter->prev_tex;
-    deinterlace_filter->prev_tex = temp;
-  } else {
-    deinterlace_filter->prev_tex = texture;
-  }
+  return TRUE;
 }
diff --git a/ext/gl/gstgldeinterlace.h b/ext/gl/gstgldeinterlace.h
index a81a2e7..3d78d66 100644
--- a/ext/gl/gstgldeinterlace.h
+++ b/ext/gl/gstgldeinterlace.h
@@ -32,15 +32,21 @@
 #define GST_IS_GL_DEINTERLACE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass) ,GST_TYPE_GL_DEINTERLACE))
 #define GST_GL_DEINTERLACE_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj) ,GST_TYPE_GL_DEINTERLACE,GstGLDeinterlaceClass))
 
+#define USING_OPENGL(context) (gst_gl_context_check_gl_version (context, GST_GL_API_OPENGL, 1, 0))
+
 typedef struct _GstGLDeinterlace GstGLDeinterlace;
 typedef struct _GstGLDeinterlaceClass GstGLDeinterlaceClass;
 
 struct _GstGLDeinterlace
 {
-  GstGLFilter  filter;
-  GstGLShader  *shader;
-  GstBuffer    *prev_buffer;
-  guint         prev_tex;
+  GstGLFilter               filter;
+
+  GstGLFilterRenderFunc     deinterlacefunc; 
+  GHashTable               *shaderstable;
+  GstBuffer                *prev_buffer;
+  GstGLMemory *             prev_tex;
+
+  gint	                    current_method;
 };
 
 struct _GstGLDeinterlaceClass
diff --git a/ext/gl/gstgldifferencematte.c b/ext/gl/gstgldifferencematte.c
index 6304c6d..d726c2e 100644
--- a/ext/gl/gstgldifferencematte.c
+++ b/ext/gl/gstgldifferencematte.c
@@ -62,7 +62,7 @@
     guint prop_id, GValue * value, GParamSpec * pspec);
 
 static gboolean gst_gl_differencematte_filter_texture (GstGLFilter * filter,
-    guint in_tex, guint out_tex);
+    GstGLMemory * in_tex, GstGLMemory * out_tex);
 
 static gboolean gst_gl_differencematte_loader (GstGLFilter * filter);
 
@@ -79,33 +79,40 @@
 {
   GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (filter);
   GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  const GstGLFuncs *gl = context->gl_vtable;
+  GstGLBaseMemoryAllocator *tex_alloc;
+  GstGLAllocationParams *params;
   GError *error = NULL;
   gint i;
 
-  for (i = 0; i < 4; i++) {
-    gl->GenTextures (1, &differencematte->midtexture[i]);
-    gl->BindTexture (GL_TEXTURE_2D, differencematte->midtexture[i]);
-    gl->TexImage2D (GL_TEXTURE_2D, 0, GL_RGBA8,
-        GST_VIDEO_INFO_WIDTH (&filter->out_info),
-        GST_VIDEO_INFO_HEIGHT (&filter->out_info),
-        0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
-    gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-    gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-    gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-    gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-    differencematte->shader[i] =
-        gst_gl_shader_new (GST_GL_BASE_FILTER (filter)->context);
+  tex_alloc = (GstGLBaseMemoryAllocator *)
+      gst_gl_memory_allocator_get_default (context);
+  params =
+      (GstGLAllocationParams *) gst_gl_video_allocation_params_new (context,
+      NULL, &filter->out_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D,
+      GST_VIDEO_GL_TEXTURE_TYPE_RGBA);
+
+  for (i = 0; i < 4; i++)
+    differencematte->midtexture[i] =
+        (GstGLMemory *) gst_gl_base_memory_alloc (tex_alloc, params);
+  gst_gl_allocation_params_free (params);
+  gst_object_unref (tex_alloc);
+
+  if (!(differencematte->identity_shader =
+          gst_gl_shader_new_default (context, &error))) {
+    GST_ELEMENT_ERROR (differencematte, RESOURCE, NOT_FOUND, ("%s",
+            "Failed to compile identity shader"), ("%s", error->message));
+    return;
   }
 
   if (!(differencematte->shader[0] =
           gst_gl_shader_new_link_with_stages (context, &error,
               gst_glsl_stage_new_default_vertex (context),
               gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER,
-                  GST_GLSL_VERSION_NONE, GST_GLSL_PROFILE_ES,
+                  GST_GLSL_VERSION_NONE,
+                  GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
                   difference_fragment_source), NULL))) {
     GST_ELEMENT_ERROR (differencematte, RESOURCE, NOT_FOUND, ("%s",
-            gst_gl_context_get_error ()), (NULL));
+            "Failed to compile difference shader"), ("%s", error->message));
     return;
   }
 
@@ -113,10 +120,11 @@
           gst_gl_shader_new_link_with_stages (context, &error,
               gst_glsl_stage_new_default_vertex (context),
               gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER,
-                  GST_GLSL_VERSION_NONE, GST_GLSL_PROFILE_ES,
+                  GST_GLSL_VERSION_NONE,
+                  GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
                   hconv7_fragment_source_gles2), NULL))) {
     GST_ELEMENT_ERROR (differencematte, RESOURCE, NOT_FOUND, ("%s",
-            gst_gl_context_get_error ()), (NULL));
+            "Failed to compile convolution shader"), ("%s", error->message));
     return;
   }
 
@@ -124,10 +132,11 @@
           gst_gl_shader_new_link_with_stages (context, &error,
               gst_glsl_stage_new_default_vertex (context),
               gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER,
-                  GST_GLSL_VERSION_NONE, GST_GLSL_PROFILE_ES,
+                  GST_GLSL_VERSION_NONE,
+                  GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
                   vconv7_fragment_source_gles2), NULL))) {
     GST_ELEMENT_ERROR (differencematte, RESOURCE, NOT_FOUND, ("%s",
-            gst_gl_context_get_error ()), (NULL));
+            "Failed to compile convolution shader"), ("%s", error->message));
     return;
   }
 
@@ -135,19 +144,20 @@
           gst_gl_shader_new_link_with_stages (context, &error,
               gst_glsl_stage_new_default_vertex (context),
               gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER,
-                  GST_GLSL_VERSION_NONE, GST_GLSL_PROFILE_ES,
+                  GST_GLSL_VERSION_NONE,
+                  GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
                   texture_interp_fragment_source), NULL))) {
     GST_ELEMENT_ERROR (differencematte, RESOURCE, NOT_FOUND, ("%s",
-            gst_gl_context_get_error ()), (NULL));
+            "Failed to compile interpolation shader"), ("%s", error->message));
     return;
   }
 
   /* FIXME: this should really be per shader */
   filter->draw_attr_position_loc =
-      gst_gl_shader_get_attribute_location (differencematte->shader[3],
+      gst_gl_shader_get_attribute_location (differencematte->shader[2],
       "a_position");
   filter->draw_attr_texture_loc =
-      gst_gl_shader_get_attribute_location (differencematte->shader[3],
+      gst_gl_shader_get_attribute_location (differencematte->shader[2],
       "a_texcoord");
 }
 
@@ -156,25 +166,36 @@
 gst_gl_differencematte_reset_gl_resources (GstGLFilter * filter)
 {
   GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (filter);
-  GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
   gint i;
 
-  gl->DeleteTextures (1, &differencematte->savedbgtexture);
-  gl->DeleteTextures (1, &differencematte->newbgtexture);
+  if (differencematte->savedbgtexture) {
+    gst_memory_unref (GST_MEMORY_CAST (differencematte->savedbgtexture));
+    differencematte->savedbgtexture = NULL;
+  }
+
+  if (differencematte->newbgtexture) {
+    gst_memory_unref (GST_MEMORY_CAST (differencematte->newbgtexture));
+    differencematte->newbgtexture = NULL;
+  }
+
   for (i = 0; i < 4; i++) {
+    if (differencematte->identity_shader) {
+      gst_object_unref (differencematte->identity_shader);
+      differencematte->identity_shader = NULL;
+    }
+
     if (differencematte->shader[i]) {
       gst_object_unref (differencematte->shader[i]);
       differencematte->shader[i] = NULL;
     }
+
     if (differencematte->midtexture[i]) {
-      gl->DeleteTextures (1, &differencematte->midtexture[i]);
-      differencematte->midtexture[i] = 0;
+      gst_memory_unref (GST_MEMORY_CAST (differencematte->midtexture[i]));
+      differencematte->midtexture[i] = NULL;
     }
   }
   differencematte->location = NULL;
   differencematte->pixbuf = NULL;
-  differencematte->savedbgtexture = 0;
-  differencematte->newbgtexture = 0;
   differencematte->bg_has_changed = FALSE;
 }
 
@@ -263,174 +284,146 @@
 }
 
 static void
-gst_gl_differencematte_save_texture (gint width, gint height, guint texture,
-    gpointer stuff)
+init_pixbuf_texture (GstGLDifferenceMatte * differencematte)
 {
-  GstGLFilter *filter = GST_GL_FILTER (stuff);
-  GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
+  GstGLContext *context = GST_GL_BASE_FILTER (differencematte)->context;
+  GstGLFilter *filter = GST_GL_FILTER (differencematte);
+  GstGLBaseMemoryAllocator *tex_alloc;
+  GstGLAllocationParams *params;
+  GstVideoInfo v_info;
 
-  gl->MatrixMode (GL_PROJECTION);
-  gl->LoadIdentity ();
+  tex_alloc = (GstGLBaseMemoryAllocator *)
+      gst_gl_memory_allocator_get_default (context);
+  gst_video_info_set_format (&v_info, GST_VIDEO_FORMAT_RGBA,
+      differencematte->pbuf_width, differencematte->pbuf_height);
+  params =
+      (GstGLAllocationParams *) gst_gl_video_allocation_params_new (context,
+      NULL, &v_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D,
+      GST_VIDEO_GL_TEXTURE_TYPE_RGBA);
 
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
+  differencematte->newbgtexture =
+      (GstGLMemory *) gst_gl_base_memory_alloc (tex_alloc, params);
+  gst_gl_allocation_params_free (params);
 
-static void
-init_pixbuf_texture (GstGLContext * context, gpointer data)
-{
-  GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (data);
-  GstGLFilter *filter = GST_GL_FILTER (data);
-  GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
+  if (differencematte->savedbgtexture == NULL) {
+    params =
+        (GstGLAllocationParams *) gst_gl_video_allocation_params_new (context,
+        NULL, &filter->out_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D,
+        GST_VIDEO_GL_TEXTURE_TYPE_RGBA);
 
-  gl->DeleteTextures (1, &differencematte->newbgtexture);
-  gl->GenTextures (1, &differencematte->newbgtexture);
-  gl->BindTexture (GL_TEXTURE_2D, differencematte->newbgtexture);
-  gl->TexImage2D (GL_TEXTURE_2D, 0, GL_RGBA,
-      (gint) differencematte->pbuf_width, (gint) differencematte->pbuf_height,
-      0, GL_RGBA, GL_UNSIGNED_BYTE, differencematte->pixbuf);
-  gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-  gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-  gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-  gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-
-  if (differencematte->savedbgtexture == 0) {
-    gl->GenTextures (1, &differencematte->savedbgtexture);
-    gl->BindTexture (GL_TEXTURE_2D, differencematte->savedbgtexture);
-    gl->TexImage2D (GL_TEXTURE_2D, 0, GL_RGBA8,
-        GST_VIDEO_INFO_WIDTH (&filter->out_info),
-        GST_VIDEO_INFO_HEIGHT (&filter->out_info),
-        0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
-    gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-    gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-    gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-    gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+    differencematte->savedbgtexture =
+        (GstGLMemory *) gst_gl_base_memory_alloc (tex_alloc, params);
+    gst_gl_allocation_params_free (params);
   }
+
+  gst_object_unref (tex_alloc);
 }
 
-static void
-gst_gl_differencematte_diff (gint width, gint height, guint texture,
+static gboolean
+gst_gl_differencematte_diff (GstGLFilter * filter, GstGLMemory * in_tex,
     gpointer stuff)
 {
-  GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (stuff);
-  GstGLFilter *filter = GST_GL_FILTER (stuff);
-  GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
-
-  gl->MatrixMode (GL_PROJECTION);
-  gl->LoadIdentity ();
+  GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (filter);
+  const GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
 
   gst_gl_shader_use (differencematte->shader[0]);
 
   gl->ActiveTexture (GL_TEXTURE0);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
+  gl->BindTexture (GL_TEXTURE_2D, gst_gl_memory_get_texture_id (in_tex));
 
   gst_gl_shader_set_uniform_1i (differencematte->shader[0], "current", 0);
 
   gl->ActiveTexture (GL_TEXTURE1);
-  gl->BindTexture (GL_TEXTURE_2D, differencematte->savedbgtexture);
+  gl->BindTexture (GL_TEXTURE_2D,
+      gst_gl_memory_get_texture_id (differencematte->savedbgtexture));
 
   gst_gl_shader_set_uniform_1i (differencematte->shader[0], "saved", 1);
 
-  gst_gl_filter_draw_texture (filter, texture, width, height);
+  gst_gl_filter_draw_fullscreen_quad (filter);
+
+  return TRUE;
 }
 
-static void
-gst_gl_differencematte_hblur (gint width, gint height, guint texture,
+static gboolean
+gst_gl_differencematte_hblur (GstGLFilter * filter, GstGLMemory * in_tex,
     gpointer stuff)
 {
-  GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (stuff);
-  GstGLFilter *filter = GST_GL_FILTER (stuff);
-  GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
-
-  gl->MatrixMode (GL_PROJECTION);
-  gl->LoadIdentity ();
+  GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (filter);
+  const GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
 
   gst_gl_shader_use (differencematte->shader[1]);
 
   gl->ActiveTexture (GL_TEXTURE0);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
+  gl->BindTexture (GL_TEXTURE_2D, gst_gl_memory_get_texture_id (in_tex));
 
   gst_gl_shader_set_uniform_1i (differencematte->shader[1], "tex", 0);
 
   gst_gl_shader_set_uniform_1fv (differencematte->shader[1], "kernel", 7,
       differencematte->kernel);
-  gst_gl_shader_set_uniform_1f (differencematte->shader[1], "width", width);
+  gst_gl_shader_set_uniform_1f (differencematte->shader[1], "gauss_width",
+      GST_VIDEO_INFO_WIDTH (&filter->out_info));
 
-  gst_gl_filter_draw_texture (filter, texture, width, height);
+  gst_gl_filter_draw_fullscreen_quad (filter);
+
+  return TRUE;
 }
 
-static void
-gst_gl_differencematte_vblur (gint width, gint height, guint texture,
+static gboolean
+gst_gl_differencematte_vblur (GstGLFilter * filter, GstGLMemory * in_tex,
     gpointer stuff)
 {
-  GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (stuff);
-  GstGLFilter *filter = GST_GL_FILTER (stuff);
-  GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
-
-  gl->MatrixMode (GL_PROJECTION);
-  gl->LoadIdentity ();
+  GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (filter);
+  const GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
 
   gst_gl_shader_use (differencematte->shader[2]);
 
   gl->ActiveTexture (GL_TEXTURE0);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
+  gl->BindTexture (GL_TEXTURE_2D, gst_gl_memory_get_texture_id (in_tex));
 
   gst_gl_shader_set_uniform_1i (differencematte->shader[2], "tex", 0);
 
   gst_gl_shader_set_uniform_1fv (differencematte->shader[2], "kernel", 7,
       differencematte->kernel);
-  gst_gl_shader_set_uniform_1f (differencematte->shader[2], "height", height);
+  gst_gl_shader_set_uniform_1f (differencematte->shader[2], "gauss_height",
+      GST_VIDEO_INFO_HEIGHT (&filter->out_info));
 
-  gst_gl_filter_draw_texture (filter, texture, width, height);
+  gst_gl_filter_draw_fullscreen_quad (filter);
+
+  return TRUE;
 }
 
-static void
-gst_gl_differencematte_interp (gint width, gint height, guint texture,
+static gboolean
+gst_gl_differencematte_interp (GstGLFilter * filter, GstGLMemory * in_tex,
     gpointer stuff)
 {
-  GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (stuff);
-  GstGLFilter *filter = GST_GL_FILTER (stuff);
-  GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
-
-  gl->MatrixMode (GL_PROJECTION);
-  glLoadIdentity ();
+  GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (filter);
+  const GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
 
   gst_gl_shader_use (differencematte->shader[3]);
 
   gl->ActiveTexture (GL_TEXTURE0);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
+  gl->BindTexture (GL_TEXTURE_2D, gst_gl_memory_get_texture_id (in_tex));
 
   gst_gl_shader_set_uniform_1i (differencematte->shader[3], "blend", 0);
 
   gl->ActiveTexture (GL_TEXTURE1);
-  gl->BindTexture (GL_TEXTURE_2D, differencematte->newbgtexture);
+  gl->BindTexture (GL_TEXTURE_2D, differencematte->newbgtexture->tex_id);
 
   gst_gl_shader_set_uniform_1i (differencematte->shader[3], "base", 1);
 
   gl->ActiveTexture (GL_TEXTURE2);
-  gl->BindTexture (GL_TEXTURE_2D, differencematte->midtexture[2]);
+  gl->BindTexture (GL_TEXTURE_2D, differencematte->midtexture[2]->tex_id);
 
   gst_gl_shader_set_uniform_1i (differencematte->shader[3], "alpha", 2);
 
-  gst_gl_filter_draw_texture (filter, texture, width, height);
-}
+  gst_gl_filter_draw_fullscreen_quad (filter);
 
-static void
-gst_gl_differencematte_identity (gint width, gint height, guint texture,
-    gpointer stuff)
-{
-  GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (stuff);
-  GstGLFilter *filter = GST_GL_FILTER (differencematte);
-  GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
-
-  gl->MatrixMode (GL_PROJECTION);
-  gl->LoadIdentity ();
-
-  gst_gl_filter_draw_texture (filter, texture, width, height);
+  return TRUE;
 }
 
 static gboolean
-gst_gl_differencematte_filter_texture (GstGLFilter * filter, guint in_tex,
-    guint out_tex)
+gst_gl_differencematte_filter_texture (GstGLFilter * filter,
+    GstGLMemory * in_tex, GstGLMemory * out_tex)
 {
   GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (filter);
 
@@ -441,15 +434,12 @@
     if (!gst_gl_differencematte_loader (filter))
       differencematte->pixbuf = NULL;
 
-    /* if loader failed then context is turned off */
-    gst_gl_context_thread_add (GST_GL_BASE_FILTER (filter)->context,
-        init_pixbuf_texture, differencematte);
+    init_pixbuf_texture (differencematte);
 
     /* save current frame, needed to calculate difference between
      * this frame and next ones */
-    gst_gl_filter_render_to_target (filter, TRUE, in_tex,
-        differencematte->savedbgtexture,
-        gst_gl_differencematte_save_texture, differencematte);
+    gst_gl_filter_render_to_target_with_shader (filter, in_tex,
+        differencematte->savedbgtexture, differencematte->identity_shader);
 
     if (differencematte->pixbuf) {
       free (differencematte->pixbuf);
@@ -459,21 +449,18 @@
     differencematte->bg_has_changed = FALSE;
   }
 
-  if (differencematte->savedbgtexture != 0) {
-    gst_gl_filter_render_to_target (filter, TRUE, in_tex,
-        differencematte->midtexture[0], gst_gl_differencematte_diff,
-        differencematte);
-    gst_gl_filter_render_to_target (filter, FALSE,
-        differencematte->midtexture[0], differencematte->midtexture[1],
-        gst_gl_differencematte_hblur, differencematte);
-    gst_gl_filter_render_to_target (filter, FALSE,
-        differencematte->midtexture[1], differencematte->midtexture[2],
-        gst_gl_differencematte_vblur, differencematte);
-    gst_gl_filter_render_to_target (filter, TRUE, in_tex, out_tex,
-        gst_gl_differencematte_interp, differencematte);
+  if (differencematte->savedbgtexture != NULL) {
+    gst_gl_filter_render_to_target (filter, in_tex,
+        differencematte->midtexture[0], gst_gl_differencematte_diff, NULL);
+    gst_gl_filter_render_to_target (filter, differencematte->midtexture[0],
+        differencematte->midtexture[1], gst_gl_differencematte_hblur, NULL);
+    gst_gl_filter_render_to_target (filter, differencematte->midtexture[1],
+        differencematte->midtexture[2], gst_gl_differencematte_vblur, NULL);
+    gst_gl_filter_render_to_target (filter, in_tex, out_tex,
+        gst_gl_differencematte_interp, NULL);
   } else {
-    gst_gl_filter_render_to_target (filter, TRUE, in_tex, out_tex,
-        gst_gl_differencematte_identity, differencematte);
+    gst_gl_filter_render_to_target_with_shader (filter, in_tex, out_tex,
+        differencematte->identity_shader);
   }
 
   return TRUE;
diff --git a/ext/gl/gstgldifferencematte.h b/ext/gl/gstgldifferencematte.h
index 0cd122f..a4fd275 100644
--- a/ext/gl/gstgldifferencematte.h
+++ b/ext/gl/gstgldifferencematte.h
@@ -37,6 +37,7 @@
 {
   GstGLFilter filter;
 
+  GstGLShader *identity_shader;
   GstGLShader *shader[4];
 
   gchar *location;
@@ -44,10 +45,10 @@
 
   guchar *pixbuf;
   gint pbuf_width, pbuf_height;
-  GLuint savedbgtexture;
-  GLuint newbgtexture;
-  GLuint midtexture[4];
-  GLuint intexture;
+  GstGLMemory *savedbgtexture;
+  GstGLMemory *newbgtexture;
+  GstGLMemory *midtexture[4];
+  GstGLMemory *intexture;
   float kernel[7];
 };
 
diff --git a/ext/gl/gstgldownloadelement.c b/ext/gl/gstgldownloadelement.c
index ff931fa..058398b 100644
--- a/ext/gl/gstgldownloadelement.c
+++ b/ext/gl/gstgldownloadelement.c
@@ -73,10 +73,10 @@
 
   bt_class->passthrough_on_same_caps = TRUE;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_gl_download_element_src_pad_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_gl_download_element_sink_pad_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_gl_download_element_src_pad_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_gl_download_element_sink_pad_template);
 
   gst_element_class_set_metadata (element_class,
       "OpenGL uploader", "Filter/Video",
diff --git a/ext/gl/gstgleffects.c b/ext/gl/gstgleffects.c
index 1518a64..458d95a 100644
--- a/ext/gl/gstgleffects.c
+++ b/ext/gl/gstgleffects.c
@@ -71,7 +71,7 @@
     gpointer data);
 
 static gboolean gst_gl_effects_filter_texture (GstGLFilter * filter,
-    guint in_tex, guint out_tex);
+    GstGLMemory * in_tex, GstGLMemory * out_tex);
 static gboolean gst_gl_effects_filters_is_property_supported (const
     GstGLEffectsFilterDescriptor *, gint property);
 
@@ -232,7 +232,7 @@
       effects->current_effect = effect_type;
       break;
     case GST_GL_EFFECT_XRAY:
-      effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_sin;
+      effects->effect = (GstGLEffectProcessFunc) gst_gl_effects_xray;
       filter_class->supported_gl_api =
           GST_GL_API_GLES2 | GST_GL_API_OPENGL | GST_GL_API_OPENGL3;
       effects->current_effect = effect_type;
@@ -274,31 +274,27 @@
 {
   GstGLEffects *effects = GST_GL_EFFECTS (filter);
   GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  GstGLFuncs *gl = context->gl_vtable;
-  guint internal_format;
-  gint i = 0;
+  GstGLBaseMemoryAllocator *base_alloc;
+  GstGLAllocationParams *params;
+  gint i;
+
+  base_alloc = (GstGLBaseMemoryAllocator *)
+      gst_gl_memory_allocator_get_default (context);
+  params =
+      (GstGLAllocationParams *) gst_gl_video_allocation_params_new (context,
+      NULL, &filter->out_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D,
+      GST_VIDEO_GL_TEXTURE_TYPE_RGBA);
 
   for (i = 0; i < NEEDED_TEXTURES; i++) {
+    if (effects->midtexture[i])
+      gst_memory_unref (GST_MEMORY_CAST (effects->midtexture[i]));
 
-    if (effects->midtexture[i]) {
-      gl->DeleteTextures (1, &effects->midtexture[i]);
-      effects->midtexture[i] = 0;
-    }
-
-    gl->GenTextures (1, &effects->midtexture[i]);
-    gl->BindTexture (GL_TEXTURE_2D, effects->midtexture[i]);
-    internal_format =
-        gst_gl_sized_gl_format_from_gl_format_type (context, GL_RGBA,
-        GL_UNSIGNED_BYTE);
-    gl->TexImage2D (GL_TEXTURE_2D, 0, internal_format,
-        GST_VIDEO_INFO_WIDTH (&filter->out_info),
-        GST_VIDEO_INFO_HEIGHT (&filter->out_info), 0, GL_RGBA, GL_UNSIGNED_BYTE,
-        NULL);
-    gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-    gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-    gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-    gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+    effects->midtexture[i] =
+        (GstGLMemory *) gst_gl_base_memory_alloc (base_alloc, params);
   }
+
+  gst_object_unref (base_alloc);
+  gst_gl_allocation_params_free (params);
 }
 
 /* free resources that need a gl context */
@@ -310,8 +306,7 @@
   gint i = 0;
 
   for (i = 0; i < NEEDED_TEXTURES; i++) {
-    gl->DeleteTextures (1, &effects->midtexture[i]);
-    effects->midtexture[i] = 0;
+    gst_memory_unref (GST_MEMORY_CAST (effects->midtexture[i]));
   }
   for (i = 0; i < GST_GL_EFFECTS_N_CURVES; i++) {
     gl->DeleteTextures (1, &effects->curve[i]);
@@ -396,10 +391,11 @@
 }
 
 static void
-set_horizontal_swap (GstGLContext * context, gpointer data)
+set_horizontal_swap (GstGLEffects * effects)
 {
 #if GST_GL_HAVE_OPENGL
-  GstGLFuncs *gl = context->gl_vtable;
+  GstGLContext *context = GST_GL_BASE_FILTER (effects)->context;
+  const GstGLFuncs *gl = context->gl_vtable;
 
   if (gst_gl_context_get_gl_api (context) & GST_GL_API_OPENGL) {
     const gfloat mirrormatrix[16] = {
@@ -527,8 +523,8 @@
 }
 
 static gboolean
-gst_gl_effects_filter_texture (GstGLFilter * filter, guint in_tex,
-    guint out_tex)
+gst_gl_effects_filter_texture (GstGLFilter * filter, GstGLMemory * in_tex,
+    GstGLMemory * out_tex)
 {
   GstGLEffects *effects = GST_GL_EFFECTS (filter);
 
@@ -536,8 +532,7 @@
   effects->outtexture = out_tex;
 
   if (effects->horizontal_swap == TRUE)
-    gst_gl_context_thread_add (GST_GL_BASE_FILTER (filter)->context,
-        set_horizontal_swap, effects);
+    set_horizontal_swap (effects);
 
   effects->effect (effects);
 
diff --git a/ext/gl/gstgleffects.h b/ext/gl/gstgleffects.h
index ddd2292..151ab78 100644
--- a/ext/gl/gstgleffects.h
+++ b/ext/gl/gstgleffects.h
@@ -69,9 +69,9 @@
   GstGLEffectProcessFunc effect;
   gint current_effect;
 
-  GLuint intexture;
-  GLuint midtexture[NEEDED_TEXTURES];
-  GLuint outtexture;
+  GstGLMemory *intexture;
+  GstGLMemory *midtexture[NEEDED_TEXTURES];
+  GstGLMemory *outtexture;
 
   GLuint curve[GST_GL_EFFECTS_N_CURVES];
 
diff --git a/ext/gl/gstglfilterapp.c b/ext/gl/gstglfilterapp.c
index 715f6f3..925373b 100644
--- a/ext/gl/gstglfilterapp.c
+++ b/ext/gl/gstglfilterapp.c
@@ -69,7 +69,7 @@
 static gboolean gst_gl_filter_app_set_caps (GstGLFilter * filter,
     GstCaps * incaps, GstCaps * outcaps);
 static gboolean gst_gl_filter_app_filter_texture (GstGLFilter * filter,
-    guint in_tex, guint out_tex);
+    GstGLMemory * in_tex, GstGLMemory * out_tex);
 
 static gboolean gst_gl_filter_app_gl_start (GstGLBaseFilter * base_filter);
 static void gst_gl_filter_app_gl_stop (GstGLBaseFilter * base_filter);
@@ -184,57 +184,44 @@
   return TRUE;
 }
 
-static void
-_emit_draw_signal (guint tex, gint width, gint height, gpointer data)
-{
-  GstGLFilterApp *app_filter = GST_GL_FILTER_APP (data);
-  gboolean drawn;
-
-  g_signal_emit (app_filter, gst_gl_filter_app_signals[CLIENT_DRAW_SIGNAL], 0,
-      tex, width, height, &drawn);
-
-  app_filter->default_draw = !drawn;
-}
-
 struct glcb2
 {
-  GLCB func;
-  gpointer data;
-  guint texture;
-  guint width;
-  guint height;
+  GstGLFilterApp *app;
+  GstGLMemory *in_tex;
+  GstGLMemory *out_tex;
 };
 
-/* convenience functions to simplify filter development */
-static void
-_glcb2 (gpointer data)
+static gboolean
+_emit_draw_signal (gpointer data)
 {
   struct glcb2 *cb = data;
+  gboolean drawn;
 
-  cb->func (cb->width, cb->height, cb->texture, cb->data);
+  g_signal_emit (cb->app, gst_gl_filter_app_signals[CLIENT_DRAW_SIGNAL], 0,
+      cb->in_tex->tex_id, gst_gl_memory_get_texture_width (cb->out_tex),
+      gst_gl_memory_get_texture_height (cb->out_tex), &drawn);
+
+  return !drawn;
 }
 
 static gboolean
-gst_gl_filter_app_filter_texture (GstGLFilter * filter, guint in_tex,
-    guint out_tex)
+gst_gl_filter_app_filter_texture (GstGLFilter * filter, GstGLMemory * in_tex,
+    GstGLMemory * out_tex)
 {
   GstGLFilterApp *app_filter = GST_GL_FILTER_APP (filter);
+  gboolean default_draw;
   struct glcb2 cb;
 
-  cb.func = (GLCB) _emit_draw_signal;
-  cb.data = filter;
-  cb.texture = in_tex;
-  cb.width = GST_VIDEO_INFO_WIDTH (&filter->in_info);
-  cb.height = GST_VIDEO_INFO_HEIGHT (&filter->in_info);
+  cb.app = app_filter;
+  cb.in_tex = in_tex;
+  cb.out_tex = out_tex;
 
-  //blocking call, use a FBO
-  gst_gl_context_use_fbo_v2 (GST_GL_BASE_FILTER (filter)->context,
-      GST_VIDEO_INFO_WIDTH (&filter->out_info),
-      GST_VIDEO_INFO_HEIGHT (&filter->out_info),
-      filter->fbo, filter->depthbuffer, out_tex, _glcb2, &cb);
+  default_draw =
+      gst_gl_framebuffer_draw_to_texture (filter->fbo,
+      out_tex, _emit_draw_signal, &cb);
 
-  if (app_filter->default_draw) {
-    gst_gl_filter_render_to_target_with_shader (filter, TRUE, in_tex, out_tex,
+  if (default_draw) {
+    gst_gl_filter_render_to_target_with_shader (filter, in_tex, out_tex,
         filter->default_shader);
   }
 
diff --git a/ext/gl/gstglfilterapp.h b/ext/gl/gstglfilterapp.h
index a8978c5..d7e9a6f 100644
--- a/ext/gl/gstglfilterapp.h
+++ b/ext/gl/gstglfilterapp.h
@@ -37,8 +37,6 @@
 struct _GstGLFilterApp
 {
     GstGLFilter filter;
-
-    gboolean default_draw;
 };
 
 struct _GstGLFilterAppClass
diff --git a/ext/gl/gstglfilterbin.c b/ext/gl/gstglfilterbin.c
index 946d66c..a3621ec 100644
--- a/ext/gl/gstglfilterbin.c
+++ b/ext/gl/gstglfilterbin.c
@@ -73,8 +73,7 @@
   gobject_class->set_property = gst_gl_filter_bin_set_property;
   gobject_class->get_property = gst_gl_filter_bin_get_property;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&_src_pad_template));
+  gst_element_class_add_static_pad_template (element_class, &_src_pad_template);
 
   upload_caps = gst_gl_upload_get_input_template_caps ();
   gst_element_class_add_pad_template (element_class,
diff --git a/ext/gl/gstglfiltercube.c b/ext/gl/gstglfiltercube.c
index d389310..717eba6 100644
--- a/ext/gl/gstglfiltercube.c
+++ b/ext/gl/gstglfiltercube.c
@@ -79,9 +79,9 @@
     GstCaps * incaps, GstCaps * outcaps);
 static void gst_gl_filter_cube_reset_gl (GstGLFilter * filter);
 static gboolean gst_gl_filter_cube_init_shader (GstGLFilter * filter);
-static void _callback (gpointer stuff);
+static gboolean _callback (gpointer stuff);
 static gboolean gst_gl_filter_cube_filter_texture (GstGLFilter * filter,
-    guint in_tex, guint out_tex);
+    GstGLMemory * in_tex, GstGLMemory * out_tex);
 
 /* vertex source */
 static const gchar *cube_v_src =
@@ -335,20 +335,15 @@
 }
 
 static gboolean
-gst_gl_filter_cube_filter_texture (GstGLFilter * filter, guint in_tex,
-    guint out_tex)
+gst_gl_filter_cube_filter_texture (GstGLFilter * filter, GstGLMemory * in_tex,
+    GstGLMemory * out_tex)
 {
   GstGLFilterCube *cube_filter = GST_GL_FILTER_CUBE (filter);
 
   cube_filter->in_tex = in_tex;
 
-  /* blocking call, use a FBO */
-  gst_gl_context_use_fbo_v2 (GST_GL_BASE_FILTER (filter)->context,
-      GST_VIDEO_INFO_WIDTH (&filter->out_info),
-      GST_VIDEO_INFO_HEIGHT (&filter->out_info), filter->fbo,
-      filter->depthbuffer, out_tex, _callback, (gpointer) cube_filter);
-
-  return TRUE;
+  return gst_gl_framebuffer_draw_to_texture (filter->fbo, out_tex, _callback,
+      cube_filter);
 }
 
 /* *INDENT-OFF* */
@@ -440,7 +435,7 @@
   gl->DisableVertexAttribArray (cube_filter->attr_texture);
 }
 
-static void
+static gboolean
 _callback (gpointer stuff)
 {
   GstGLFilter *filter = GST_GL_FILTER (stuff);
@@ -466,7 +461,7 @@
   gst_gl_shader_use (cube_filter->shader);
 
   gl->ActiveTexture (GL_TEXTURE0);
-  gl->BindTexture (GL_TEXTURE_2D, cube_filter->in_tex);
+  gl->BindTexture (GL_TEXTURE_2D, cube_filter->in_tex->tex_id);
   gst_gl_shader_set_uniform_1i (cube_filter->shader, "s_texture", 0);
   gst_gl_shader_set_uniform_1f (cube_filter->shader, "xrot_degree", xrot);
   gst_gl_shader_set_uniform_1f (cube_filter->shader, "yrot_degree", yrot);
@@ -516,4 +511,6 @@
   xrot += 0.3f;
   yrot += 0.2f;
   zrot += 0.4f;
+
+  return TRUE;
 }
diff --git a/ext/gl/gstglfiltercube.h b/ext/gl/gstglfiltercube.h
index 88b51a6..ee25048 100644
--- a/ext/gl/gstglfiltercube.h
+++ b/ext/gl/gstglfiltercube.h
@@ -40,6 +40,7 @@
     GstGLFilter filter;
 
     GstGLShader *shader;
+    GstGLMemory *in_tex;
 
     /* background color */
     gfloat red;
@@ -52,7 +53,6 @@
     gdouble znear;
     gdouble zfar;
 
-    guint              in_tex;
     GLuint             vao;
     GLuint             vbo_indices;
     GLuint             vertex_buffer;
diff --git a/ext/gl/gstglfilterglass.c b/ext/gl/gstglfilterglass.c
index 863793c..28bc485 100644
--- a/ext/gl/gstglfilterglass.c
+++ b/ext/gl/gstglfilterglass.c
@@ -66,14 +66,14 @@
 
 static gboolean gst_gl_filter_glass_init_shader (GstGLFilter * filter);
 static gboolean gst_gl_filter_glass_filter_texture (GstGLFilter * filter,
-    guint in_tex, guint out_tex);
+    GstGLMemory * in_tex, GstGLMemory * out_tex);
 
 static void gst_gl_filter_glass_draw_background_gradient ();
 static void gst_gl_filter_glass_draw_video_plane (GstGLFilter * filter,
     gint width, gint height, guint texture, gfloat center_x, gfloat center_y,
     gfloat start_alpha, gfloat stop_alpha, gboolean reversed, gfloat rotation);
 
-static void gst_gl_filter_glass_callback (gpointer stuff);
+static gboolean gst_gl_filter_glass_callback (gpointer stuff);
 
 /* *INDENT-OFF* */
 static const gchar *glass_fragment_source =
@@ -238,18 +238,15 @@
 }
 
 static gboolean
-gst_gl_filter_glass_filter_texture (GstGLFilter * filter, guint in_tex,
-    guint out_tex)
+gst_gl_filter_glass_filter_texture (GstGLFilter * filter, GstGLMemory * in_tex,
+    GstGLMemory * out_tex)
 {
   GstGLFilterGlass *glass_filter = GST_GL_FILTER_GLASS (filter);
+
   glass_filter->in_tex = in_tex;
 
-  //blocking call, use a FBO
-  gst_gl_context_use_fbo_v2 (GST_GL_BASE_FILTER (filter)->context,
-      GST_VIDEO_INFO_WIDTH (&filter->out_info),
-      GST_VIDEO_INFO_HEIGHT (&filter->out_info),
-      filter->fbo, filter->depthbuffer, out_tex,
-      gst_gl_filter_glass_callback, (gpointer) glass_filter);
+  gst_gl_framebuffer_draw_to_texture (filter->fbo, out_tex,
+      gst_gl_filter_glass_callback, glass_filter);
 
   return TRUE;
 }
@@ -352,8 +349,7 @@
   gl->DisableClientState (GL_COLOR_ARRAY);
 }
 
-//opengl scene, params: input texture (not the output filter->texture)
-static void
+static gboolean
 gst_gl_filter_glass_callback (gpointer stuff)
 {
   static gint64 start_time = 0;
@@ -365,7 +361,7 @@
 
   gint width = GST_VIDEO_INFO_WIDTH (&filter->out_info);
   gint height = GST_VIDEO_INFO_HEIGHT (&filter->out_info);
-  guint texture = glass_filter->in_tex;
+  guint texture = glass_filter->in_tex->tex_id;
 
   if (start_time == 0)
     start_time = get_time ();
@@ -375,7 +371,7 @@
     time_left -= 1000000 / 25;
     if (time_left > 2000) {
       GST_LOG ("escape");
-      return;
+      return FALSE;
     }
   }
 
@@ -407,4 +403,6 @@
   gst_gl_context_clear_shader (GST_GL_BASE_FILTER (filter)->context);
 
   gl->Disable (GL_BLEND);
+
+  return TRUE;
 }
diff --git a/ext/gl/gstglfilterglass.h b/ext/gl/gstglfilterglass.h
index 3897d02..1f1c91d 100644
--- a/ext/gl/gstglfilterglass.h
+++ b/ext/gl/gstglfilterglass.h
@@ -41,7 +41,8 @@
   GstGLShader *passthrough_shader;
   GstGLShader *shader;
   gint64 timestamp;
-  guint in_tex;
+  GstGLMemory *in_tex;
+  GstGLMemory *out_tex;
 };
 
 struct _GstGLFilterGlassClass
diff --git a/ext/gl/gstglfiltershader.c b/ext/gl/gstglfiltershader.c
index 2117388..93962f9 100644
--- a/ext/gl/gstglfiltershader.c
+++ b/ext/gl/gstglfiltershader.c
@@ -82,9 +82,9 @@
 static gboolean gst_gl_filtershader_filter (GstGLFilter * filter,
     GstBuffer * inbuf, GstBuffer * outbuf);
 static gboolean gst_gl_filtershader_filter_texture (GstGLFilter * filter,
-    guint in_tex, guint out_tex);
-static void gst_gl_filtershader_hcallback (gint width, gint height,
-    guint texture, gpointer stuff);
+    GstGLMemory * in_tex, GstGLMemory * out_tex);
+static gboolean gst_gl_filtershader_hcallback (GstGLFilter * filter,
+    GstGLMemory * in_tex, gpointer stuff);
 
 static void
 gst_gl_filtershader_class_init (GstGLFilterShaderClass * klass)
@@ -313,13 +313,13 @@
 }
 
 static gboolean
-gst_gl_filtershader_filter_texture (GstGLFilter * filter, guint in_tex,
-    guint out_tex)
+gst_gl_filtershader_filter_texture (GstGLFilter * filter, GstGLMemory * in_tex,
+    GstGLMemory * out_tex)
 {
   GstGLFilterShader *filtershader = GST_GL_FILTERSHADER (filter);
 
-  gst_gl_filter_render_to_target (filter, TRUE, in_tex, out_tex,
-      gst_gl_filtershader_hcallback, filtershader);
+  gst_gl_filter_render_to_target (filter, in_tex, out_tex,
+      gst_gl_filtershader_hcallback, NULL);
 
   if (!filtershader->shader)
     return FALSE;
@@ -493,17 +493,16 @@
   return NULL;
 }
 
-static void
-gst_gl_filtershader_hcallback (gint width, gint height, guint texture,
+static gboolean
+gst_gl_filtershader_hcallback (GstGLFilter * filter, GstGLMemory * in_tex,
     gpointer stuff)
 {
-  GstGLFilter *filter = GST_GL_FILTER (stuff);
   GstGLFilterShader *filtershader = GST_GL_FILTERSHADER (filter);
   GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
   GstGLShader *shader;
 
   if (!(shader = _maybe_recompile_shader (filtershader)))
-    return;
+    return FALSE;
 
   gl->ClearColor (0.0, 0.0, 0.0, 1.0);
   gl->Clear (GL_COLOR_BUFFER_BIT);
@@ -512,8 +511,10 @@
 
   /* FIXME: propertise these */
   gst_gl_shader_set_uniform_1i (shader, "tex", 0);
-  gst_gl_shader_set_uniform_1f (shader, "width", width);
-  gst_gl_shader_set_uniform_1f (shader, "height", height);
+  gst_gl_shader_set_uniform_1f (shader, "width",
+      GST_VIDEO_INFO_WIDTH (&filter->out_info));
+  gst_gl_shader_set_uniform_1f (shader, "height",
+      GST_VIDEO_INFO_HEIGHT (&filter->out_info));
   gst_gl_shader_set_uniform_1f (shader, "time", filtershader->time);
 
   /* FIXME: propertise these */
@@ -523,9 +524,11 @@
       gst_gl_shader_get_attribute_location (shader, "a_texcoord");
 
   gl->ActiveTexture (GL_TEXTURE0);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
+  gl->BindTexture (GL_TEXTURE_2D, gst_gl_memory_get_texture_id (in_tex));
 
-  gst_gl_filter_draw_texture (filter, texture, width, height);
+  gst_gl_filter_draw_fullscreen_quad (filter);
 
   gst_object_unref (shader);
+
+  return TRUE;
 }
diff --git a/ext/gl/gstglimagesink.c b/ext/gl/gstglimagesink.c
index 14ddeee..385e3e4 100644
--- a/ext/gl/gstglimagesink.c
+++ b/ext/gl/gstglimagesink.c
@@ -94,10 +94,6 @@
 #include "gstglimagesink.h"
 #include "gstglsinkbin.h"
 
-#if GST_GL_HAVE_PLATFORM_EGL
-#include <gst/gl/egl/gsteglimagememory.h>
-#endif
-
 #include <gst/gl/gstglviewconvert.h>
 
 GST_DEBUG_CATEGORY (gst_debug_glimage_sink);
@@ -120,6 +116,7 @@
 enum
 {
   PROP_BIN_0,
+  PROP_BIN_ROTATE_METHOD,
   PROP_BIN_FORCE_ASPECT_RATIO,
   PROP_BIN_PIXEL_ASPECT_RATIO,
   PROP_BIN_HANDLE_EVENTS,
@@ -181,6 +178,39 @@
   return ret;
 }
 
+#define DEFAULT_ROTATE_METHOD GST_GL_ROTATE_METHOD_IDENTITY
+
+#define GST_TYPE_GL_ROTATE_METHOD (gst_gl_rotate_method_get_type())
+
+static const GEnumValue rotate_methods[] = {
+  {GST_GL_ROTATE_METHOD_IDENTITY, "Identity (no rotation)", "none"},
+  {GST_GL_ROTATE_METHOD_90R, "Rotate clockwise 90 degrees", "clockwise"},
+  {GST_GL_ROTATE_METHOD_180, "Rotate 180 degrees", "rotate-180"},
+  {GST_GL_ROTATE_METHOD_90L, "Rotate counter-clockwise 90 degrees",
+      "counterclockwise"},
+  {GST_GL_ROTATE_METHOD_FLIP_HORIZ, "Flip horizontally", "horizontal-flip"},
+  {GST_GL_ROTATE_METHOD_FLIP_VERT, "Flip vertically", "vertical-flip"},
+  {GST_GL_ROTATE_METHOD_FLIP_UL_LR,
+      "Flip across upper left/lower right diagonal", "upper-left-diagonal"},
+  {GST_GL_ROTATE_METHOD_FLIP_UR_LL,
+      "Flip across upper right/lower left diagonal", "upper-right-diagonal"},
+  {GST_GL_ROTATE_METHOD_AUTO,
+      "Select rotate method based on image-orientation tag", "automatic"},
+  {0, NULL, NULL},
+};
+
+static GType
+gst_gl_rotate_method_get_type (void)
+{
+  static GType rotate_method_type = 0;
+
+  if (!rotate_method_type) {
+    rotate_method_type = g_enum_register_static ("GstGLRotateMethod",
+        rotate_methods);
+  }
+  return rotate_method_type;
+}
+
 static void
 gst_gl_image_sink_bin_init (GstGLImageSinkBin * self)
 {
@@ -203,6 +233,12 @@
   gobject_class->set_property = gst_gl_image_sink_bin_set_property;
 
   /* gl sink */
+  g_object_class_install_property (gobject_class, PROP_BIN_ROTATE_METHOD,
+      g_param_spec_enum ("rotate-method",
+          "rotate method",
+          "rotate method",
+          GST_TYPE_GL_ROTATE_METHOD, DEFAULT_ROTATE_METHOD,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (gobject_class, PROP_BIN_FORCE_ASPECT_RATIO,
       g_param_spec_boolean ("force-aspect-ratio",
           "Force aspect ratio",
@@ -291,6 +327,7 @@
 static void gst_glimage_sink_get_property (GObject * object, guint prop_id,
     GValue * value, GParamSpec * param_spec);
 
+static gboolean gst_glimage_sink_event (GstBaseSink * sink, GstEvent * event);
 static gboolean gst_glimage_sink_query (GstBaseSink * bsink, GstQuery * query);
 static void gst_glimage_sink_set_context (GstElement * element,
     GstContext * context);
@@ -347,6 +384,7 @@
 {
   ARG_0,
   ARG_DISPLAY,
+  PROP_ROTATE_METHOD,
   PROP_FORCE_ASPECT_RATIO,
   PROP_PIXEL_ASPECT_RATIO,
   PROP_CONTEXT,
@@ -404,6 +442,126 @@
   GST_TRACE ("transform %fx%f into %fx%f", x, y, *stream_x, *stream_y);
 }
 
+/* rotate 90 */
+static const gfloat clockwise_matrix[] = {
+  0.0f, -1.0f, 0.0f, 0.0f,
+  1.0f, 0.0f, 0.0f, 0.0f,
+  0.0f, 0.0f, 1.0f, 0.0f,
+  0.0f, 0.0f, 0.0f, 1.0f,
+};
+
+/* rotate 180 */
+static const gfloat clockwise_180_matrix[] = {
+  -1.0f, 0.0f, 0.0f, 0.0f,
+  0.0f, -1.0f, 0.0f, 0.0f,
+  0.0f, 0.0f, 1.0f, 0.0f,
+  0.0f, 0.0f, 0.0f, 1.0f,
+};
+
+/* rotate 270 */
+static const gfloat counterclockwise_matrix[] = {
+  0.0f, 1.0f, 0.0f, 0.0f,
+  -1.0f, 0.0f, 0.0f, 0.0f,
+  0.0f, 0.0f, 1.0f, 0.0f,
+  0.0f, 0.0f, 0.0f, 1.0f,
+};
+
+/* horizontal-flip */
+static const gfloat horizontal_flip_matrix[] = {
+  -1.0f, 0.0f, 0.0f, 0.0f,
+  0.0f, 1.0f, 0.0f, 0.0f,
+  0.0f, 0.0f, 1.0f, 0.0f,
+  0.0f, 0.0f, 0.0f, 1.0f,
+};
+
+/* vertical-flip */
+static const gfloat vertical_flip_matrix[] = {
+  1.0f, 0.0f, 0.0f, 0.0f,
+  0.0f, -1.0f, 0.0f, 0.0f,
+  0.0f, 0.0f, 1.0f, 0.0f,
+  0.0f, 0.0f, 0.0f, 1.0f,
+};
+
+/* upper-left-diagonal */
+static const gfloat upper_left_matrix[] = {
+  0.0f, 1.0f, 0.0f, 0.0f,
+  1.0f, 0.0f, 0.0f, 0.0f,
+  0.0f, 0.0f, 1.0f, 0.0f,
+  0.0f, 0.0f, 0.0f, 1.0f,
+};
+
+/* upper-right-diagonal */
+static const gfloat upper_right_matrix[] = {
+  0.0f, -1.0f, 0.0f, 0.0f,
+  -1.0f, 0.0f, 0.0f, 0.0f,
+  0.0f, 0.0f, 1.0f, 0.0f,
+  0.0f, 0.0f, 0.0f, 1.0f,
+};
+
+static void
+gst_glimage_sink_set_rotate_method (GstGLImageSink * gl_sink,
+    GstGLRotateMethod method, gboolean from_tag)
+{
+  GstGLRotateMethod tag_method = DEFAULT_ROTATE_METHOD;
+  GST_GLIMAGE_SINK_LOCK (gl_sink);
+  if (from_tag)
+    tag_method = method;
+  else
+    gl_sink->rotate_method = method;
+
+  if (gl_sink->rotate_method == GST_GL_ROTATE_METHOD_AUTO)
+    method = tag_method;
+  else
+    method = gl_sink->rotate_method;
+
+  if (method != gl_sink->current_rotate_method) {
+    GST_DEBUG_OBJECT (gl_sink, "Changing method from %s to %s",
+        rotate_methods[gl_sink->current_rotate_method].value_nick,
+        rotate_methods[method].value_nick);
+
+    switch (method) {
+      case GST_GL_ROTATE_METHOD_IDENTITY:
+        gl_sink->transform_matrix = NULL;
+        gl_sink->output_mode_changed = TRUE;
+        break;
+      case GST_GL_ROTATE_METHOD_90R:
+        gl_sink->transform_matrix = clockwise_matrix;
+        gl_sink->output_mode_changed = TRUE;
+        break;
+      case GST_GL_ROTATE_METHOD_180:
+        gl_sink->transform_matrix = clockwise_180_matrix;
+        gl_sink->output_mode_changed = TRUE;
+        break;
+      case GST_GL_ROTATE_METHOD_90L:
+        gl_sink->transform_matrix = counterclockwise_matrix;
+        gl_sink->output_mode_changed = TRUE;
+        break;
+      case GST_GL_ROTATE_METHOD_FLIP_HORIZ:
+        gl_sink->transform_matrix = horizontal_flip_matrix;
+        gl_sink->output_mode_changed = TRUE;
+        break;
+      case GST_GL_ROTATE_METHOD_FLIP_VERT:
+        gl_sink->transform_matrix = vertical_flip_matrix;
+        gl_sink->output_mode_changed = TRUE;
+        break;
+      case GST_GL_ROTATE_METHOD_FLIP_UL_LR:
+        gl_sink->transform_matrix = upper_left_matrix;
+        gl_sink->output_mode_changed = TRUE;
+        break;
+      case GST_GL_ROTATE_METHOD_FLIP_UR_LL:
+        gl_sink->transform_matrix = upper_right_matrix;
+        gl_sink->output_mode_changed = TRUE;
+        break;
+      default:
+        g_assert_not_reached ();
+        break;
+    }
+
+    gl_sink->current_rotate_method = method;
+  }
+  GST_GLIMAGE_SINK_UNLOCK (gl_sink);
+}
+
 static void
 gst_glimage_sink_navigation_send_event (GstNavigation * navigation, GstStructure
     * structure)
@@ -485,6 +643,13 @@
   gobject_class->set_property = gst_glimage_sink_set_property;
   gobject_class->get_property = gst_glimage_sink_get_property;
 
+  g_object_class_install_property (gobject_class, PROP_ROTATE_METHOD,
+      g_param_spec_enum ("rotate-method",
+          "rotate method",
+          "rotate method",
+          GST_TYPE_GL_ROTATE_METHOD, DEFAULT_ROTATE_METHOD,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
   g_object_class_install_property (gobject_class, PROP_FORCE_ASPECT_RATIO,
       g_param_spec_boolean ("force-aspect-ratio", "Force aspect ratio",
           "When enabled, scaling will respect original aspect ratio",
@@ -570,13 +735,14 @@
       G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_generic,
       G_TYPE_BOOLEAN, 3, GST_GL_TYPE_CONTEXT, G_TYPE_UINT, G_TYPE_UINT);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_glimage_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_glimage_sink_template);
 
   gobject_class->finalize = gst_glimage_sink_finalize;
 
   gstelement_class->change_state = gst_glimage_sink_change_state;
   gstelement_class->set_context = gst_glimage_sink_set_context;
+  gstbasesink_class->event = gst_glimage_sink_event;
   gstbasesink_class->query = GST_DEBUG_FUNCPTR (gst_glimage_sink_query);
   gstbasesink_class->set_caps = gst_glimage_sink_set_caps;
   gstbasesink_class->get_caps = gst_glimage_sink_get_caps;
@@ -606,6 +772,9 @@
   glimage_sink->mview_output_flags = DEFAULT_MULTIVIEW_FLAGS;
   glimage_sink->mview_downmix_mode = DEFAULT_MULTIVIEW_DOWNMIX;
 
+  glimage_sink->current_rotate_method = DEFAULT_ROTATE_METHOD;
+  glimage_sink->transform_matrix = NULL;
+
   g_mutex_init (&glimage_sink->drawing_lock);
 }
 
@@ -620,6 +789,10 @@
   glimage_sink = GST_GLIMAGE_SINK (object);
 
   switch (prop_id) {
+    case PROP_ROTATE_METHOD:
+      gst_glimage_sink_set_rotate_method (glimage_sink,
+          g_value_get_enum (value), FALSE);
+      break;
     case PROP_FORCE_ASPECT_RATIO:
     {
       glimage_sink->keep_aspect_ratio = g_value_get_boolean (value);
@@ -687,6 +860,9 @@
   glimage_sink = GST_GLIMAGE_SINK (object);
 
   switch (prop_id) {
+    case PROP_ROTATE_METHOD:
+      g_value_set_enum (value, glimage_sink->current_rotate_method);
+      break;
     case PROP_FORCE_ASPECT_RATIO:
       g_value_set_boolean (value, glimage_sink->keep_aspect_ratio);
       break;
@@ -844,6 +1020,58 @@
 }
 
 static gboolean
+gst_glimage_sink_event (GstBaseSink * sink, GstEvent * event)
+{
+  GstGLImageSink *gl_sink = GST_GLIMAGE_SINK (sink);
+  GstTagList *taglist;
+  gchar *orientation;
+  gboolean ret;
+
+  GST_DEBUG_OBJECT (gl_sink, "handling %s event", GST_EVENT_TYPE_NAME (event));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_TAG:
+      gst_event_parse_tag (event, &taglist);
+
+      if (gst_tag_list_get_string (taglist, "image-orientation", &orientation)) {
+        if (!g_strcmp0 ("rotate-0", orientation))
+          gst_glimage_sink_set_rotate_method (gl_sink,
+              GST_GL_ROTATE_METHOD_IDENTITY, TRUE);
+        else if (!g_strcmp0 ("rotate-90", orientation))
+          gst_glimage_sink_set_rotate_method (gl_sink, GST_GL_ROTATE_METHOD_90R,
+              TRUE);
+        else if (!g_strcmp0 ("rotate-180", orientation))
+          gst_glimage_sink_set_rotate_method (gl_sink, GST_GL_ROTATE_METHOD_180,
+              TRUE);
+        else if (!g_strcmp0 ("rotate-270", orientation))
+          gst_glimage_sink_set_rotate_method (gl_sink, GST_GL_ROTATE_METHOD_90L,
+              TRUE);
+        else if (!g_strcmp0 ("flip-rotate-0", orientation))
+          gst_glimage_sink_set_rotate_method (gl_sink,
+              GST_GL_ROTATE_METHOD_FLIP_HORIZ, TRUE);
+        else if (!g_strcmp0 ("flip-rotate-90", orientation))
+          gst_glimage_sink_set_rotate_method (gl_sink,
+              GST_GL_ROTATE_METHOD_FLIP_UR_LL, TRUE);
+        else if (!g_strcmp0 ("flip-rotate-180", orientation))
+          gst_glimage_sink_set_rotate_method (gl_sink,
+              GST_GL_ROTATE_METHOD_FLIP_VERT, TRUE);
+        else if (!g_strcmp0 ("flip-rotate-270", orientation))
+          gst_glimage_sink_set_rotate_method (gl_sink,
+              GST_GL_ROTATE_METHOD_FLIP_UL_LR, TRUE);
+
+        g_free (orientation);
+      }
+      break;
+    default:
+      break;
+  }
+
+  ret = GST_BASE_SINK_CLASS (parent_class)->event (sink, event);
+
+  return ret;
+}
+
+static gboolean
 gst_glimage_sink_query (GstBaseSink * bsink, GstQuery * query)
 {
   GstGLImageSink *glimage_sink = GST_GLIMAGE_SINK (bsink);
@@ -1549,7 +1777,7 @@
 
   if (g_atomic_int_get (&glimage_sink->to_quit) != 0) {
     GST_ELEMENT_ERROR (glimage_sink, RESOURCE, NOT_FOUND,
-        ("%s", gst_gl_context_get_error ()), (NULL));
+        ("%s", "Quit requested"), (NULL));
     return GST_FLOW_ERROR;
   }
 
@@ -1559,7 +1787,7 @@
 redisplay_failed:
   {
     GST_ELEMENT_ERROR (glimage_sink, RESOURCE, NOT_FOUND,
-        ("%s", gst_gl_context_get_error ()), (NULL));
+        ("%s", "Window redisplay failed"), (NULL));
     return GST_FLOW_ERROR;
   }
 }
@@ -1702,6 +1930,8 @@
 
   gst_query_add_allocation_meta (query,
       GST_VIDEO_OVERLAY_COMPOSITION_META_API_TYPE, allocation_meta);
+  gst_query_add_allocation_meta (query,
+      GST_VIDEO_AFFINE_TRANSFORMATION_META_API_TYPE, 0);
 
   if (allocation_meta)
     gst_structure_free (allocation_meta);
@@ -1777,17 +2007,16 @@
   GError *error = NULL;
   GstGLSLStage *frag_stage, *vert_stage;
 
+  vert_stage = gst_glsl_stage_new_with_string (gl_sink->context,
+      GL_VERTEX_SHADER, GST_GLSL_VERSION_NONE,
+      GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+      gst_gl_shader_string_vertex_mat4_vertex_transform);
   if (gl_sink->texture_target == GST_GL_TEXTURE_TARGET_EXTERNAL_OES) {
-    vert_stage = gst_glsl_stage_new_with_string (gl_sink->context,
-        GL_VERTEX_SHADER, GST_GLSL_VERSION_NONE,
-        GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
-        gst_gl_shader_string_vertex_mat4_texture_transform);
     frag_stage = gst_glsl_stage_new_with_string (gl_sink->context,
         GL_FRAGMENT_SHADER, GST_GLSL_VERSION_NONE,
         GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
         gst_gl_shader_string_fragment_external_oes_default);
   } else {
-    vert_stage = gst_glsl_stage_new_default_vertex (gl_sink->context);
     frag_stage = gst_glsl_stage_new_default_fragment (gl_sink->context);
   }
   if (!vert_stage || !frag_stage) {
@@ -1913,8 +2142,17 @@
 
       src.x = 0;
       src.y = 0;
-      src.w = GST_VIDEO_SINK_WIDTH (gl_sink);
-      src.h = GST_VIDEO_SINK_HEIGHT (gl_sink);
+      if (gl_sink->current_rotate_method == GST_GL_ROTATE_METHOD_90R
+          || gl_sink->current_rotate_method == GST_GL_ROTATE_METHOD_90L
+          || gl_sink->current_rotate_method == GST_GL_ROTATE_METHOD_FLIP_UL_LR
+          || gl_sink->current_rotate_method ==
+          GST_GL_ROTATE_METHOD_FLIP_UR_LL) {
+        src.h = GST_VIDEO_SINK_WIDTH (gl_sink);
+        src.w = GST_VIDEO_SINK_HEIGHT (gl_sink);
+      } else {
+        src.w = GST_VIDEO_SINK_WIDTH (gl_sink);
+        src.h = GST_VIDEO_SINK_HEIGHT (gl_sink);
+      }
 
       dst.x = 0;
       dst.y = 0;
@@ -1944,13 +2182,6 @@
   GST_GLIMAGE_SINK_UNLOCK (gl_sink);
 }
 
-static const gfloat identity_matrix[] = {
-  1.0f, 0.0f, 0.0, 0.0f,
-  0.0f, 1.0f, 0.0, 0.0f,
-  0.0f, 0.0f, 1.0, 0.0f,
-  0.0f, 0.0f, 0.0, 1.0f,
-};
-
 static void
 gst_glimage_sink_on_draw (GstGLImageSink * gl_sink)
 {
@@ -2031,18 +2262,21 @@
     gl->ActiveTexture (GL_TEXTURE0);
     gl->BindTexture (gl_target, gl_sink->redisplay_texture);
     gst_gl_shader_set_uniform_1i (gl_sink->redisplay_shader, "tex", 0);
-    if (gl_sink->texture_target == GST_GL_TEXTURE_TARGET_EXTERNAL_OES) {
+    {
       GstVideoAffineTransformationMeta *af_meta;
+      gfloat matrix[16];
 
       af_meta =
           gst_buffer_get_video_affine_transformation_meta
           (gl_sink->stored_buffer[0]);
-      if (af_meta)
-        gst_gl_shader_set_uniform_matrix_4fv (gl_sink->redisplay_shader,
-            "u_transformation", 1, FALSE, af_meta->matrix);
-      else
-        gst_gl_shader_set_uniform_matrix_4fv (gl_sink->redisplay_shader,
-            "u_transformation", 1, FALSE, identity_matrix);
+
+      gst_gl_get_affine_transformation_meta_as_ndc (af_meta, matrix);
+
+      if (gl_sink->transform_matrix)
+        gst_gl_multiply_matrix4 (gl_sink->transform_matrix, matrix, matrix);
+
+      gst_gl_shader_set_uniform_matrix_4fv (gl_sink->redisplay_shader,
+          "u_transformation", 1, FALSE, matrix);
     }
 
     gl->DrawElements (GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, 0);
@@ -2072,7 +2306,7 @@
 {
   GstGLWindow *window;
 
-  gst_gl_context_set_error (gl_sink->context, "Output window was closed");
+  GST_WARNING_OBJECT (gl_sink, "Output window was closed");
 
   window = gst_gl_context_get_window (gl_sink->context);
 
diff --git a/ext/gl/gstglimagesink.h b/ext/gl/gstglimagesink.h
index 6e9b98e..8833103 100644
--- a/ext/gl/gstglimagesink.h
+++ b/ext/gl/gstglimagesink.h
@@ -44,6 +44,19 @@
 #define GST_IS_GLIMAGE_SINK_CLASS(klass) \
     (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_GLIMAGE_SINK))
 
+typedef enum
+{
+  GST_GL_ROTATE_METHOD_IDENTITY,
+  GST_GL_ROTATE_METHOD_90R,
+  GST_GL_ROTATE_METHOD_180,
+  GST_GL_ROTATE_METHOD_90L,
+  GST_GL_ROTATE_METHOD_FLIP_HORIZ,
+  GST_GL_ROTATE_METHOD_FLIP_VERT,
+  GST_GL_ROTATE_METHOD_FLIP_UL_LR,
+  GST_GL_ROTATE_METHOD_FLIP_UR_LL,
+  GST_GL_ROTATE_METHOD_AUTO,
+}GstGLRotateMethod;
+
 typedef struct _GstGLImageSink GstGLImageSink;
 typedef struct _GstGLImageSinkClass GstGLImageSinkClass;
 
@@ -122,6 +135,11 @@
     GstGLStereoDownmix mview_downmix_mode;
 
     GstGLOverlayCompositor *overlay_compositor;
+
+    /* current video flip method */
+    GstGLRotateMethod current_rotate_method;
+    GstGLRotateMethod rotate_method;
+    const gfloat *transform_matrix;
 };
 
 struct _GstGLImageSinkClass
diff --git a/ext/gl/gstglmixer.c b/ext/gl/gstglmixer.c
index 5ca1316..3fc5aa6 100644
--- a/ext/gl/gstglmixer.c
+++ b/ext/gl/gstglmixer.c
@@ -28,10 +28,6 @@
 
 #include "gstglmixer.h"
 
-#if GST_GL_HAVE_PLATFORM_EGL
-#include <gst/gl/egl/gsteglimagememory.h>
-#endif
-
 #define gst_gl_mixer_parent_class parent_class
 G_DEFINE_ABSTRACT_TYPE (GstGLMixer, gst_gl_mixer, GST_TYPE_GL_BASE_MIXER);
 
@@ -380,10 +376,8 @@
   gobject_class->get_property = gst_gl_mixer_get_property;
   gobject_class->set_property = gst_gl_mixer_set_property;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
 
   agg_class->sinkpads_type = GST_TYPE_GL_MIXER_PAD;
   agg_class->sink_query = gst_gl_mixer_sink_query;
@@ -416,8 +410,6 @@
 gst_gl_mixer_init (GstGLMixer * mix)
 {
   mix->priv = GST_GL_MIXER_GET_PRIVATE (mix);
-  mix->fbo = 0;
-  mix->depthbuffer = 0;
 
   mix->priv->gl_resource_ready = FALSE;
   g_mutex_init (&mix->priv->gl_resource_lock);
@@ -518,33 +510,38 @@
   return ret;
 }
 
+static void
+_mixer_create_fbo (GstGLContext * context, GstGLMixer * mix)
+{
+  GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (mix);
+  guint out_width = GST_VIDEO_INFO_WIDTH (&vagg->info);
+  guint out_height = GST_VIDEO_INFO_HEIGHT (&vagg->info);
+
+  mix->fbo =
+      gst_gl_framebuffer_new_with_default_depth (context, out_width,
+      out_height);
+}
+
 static gboolean
 gst_gl_mixer_decide_allocation (GstGLBaseMixer * base_mix, GstQuery * query)
 {
   GstGLMixer *mix = GST_GL_MIXER (base_mix);
   GstGLMixerClass *mixer_class = GST_GL_MIXER_GET_CLASS (mix);
-  GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (mix);
   GstGLContext *context = base_mix->context;
   GstBufferPool *pool = NULL;
   GstStructure *config;
   GstCaps *caps;
   guint min, max, size;
   gboolean update_pool;
-  guint out_width, out_height;
-
-  out_width = GST_VIDEO_INFO_WIDTH (&vagg->info);
-  out_height = GST_VIDEO_INFO_HEIGHT (&vagg->info);
 
   g_mutex_lock (&mix->priv->gl_resource_lock);
   mix->priv->gl_resource_ready = FALSE;
-  if (mix->fbo) {
-    gst_gl_context_del_fbo (context, mix->fbo, mix->depthbuffer);
-    mix->fbo = 0;
-    mix->depthbuffer = 0;
-  }
+  if (mix->fbo)
+    gst_object_unref (mix->fbo);
 
-  if (!gst_gl_context_gen_fbo (context, out_width, out_height,
-          &mix->fbo, &mix->depthbuffer)) {
+  gst_gl_context_thread_add (context,
+      (GstGLContextThreadFunc) _mixer_create_fbo, mix);
+  if (!mix->fbo) {
     g_cond_signal (&mix->priv->gl_resource_cond);
     g_mutex_unlock (&mix->priv->gl_resource_lock);
     goto context_error;
@@ -606,6 +603,7 @@
   GstGLMixerPad *pad = GST_GL_MIXER_PAD (agg_pad);
   GstGLMixer *mix = GST_GL_MIXER (agg);
 
+  pad->current_texture = 0;
   if (vaggpad->buffer != NULL) {
     GstVideoInfo gl_info;
     GstVideoFrame gl_frame;
@@ -636,7 +634,7 @@
 gboolean
 gst_gl_mixer_process_textures (GstGLMixer * mix, GstBuffer * outbuf)
 {
-  guint out_tex;
+  GstGLMemory *out_tex;
   gboolean res = TRUE;
   GstVideoFrame out_frame;
   GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (mix);
@@ -650,7 +648,7 @@
     return FALSE;
   }
 
-  out_tex = *(guint *) out_frame.data[0];
+  out_tex = (GstGLMemory *) out_frame.map[0].memory;
 
   if (!gst_aggregator_iterate_sinkpads (GST_AGGREGATOR (mix),
           (GstAggregatorPadForeachFunc) _upload_frames, NULL))
@@ -740,14 +738,13 @@
 {
   GstGLMixer *mix = GST_GL_MIXER (agg);
   GstGLMixerClass *mixer_class = GST_GL_MIXER_GET_CLASS (mix);
-  GstGLContext *context = GST_GL_BASE_MIXER (mix)->context;
 
   if (mixer_class->reset)
     mixer_class->reset (mix);
+
   if (mix->fbo) {
-    gst_gl_context_del_fbo (context, mix->fbo, mix->depthbuffer);
-    mix->fbo = 0;
-    mix->depthbuffer = 0;
+    gst_object_unref (mix->fbo);
+    mix->fbo = NULL;
   }
 
   gst_gl_mixer_reset (mix);
diff --git a/ext/gl/gstglmixer.h b/ext/gl/gstglmixer.h
index 81976a7..309f6bb 100644
--- a/ext/gl/gstglmixer.h
+++ b/ext/gl/gstglmixer.h
@@ -78,14 +78,13 @@
   GstCaps* outcaps);
 typedef void (*GstGLMixerReset) (GstGLMixer *mixer);
 typedef gboolean (*GstGLMixerProcessFunc) (GstGLMixer *mix, GstBuffer *outbuf);
-typedef gboolean (*GstGLMixerProcessTextures) (GstGLMixer *mix, guint out_tex);
+typedef gboolean (*GstGLMixerProcessTextures) (GstGLMixer *mix, GstGLMemory *out_tex);
 
 struct _GstGLMixer
 {
   GstGLBaseMixer vaggregator;
 
-  GLuint fbo;
-  GLuint depthbuffer;
+  GstGLFramebuffer *fbo;
 
   GstCaps *out_caps;
 
diff --git a/ext/gl/gstglmixerbin.c b/ext/gl/gstglmixerbin.c
index 6f83f82..1e6ebeb 100644
--- a/ext/gl/gstglmixerbin.c
+++ b/ext/gl/gstglmixerbin.c
@@ -31,6 +31,36 @@
 GST_DEBUG_CATEGORY (gst_gl_mixer_bin_debug);
 
 #define DEFAULT_LATENCY        0
+#define DEFAULT_START_TIME_SELECTION 0
+#define DEFAULT_START_TIME           (-1)
+
+typedef enum
+{
+  GST_GL_MIXER_BIN_START_TIME_SELECTION_ZERO,
+  GST_GL_MIXER_BIN_START_TIME_SELECTION_FIRST,
+  GST_GL_MIXER_BIN_START_TIME_SELECTION_SET
+} GstGLMixerBinStartTimeSelection;
+
+static GType
+gst_gl_mixer_bin_start_time_selection_get_type (void)
+{
+  static GType gtype = 0;
+
+  if (gtype == 0) {
+    static const GEnumValue values[] = {
+      {GST_GL_MIXER_BIN_START_TIME_SELECTION_ZERO,
+          "Start at 0 running time (default)", "zero"},
+      {GST_GL_MIXER_BIN_START_TIME_SELECTION_FIRST,
+          "Start at first observed input running time", "first"},
+      {GST_GL_MIXER_BIN_START_TIME_SELECTION_SET,
+          "Set start time with start-time property", "set"},
+      {0, NULL, NULL}
+    };
+
+    gtype = g_enum_register_static ("GstGLMixerBinStartTimeSelection", values);
+  }
+  return gtype;
+}
 
 struct input_chain
 {
@@ -82,6 +112,8 @@
   PROP_0,
   PROP_MIXER,
   PROP_LATENCY,
+  PROP_START_TIME_SELECTION,
+  PROP_START_TIME,
 };
 
 enum
@@ -156,6 +188,19 @@
           (G_MAXLONG == G_MAXINT64) ? G_MAXINT64 : (G_MAXLONG * GST_SECOND - 1),
           DEFAULT_LATENCY, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
+  g_object_class_install_property (gobject_class, PROP_START_TIME_SELECTION,
+      g_param_spec_enum ("start-time-selection", "Start Time Selection",
+          "Decides which start time is output",
+          gst_gl_mixer_bin_start_time_selection_get_type (),
+          DEFAULT_START_TIME_SELECTION,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, PROP_START_TIME,
+      g_param_spec_uint64 ("start-time", "Start Time",
+          "Start time to use if start-time-selection=set", 0,
+          G_MAXUINT64,
+          DEFAULT_START_TIME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
   /**
    * GstMixerBin::create-element:
    * @object: the #GstGLMixerBin
@@ -169,8 +214,7 @@
       G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_generic,
       GST_TYPE_ELEMENT, 0);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
 
   upload_caps = gst_gl_upload_get_input_template_caps ();
   gst_element_class_add_pad_template (element_class,
diff --git a/ext/gl/gstglmosaic.c b/ext/gl/gstglmosaic.c
index bcf3833..41441b0 100644
--- a/ext/gl/gstglmosaic.c
+++ b/ext/gl/gstglmosaic.c
@@ -70,8 +70,8 @@
     GstCaps * outcaps);
 
 static gboolean gst_gl_mosaic_process_textures (GstGLMixer * mixer,
-    guint out_tex);
-static void gst_gl_mosaic_callback (gpointer stuff);
+    GstGLMemory * out_tex);
+static gboolean gst_gl_mosaic_callback (gpointer stuff);
 
 //vertex source
 static const gchar *mosaic_v_src =
@@ -193,22 +193,31 @@
       mosaic_v_src, mosaic_f_src, &mosaic->shader);
 }
 
+static void
+_mosaic_render (GstGLContext * context, GstGLMosaic * mosaic)
+{
+  GstGLMixer *mixer = GST_GL_MIXER (mosaic);
+
+  gst_gl_framebuffer_draw_to_texture (mixer->fbo, mosaic->out_tex,
+      gst_gl_mosaic_callback, mosaic);
+}
+
 static gboolean
-gst_gl_mosaic_process_textures (GstGLMixer * mix, guint out_tex)
+gst_gl_mosaic_process_textures (GstGLMixer * mix, GstGLMemory * out_tex)
 {
   GstGLMosaic *mosaic = GST_GL_MOSAIC (mix);
+  GstGLContext *context = GST_GL_BASE_MIXER (mix)->context;
 
-  //blocking call, use a FBO
-  gst_gl_context_use_fbo_v2 (GST_GL_BASE_MIXER (mix)->context,
-      GST_VIDEO_INFO_WIDTH (&GST_VIDEO_AGGREGATOR (mix)->info),
-      GST_VIDEO_INFO_HEIGHT (&GST_VIDEO_AGGREGATOR (mix)->info), mix->fbo,
-      mix->depthbuffer, out_tex, gst_gl_mosaic_callback, (gpointer) mosaic);
+  mosaic->out_tex = out_tex;
+
+  gst_gl_context_thread_add (context, (GstGLContextThreadFunc) _mosaic_render,
+      mosaic);
 
   return TRUE;
 }
 
 /* opengl scene, params: input texture (not the output mixer->texture) */
-static void
+static gboolean
 gst_gl_mosaic_callback (gpointer stuff)
 {
   GstGLMosaic *mosaic = GST_GL_MOSAIC (stuff);
@@ -344,4 +353,6 @@
   xrot += 0.6f;
   yrot += 0.4f;
   zrot += 0.8f;
+
+  return TRUE;
 }
diff --git a/ext/gl/gstglmosaic.h b/ext/gl/gstglmosaic.h
index e0b340c..40f5d6c 100644
--- a/ext/gl/gstglmosaic.h
+++ b/ext/gl/gstglmosaic.h
@@ -40,6 +40,7 @@
     GstGLMixer mixer;
 
     GstGLShader *shader;
+    GstGLMemory *out_tex;
 };
 
 struct _GstGLMosaicClass
diff --git a/ext/gl/gstgloverlay.c b/ext/gl/gstgloverlay.c
index fa6c6c1..e7b4c0a 100644
--- a/ext/gl/gstgloverlay.c
+++ b/ext/gl/gstgloverlay.c
@@ -72,7 +72,7 @@
 static void gst_gl_overlay_before_transform (GstBaseTransform * trans,
     GstBuffer * outbuf);
 static gboolean gst_gl_overlay_filter_texture (GstGLFilter * filter,
-    guint in_tex, guint out_tex);
+    GstGLMemory * in_tex, GstGLMemory * out_tex);
 
 static gboolean gst_gl_overlay_load_png (GstGLOverlay * overlay, FILE * fp);
 static gboolean gst_gl_overlay_load_jpeg (GstGLOverlay * overlay, FILE * fp);
@@ -372,29 +372,31 @@
 static void
 _unbind_buffer (GstGLOverlay * overlay)
 {
+  GstGLFilter *filter = GST_GL_FILTER (overlay);
   const GstGLFuncs *gl = GST_GL_BASE_FILTER (overlay)->context->gl_vtable;
 
   gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, 0);
   gl->BindBuffer (GL_ARRAY_BUFFER, 0);
 
-  gl->DisableVertexAttribArray (overlay->attr_position);
-  gl->DisableVertexAttribArray (overlay->attr_texture);
+  gl->DisableVertexAttribArray (filter->draw_attr_position_loc);
+  gl->DisableVertexAttribArray (filter->draw_attr_texture_loc);
 }
 
 static void
 _bind_buffer (GstGLOverlay * overlay, GLuint vbo)
 {
+  GstGLFilter *filter = GST_GL_FILTER (overlay);
   const GstGLFuncs *gl = GST_GL_BASE_FILTER (overlay)->context->gl_vtable;
 
   gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, overlay->vbo_indices);
   gl->BindBuffer (GL_ARRAY_BUFFER, vbo);
 
-  gl->EnableVertexAttribArray (overlay->attr_position);
-  gl->EnableVertexAttribArray (overlay->attr_texture);
+  gl->EnableVertexAttribArray (filter->draw_attr_position_loc);
+  gl->EnableVertexAttribArray (filter->draw_attr_texture_loc);
 
-  gl->VertexAttribPointer (overlay->attr_position, 3, GL_FLOAT,
+  gl->VertexAttribPointer (filter->draw_attr_position_loc, 3, GL_FLOAT,
       GL_FALSE, 5 * sizeof (GLfloat), (void *) 0);
-  gl->VertexAttribPointer (overlay->attr_texture, 2, GL_FLOAT,
+  gl->VertexAttribPointer (filter->draw_attr_texture_loc, 2, GL_FLOAT,
       GL_FALSE, 5 * sizeof (GLfloat), (void *) (3 * sizeof (GLfloat)));
 }
 
@@ -410,15 +412,16 @@
 static const GLushort indices[] = { 0, 1, 2, 0, 2, 3, };
 /* *INDENT-ON* */
 
-static void
-gst_gl_overlay_callback (gint width, gint height, guint texture, gpointer stuff)
+static gboolean
+gst_gl_overlay_callback (GstGLFilter * filter, GstGLMemory * in_tex,
+    gpointer stuff)
 {
-  GstGLOverlay *overlay = GST_GL_OVERLAY (stuff);
-  GstGLFilter *filter = GST_GL_FILTER (overlay);
+  GstGLOverlay *overlay = GST_GL_OVERLAY (filter);
   GstMapInfo map_info;
   guint image_tex;
   gboolean memory_mapped = FALSE;
   const GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
+  gboolean ret = FALSE;
 
 #if GST_GL_HAVE_OPENGL
   if (gst_gl_context_get_gl_api (GST_GL_BASE_FILTER (filter)->context) &
@@ -430,49 +433,19 @@
 #endif
 
   gl->ActiveTexture (GL_TEXTURE0);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
+  gl->BindTexture (GL_TEXTURE_2D, gst_gl_memory_get_texture_id (in_tex));
 
   gst_gl_shader_use (overlay->shader);
 
   gst_gl_shader_set_uniform_1f (overlay->shader, "alpha", 1.0f);
   gst_gl_shader_set_uniform_1i (overlay->shader, "texture", 0);
 
-  overlay->attr_position =
+  filter->draw_attr_position_loc =
       gst_gl_shader_get_attribute_location (overlay->shader, "a_position");
-  overlay->attr_texture =
+  filter->draw_attr_texture_loc =
       gst_gl_shader_get_attribute_location (overlay->shader, "a_texcoord");
 
-  if (!overlay->vbo) {
-    if (gl->GenVertexArrays) {
-      gl->GenVertexArrays (1, &overlay->vao);
-      gl->BindVertexArray (overlay->vao);
-    }
-
-    gl->GenBuffers (1, &overlay->vbo);
-    gl->BindBuffer (GL_ARRAY_BUFFER, overlay->vbo);
-    gl->BufferData (GL_ARRAY_BUFFER, 4 * 5 * sizeof (GLfloat), v_vertices,
-        GL_STATIC_DRAW);
-
-    gl->GenBuffers (1, &overlay->vbo_indices);
-    gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, overlay->vbo_indices);
-    gl->BufferData (GL_ELEMENT_ARRAY_BUFFER, sizeof (indices), indices,
-        GL_STATIC_DRAW);
-
-    if (gl->GenVertexArrays) {
-      _bind_buffer (overlay, overlay->vbo);
-      gl->BindVertexArray (0);
-    }
-
-    gl->BindBuffer (GL_ARRAY_BUFFER, 0);
-    gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, 0);
-  }
-
-  if (gl->GenVertexArrays)
-    gl->BindVertexArray (overlay->vao);
-  else
-    _bind_buffer (overlay, overlay->vbo);
-
-  gl->DrawElements (GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, 0);
+  gst_gl_filter_draw_fullscreen_quad (filter);
 
   if (!overlay->image_memory)
     goto out;
@@ -490,6 +463,11 @@
       gl->BindVertexArray (overlay->overlay_vao);
     }
 
+    gl->GenBuffers (1, &overlay->vbo_indices);
+    gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, overlay->vbo_indices);
+    gl->BufferData (GL_ELEMENT_ARRAY_BUFFER, sizeof (indices), indices,
+        GL_STATIC_DRAW);
+
     gl->GenBuffers (1, &overlay->overlay_vbo);
     gl->BindBuffer (GL_ARRAY_BUFFER, overlay->overlay_vbo);
     gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, overlay->vbo_indices);
@@ -553,6 +531,7 @@
   gl->DrawElements (GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, 0);
 
   gl->Disable (GL_BLEND);
+  ret = TRUE;
 
 out:
   if (gl->GenVertexArrays) {
@@ -567,6 +546,8 @@
     gst_memory_unmap ((GstMemory *) overlay->image_memory, &map_info);
 
   overlay->geometry_change = FALSE;
+
+  return ret;
 }
 
 static gboolean
@@ -624,8 +605,8 @@
 }
 
 static gboolean
-gst_gl_overlay_filter_texture (GstGLFilter * filter, guint in_tex,
-    guint out_tex)
+gst_gl_overlay_filter_texture (GstGLFilter * filter, GstGLMemory * in_tex,
+    GstGLMemory * out_tex)
 {
   GstGLOverlay *overlay = GST_GL_OVERLAY (filter);
 
@@ -641,7 +622,7 @@
     overlay->location_has_changed = FALSE;
   }
 
-  gst_gl_filter_render_to_target (filter, TRUE, in_tex, out_tex,
+  gst_gl_filter_render_to_target (filter, in_tex, out_tex,
       gst_gl_overlay_callback, overlay);
 
   return TRUE;
@@ -702,7 +683,8 @@
       (GST_GL_BASE_FILTER (overlay)->context));
   params =
       gst_gl_video_allocation_params_new (GST_GL_BASE_FILTER (overlay)->context,
-      NULL, &v_info, 0, &v_align, GST_GL_TEXTURE_TARGET_2D);
+      NULL, &v_info, 0, &v_align, GST_GL_TEXTURE_TARGET_2D,
+      GST_VIDEO_GL_TEXTURE_TYPE_RGBA);
   overlay->image_memory = (GstGLMemory *)
       gst_gl_base_memory_alloc (mem_allocator,
       (GstGLAllocationParams *) params);
@@ -817,7 +799,8 @@
       (GST_GL_BASE_FILTER (overlay)->context));
   params =
       gst_gl_video_allocation_params_new (GST_GL_BASE_FILTER (overlay)->context,
-      NULL, &v_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D);
+      NULL, &v_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D,
+      GST_VIDEO_GL_TEXTURE_TYPE_RGBA);
   overlay->image_memory = (GstGLMemory *)
       gst_gl_base_memory_alloc (mem_allocator,
       (GstGLAllocationParams *) params);
diff --git a/ext/gl/gstglsrcbin.c b/ext/gl/gstglsrcbin.c
index 9eb66d3..da74aaa 100644
--- a/ext/gl/gstglsrcbin.c
+++ b/ext/gl/gstglsrcbin.c
@@ -102,8 +102,8 @@
       "Infrastructure to process GL textures",
       "Matthew Waters <matthew@centricular.com>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_gl_src_bin_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_gl_src_bin_template);
 }
 
 static void
diff --git a/ext/gl/gstglstereomix.c b/ext/gl/gstglstereomix.c
index 989d7f6..18e7111 100644
--- a/ext/gl/gstglstereomix.c
+++ b/ext/gl/gstglstereomix.c
@@ -21,6 +21,42 @@
  * Boston, MA 02110-1301, USA.
  */
 
+/**
+ * SECTION:element-glstereomix
+ *
+ * Combine 2 input streams to produce a stereoscopic output
+ * stream. Input views are taken from the left pad and right pad
+ * respectively, and mixed according to their timelines.
+ *
+ * If either input stream is stereoscopic, the approproriate view
+ * (left or right) is taken from each stream and placed into the output.
+ *
+ * The multiview representation on the output is chosen according to
+ * the downstream caps.
+ *
+ * <refsect2>
+ * <title>Examples</title>
+ * |[
+ * gst-launch-1.0 -v videotestsrc pattern=ball name=left \
+ *     videotestsrc name=right glstereomix name=mix \
+ *     left. ! vid/x-raw,width=640,height=480! glupload ! mix.  \
+ *     right. ! video/x-raw,width=640,height=480! glupload ! mix.  \
+ *     mix. ! video/x-raw'(memory:GLMemory)',multiview-mode=side-by-side ! \
+ *     queue ! glimagesink output-multiview-mode=side-by-side
+ * ]| Mix 2 different videotestsrc patterns into a side-by-side stereo image and display it.
+ * |[
+ * gst-launch-1.0 -ev v4l2src name=left \
+ *     videotestsrc name=right \
+ *     glstereomix name=mix \
+ *     left. ! video/x-raw,width=640,height=480 ! glupload ! glcolorconvert ! mix.  \
+ *     right. ! video/x-raw,width=640,height=480 ! glupload ! mix.  \
+ *     mix. ! video/x-raw'(memory:GLMemory)',multiview-mode=top-bottom ! \
+ *     glcolorconvert ! gldownload ! queue ! x264enc ! h264parse ! \
+ *     mp4mux ! progressreport ! filesink location=output.mp4 
+ * ]| Mix the input from a camera to the left view, and videotestsrc to the right view,
+ *    and encode as a top-bottom frame packed H.264 video.
+ * </refsect2>
+ */
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -106,11 +142,6 @@
 static gboolean gst_gl_stereo_mix_src_query (GstAggregator * agg,
     GstQuery * query);
 
-static void
-gst_gl_stereo_mix_find_best_format (GstVideoAggregator * vagg,
-    GstCaps * downstream_caps, GstVideoInfo * best_info,
-    gboolean * at_least_one_alpha);
-
 static void gst_gl_stereo_mix_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec);
 static void gst_gl_stereo_mix_get_property (GObject * object, guint prop_id,
@@ -150,10 +181,8 @@
           GST_TYPE_GL_STEREO_DOWNMIX_MODE_TYPE, DEFAULT_DOWNMIX,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
 
   agg_class->sinkpads_type = GST_TYPE_GL_STEREO_MIX_PAD;
   agg_class->stop = gst_gl_stereo_mix_stop;
@@ -165,7 +194,6 @@
   videoaggregator_class->negotiated_caps = _negotiated_caps;
   videoaggregator_class->get_output_buffer =
       gst_gl_stereo_mix_get_output_buffer;
-  videoaggregator_class->find_best_format = gst_gl_stereo_mix_find_best_format;
 
   base_mix_class->supported_gl_api =
       GST_GL_API_GLES2 | GST_GL_API_OPENGL | GST_GL_API_OPENGL3;
@@ -440,13 +468,97 @@
   return result;
 }
 
-/* Return the possible output caps we decided in find_best_format() */
+/* Return the possible output caps based on inputs and downstream prefs */
 static GstCaps *
 _update_caps (GstVideoAggregator * vagg, GstCaps * caps, GstCaps * filter)
 {
   GstGLStereoMix *mix = GST_GL_STEREO_MIX (vagg);
+  GList *l;
+  gint best_width = -1, best_height = -1;
+  gdouble best_fps = -1, cur_fps;
+  gint best_fps_n = 0, best_fps_d = 1;
+  GstVideoInfo *mix_info;
+  GstCaps *blend_caps, *tmp_caps;
+  GstCaps *out_caps;
 
-  return gst_caps_ref (mix->out_caps);
+  GST_OBJECT_LOCK (vagg);
+
+  for (l = GST_ELEMENT (vagg)->sinkpads; l; l = l->next) {
+    GstVideoAggregatorPad *pad = l->data;
+    GstVideoInfo tmp = pad->info;
+    gint this_width, this_height;
+    gint fps_n, fps_d;
+
+    if (!pad->info.finfo)
+      continue;
+
+    /* This can happen if we release a pad and another pad hasn't been negotiated_caps yet */
+    if (GST_VIDEO_INFO_FORMAT (&pad->info) == GST_VIDEO_FORMAT_UNKNOWN)
+      continue;
+
+    /* Convert to per-view width/height for unpacked forms */
+    gst_video_multiview_video_info_change_mode (&tmp,
+        GST_VIDEO_MULTIVIEW_MODE_SEPARATED, GST_VIDEO_MULTIVIEW_FLAGS_NONE);
+
+    this_width = GST_VIDEO_INFO_WIDTH (&tmp);
+    this_height = GST_VIDEO_INFO_HEIGHT (&tmp);
+    fps_n = GST_VIDEO_INFO_FPS_N (&tmp);
+    fps_d = GST_VIDEO_INFO_FPS_D (&tmp);
+
+    GST_INFO_OBJECT (vagg, "Input pad %" GST_PTR_FORMAT
+        " w %u h %u", pad, this_width, this_height);
+
+    if (this_width == 0 || this_height == 0)
+      continue;
+
+    if (best_width < this_width)
+      best_width = this_width;
+    if (best_height < this_height)
+      best_height = this_height;
+
+    if (fps_d == 0)
+      cur_fps = 0.0;
+    else
+      gst_util_fraction_to_double (fps_n, fps_d, &cur_fps);
+
+    if (best_fps < cur_fps) {
+      best_fps = cur_fps;
+      best_fps_n = fps_n;
+      best_fps_d = fps_d;
+    }
+
+    /* FIXME: Preserve PAR for at least one input when different sized inputs */
+  }
+  GST_OBJECT_UNLOCK (vagg);
+
+  mix_info = &mix->mix_info;
+  gst_video_info_set_format (mix_info, GST_VIDEO_FORMAT_RGBA, best_width,
+      best_height);
+
+  GST_VIDEO_INFO_FPS_N (mix_info) = best_fps_n;
+  GST_VIDEO_INFO_FPS_D (mix_info) = best_fps_d;
+
+  GST_VIDEO_INFO_MULTIVIEW_MODE (mix_info) = GST_VIDEO_MULTIVIEW_MODE_SEPARATED;
+  GST_VIDEO_INFO_VIEWS (mix_info) = 2;
+
+  /* FIXME: If input is marked as flipped or flopped, preserve those flags */
+  GST_VIDEO_INFO_MULTIVIEW_FLAGS (mix_info) = GST_VIDEO_MULTIVIEW_FLAGS_NONE;
+
+  /* Choose our output format based on downstream preferences */
+  blend_caps = gst_video_info_to_caps (mix_info);
+
+  gst_caps_set_features (blend_caps, 0,
+      gst_caps_features_from_string (GST_CAPS_FEATURE_MEMORY_GL_MEMORY));
+
+  tmp_caps = get_converted_caps (GST_GL_STEREO_MIX (vagg), blend_caps);
+  gst_caps_unref (blend_caps);
+
+  out_caps = gst_caps_intersect (caps, tmp_caps);
+  gst_caps_unref (tmp_caps);
+
+  GST_DEBUG_OBJECT (vagg, "Possible output caps %" GST_PTR_FORMAT, out_caps);
+
+  return out_caps;
 }
 
 /* Called after videoaggregator fixates our caps */
@@ -464,8 +576,6 @@
       return FALSE;
 
   /* Update the glview_convert output */
-  if (!gst_video_info_from_caps (&mix->out_info, caps))
-    return FALSE;
 
   /* We can configure the view_converter now */
   gst_gl_view_convert_set_context (mix->viewconvert,
@@ -587,108 +697,3 @@
 
   return TRUE;
 }
-
-/* Iterate the input sink pads, and choose the blend format
- * we will generate before output conversion, which is RGBA
- * at some suitable size */
-static void
-gst_gl_stereo_mix_find_best_format (GstVideoAggregator * vagg,
-    GstCaps * downstream_caps, GstVideoInfo * best_info,
-    gboolean * at_least_one_alpha)
-{
-  GstGLStereoMix *mix = GST_GL_STEREO_MIX (vagg);
-  GList *l;
-  gint best_width = -1, best_height = -1;
-  gdouble best_fps = -1, cur_fps;
-  gint best_fps_n = 0, best_fps_d = 1;
-  GstVideoInfo *mix_info;
-  GstCaps *blend_caps, *tmp_caps;
-
-  /* We'll deal with alpha internally, so just tell aggregator to
-   * be quiet */
-  *at_least_one_alpha = FALSE;
-
-  GST_OBJECT_LOCK (vagg);
-
-  for (l = GST_ELEMENT (vagg)->sinkpads; l; l = l->next) {
-    GstVideoAggregatorPad *pad = l->data;
-    GstVideoInfo tmp = pad->info;
-    gint this_width, this_height;
-    gint fps_n, fps_d;
-
-    if (!pad->info.finfo)
-      continue;
-
-    /* This can happen if we release a pad and another pad hasn't been negotiated_caps yet */
-    if (GST_VIDEO_INFO_FORMAT (&pad->info) == GST_VIDEO_FORMAT_UNKNOWN)
-      continue;
-
-    /* Convert to per-view width/height for unpacked forms */
-    gst_video_multiview_video_info_change_mode (&tmp,
-        GST_VIDEO_MULTIVIEW_MODE_SEPARATED, GST_VIDEO_MULTIVIEW_FLAGS_NONE);
-
-    this_width = GST_VIDEO_INFO_WIDTH (&tmp);
-    this_height = GST_VIDEO_INFO_HEIGHT (&tmp);
-    fps_n = GST_VIDEO_INFO_FPS_N (&tmp);
-    fps_d = GST_VIDEO_INFO_FPS_D (&tmp);
-
-    GST_INFO_OBJECT (vagg, "Input pad %" GST_PTR_FORMAT
-        " w %u h %u", pad, this_width, this_height);
-
-    if (this_width == 0 || this_height == 0)
-      continue;
-
-    if (best_width < this_width)
-      best_width = this_width;
-    if (best_height < this_height)
-      best_height = this_height;
-
-    if (fps_d == 0)
-      cur_fps = 0.0;
-    else
-      gst_util_fraction_to_double (fps_n, fps_d, &cur_fps);
-
-    if (best_fps < cur_fps) {
-      best_fps = cur_fps;
-      best_fps_n = fps_n;
-      best_fps_d = fps_d;
-    }
-
-    /* FIXME: Preserve PAR for at least one input when different sized inputs */
-  }
-  GST_OBJECT_UNLOCK (vagg);
-
-  mix_info = &mix->mix_info;
-  gst_video_info_set_format (mix_info, GST_VIDEO_FORMAT_RGBA, best_width,
-      best_height);
-
-  GST_VIDEO_INFO_FPS_N (mix_info) = best_fps_n;
-  GST_VIDEO_INFO_FPS_D (mix_info) = best_fps_d;
-
-  GST_VIDEO_INFO_MULTIVIEW_MODE (mix_info) = GST_VIDEO_MULTIVIEW_MODE_SEPARATED;
-  GST_VIDEO_INFO_VIEWS (mix_info) = 2;
-
-  /* FIXME: If input is marked as flipped or flopped, preserve those flags */
-  GST_VIDEO_INFO_MULTIVIEW_FLAGS (mix_info) = GST_VIDEO_MULTIVIEW_FLAGS_NONE;
-
-  /* Choose our output format based on downstream preferences */
-  blend_caps = gst_video_info_to_caps (mix_info);
-
-  gst_caps_set_features (blend_caps, 0,
-      gst_caps_features_from_string (GST_CAPS_FEATURE_MEMORY_GL_MEMORY));
-
-  tmp_caps = get_converted_caps (GST_GL_STEREO_MIX (vagg), blend_caps);
-  gst_caps_unref (blend_caps);
-
-  if (mix->out_caps)
-    gst_caps_unref (mix->out_caps);
-
-  mix->out_caps = gst_caps_intersect (downstream_caps, tmp_caps);
-  gst_caps_unref (tmp_caps);
-
-  GST_DEBUG_OBJECT (vagg, "Possible output caps %" GST_PTR_FORMAT,
-      mix->out_caps);
-  /* Tell videoaggregator our preferred size. Actual info gets
-   * overridden during caps nego */
-  *best_info = *mix_info;
-}
diff --git a/ext/gl/gstglstereomix.h b/ext/gl/gstglstereomix.h
index b0f1bd2..9971a89 100644
--- a/ext/gl/gstglstereomix.h
+++ b/ext/gl/gstglstereomix.h
@@ -69,9 +69,6 @@
   GstGLViewConvert *viewconvert;
   GstGLStereoDownmix downmix_mode;
 
-  GstCaps *out_caps;
-  GstVideoInfo out_info;
-
   GstVideoInfo mix_info;
 
   GPtrArray *input_frames;
diff --git a/ext/gl/gstglstereosplit.c b/ext/gl/gstglstereosplit.c
index eba713c..1eaa440 100644
--- a/ext/gl/gstglstereosplit.c
+++ b/ext/gl/gstglstereosplit.c
@@ -38,10 +38,6 @@
 
 #include "gstglstereosplit.h"
 
-#if GST_GL_HAVE_PLATFORM_EGL
-#include <gst/gl/egl/gsteglimagememory.h>
-#endif
-
 #define GST_CAT_DEFAULT gst_gl_stereosplit_debug
 GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
 
@@ -55,53 +51,21 @@
 static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
     GST_PAD_SINK, GST_PAD_ALWAYS,
     GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE_WITH_FEATURES
-        (GST_CAPS_FEATURE_MEMORY_GL_MEMORY,
-            "RGBA") "; "
-#if GST_GL_HAVE_PLATFORM_EGL
-        GST_VIDEO_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_MEMORY_EGL_IMAGE,
-            "RGBA") "; "
-#endif
-        GST_VIDEO_CAPS_MAKE_WITH_FEATURES
-        (GST_CAPS_FEATURE_META_GST_VIDEO_GL_TEXTURE_UPLOAD_META, "RGBA") "; "
-        GST_VIDEO_CAPS_MAKE (GST_GL_COLOR_CONVERT_FORMATS)
-    )
+        (GST_CAPS_FEATURE_MEMORY_GL_MEMORY, "RGBA"))
     );
 
 static GstStaticPadTemplate src_left_template = GST_STATIC_PAD_TEMPLATE ("left",
     GST_PAD_SRC, GST_PAD_ALWAYS,
     GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE_WITH_FEATURES
-        (GST_CAPS_FEATURE_MEMORY_GL_MEMORY,
-            "RGBA")
-#if 0
-        "; "
-#if GST_GL_HAVE_PLATFORM_EGL
-        GST_VIDEO_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_MEMORY_EGL_IMAGE,
-            "RGBA") "; "
-#endif
-        GST_VIDEO_CAPS_MAKE_WITH_FEATURES
-        (GST_CAPS_FEATURE_META_GST_VIDEO_GL_TEXTURE_UPLOAD_META, "RGBA") "; "
-        GST_VIDEO_CAPS_MAKE (GST_GL_COLOR_CONVERT_FORMATS)
-#endif
-    )
+        (GST_CAPS_FEATURE_MEMORY_GL_MEMORY, "RGBA"))
     );
 
 static GstStaticPadTemplate src_right_template =
-    GST_STATIC_PAD_TEMPLATE ("right",
+GST_STATIC_PAD_TEMPLATE ("right",
     GST_PAD_SRC, GST_PAD_ALWAYS,
     GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE_WITH_FEATURES
         (GST_CAPS_FEATURE_MEMORY_GL_MEMORY,
-            "RGBA")
-#if 0
-        "; "
-#if GST_GL_HAVE_PLATFORM_EGL
-        GST_VIDEO_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_MEMORY_EGL_IMAGE,
-            "RGBA") "; "
-#endif
-        GST_VIDEO_CAPS_MAKE_WITH_FEATURES
-        (GST_CAPS_FEATURE_META_GST_VIDEO_GL_TEXTURE_UPLOAD_META, "RGBA") "; "
-        GST_VIDEO_CAPS_MAKE (GST_GL_COLOR_CONVERT_FORMATS)
-#endif
-    )
+            "RGBA"))
     );
 
 static void stereosplit_reset (GstGLStereoSplit * self);
@@ -139,12 +103,10 @@
   element_class->change_state = stereosplit_change_state;
   element_class->set_context = stereosplit_set_context;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_left_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_right_template));
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
+  gst_element_class_add_static_pad_template (element_class, &src_left_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &src_right_template);
 }
 
 static void
@@ -179,10 +141,6 @@
 static void
 stereosplit_reset (GstGLStereoSplit * self)
 {
-  if (self->upload)
-    gst_object_replace ((GstObject **) & self->upload, NULL);
-  if (self->convert)
-    gst_object_replace ((GstObject **) & self->convert, NULL);
   if (self->context)
     gst_object_replace ((GstObject **) & self->context, NULL);
   if (self->display)
@@ -269,37 +227,9 @@
   if (!ensure_context (self))
     return NULL;
 
-  if (direction == GST_PAD_SINK) {
-    next_caps =
-        gst_gl_upload_transform_caps (self->context, direction, caps, filter);
-    caps = next_caps;
-
-    next_caps =
-        gst_gl_color_convert_transform_caps (self->context, direction, caps,
-        NULL);
-    gst_caps_unref (caps);
-    caps = next_caps;
-
-    next_caps =
-        gst_gl_view_convert_transform_caps (self->viewconvert, direction, caps,
-        NULL);
-    gst_caps_unref (caps);
-  } else {
-    next_caps =
-        gst_gl_view_convert_transform_caps (self->viewconvert, direction, caps,
-        filter);
-    caps = next_caps;
-
-    next_caps =
-        gst_gl_color_convert_transform_caps (self->context, direction, caps,
-        NULL);
-    gst_caps_unref (caps);
-    caps = next_caps;
-
-    next_caps =
-        gst_gl_upload_transform_caps (self->context, direction, caps, NULL);
-    gst_caps_unref (caps);
-  }
+  next_caps =
+      gst_gl_view_convert_transform_caps (self->viewconvert, direction, caps,
+      NULL);
 
   return next_caps;
 }
@@ -453,6 +383,18 @@
     goto fail;
   }
 
+  gst_gl_view_convert_set_context (split->viewconvert, split->context);
+
+  tridcaps = gst_caps_make_writable (tridcaps);
+  gst_caps_set_simple (tridcaps, "multiview-mode", G_TYPE_STRING,
+      "separated", "views", G_TYPE_INT, 2, NULL);
+  tridcaps = gst_caps_fixate (tridcaps);
+
+  if (!gst_gl_view_convert_set_caps (split->viewconvert, sinkcaps, tridcaps)) {
+    GST_ERROR_OBJECT (split, "Failed to set caps on converter");
+    goto fail;
+  }
+
   /* FIXME: Provide left and right caps to do_bufferpool */
   stereosplit_do_bufferpool (split, left);
 
@@ -508,51 +450,6 @@
   return FALSE;
 }
 
-static void
-_init_upload (GstGLStereoSplit * split)
-{
-  GstGLContext *context = split->context;
-
-  if (!split->upload) {
-    GstCaps *in_caps = gst_pad_get_current_caps (GST_PAD (split->sink_pad));
-    GstCaps *split_caps = gst_pad_get_current_caps (split->left_pad);
-    GstCaps *upload_caps = gst_caps_copy (in_caps);
-    GstCapsFeatures *gl_features =
-        gst_caps_features_from_string (GST_CAPS_FEATURE_MEMORY_GL_MEMORY);
-    GstCaps *gl_caps;
-
-    split->upload = gst_gl_upload_new (context);
-
-    gst_caps_set_features (upload_caps, 0,
-        gst_caps_features_copy (gl_features));
-    gst_gl_upload_set_caps (split->upload, in_caps, upload_caps);
-    gst_caps_unref (in_caps);
-
-    gl_caps = gst_caps_copy (upload_caps);
-    gst_caps_set_simple (gl_caps, "format", G_TYPE_STRING, "RGBA", NULL);
-    gst_caps_set_features (gl_caps, 0, gst_caps_features_copy (gl_features));
-
-    if (!split->convert) {
-      split->convert = gst_gl_color_convert_new (context);
-      gst_gl_color_convert_set_caps (split->convert, upload_caps, gl_caps);
-    }
-
-    gst_caps_unref (upload_caps);
-    gst_caps_features_free (gl_features);
-
-    gst_gl_view_convert_set_context (split->viewconvert, split->context);
-
-    split_caps = gst_caps_make_writable (split_caps);
-    gst_caps_set_simple (split_caps, "multiview-mode", G_TYPE_STRING,
-        "separated", "views", G_TYPE_INT, 2, NULL);
-
-    gst_gl_view_convert_set_caps (split->viewconvert, gl_caps, split_caps);
-
-    gst_caps_unref (split_caps);
-    gst_caps_unref (gl_caps);
-  }
-}
-
 static gboolean
 ensure_context (GstGLStereoSplit * self)
 {
@@ -619,10 +516,6 @@
 {
   if (!ensure_context (self))
     return FALSE;
-  if (self->upload)
-    gst_object_replace ((GstObject **) & self->upload, NULL);
-  if (self->convert)
-    gst_object_replace ((GstObject **) & self->convert, NULL);
 
   return TRUE;
 
@@ -635,10 +528,6 @@
   if (!gst_gl_ensure_element_data (self, &self->display, &self->other_context))
     return FALSE;
 
-  _init_upload (self);
-
-  gst_gl_upload_propose_allocation (self->upload, NULL, query);
-
   return TRUE;
 }
 
@@ -666,39 +555,17 @@
 static GstFlowReturn
 stereosplit_chain (GstPad * pad, GstGLStereoSplit * split, GstBuffer * buf)
 {
-  GstBuffer *uploaded_buffer, *converted_buffer, *left, *right;
+  GstBuffer *left, *right;
   GstBuffer *split_buffer = NULL;
   GstFlowReturn ret;
   gint i, n_planes;
 
-  if (!split->upload)
-    _init_upload (split);
-
   n_planes = GST_VIDEO_INFO_N_PLANES (&split->viewconvert->out_info);
 
   GST_LOG_OBJECT (split, "chaining buffer %" GST_PTR_FORMAT, buf);
 
-  if (GST_GL_UPLOAD_DONE != gst_gl_upload_perform_with_buffer (split->upload,
-          buf, &uploaded_buffer)) {
-    gst_buffer_unref (buf);
-    GST_ELEMENT_ERROR (split, RESOURCE, NOT_FOUND, ("%s",
-            "Failed to upload buffer"), (NULL));
-    return GST_FLOW_ERROR;
-  }
-  gst_buffer_unref (buf);
-
-  if (!(converted_buffer =
-          gst_gl_color_convert_perform (split->convert, uploaded_buffer))) {
-    GST_ELEMENT_ERROR (split, RESOURCE, NOT_FOUND, ("%s",
-            "Failed to convert buffer"), (NULL));
-    gst_buffer_unref (uploaded_buffer);
-    return GST_FLOW_ERROR;
-  }
-  gst_buffer_unref (uploaded_buffer);
-
   if (gst_gl_view_convert_submit_input_buffer (split->viewconvert,
-          GST_BUFFER_IS_DISCONT (converted_buffer),
-          converted_buffer) != GST_FLOW_OK) {
+          GST_BUFFER_IS_DISCONT (buf), buf) != GST_FLOW_OK) {
     GST_ELEMENT_ERROR (split, RESOURCE, NOT_FOUND, ("%s",
             "Failed to 3d convert buffer"),
         ("Could not get submit input buffer"));
diff --git a/ext/gl/gstglstereosplit.h b/ext/gl/gstglstereosplit.h
index 5a1e3c6..279bd26 100644
--- a/ext/gl/gstglstereosplit.h
+++ b/ext/gl/gstglstereosplit.h
@@ -49,8 +49,6 @@
   GstGLContext      *context;
   GstGLContext      *other_context;
 
-  GstGLUpload       *upload;
-  GstGLColorConvert *convert;
   GstGLViewConvert    *viewconvert;
 };
 
diff --git a/ext/gl/gstgltestsrc.c b/ext/gl/gstgltestsrc.c
index 95c7321..62d231f 100644
--- a/ext/gl/gstgltestsrc.c
+++ b/ext/gl/gstgltestsrc.c
@@ -49,7 +49,7 @@
 #include <gst/gst-i18n-plugin.h>
 
 #define USE_PEER_BUFFERALLOC
-#define SUPPORTED_GL_APIS GST_GL_API_OPENGL
+#define SUPPORTED_GL_APIS (GST_GL_API_OPENGL | GST_GL_API_OPENGL3 | GST_GL_API_GLES2)
 
 GST_DEBUG_CATEGORY_STATIC (gl_test_src_debug);
 #define GST_CAT_DEFAULT gl_test_src_debug
@@ -107,7 +107,7 @@
 static gboolean gst_gl_test_src_decide_allocation (GstBaseSrc * basesrc,
     GstQuery * query);
 
-static void gst_gl_test_src_callback (gpointer stuff);
+static gboolean gst_gl_test_src_callback (gpointer stuff);
 
 static gboolean gst_gl_test_src_init_shader (GstGLTestSrc * gltestsrc);
 
@@ -178,8 +178,7 @@
       "Source/Video", "Creates a test video stream",
       "David A. Schleef <ds@schleef.org>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
 
   element_class->set_context = gst_gl_test_src_set_context;
   element_class->change_state = gst_gl_test_src_change_state;
@@ -229,162 +228,10 @@
   return caps;
 }
 
-const gchar *snow_vertex_src = "attribute vec4 position; \
-    attribute vec2 uv; \
-    uniform mat4 mvp; \
-    varying vec2 out_uv; \
-    void main() \
-    { \
-       gl_Position = mvp * position; \
-       out_uv = uv; \
-    }";
-
-const gchar *snow_fragment_src = "uniform float time; \
-    varying vec2 out_uv; \
-    \
-    float rand(vec2 co){ \
-        return fract(sin(dot(co.xy, vec2(12.9898,78.233))) * 43758.5453); \
-    } \
-    void main() \
-    { \
-      gl_FragColor = rand(time * out_uv) * vec4(1); \
-    }";
-
-const gchar *mandelbrot_vertex_src = "attribute vec4 position; \
-    attribute vec2 uv; \
-    uniform mat4 mvp; \
-    uniform float aspect_ratio; \
-    varying vec2 fractal_position; \
-    \
-    void main() \
-    { \
-       gl_Position = mvp * position; \
-       fractal_position = vec2(uv.y - 0.8, aspect_ratio * (uv.x - 0.5)); \
-       fractal_position *= 2.5; \
-    }";
-
-const gchar *mandelbrot_fragment_src = "uniform float time; \
-    varying vec2 fractal_position; \
-    \
-    const vec4 K = vec4(1.0, 0.66, 0.33, 3.0); \
-    \
-    vec4 hsv_to_rgb(float hue, float saturation, float value) { \
-      vec4 p = abs(fract(vec4(hue) + K) * 6.0 - K.wwww); \
-      return value * mix(K.xxxx, clamp(p - K.xxxx, 0.0, 1.0), saturation); \
-    } \
-    \
-    vec4 i_to_rgb(int i) { \
-      float hue = float(i) / 100.0 + sin(time); \
-      return hsv_to_rgb(hue, 0.5, 0.8); \
-    } \
-    \
-    vec2 pow_2_complex(vec2 c) { \
-      return vec2(c.x*c.x - c.y*c.y, 2.0 * c.x * c.y); \
-    } \
-    \
-    vec2 mandelbrot(vec2 c, vec2 c0) { \
-      return pow_2_complex(c) + c0; \
-    } \
-    \
-    vec4 iterate_pixel(vec2 position) { \
-      vec2 c = vec2(0); \
-      for (int i=0; i < 100; i++) { \
-        if (c.x*c.x + c.y*c.y > 2.0*2.0) \
-          return i_to_rgb(i); \
-        c = mandelbrot(c, position); \
-      } \
-      return vec4(0, 0, 0, 1); \
-    } \
-    \
-    void main() { \
-      gl_FragColor = iterate_pixel(fractal_position); \
-    }";
-
-
-const gchar *checkers_vertex_src = "attribute vec4 position; \
-    uniform mat4 mvp; \
-    void main() \
-    { \
-       gl_Position = mvp * position; \
-    }";
-
-const gchar *checkers_fragment_src = "uniform float checker_width; \
-    void main() \
-    { \
-      vec2 xy_index= floor((gl_FragCoord.xy-vec2(0.5,0.5))/checker_width); \
-      vec2 xy_mod=mod(xy_index,vec2(2.0,2.0)); \
-      float result=mod(xy_mod.x+xy_mod.y,2.0); \
-      gl_FragColor.r=step(result,0.5); \
-      gl_FragColor.g=1.0-gl_FragColor.r; \
-      gl_FragColor.ba=vec2(0,1); \
-    }";
-
-
 static void
 gst_gl_test_src_set_pattern (GstGLTestSrc * gltestsrc, gint pattern_type)
 {
-  gltestsrc->pattern_type = pattern_type;
-
-  GST_DEBUG_OBJECT (gltestsrc, "setting pattern to %d", pattern_type);
-
-  switch (pattern_type) {
-    case GST_GL_TEST_SRC_SMPTE:
-      gltestsrc->make_image = gst_gl_test_src_smpte;
-      break;
-    case GST_GL_TEST_SRC_SNOW:
-      gltestsrc->vertex_src = snow_vertex_src;
-      gltestsrc->fragment_src = snow_fragment_src;
-      gltestsrc->make_image = gst_gl_test_src_shader;
-      break;
-    case GST_GL_TEST_SRC_BLACK:
-      gltestsrc->make_image = gst_gl_test_src_black;
-      break;
-    case GST_GL_TEST_SRC_WHITE:
-      gltestsrc->make_image = gst_gl_test_src_white;
-      break;
-    case GST_GL_TEST_SRC_RED:
-      gltestsrc->make_image = gst_gl_test_src_red;
-      break;
-    case GST_GL_TEST_SRC_GREEN:
-      gltestsrc->make_image = gst_gl_test_src_green;
-      break;
-    case GST_GL_TEST_SRC_BLUE:
-      gltestsrc->make_image = gst_gl_test_src_blue;
-      break;
-    case GST_GL_TEST_SRC_CHECKERS1:
-      gltestsrc->vertex_src = checkers_vertex_src;
-      gltestsrc->fragment_src = checkers_fragment_src;
-      gltestsrc->make_image = gst_gl_test_src_checkers1;
-      break;
-    case GST_GL_TEST_SRC_CHECKERS2:
-      gltestsrc->vertex_src = checkers_vertex_src;
-      gltestsrc->fragment_src = checkers_fragment_src;
-      gltestsrc->make_image = gst_gl_test_src_checkers2;
-      break;
-    case GST_GL_TEST_SRC_CHECKERS4:
-      gltestsrc->vertex_src = checkers_vertex_src;
-      gltestsrc->fragment_src = checkers_fragment_src;
-      gltestsrc->make_image = gst_gl_test_src_checkers4;
-      break;
-    case GST_GL_TEST_SRC_CHECKERS8:
-      gltestsrc->vertex_src = checkers_vertex_src;
-      gltestsrc->fragment_src = checkers_fragment_src;
-      gltestsrc->make_image = gst_gl_test_src_checkers8;
-      break;
-    case GST_GL_TEST_SRC_CIRCULAR:
-      gltestsrc->make_image = gst_gl_test_src_circular;
-      break;
-    case GST_GL_TEST_SRC_BLINK:
-      gltestsrc->make_image = gst_gl_test_src_black;
-      break;
-    case GST_GL_TEST_SRC_MANDELBROT:
-      gltestsrc->vertex_src = mandelbrot_vertex_src;
-      gltestsrc->fragment_src = mandelbrot_fragment_src;
-      gltestsrc->make_image = gst_gl_test_src_shader;
-      break;
-    default:
-      g_assert_not_reached ();
-  }
+  gltestsrc->set_pattern = pattern_type;
 }
 
 static void
@@ -416,7 +263,7 @@
 
   switch (prop_id) {
     case PROP_PATTERN:
-      g_value_set_enum (value, src->pattern_type);
+      g_value_set_enum (value, src->set_pattern);
       break;
     case PROP_TIMESTAMP_OFFSET:
       g_value_set_int64 (value, src->timestamp_offset);
@@ -599,58 +446,53 @@
 {
   if (gst_gl_context_get_gl_api (gltestsrc->context)) {
     /* blocking call, wait until the opengl thread has compiled the shader */
-    if (gltestsrc->vertex_src == NULL)
-      return FALSE;
-    return gst_gl_context_gen_shader (gltestsrc->context, gltestsrc->vertex_src,
-        gltestsrc->fragment_src, &gltestsrc->shader);
+//    if (gltestsrc->vertex_src == NULL)
+//      return FALSE;
+//    return gst_gl_context_gen_shader (gltestsrc->context, gltestsrc->vertex_src,
+//        gltestsrc->fragment_src, &gltestsrc->shader);
   }
   return TRUE;
 }
 
+static void
+_fill_gl (GstGLContext * context, GstGLTestSrc * src)
+{
+  src->gl_result = gst_gl_framebuffer_draw_to_texture (src->fbo, src->out_tex,
+      gst_gl_test_src_callback, src);
+}
+
 static GstFlowReturn
 gst_gl_test_src_fill (GstPushSrc * psrc, GstBuffer * buffer)
 {
   GstGLTestSrc *src = GST_GL_TEST_SRC (psrc);
   GstClockTime next_time;
-  gint width, height;
   GstVideoFrame out_frame;
   GstGLSyncMeta *sync_meta;
-  guint out_tex;
 
   if (G_UNLIKELY (!src->negotiated || !src->context))
     goto not_negotiated;
 
-  width = GST_VIDEO_INFO_WIDTH (&src->out_info);
-  height = GST_VIDEO_INFO_HEIGHT (&src->out_info);
-
   /* 0 framerate and we are at the second frame, eos */
   if (G_UNLIKELY (GST_VIDEO_INFO_FPS_N (&src->out_info) == 0
           && src->n_frames == 1))
     goto eos;
 
-  if (src->pattern_type == GST_GL_TEST_SRC_BLINK) {
-    if (src->n_frames & 0x1)
-      src->make_image = gst_gl_test_src_white;
-    else
-      src->make_image = gst_gl_test_src_black;
-  }
-
   if (!gst_video_frame_map (&out_frame, &src->out_info, buffer,
           GST_MAP_WRITE | GST_MAP_GL)) {
     return GST_FLOW_NOT_NEGOTIATED;
   }
 
-  out_tex = *(guint *) out_frame.data[0];
+  src->out_tex = (GstGLMemory *) out_frame.map[0].memory;
 
-  gst_buffer_replace (&src->buffer, buffer);
-
-  if (!gst_gl_context_use_fbo_v2 (src->context, width, height, src->fbo,
-          src->depthbuffer, out_tex, gst_gl_test_src_callback,
-          (gpointer) src)) {
-    goto not_negotiated;
+  gst_gl_context_thread_add (src->context, (GstGLContextThreadFunc) _fill_gl,
+      src);
+  if (!src->gl_result) {
+    gst_video_frame_unmap (&out_frame);
+    goto gl_error;
   }
-
   gst_video_frame_unmap (&out_frame);
+  if (!src->gl_result)
+    goto gl_error;
 
   sync_meta = gst_buffer_get_gl_sync_meta (buffer);
   if (sync_meta)
@@ -674,6 +516,12 @@
 
   return GST_FLOW_OK;
 
+gl_error:
+  {
+    GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND, (_("failed to draw pattern")),
+        (_("A GL error occured")));
+    return GST_FLOW_NOT_NEGOTIATED;
+  }
 not_negotiated:
   {
     GST_ELEMENT_ERROR (src, CORE, NEGOTIATION, (NULL),
@@ -716,12 +564,20 @@
       gst_object_unref (src->shader);
       src->shader = NULL;
     }
-    //blocking call, delete the FBO
-    gst_gl_context_del_fbo (src->context, src->fbo, src->depthbuffer);
+
+    if (src->fbo)
+      gst_object_unref (src->fbo);
+    src->fbo = NULL;
+
     gst_object_unref (src->context);
     src->context = NULL;
   }
 
+  if (src->src_impl) {
+    src->src_funcs->free (src->src_impl);
+    src->src_impl = NULL;
+  }
+
   return TRUE;
 }
 
@@ -764,6 +620,14 @@
   return FALSE;
 }
 
+static void
+_src_generate_fbo_gl (GstGLContext * context, GstGLTestSrc * src)
+{
+  src->fbo = gst_gl_framebuffer_new_with_default_depth (src->context,
+      GST_VIDEO_INFO_WIDTH (&src->out_info),
+      GST_VIDEO_INFO_HEIGHT (&src->out_info));
+}
+
 static gboolean
 gst_gl_test_src_decide_allocation (GstBaseSrc * basesrc, GstQuery * query)
 {
@@ -774,7 +638,6 @@
   guint min, max, size;
   gboolean update_pool;
   GError *error = NULL;
-  guint out_width, out_height;
 
   if (!gst_gl_ensure_element_data (src, &src->display, &src->other_context))
     return FALSE;
@@ -807,11 +670,9 @@
   if ((gst_gl_context_get_gl_api (src->context) & SUPPORTED_GL_APIS) == 0)
     goto unsupported_gl_api;
 
-  out_width = GST_VIDEO_INFO_WIDTH (&src->out_info);
-  out_height = GST_VIDEO_INFO_HEIGHT (&src->out_info);
-
-  if (!gst_gl_context_gen_fbo (src->context, out_width, out_height,
-          &src->fbo, &src->depthbuffer))
+  gst_gl_context_thread_add (src->context,
+      (GstGLContextThreadFunc) _src_generate_fbo_gl, src);
+  if (!src->fbo)
     goto context_error;
 
   gst_query_parse_allocation (query, &caps, NULL);
@@ -884,17 +745,34 @@
   }
 }
 
-//opengl scene
-static void
+static gboolean
 gst_gl_test_src_callback (gpointer stuff)
 {
   GstGLTestSrc *src = GST_GL_TEST_SRC (stuff);
+  const struct SrcFuncs *funcs;
 
-  src->make_image (src, src->buffer, GST_VIDEO_INFO_WIDTH (&src->out_info),
-      GST_VIDEO_INFO_HEIGHT (&src->out_info));
+  funcs = src->src_funcs;
 
-  gst_buffer_unref (src->buffer);
-  src->buffer = NULL;
+  if (!funcs || src->set_pattern != src->active_pattern) {
+    if (src->src_impl && funcs)
+      funcs->free (src->src_impl);
+    src->src_funcs = funcs =
+        gst_gl_test_src_get_src_funcs_for_pattern (src->set_pattern);
+    if (funcs == NULL) {
+      GST_ERROR_OBJECT (src, "Could not find an implementation of the "
+          "requested pattern");
+      return FALSE;
+    }
+    src->src_impl = funcs->new (src);
+    if (!(src->gl_result =
+            funcs->init (src->src_impl, src->context, &src->out_info))) {
+      GST_ERROR_OBJECT (src, "Failed to initialize pattern");
+      return FALSE;
+    }
+    src->active_pattern = src->set_pattern;
+  }
+
+  return funcs->fill_bound_fbo (src->src_impl);
 }
 
 static GstStateChangeReturn
diff --git a/ext/gl/gstgltestsrc.h b/ext/gl/gstgltestsrc.h
index 1c045c7..df4abb7 100644
--- a/ext/gl/gstgltestsrc.h
+++ b/ext/gl/gstgltestsrc.h
@@ -28,6 +28,8 @@
 
 #include <gst/gl/gl.h>
 
+#include "gltestsrc.h"
+
 G_BEGIN_DECLS
 
 #define GST_TYPE_GL_TEST_SRC \
@@ -41,42 +43,6 @@
 #define GST_IS_GL_TEST_SRC_CLASS(klass) \
     (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_GL_TEST_SRC))
 
-/**
- * GstGLTestSrcPattern:
- * @GST_GL_TEST_SRC_SMPTE: A standard SMPTE test pattern
- * @GST_GL_TEST_SRC_SNOW: Random noise
- * @GST_GL_TEST_SRC_BLACK: A black image
- * @GST_GL_TEST_SRC_WHITE: A white image
- * @GST_GL_TEST_SRC_RED: A red image
- * @GST_GL_TEST_SRC_GREEN: A green image
- * @GST_GL_TEST_SRC_BLUE: A blue image
- * @GST_GL_TEST_SRC_CHECKERS1: Checkers pattern (1px)
- * @GST_GL_TEST_SRC_CHECKERS2: Checkers pattern (2px)
- * @GST_GL_TEST_SRC_CHECKERS4: Checkers pattern (4px)
- * @GST_GL_TEST_SRC_CHECKERS8: Checkers pattern (8px)
- * @GST_GL_TEST_SRC_CIRCULAR: Circular pattern
- * @GST_GL_TEST_SRC_BLINK: Alternate between black and white
- *
- * The test pattern to produce.
- */
-typedef enum {
-    GST_GL_TEST_SRC_SMPTE,
-    GST_GL_TEST_SRC_SNOW,
-    GST_GL_TEST_SRC_BLACK,
-    GST_GL_TEST_SRC_WHITE,
-    GST_GL_TEST_SRC_RED,
-    GST_GL_TEST_SRC_GREEN,
-    GST_GL_TEST_SRC_BLUE,
-    GST_GL_TEST_SRC_CHECKERS1,
-    GST_GL_TEST_SRC_CHECKERS2,
-    GST_GL_TEST_SRC_CHECKERS4,
-    GST_GL_TEST_SRC_CHECKERS8,
-    GST_GL_TEST_SRC_CIRCULAR,
-    GST_GL_TEST_SRC_BLINK,
-    GST_GL_TEST_SRC_MANDELBROT
-} GstGLTestSrcPattern;
-
-typedef struct _GstGLTestSrc GstGLTestSrc;
 typedef struct _GstGLTestSrcClass GstGLTestSrcClass;
 
 /**
@@ -90,18 +56,17 @@
     /*< private >*/
 
     /* type of output */
-    GstGLTestSrcPattern pattern_type;
+    GstGLTestSrcPattern set_pattern;
+    GstGLTestSrcPattern active_pattern;
 
     /* video state */
-    char *format_name;
     GstVideoInfo out_info;
 
-    GLuint fbo;
-    GLuint depthbuffer;
+    GstGLFramebuffer *fbo;
+    GstGLMemory *out_tex;
 
     GstGLShader *shader;
 
-    GstBuffer* buffer;
     GstBufferPool *pool;
 
     GstGLDisplay *display;
@@ -111,10 +76,9 @@
     gint64 n_frames;                      /* total frames sent */
     gboolean negotiated;
 
-    const gchar *vertex_src;
-    const gchar *fragment_src;
-
-    void (*make_image) (GstGLTestSrc* v, GstBuffer* buffer, gint w, gint h);
+    gboolean gl_result;
+    const struct SrcFuncs *src_funcs;
+    gpointer src_impl;
 
     GstCaps *out_caps;
 };
diff --git a/ext/gl/gstgltransformation.c b/ext/gl/gstgltransformation.c
index 779447c..a4df304 100644
--- a/ext/gl/gstgltransformation.c
+++ b/ext/gl/gstgltransformation.c
@@ -55,6 +55,15 @@
 
 #define gst_gl_transformation_parent_class parent_class
 
+#define VEC4_FORMAT "%f,%f,%f,%f"
+#define VEC4_ARGS(v) graphene_vec4_get_x (v), graphene_vec4_get_y (v), graphene_vec4_get_z (v), graphene_vec4_get_w (v)
+#define VEC3_FORMAT "%f,%f,%f"
+#define VEC3_ARGS(v) graphene_vec3_get_x (v), graphene_vec3_get_y (v), graphene_vec3_get_z (v)
+#define VEC2_FORMAT "%f,%f"
+#define VEC2_ARGS(v) graphene_vec2_get_x (v), graphene_vec2_get_y (v)
+#define POINT3D_FORMAT "%f,%f,%f"
+#define POINT3D_ARGS(p) (p)->x, (p)->y, (p)->z
+
 enum
 {
   PROP_0,
@@ -89,40 +98,25 @@
     GstCaps * incaps, GstCaps * outcaps);
 static gboolean gst_gl_transformation_src_event (GstBaseTransform * trans,
     GstEvent * event);
+static gboolean gst_gl_transformation_filter_meta (GstBaseTransform * trans,
+    GstQuery * query, GType api, const GstStructure * params);
+static gboolean gst_gl_transformation_decide_allocation (GstBaseTransform *
+    trans, GstQuery * query);
 
 static void gst_gl_transformation_reset_gl (GstGLFilter * filter);
 static gboolean gst_gl_transformation_stop (GstBaseTransform * trans);
 static gboolean gst_gl_transformation_init_shader (GstGLFilter * filter);
-static void gst_gl_transformation_callback (gpointer stuff);
+static gboolean gst_gl_transformation_callback (gpointer stuff);
 static void gst_gl_transformation_build_mvp (GstGLTransformation *
     transformation);
 
+static GstFlowReturn
+gst_gl_transformation_prepare_output_buffer (GstBaseTransform * trans,
+    GstBuffer * inbuf, GstBuffer ** outbuf);
+static gboolean gst_gl_transformation_filter (GstGLFilter * filter,
+    GstBuffer * inbuf, GstBuffer * outbuf);
 static gboolean gst_gl_transformation_filter_texture (GstGLFilter * filter,
-    guint in_tex, guint out_tex);
-
-/* vertex source */
-static const gchar *cube_v_src =
-    "attribute vec4 position;                     \n"
-    "attribute vec2 uv;                           \n"
-    "uniform mat4 mvp;                            \n"
-    "varying vec2 out_uv;                         \n"
-    "void main()                                  \n"
-    "{                                            \n"
-    "   gl_Position = mvp * position;             \n"
-    "   out_uv = uv;                              \n"
-    "}                                            \n";
-
-/* fragment source */
-static const gchar *cube_f_src =
-    "#ifdef GL_ES                                 \n"
-    "  precision mediump float;                   \n"
-    "#endif                                       \n"
-    "varying vec2 out_uv;                         \n"
-    "uniform sampler2D texture;                   \n"
-    "void main()                                  \n"
-    "{                                            \n"
-    "  gl_FragColor = texture2D (texture, out_uv);\n"
-    "}                                            \n";
+    GstGLMemory * in_tex, GstGLMemory * out_tex);
 
 static void
 gst_gl_transformation_class_init (GstGLTransformationClass * klass)
@@ -139,14 +133,20 @@
   gobject_class->get_property = gst_gl_transformation_get_property;
 
   base_transform_class->src_event = gst_gl_transformation_src_event;
+  base_transform_class->decide_allocation =
+      gst_gl_transformation_decide_allocation;
+  base_transform_class->filter_meta = gst_gl_transformation_filter_meta;
 
   GST_GL_FILTER_CLASS (klass)->init_fbo = gst_gl_transformation_init_shader;
   GST_GL_FILTER_CLASS (klass)->display_reset_cb =
       gst_gl_transformation_reset_gl;
   GST_GL_FILTER_CLASS (klass)->set_caps = gst_gl_transformation_set_caps;
+  GST_GL_FILTER_CLASS (klass)->filter = gst_gl_transformation_filter;
   GST_GL_FILTER_CLASS (klass)->filter_texture =
       gst_gl_transformation_filter_texture;
   GST_BASE_TRANSFORM_CLASS (klass)->stop = gst_gl_transformation_stop;
+  GST_BASE_TRANSFORM_CLASS (klass)->prepare_output_buffer =
+      gst_gl_transformation_prepare_output_buffer;
 
   g_object_class_install_property (gobject_class, PROP_FOV,
       g_param_spec_float ("fov", "Fov", "Field of view angle in degrees",
@@ -212,14 +212,14 @@
   g_object_class_install_property (gobject_class, PROP_PIVOT_X,
       g_param_spec_float ("pivot-x", "X Pivot",
           "Rotation pivot point X coordinate, where 0 is the center,"
-          " -1 the lef +1 the right boarder and <-1, >1 outside.",
+          " -1 the left border, +1 the right border and <-1, >1 outside.",
           -G_MAXFLOAT, G_MAXFLOAT, 0.0,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   g_object_class_install_property (gobject_class, PROP_PIVOT_Y,
       g_param_spec_float ("pivot-y", "Y Pivot",
           "Rotation pivot point X coordinate, where 0 is the center,"
-          " -1 the lef +1 the right boarder and <-1, >1 outside.",
+          " -1 the left border, +1 the right border and <-1, >1 outside.",
           -G_MAXFLOAT, G_MAXFLOAT, 0.0,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
@@ -227,7 +227,7 @@
       g_param_spec_float ("pivot-z", "Z Pivot",
           "Relevant for rotation in 3D space. You look into the negative Z axis direction",
           -G_MAXFLOAT, G_MAXFLOAT, 0.0,
-          G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   /* MVP */
   g_object_class_install_property (gobject_class, PROP_MVP,
@@ -286,14 +286,13 @@
 
     graphene_point3d_t negative_pivot_vector;
 
-    graphene_vec3_t eye;
     graphene_vec3_t center;
     graphene_vec3_t up;
 
     gboolean current_passthrough;
     gboolean passthrough;
 
-    graphene_vec3_init (&eye, 0.f, 0.f, 1.f);
+    graphene_vec3_init (&transformation->camera_position, 0.f, 0.f, 1.f);
     graphene_vec3_init (&center, 0.f, 0.f, 0.f);
     graphene_vec3_init (&up, 0.f, 1.f, 0.f);
 
@@ -332,8 +331,8 @@
           transformation->aspect, transformation->znear, transformation->zfar);
     }
 
-    graphene_matrix_init_look_at (&transformation->view_matrix, &eye, &center,
-        &up);
+    graphene_matrix_init_look_at (&transformation->view_matrix,
+        &transformation->camera_position, &center, &up);
 
     current_passthrough =
         gst_base_transform_is_passthrough (GST_BASE_TRANSFORM (transformation));
@@ -354,6 +353,13 @@
       &transformation->view_matrix, &modelview_matrix);
   graphene_matrix_multiply (&modelview_matrix,
       &transformation->projection_matrix, &transformation->mvp_matrix);
+
+  graphene_matrix_inverse (&transformation->model_matrix,
+      &transformation->inv_model_matrix);
+  graphene_matrix_inverse (&transformation->view_matrix,
+      &transformation->inv_view_matrix);
+  graphene_matrix_inverse (&transformation->projection_matrix,
+      &transformation->inv_projection_matrix);
 }
 
 static void
@@ -456,6 +462,7 @@
       g_value_set_float (value, filter->zpivot);
       break;
     case PROP_MVP:
+      /* FIXME: need to decompose this to support navigation events */
       g_value_set_boxed (value, (gconstpointer) & filter->mvp_matrix);
       break;
     default:
@@ -482,142 +489,198 @@
 }
 
 static void
-_find_plane_normal (const graphene_point3d_t * A, const graphene_point3d_t * B,
-    const graphene_point3d_t * C, graphene_vec3_t * plane_normal)
+_intersect_plane_and_ray (graphene_plane_t * video_plane, graphene_ray_t * ray,
+    graphene_point3d_t * result)
 {
-  graphene_vec3_t U, V, A_v, B_v, C_v;
-
-  graphene_point3d_to_vec3 (A, &A_v);
-  graphene_point3d_to_vec3 (B, &B_v);
-  graphene_point3d_to_vec3 (C, &C_v);
-
-  graphene_vec3_subtract (&B_v, &A_v, &U);
-  graphene_vec3_subtract (&C_v, &A_v, &V);
-
-  graphene_vec3_cross (&U, &V, plane_normal);
-  graphene_vec3_normalize (plane_normal, plane_normal);
+  float t = graphene_ray_get_distance_to_plane (ray, video_plane);
+  GST_TRACE ("Calculated a distance of %f to the plane", t);
+  graphene_ray_get_position_at (ray, t, result);
 }
 
 static void
-_find_model_coords (GstGLTransformation * transformation,
-    const graphene_point3d_t * screen_coords, graphene_point3d_t * res)
+_screen_coord_to_world_ray (GstGLTransformation * transformation, float x,
+    float y, graphene_ray_t * ray)
 {
-  graphene_matrix_t modelview, inverse_proj, inverse_modelview;
-  graphene_vec4_t v1, v2;
-  graphene_point3d_t p1;
-  gfloat w;
+  GstGLFilter *filter = GST_GL_FILTER (transformation);
+  gfloat w = (gfloat) GST_VIDEO_INFO_WIDTH (&filter->in_info);
+  gfloat h = (gfloat) GST_VIDEO_INFO_HEIGHT (&filter->in_info);
+  graphene_vec3_t ray_eye_vec3, ray_world_dir, *ray_origin, *ray_direction;
+  graphene_vec3_t ray_ortho_dir;
+  graphene_point3d_t ray_clip, ray_eye;
+  graphene_vec2_t screen_coord;
 
-  graphene_vec4_init (&v1, screen_coords->x, screen_coords->y, screen_coords->z,
-      1.);
-  graphene_matrix_inverse (&transformation->projection_matrix, &inverse_proj);
-  graphene_matrix_transform_vec4 (&inverse_proj, &v1, &v2);
+  /* GL is y-flipped. i.e. 0, 0 is the bottom left corner in screen space */
+  graphene_vec2_init (&screen_coord, (2. * x / w - 1.) / transformation->aspect,
+      1. - 2. * y / h);
 
-  /* perspective division */
-  w = graphene_vec4_get_w (&v2);
-  p1.x = graphene_vec4_get_x (&v2) / w;
-  p1.y = graphene_vec4_get_y (&v2) / w;
-  p1.z = graphene_vec4_get_z (&v2) / w;
+  graphene_point3d_init (&ray_clip, graphene_vec2_get_x (&screen_coord),
+      graphene_vec2_get_y (&screen_coord), -1.);
+  graphene_matrix_transform_point3d (&transformation->inv_projection_matrix,
+      &ray_clip, &ray_eye);
 
-  graphene_matrix_multiply (&transformation->model_matrix,
-      &transformation->view_matrix, &modelview);
-  graphene_matrix_inverse (&modelview, &inverse_modelview);
-  graphene_matrix_transform_point3d (&inverse_modelview, &p1, res);
+  graphene_vec3_init (&ray_eye_vec3, ray_eye.x, ray_eye.y, -1.);
+
+  if (transformation->ortho) {
+    graphene_vec3_init (&ray_ortho_dir, 0., 0., 1.);
+
+    ray_origin = &ray_eye_vec3;
+    ray_direction = &ray_ortho_dir;
+  } else {
+    graphene_matrix_transform_vec3 (&transformation->inv_view_matrix,
+        &ray_eye_vec3, &ray_world_dir);
+    graphene_vec3_normalize (&ray_world_dir, &ray_world_dir);
+
+    ray_origin = &transformation->camera_position;
+    ray_direction = &ray_world_dir;
+  }
+
+  graphene_ray_init_from_vec3 (ray, ray_origin, ray_direction);
+
+  GST_TRACE_OBJECT (transformation, "Calculated ray origin: " VEC3_FORMAT
+      " direction: " VEC3_FORMAT " from screen coordinates: " VEC2_FORMAT
+      " with %s projection",
+      VEC3_ARGS (ray_origin), VEC3_ARGS (ray_direction),
+      VEC2_ARGS (&screen_coord),
+      transformation->ortho ? "ortho" : "perspection");
 }
 
+static void
+_init_world_video_plane (GstGLTransformation * transformation,
+    graphene_plane_t * video_plane)
+{
+  graphene_point3d_t bottom_left, bottom_right, top_left, top_right;
+  graphene_point3d_t world_bottom_left, world_bottom_right;
+  graphene_point3d_t world_top_left, world_top_right;
+
+  graphene_point3d_init (&top_left, -transformation->aspect, 1., 0.);
+  graphene_point3d_init (&top_right, transformation->aspect, 1., 0.);
+  graphene_point3d_init (&bottom_left, -transformation->aspect, -1., 0.);
+  graphene_point3d_init (&bottom_right, transformation->aspect, -1., 0.);
+
+  graphene_matrix_transform_point3d (&transformation->model_matrix,
+      &bottom_left, &world_bottom_left);
+  graphene_matrix_transform_point3d (&transformation->model_matrix,
+      &bottom_right, &world_bottom_right);
+  graphene_matrix_transform_point3d (&transformation->model_matrix,
+      &top_left, &world_top_left);
+  graphene_matrix_transform_point3d (&transformation->model_matrix,
+      &top_right, &world_top_right);
+
+  graphene_plane_init_from_points (video_plane, &world_bottom_left,
+      &world_top_right, &world_top_left);
+}
+
+static gboolean
+_screen_coord_to_model_coord (GstGLTransformation * transformation,
+    double x, double y, double *res_x, double *res_y)
+{
+  GstGLFilter *filter = GST_GL_FILTER (transformation);
+  double w = (double) GST_VIDEO_INFO_WIDTH (&filter->in_info);
+  double h = (double) GST_VIDEO_INFO_HEIGHT (&filter->in_info);
+  graphene_point3d_t world_point, model_coord;
+  graphene_plane_t video_plane;
+  graphene_ray_t ray;
+  double new_x, new_y;
+
+  _init_world_video_plane (transformation, &video_plane);
+  _screen_coord_to_world_ray (transformation, x, y, &ray);
+  _intersect_plane_and_ray (&video_plane, &ray, &world_point);
+  graphene_matrix_transform_point3d (&transformation->inv_model_matrix,
+      &world_point, &model_coord);
+
+  /* ndc to pixels.  We render the frame Y-flipped so need to unflip the
+   * y coordinate */
+  new_x = (model_coord.x + 1.) * w / 2;
+  new_y = (1. - model_coord.y) * h / 2;
+
+  if (new_x < 0. || new_x > w || new_y < 0. || new_y > h)
+    /* coords off video surface */
+    return FALSE;
+
+  GST_DEBUG_OBJECT (transformation, "converted %f,%f to %f,%f", x, y, new_x,
+      new_y);
+
+  if (res_x)
+    *res_x = new_x;
+  if (res_y)
+    *res_y = new_y;
+
+  return TRUE;
+}
+
+#if 0
+/* debugging facilities for transforming vertices from model space to screen
+ * space */
+static void
+_ndc_to_viewport (GstGLTransformation * transformation, graphene_vec3_t * ndc,
+    int x, int y, int w, int h, float near, float far, graphene_vec3_t * result)
+{
+  GstGLFilter *filter = GST_GL_FILTER (transformation);
+  /* center of the viewport */
+  int o_x = x + w / 2;
+  int o_y = y + h / 2;
+
+  graphene_vec3_init (result, graphene_vec3_get_x (ndc) * w / 2 + o_x,
+      graphene_vec3_get_y (ndc) * h / 2 + o_y,
+      (far - near) * graphene_vec3_get_z (ndc) / 2 + (far + near) / 2);
+}
+
+static void
+_perspective_division (graphene_vec4_t * clip, graphene_vec3_t * result)
+{
+  float w = graphene_vec4_get_w (clip);
+
+  graphene_vec3_init (result, graphene_vec4_get_x (clip) / w,
+      graphene_vec4_get_y (clip) / w, graphene_vec4_get_z (clip) / w);
+}
+
+static void
+_vertex_to_screen_coord (GstGLTransformation * transformation,
+    graphene_vec4_t * vertex, graphene_vec3_t * view)
+{
+  GstGLFilter *filter = GST_GL_FILTER (transformation);
+  gint w = GST_VIDEO_INFO_WIDTH (&filter->in_info);
+  gint h = GST_VIDEO_INFO_HEIGHT (&filter->in_info);
+  graphene_vec4_t clip;
+  graphene_vec3_t ndc;
+
+  graphene_matrix_transform_vec4 (&transformation->mvp_matrix, vertex, &clip);
+  _perspective_division (&clip, &ndc);
+  _ndc_to_viewport (transformation, &ndc, 0, 0, w, h, 0., 1., view);
+}
+#endif
+
 static gboolean
 gst_gl_transformation_src_event (GstBaseTransform * trans, GstEvent * event)
 {
   GstGLTransformation *transformation = GST_GL_TRANSFORMATION (trans);
-  GstGLFilter *filter = GST_GL_FILTER (trans);
-  gdouble new_x, new_y, x, y;
   GstStructure *structure;
   gboolean ret;
 
   GST_DEBUG_OBJECT (trans, "handling %s event", GST_EVENT_TYPE_NAME (event));
 
   switch (GST_EVENT_TYPE (event)) {
-    case GST_EVENT_NAVIGATION:
+    case GST_EVENT_NAVIGATION:{
+      gdouble x, y;
       event =
           GST_EVENT (gst_mini_object_make_writable (GST_MINI_OBJECT (event)));
 
       structure = (GstStructure *) gst_event_get_structure (event);
       if (gst_structure_get_double (structure, "pointer_x", &x) &&
           gst_structure_get_double (structure, "pointer_y", &y)) {
-        gfloat w = (gfloat) GST_VIDEO_INFO_WIDTH (&filter->in_info);
-        gfloat h = (gfloat) GST_VIDEO_INFO_HEIGHT (&filter->in_info);
-        graphene_point3d_t screen_point_near, screen_point_far;
-        graphene_point3d_t model_coord_near, model_coord_far;
-        graphene_point3d_t bottom_left, bottom_right, top_left, top_right;
-        graphene_point3d_t result;
-        graphene_vec3_t plane_normal;
-        graphene_plane_t video_plane;
-        gfloat d;
+        gdouble new_x, new_y;
 
-        GST_DEBUG_OBJECT (trans, "converting %f,%f", x, y);
-
-        graphene_point3d_init (&top_left, -1., 1., 0.);
-        graphene_point3d_init (&top_right, 1., 1., 0.);
-        graphene_point3d_init (&bottom_left, -1., -1., 0.);
-        graphene_point3d_init (&bottom_right, 1., -1., 0.);
-        /* to NDC */
-        graphene_point3d_init (&screen_point_near, 2. * x / w - 1.,
-            2. * y / h - 1., -1.);
-        graphene_point3d_init (&screen_point_far, 2. * x / w - 1.,
-            2. * y / h - 1., 1.);
-
-        _find_plane_normal (&bottom_left, &top_left, &top_right, &plane_normal);
-        graphene_plane_init_from_point (&video_plane, &plane_normal, &top_left);
-        d = graphene_plane_get_constant (&video_plane);
-
-        /* get the closest and furthest points in the viewing area for the
-         * specified screen coordinate in order to construct a ray */
-        _find_model_coords (transformation, &screen_point_near,
-            &model_coord_near);
-        _find_model_coords (transformation, &screen_point_far,
-            &model_coord_far);
-
-        {
-          graphene_vec3_t model_coord_near_vec3, model_coord_far_vec3;
-          graphene_vec3_t tmp, intersection, coord_dir;
-          gfloat num, denom, t;
-
-          /* get the direction of the ray */
-          graphene_point3d_to_vec3 (&model_coord_near, &model_coord_near_vec3);
-          graphene_point3d_to_vec3 (&model_coord_far, &model_coord_far_vec3);
-          graphene_vec3_subtract (&model_coord_near_vec3, &model_coord_far_vec3,
-              &coord_dir);
-
-          /* Intersect the ray with the video plane to find the distance, t:
-           * Ray: P = P0 + t Pdir
-           * Plane: P dot N + d = 0
-           *
-           * Substituting for P and rearranging gives:
-           *
-           * t = (P0 dot N + d) / (Pdir dot N) */
-          denom = graphene_vec3_dot (&coord_dir, &plane_normal);
-          num = graphene_vec3_dot (&model_coord_near_vec3, &plane_normal);
-          t = -(num + d) / denom;
-
-          /* video coord = P0 + t Pdir */
-          graphene_vec3_scale (&coord_dir, t, &tmp);
-          graphene_vec3_add (&tmp, &model_coord_near_vec3, &intersection);
-          graphene_point3d_init_from_vec3 (&result, &intersection);
-        }
-
-        new_x = (result.x / transformation->aspect + 1.) * w / 2;
-        new_y = (result.y + 1.) * h / 2;
-
-        if (new_x < 0. || new_x > w || new_y < 0 || new_y > h) {
-          /* coords off video surface */
+        if (!_screen_coord_to_model_coord (transformation, x, y, &new_x,
+                &new_y)) {
           gst_event_unref (event);
           return TRUE;
         }
 
-        GST_DEBUG_OBJECT (trans, "to %fx%f", new_x, new_y);
         gst_structure_set (structure, "pointer_x", G_TYPE_DOUBLE, new_x,
             "pointer_y", G_TYPE_DOUBLE, new_y, NULL);
       }
       break;
+    }
     default:
       break;
   }
@@ -627,6 +690,39 @@
   return ret;
 }
 
+static gboolean
+gst_gl_transformation_filter_meta (GstBaseTransform * trans, GstQuery * query,
+    GType api, const GstStructure * params)
+{
+  if (api == GST_VIDEO_AFFINE_TRANSFORMATION_META_API_TYPE)
+    return TRUE;
+
+  if (api == GST_GL_SYNC_META_API_TYPE)
+    return TRUE;
+
+  return FALSE;
+}
+
+static gboolean
+gst_gl_transformation_decide_allocation (GstBaseTransform * trans,
+    GstQuery * query)
+{
+  GstGLTransformation *transformation = GST_GL_TRANSFORMATION (trans);
+
+  if (!GST_BASE_TRANSFORM_CLASS (parent_class)->decide_allocation (trans,
+          query))
+    return FALSE;
+
+  if (gst_query_find_allocation_meta (query,
+          GST_VIDEO_AFFINE_TRANSFORMATION_META_API_TYPE, NULL)) {
+    transformation->downstream_supports_affine_meta = TRUE;
+  } else {
+    transformation->downstream_supports_affine_meta = FALSE;
+  }
+
+  return TRUE;
+}
+
 static void
 gst_gl_transformation_reset_gl (GstGLFilter * filter)
 {
@@ -682,25 +778,91 @@
   if (gst_gl_context_get_gl_api (GST_GL_BASE_FILTER (filter)->context)) {
     /* blocking call, wait until the opengl thread has compiled the shader */
     return gst_gl_context_gen_shader (GST_GL_BASE_FILTER (filter)->context,
-        cube_v_src, cube_f_src, &transformation->shader);
+        gst_gl_shader_string_vertex_mat4_vertex_transform,
+        gst_gl_shader_string_fragment_default, &transformation->shader);
   }
   return TRUE;
 }
 
+static const gfloat from_ndc_matrix[] = {
+  0.5f, 0.0f, 0.0, 0.5f,
+  0.0f, 0.5f, 0.0, 0.5f,
+  0.0f, 0.0f, 0.5, 0.5f,
+  0.0f, 0.0f, 0.0, 1.0f,
+};
+
+static const gfloat to_ndc_matrix[] = {
+  2.0f, 0.0f, 0.0, -1.0f,
+  0.0f, 2.0f, 0.0, -1.0f,
+  0.0f, 0.0f, 2.0, -1.0f,
+  0.0f, 0.0f, 0.0, 1.0f,
+};
+
+static GstFlowReturn
+gst_gl_transformation_prepare_output_buffer (GstBaseTransform * trans,
+    GstBuffer * inbuf, GstBuffer ** outbuf)
+{
+  GstGLTransformation *transformation = GST_GL_TRANSFORMATION (trans);
+  GstGLFilter *filter = GST_GL_FILTER (trans);
+
+  if (transformation->downstream_supports_affine_meta &&
+      gst_video_info_is_equal (&filter->in_info, &filter->out_info)) {
+    GstVideoAffineTransformationMeta *af_meta;
+    graphene_matrix_t upstream_matrix, from_ndc, to_ndc, tmp, tmp2, inv_aspect;
+
+    *outbuf = gst_buffer_make_writable (inbuf);
+
+    af_meta = gst_buffer_get_video_affine_transformation_meta (inbuf);
+    if (!af_meta)
+      af_meta = gst_buffer_add_video_affine_transformation_meta (*outbuf);
+
+    GST_LOG_OBJECT (trans, "applying transformation to existing affine "
+        "transformation meta");
+
+    /* apply the transformation to the existing affine meta */
+    graphene_matrix_init_from_float (&from_ndc, from_ndc_matrix);
+    graphene_matrix_init_from_float (&to_ndc, to_ndc_matrix);
+    graphene_matrix_init_from_float (&upstream_matrix, af_meta->matrix);
+
+    graphene_matrix_init_scale (&inv_aspect, transformation->aspect, 1., 1.);
+
+    graphene_matrix_multiply (&from_ndc, &upstream_matrix, &tmp);
+    graphene_matrix_multiply (&tmp, &transformation->mvp_matrix, &tmp2);
+    graphene_matrix_multiply (&tmp2, &inv_aspect, &tmp);
+    graphene_matrix_multiply (&tmp, &to_ndc, &tmp2);
+
+    graphene_matrix_to_float (&tmp2, af_meta->matrix);
+    return GST_FLOW_OK;
+  }
+
+  return GST_BASE_TRANSFORM_CLASS (parent_class)->prepare_output_buffer (trans,
+      inbuf, outbuf);
+}
+
 static gboolean
-gst_gl_transformation_filter_texture (GstGLFilter * filter, guint in_tex,
-    guint out_tex)
+gst_gl_transformation_filter (GstGLFilter * filter,
+    GstBuffer * inbuf, GstBuffer * outbuf)
+{
+  GstGLTransformation *transformation = GST_GL_TRANSFORMATION (filter);
+
+  if (transformation->downstream_supports_affine_meta &&
+      gst_video_info_is_equal (&filter->in_info, &filter->out_info)) {
+    return TRUE;
+  } else {
+    return gst_gl_filter_filter_texture (filter, inbuf, outbuf);
+  }
+}
+
+static gboolean
+gst_gl_transformation_filter_texture (GstGLFilter * filter,
+    GstGLMemory * in_tex, GstGLMemory * out_tex)
 {
   GstGLTransformation *transformation = GST_GL_TRANSFORMATION (filter);
 
   transformation->in_tex = in_tex;
 
-  /* blocking call, use a FBO */
-  gst_gl_context_use_fbo_v2 (GST_GL_BASE_FILTER (filter)->context,
-      GST_VIDEO_INFO_WIDTH (&filter->out_info),
-      GST_VIDEO_INFO_HEIGHT (&filter->out_info),
-      filter->fbo, filter->depthbuffer,
-      out_tex, gst_gl_transformation_callback, (gpointer) transformation);
+  gst_gl_framebuffer_draw_to_texture (filter->fbo, out_tex,
+      (GstGLFramebufferFunc) gst_gl_transformation_callback, transformation);
 
   return TRUE;
 }
@@ -762,7 +924,7 @@
   gl->DisableVertexAttribArray (transformation->attr_texture);
 }
 
-static void
+static gboolean
 gst_gl_transformation_callback (gpointer stuff)
 {
   GstGLFilter *filter = GST_GL_FILTER (stuff);
@@ -780,20 +942,21 @@
   gst_gl_shader_use (transformation->shader);
 
   gl->ActiveTexture (GL_TEXTURE0);
-  gl->BindTexture (GL_TEXTURE_2D, transformation->in_tex);
+  gl->BindTexture (GL_TEXTURE_2D, transformation->in_tex->tex_id);
   gst_gl_shader_set_uniform_1i (transformation->shader, "texture", 0);
 
   graphene_matrix_to_float (&transformation->mvp_matrix, temp_matrix);
-  gst_gl_shader_set_uniform_matrix_4fv (transformation->shader, "mvp",
-      1, GL_FALSE, temp_matrix);
+  gst_gl_shader_set_uniform_matrix_4fv (transformation->shader,
+      "u_transformation", 1, GL_FALSE, temp_matrix);
 
   if (!transformation->vertex_buffer) {
     transformation->attr_position =
         gst_gl_shader_get_attribute_location (transformation->shader,
-        "position");
+        "a_position");
 
     transformation->attr_texture =
-        gst_gl_shader_get_attribute_location (transformation->shader, "uv");
+        gst_gl_shader_get_attribute_location (transformation->shader,
+        "a_texcoord");
 
     if (gl->GenVertexArrays) {
       gl->GenVertexArrays (1, &transformation->vao);
@@ -829,4 +992,6 @@
 
   gst_gl_context_clear_shader (GST_GL_BASE_FILTER (filter)->context);
   transformation->caps_change = FALSE;
+
+  return TRUE;
 }
diff --git a/ext/gl/gstgltransformation.h b/ext/gl/gstgltransformation.h
index 7d41c61..a767be2 100644
--- a/ext/gl/gstgltransformation.h
+++ b/ext/gl/gstgltransformation.h
@@ -47,7 +47,8 @@
     GLint        attr_position;
     GLint        attr_texture;
 
-    guint in_tex;
+    GstGLMemory *in_tex;
+    GstGLMemory *out_tex;
 
     gfloat xrotation;
     gfloat yrotation;
@@ -74,8 +75,14 @@
     graphene_matrix_t model_matrix;
     graphene_matrix_t view_matrix;
     graphene_matrix_t projection_matrix;
+    graphene_matrix_t inv_model_matrix;
+    graphene_matrix_t inv_view_matrix;
+    graphene_matrix_t inv_projection_matrix;
     graphene_matrix_t mvp_matrix;
 
+    graphene_vec3_t camera_position;
+
+    gboolean downstream_supports_affine_meta;
     gboolean caps_change;
 };
 
diff --git a/ext/gl/gstgluploadelement.c b/ext/gl/gstgluploadelement.c
index 86e8b01..d3ed276 100644
--- a/ext/gl/gstgluploadelement.c
+++ b/ext/gl/gstgluploadelement.c
@@ -80,8 +80,8 @@
 
   bt_class->passthrough_on_same_caps = TRUE;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_gl_upload_element_src_pad_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_gl_upload_element_src_pad_template);
 
   upload_caps = gst_gl_upload_get_input_template_caps ();
   gst_element_class_add_pad_template (element_class,
@@ -133,9 +133,14 @@
 _gst_gl_upload_element_transform_caps (GstBaseTransform * bt,
     GstPadDirection direction, GstCaps * caps, GstCaps * filter)
 {
+  GstGLUploadElement *upload = GST_GL_UPLOAD_ELEMENT (bt);
   GstGLContext *context = GST_GL_BASE_FILTER (bt)->context;
 
-  return gst_gl_upload_transform_caps (context, direction, caps, filter);
+  if (upload->upload == NULL)
+    upload->upload = gst_gl_upload_new (NULL);
+
+  return gst_gl_upload_transform_caps (upload->upload, context, direction, caps,
+      filter);
 }
 
 static gboolean
@@ -177,10 +182,10 @@
   if (!ret)
     return FALSE;
 
+  /* GstGLBaseFilter populates ->context in ::decide_allocation so now it's the
+   * time to set the ->upload context */
   context = GST_GL_BASE_FILTER (trans)->context;
-
-  if (!upload->upload)
-    upload->upload = gst_gl_upload_new (context);
+  gst_gl_upload_set_context (upload->upload, context);
 
   return gst_gl_upload_set_caps (upload->upload, upload->in_caps,
       upload->out_caps);
@@ -220,6 +225,10 @@
     return GST_FLOW_NOT_NEGOTIATED;
 
   ret = gst_gl_upload_perform_with_buffer (upload->upload, buffer, outbuf);
+  if (ret == GST_GL_UPLOAD_RECONFIGURE) {
+    gst_base_transform_reconfigure_src (bt);
+    return GST_FLOW_OK;
+  }
 
   if (ret != GST_GL_UPLOAD_DONE || *outbuf == NULL) {
     GST_ELEMENT_ERROR (bt, RESOURCE, NOT_FOUND, ("%s",
diff --git a/ext/gl/gstglvideoflip.c b/ext/gl/gstglvideoflip.c
index caae79e..5d2dac5 100644
--- a/ext/gl/gstglvideoflip.c
+++ b/ext/gl/gstglvideoflip.c
@@ -46,6 +46,7 @@
 {
   PROP_0,
   PROP_METHOD,
+  PROP_VIDEO_DIRECTION
 };
 
 static GstStaticPadTemplate _sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
@@ -98,11 +99,6 @@
   return video_flip_method_type;
 }
 
-#define gst_gl_video_flip_parent_class parent_class
-G_DEFINE_TYPE_WITH_CODE (GstGLVideoFlip, gst_gl_video_flip,
-    GST_TYPE_BIN, GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT,
-        "glvideoflip", 0, "glvideoflip element"););
-
 static void gst_gl_video_flip_finalize (GObject * object);
 static void gst_gl_video_flip_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec);
@@ -115,6 +111,24 @@
     gpointer user_data);
 
 static void
+gst_gl_video_flip_video_direction_interface_init (GstVideoDirectionInterface
+    * iface);
+
+#define gst_gl_video_flip_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstGLVideoFlip, gst_gl_video_flip,
+    GST_TYPE_BIN, GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT,
+        "glvideoflip", 0, "glvideoflip element");
+    G_IMPLEMENT_INTERFACE (GST_TYPE_VIDEO_DIRECTION,
+        gst_gl_video_flip_video_direction_interface_init););
+
+static void
+gst_gl_video_flip_video_direction_interface_init (GstVideoDirectionInterface
+    * iface)
+{
+  /* We implement the video-direction property */
+}
+
+static void
 gst_gl_video_flip_class_init (GstGLVideoFlipClass * klass)
 {
   GObjectClass *gobject_class;
@@ -128,15 +142,16 @@
   gobject_class->get_property = gst_gl_video_flip_get_property;
 
   g_object_class_install_property (gobject_class, PROP_METHOD,
-      g_param_spec_enum ("method", "method", "method",
+      g_param_spec_enum ("method", "method",
+          "method (deprecated, use video-direction instead)",
           GST_TYPE_GL_VIDEO_FLIP_METHOD, DEFAULT_METHOD,
           GST_PARAM_CONTROLLABLE | G_PARAM_READWRITE | G_PARAM_CONSTRUCT |
           G_PARAM_STATIC_STRINGS));
+  g_object_class_override_property (gobject_class, PROP_VIDEO_DIRECTION,
+      "video-direction");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&_src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&_sink_template));
+  gst_element_class_add_static_pad_template (element_class, &_src_template);
+  gst_element_class_add_static_pad_template (element_class, &_sink_template);
 
   gst_element_class_set_metadata (element_class, "OpenGL video flip filter",
       "Filter/Effect/Video", "Flip video on the GPU",
@@ -235,10 +250,10 @@
         gst_structure_get_int (structure, "height", &height)) {
 
       switch (vf->active_method) {
-        case GST_GL_VIDEO_FLIP_METHOD_90R:
-        case GST_GL_VIDEO_FLIP_METHOD_90L:
-        case GST_GL_VIDEO_FLIP_METHOD_FLIP_UL_LR:
-        case GST_GL_VIDEO_FLIP_METHOD_FLIP_UR_LL:
+        case GST_VIDEO_ORIENTATION_90R:
+        case GST_VIDEO_ORIENTATION_90L:
+        case GST_VIDEO_ORIENTATION_UL_LR:
+        case GST_VIDEO_ORIENTATION_UR_LL:
           gst_structure_set (structure, "width", G_TYPE_INT, height,
               "height", G_TYPE_INT, width, NULL);
           if (gst_structure_get_fraction (structure, "pixel-aspect-ratio",
@@ -253,10 +268,10 @@
             }
           }
           break;
-        case GST_GL_VIDEO_FLIP_METHOD_IDENTITY:
-        case GST_GL_VIDEO_FLIP_METHOD_180:
-        case GST_GL_VIDEO_FLIP_METHOD_FLIP_HORIZ:
-        case GST_GL_VIDEO_FLIP_METHOD_FLIP_VERT:
+        case GST_VIDEO_ORIENTATION_IDENTITY:
+        case GST_VIDEO_ORIENTATION_180:
+        case GST_VIDEO_ORIENTATION_HORIZ:
+        case GST_VIDEO_ORIENTATION_VERT:
           break;
         default:
           g_assert_not_reached ();
@@ -270,7 +285,7 @@
 
 /* with object lock */
 static void
-_set_active_method (GstGLVideoFlip * vf, GstGLVideoFlipMethod method,
+_set_active_method (GstGLVideoFlip * vf, GstVideoOrientationMethod method,
     GstCaps * caps)
 {
   gfloat rot_z = 0., scale_x = 1.0, scale_y = 1.0;
@@ -278,34 +293,34 @@
   GstPad *srcpad;
 
   switch (method) {
-    case GST_GL_VIDEO_FLIP_METHOD_IDENTITY:
+    case GST_VIDEO_ORIENTATION_IDENTITY:
       break;
-    case GST_GL_VIDEO_FLIP_METHOD_90R:
+    case GST_VIDEO_ORIENTATION_90R:
       scale_x *= vf->aspect;
       scale_y *= 1. / vf->aspect;
       rot_z = 90.;
       break;
-    case GST_GL_VIDEO_FLIP_METHOD_180:
+    case GST_VIDEO_ORIENTATION_180:
       rot_z = 180.;
       break;
-    case GST_GL_VIDEO_FLIP_METHOD_90L:
+    case GST_VIDEO_ORIENTATION_90L:
       scale_x *= vf->aspect;
       scale_y *= 1. / vf->aspect;
       rot_z = 270.;
       break;
-    case GST_GL_VIDEO_FLIP_METHOD_FLIP_HORIZ:
+    case GST_VIDEO_ORIENTATION_HORIZ:
       scale_x *= -1.;
       break;
-    case GST_GL_VIDEO_FLIP_METHOD_FLIP_UR_LL:
+    case GST_VIDEO_ORIENTATION_UR_LL:
       scale_x *= -vf->aspect;
       scale_y *= 1. / vf->aspect;
       rot_z = 90.;
       break;
-    case GST_GL_VIDEO_FLIP_METHOD_FLIP_VERT:
+    case GST_VIDEO_ORIENTATION_VERT:
       scale_x *= -1.;
       rot_z = 180.;
       break;
-    case GST_GL_VIDEO_FLIP_METHOD_FLIP_UL_LR:
+    case GST_VIDEO_ORIENTATION_UL_LR:
       scale_x *= -vf->aspect;
       scale_y *= 1. / vf->aspect;
       rot_z = 270.;
@@ -333,10 +348,17 @@
 }
 
 static void
-gst_gl_video_flip_set_method (GstGLVideoFlip * vf, GstGLVideoFlipMethod method,
-    gboolean from_tag)
+gst_gl_video_flip_set_method (GstGLVideoFlip * vf,
+    GstVideoOrientationMethod method, gboolean from_tag)
 {
   GST_OBJECT_LOCK (vf);
+
+  if (method == GST_VIDEO_ORIENTATION_CUSTOM) {
+    GST_WARNING_OBJECT (vf, "unsupported custom orientation");
+    GST_OBJECT_UNLOCK (vf);
+    return;
+  }
+
   /* Store updated method */
   if (from_tag)
     vf->tag_method = method;
@@ -344,7 +366,7 @@
     vf->method = method;
 
   /* Get the new method */
-  if (vf->method == GST_GL_VIDEO_FLIP_METHOD_AUTO)
+  if (vf->method == GST_VIDEO_ORIENTATION_AUTO)
     method = vf->tag_method;
   else
     method = vf->method;
@@ -369,6 +391,7 @@
 
   switch (prop_id) {
     case PROP_METHOD:
+    case PROP_VIDEO_DIRECTION:
       gst_gl_video_flip_set_method (vf, g_value_get_enum (value), FALSE);
       break;
     default:
@@ -385,6 +408,7 @@
 
   switch (prop_id) {
     case PROP_METHOD:
+    case PROP_VIDEO_DIRECTION:
       g_value_set_enum (value, vf->method);
       break;
     default:
@@ -411,29 +435,25 @@
         if (gst_tag_list_get_string (taglist, "image-orientation",
                 &orientation)) {
           if (!g_strcmp0 ("rotate-0", orientation))
-            gst_gl_video_flip_set_method (vf, GST_GL_VIDEO_FLIP_METHOD_IDENTITY,
+            gst_gl_video_flip_set_method (vf, GST_VIDEO_ORIENTATION_IDENTITY,
                 TRUE);
           else if (!g_strcmp0 ("rotate-90", orientation))
-            gst_gl_video_flip_set_method (vf, GST_GL_VIDEO_FLIP_METHOD_90R,
-                TRUE);
+            gst_gl_video_flip_set_method (vf, GST_VIDEO_ORIENTATION_90R, TRUE);
           else if (!g_strcmp0 ("rotate-180", orientation))
-            gst_gl_video_flip_set_method (vf, GST_GL_VIDEO_FLIP_METHOD_180,
-                TRUE);
+            gst_gl_video_flip_set_method (vf, GST_VIDEO_ORIENTATION_180, TRUE);
           else if (!g_strcmp0 ("rotate-270", orientation))
-            gst_gl_video_flip_set_method (vf, GST_GL_VIDEO_FLIP_METHOD_90L,
-                TRUE);
+            gst_gl_video_flip_set_method (vf, GST_VIDEO_ORIENTATION_90L, TRUE);
           else if (!g_strcmp0 ("flip-rotate-0", orientation))
             gst_gl_video_flip_set_method (vf,
-                GST_GL_VIDEO_FLIP_METHOD_FLIP_HORIZ, TRUE);
+                GST_VIDEO_ORIENTATION_HORIZ, TRUE);
           else if (!g_strcmp0 ("flip-rotate-90", orientation))
             gst_gl_video_flip_set_method (vf,
-                GST_GL_VIDEO_FLIP_METHOD_FLIP_UR_LL, TRUE);
+                GST_VIDEO_ORIENTATION_UR_LL, TRUE);
           else if (!g_strcmp0 ("flip-rotate-180", orientation))
-            gst_gl_video_flip_set_method (vf,
-                GST_GL_VIDEO_FLIP_METHOD_FLIP_VERT, TRUE);
+            gst_gl_video_flip_set_method (vf, GST_VIDEO_ORIENTATION_VERT, TRUE);
           else if (!g_strcmp0 ("flip-rotate-270", orientation))
             gst_gl_video_flip_set_method (vf,
-                GST_GL_VIDEO_FLIP_METHOD_FLIP_UL_LR, TRUE);
+                GST_VIDEO_ORIENTATION_UL_LR, TRUE);
 
           g_free (orientation);
         }
diff --git a/ext/gl/gstglvideoflip.h b/ext/gl/gstglvideoflip.h
index 3b8e81b..36f8da0 100644
--- a/ext/gl/gstglvideoflip.h
+++ b/ext/gl/gstglvideoflip.h
@@ -78,9 +78,9 @@
   GstCaps      *input_caps;
 
   /* properties */
-  GstGLVideoFlipMethod method;
-  GstGLVideoFlipMethod tag_method;
-  GstGLVideoFlipMethod active_method;
+  GstVideoOrientationMethod method;
+  GstVideoOrientationMethod tag_method;
+  GstVideoOrientationMethod active_method;
 
   gfloat aspect;
 };
diff --git a/ext/gl/gstglvideomixer.c b/ext/gl/gstglvideomixer.c
index e27ebc0..04fab6f 100644
--- a/ext/gl/gstglvideomixer.c
+++ b/ext/gl/gstglvideomixer.c
@@ -29,12 +29,12 @@
  * <title>Examples</title>
  * |[
  * gst-launch-1.0  glvideomixer name=m ! glimagesink \
- *     videotestsrc ! video/x-raw, format=YUY2 ! m. \
- *     videotestsrc pattern=12 ! video/x-raw, format=I420, framerate=5/1, width=100, height=200 ! queue ! m. \
- *     videotestsrc ! video/x-raw, format=RGB, framerate=15/1, width=1500, height=1500 ! gleffects effect=3 ! queue ! m. \
- *     videotestsrc ! gleffects effect=2 ! queue ! m.  \
- *     videotestsrc ! glfiltercube ! queue ! m. \
- *     videotestsrc ! gleffects effect=6 ! queue ! m.
+ *     videotestsrc ! video/x-raw, format=YUY2 ! glupload ! glcolorconvert ! m. \
+ *     videotestsrc pattern=12 ! video/x-raw, format=I420, framerate=5/1, width=100, height=200 ! queue ! \
+ *     glupload ! glcolorconvert ! m. \
+ *     videotestsrc ! glupload ! gleffects effect=2 ! queue ! m.  \
+ *     videotestsrc ! glupload ! glfiltercube ! queue ! m. \
+ *     videotestsrc ! glupload ! gleffects effect=6 ! queue ! m.gst-launch-1.0  glvideomixer name=m ! glimagesink \
  * ]|
  * </refsect2>
  */
@@ -43,6 +43,8 @@
 #include "config.h"
 #endif
 
+#include <gst/video/gstvideoaffinetransformationmeta.h>
+
 #include "gstglvideomixer.h"
 #include "gstglmixerbin.h"
 
@@ -452,6 +454,7 @@
 #define DEBUG_INIT \
     GST_DEBUG_CATEGORY_INIT (gst_gl_video_mixer_debug, "glvideomixer", 0, "glvideomixer element");
 
+#define gst_gl_video_mixer_parent_class parent_class
 G_DEFINE_TYPE_WITH_CODE (GstGLVideoMixer, gst_gl_video_mixer, GST_TYPE_GL_MIXER,
     DEBUG_INIT);
 
@@ -463,24 +466,18 @@
 static GstCaps *_update_caps (GstVideoAggregator * vagg, GstCaps * caps,
     GstCaps * filter);
 static GstCaps *_fixate_caps (GstVideoAggregator * vagg, GstCaps * caps);
+static gboolean gst_gl_video_mixer_propose_allocation (GstGLBaseMixer *
+    base_mix, GstGLBaseMixerPad * base_pad, GstQuery * decide_query,
+    GstQuery * query);
 static void gst_gl_video_mixer_reset (GstGLMixer * mixer);
 static gboolean gst_gl_video_mixer_init_shader (GstGLMixer * mixer,
     GstCaps * outcaps);
 
 static gboolean gst_gl_video_mixer_process_textures (GstGLMixer * mixer,
-    guint out_tex);
-static void gst_gl_video_mixer_callback (gpointer stuff);
+    GstGLMemory * out_tex);
+static gboolean gst_gl_video_mixer_callback (gpointer stuff);
 
 /* *INDENT-OFF* */
-/* vertex source */
-static const gchar *video_mixer_v_src =
-    "attribute vec4 a_position;                                   \n"
-    "attribute vec2 a_texCoord;                                   \n"
-    "varying vec2 v_texCoord;                                     \n"
-    "void main()                                                  \n"
-    "{                                                            \n"
-    "   gl_Position = a_position;                                 \n"
-    "   v_texCoord = a_texCoord;                                  \n" "}";
 
 /* fragment source */
 static const gchar *video_mixer_f_src =
@@ -489,10 +486,10 @@
     "#endif\n"
     "uniform sampler2D texture;                     \n"
     "uniform float alpha;\n"
-    "varying vec2 v_texCoord;                            \n"
+    "varying vec2 v_texcoord;                            \n"
     "void main()                                         \n"
     "{                                                   \n"
-    "  vec4 rgba = texture2D( texture, v_texCoord );\n"
+    "  vec4 rgba = texture2D(texture, v_texcoord);\n"
     "  gl_FragColor = vec4(rgba.rgb, rgba.a * alpha);\n"
     "}                                                   \n";
 
@@ -863,6 +860,7 @@
   GstElementClass *element_class;
   GstAggregatorClass *agg_class = (GstAggregatorClass *) klass;
   GstVideoAggregatorClass *vagg_class = (GstVideoAggregatorClass *) klass;
+  GstGLBaseMixerClass *mix_class = GST_GL_BASE_MIXER_CLASS (klass);
 
   gobject_class = (GObjectClass *) klass;
   element_class = GST_ELEMENT_CLASS (klass);
@@ -890,6 +888,8 @@
 
   agg_class->sinkpads_type = GST_TYPE_GL_VIDEO_MIXER_PAD;
 
+  mix_class->propose_allocation = gst_gl_video_mixer_propose_allocation;
+
   GST_GL_BASE_MIXER_CLASS (klass)->supported_gl_api =
       GST_GL_API_OPENGL | GST_GL_API_OPENGL3 | GST_GL_API_GLES2;
 }
@@ -933,6 +933,20 @@
   }
 }
 
+static gboolean
+gst_gl_video_mixer_propose_allocation (GstGLBaseMixer * base_mix,
+    GstGLBaseMixerPad * base_pad, GstQuery * decide_query, GstQuery * query)
+{
+  if (!GST_GL_BASE_MIXER_CLASS (parent_class)->propose_allocation (base_mix,
+          base_pad, decide_query, query))
+    return FALSE;
+
+  gst_query_add_allocation_meta (query,
+      GST_VIDEO_AFFINE_TRANSFORMATION_META_API_TYPE, 0);
+
+  return TRUE;
+}
+
 static void
 _mixer_pad_get_output_size (GstGLVideoMixer * mix,
     GstGLVideoMixerPad * mix_pad, gint out_par_n, gint out_par_d, gint * width,
@@ -1137,19 +1151,29 @@
         video_mixer->shader);
 
   return gst_gl_context_gen_shader (GST_GL_BASE_MIXER (mixer)->context,
-      video_mixer_v_src, video_mixer_f_src, &video_mixer->shader);
+      gst_gl_shader_string_vertex_mat4_vertex_transform,
+      video_mixer_f_src, &video_mixer->shader);
+}
+
+static void
+_video_mixer_process_gl (GstGLContext * context, GstGLVideoMixer * video_mixer)
+{
+  GstGLMixer *mixer = GST_GL_MIXER (video_mixer);
+
+  gst_gl_framebuffer_draw_to_texture (mixer->fbo, video_mixer->out_tex,
+      gst_gl_video_mixer_callback, video_mixer);
 }
 
 static gboolean
-gst_gl_video_mixer_process_textures (GstGLMixer * mix, guint out_tex)
+gst_gl_video_mixer_process_textures (GstGLMixer * mix, GstGLMemory * out_tex)
 {
   GstGLVideoMixer *video_mixer = GST_GL_VIDEO_MIXER (mix);
+  GstGLContext *context = GST_GL_BASE_MIXER (mix)->context;
 
-  gst_gl_context_use_fbo_v2 (GST_GL_BASE_MIXER (mix)->context,
-      GST_VIDEO_INFO_WIDTH (&GST_VIDEO_AGGREGATOR (mix)->info),
-      GST_VIDEO_INFO_HEIGHT (&GST_VIDEO_AGGREGATOR (mix)->info),
-      mix->fbo, mix->depthbuffer,
-      out_tex, gst_gl_video_mixer_callback, (gpointer) video_mixer);
+  video_mixer->out_tex = out_tex;
+
+  gst_gl_context_thread_add (context,
+      (GstGLContextThreadFunc) _video_mixer_process_gl, video_mixer);
 
   return TRUE;
 }
@@ -1368,7 +1392,7 @@
 }
 
 /* opengl scene, params: input texture (not the output mixer->texture) */
-static void
+static gboolean
 gst_gl_video_mixer_callback (gpointer stuff)
 {
   GstGLVideoMixer *video_mixer = GST_GL_VIDEO_MIXER (stuff);
@@ -1396,14 +1420,14 @@
   }
 
   if (!_draw_background (video_mixer))
-    return;
+    return FALSE;
 
   gst_gl_shader_use (video_mixer->shader);
 
   attr_position_loc =
       gst_gl_shader_get_attribute_location (video_mixer->shader, "a_position");
   attr_texture_loc =
-      gst_gl_shader_get_attribute_location (video_mixer->shader, "a_texCoord");
+      gst_gl_shader_get_attribute_location (video_mixer->shader, "a_texcoord");
 
   gl->Enable (GL_BLEND);
 
@@ -1412,6 +1436,7 @@
   while (walk) {
     GstGLMixerPad *mix_pad = walk->data;
     GstGLVideoMixerPad *pad = walk->data;
+    GstVideoAggregatorPad *vagg_pad = walk->data;
     GstVideoInfo *v_info;
     guint in_tex;
     guint in_width, in_height;
@@ -1491,6 +1516,17 @@
     gst_gl_shader_set_uniform_1i (video_mixer->shader, "texture", 0);
     gst_gl_shader_set_uniform_1f (video_mixer->shader, "alpha", pad->alpha);
 
+    {
+      GstVideoAffineTransformationMeta *af_meta;
+      gfloat matrix[16];
+
+      af_meta =
+          gst_buffer_get_video_affine_transformation_meta (vagg_pad->buffer);
+      gst_gl_get_affine_transformation_meta_as_ndc (af_meta, matrix);
+      gst_gl_shader_set_uniform_matrix_4fv (video_mixer->shader,
+          "u_transformation", 1, FALSE, matrix);
+    }
+
     gl->EnableVertexAttribArray (attr_position_loc);
     gl->EnableVertexAttribArray (attr_texture_loc);
 
@@ -1519,4 +1555,6 @@
   gl->Disable (GL_BLEND);
 
   gst_gl_context_clear_shader (GST_GL_BASE_MIXER (mixer)->context);
+
+  return TRUE;
 }
diff --git a/ext/gl/gstglvideomixer.h b/ext/gl/gstglvideomixer.h
index a0776fd..f352646 100644
--- a/ext/gl/gstglvideomixer.h
+++ b/ext/gl/gstglvideomixer.h
@@ -125,6 +125,7 @@
     GLuint vao;
     GLuint vbo_indices;
     GLuint checker_vbo;
+    GstGLMemory *out_tex;
 };
 
 struct _GstGLVideoMixerClass
diff --git a/ext/gl/gstglviewconvert.c b/ext/gl/gstglviewconvert.c
index 5a3c9fe..ba05a11 100644
--- a/ext/gl/gstglviewconvert.c
+++ b/ext/gl/gstglviewconvert.c
@@ -31,11 +31,13 @@
  * <refsect2>
  * <title>Examples</title>
  * |[
- * gst-launch-1.0 videotestsrc ! glviewconvert ! glimagesink
- * ]|
+ * gst-launch-1.0 videotestsrc ! glupload ! glviewconvert ! glimagesink
+ * ]| Simple placebo example demonstrating identity passthrough of mono video
  * |[
- * gst-launch-1.0 videotestsrc pattern=checkers-1 ! glviewconvert input-mode-override=side-by-side ! glimagesink -v
- * ]|
+ * gst-launch-1.0 videotestsrc pattern=checkers-1 ! glupload ! \
+ *     glviewconvert input-mode-override=side-by-side ! glimagesink -v
+ * ]| Force re-interpretation of the input checkers pattern as a side-by-side stereoscopic
+ *    image and display in glimagesink.
  * FBO (Frame Buffer Object) and GLSL (OpenGL Shading Language) are required.
  * </refsect2>
  */
diff --git a/ext/gl/gstopengl.c b/ext/gl/gstopengl.c
index 50676c4..9bd754d 100644
--- a/ext/gl/gstopengl.c
+++ b/ext/gl/gstopengl.c
@@ -62,6 +62,8 @@
 #include "gstglstereosplit.h"
 #include "gstglstereomix.h"
 #include "gstglviewconvert.h"
+#include "gstgltestsrc.h"
+#include "gstgldeinterlace.h"
 
 #if HAVE_GRAPHENE
 #include "gstgltransformation.h"
@@ -74,10 +76,8 @@
 #endif /* HAVE_JPEG */
 
 #if GST_GL_HAVE_OPENGL
-#include "gstgltestsrc.h"
 #include "gstglfilterglass.h"
 /* #include "gstglfilterreflectedscreen.h" */
-#include "gstgldeinterlace.h"
 #include "gstglmosaic.h"
 #if HAVE_PNG
 #include "gstgldifferencematte.h"
@@ -226,6 +226,17 @@
           GST_RANK_NONE, GST_TYPE_GL_STEREO_MIX)) {
     return FALSE;
   }
+
+  if (!gst_element_register (plugin, "gltestsrc",
+          GST_RANK_NONE, GST_TYPE_GL_TEST_SRC)) {
+    return FALSE;
+  }
+
+  if (!gst_element_register (plugin, "gldeinterlace",
+          GST_RANK_NONE, GST_TYPE_GL_DEINTERLACE)) {
+    return FALSE;
+  }
+
 #if HAVE_JPEG
 #if HAVE_PNG
   if (!gst_element_register (plugin, "gloverlay",
@@ -235,11 +246,6 @@
 #endif /* HAVE_PNG */
 #endif /* HAVE_JPEG */
 #if GST_GL_HAVE_OPENGL
-  if (!gst_element_register (plugin, "gltestsrc",
-          GST_RANK_NONE, GST_TYPE_GL_TEST_SRC)) {
-    return FALSE;
-  }
-
   if (!gst_element_register (plugin, "glfilterglass",
           GST_RANK_NONE, GST_TYPE_GL_FILTER_GLASS)) {
     return FALSE;
@@ -250,11 +256,6 @@
     return FALSE;
   }
 #endif
-  if (!gst_element_register (plugin, "gldeinterlace",
-          GST_RANK_NONE, GST_TYPE_GL_DEINTERLACE)) {
-    return FALSE;
-  }
-
   if (!gst_element_register (plugin, "glmosaic",
           GST_RANK_NONE, GST_TYPE_GL_MOSAIC)) {
     return FALSE;
diff --git a/ext/gme/Makefile.in b/ext/gme/Makefile.in
index 1f4bc08..8f712bc 100644
--- a/ext/gme/Makefile.in
+++ b/ext/gme/Makefile.in
@@ -302,6 +302,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -323,6 +325,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -372,6 +376,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -517,6 +523,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -643,8 +651,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,8 +693,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/gme/gstgme.c b/ext/gme/gstgme.c
index 1e149ac..4fb4429 100644
--- a/ext/gme/gstgme.c
+++ b/ext/gme/gstgme.c
@@ -92,10 +92,8 @@
       "Chris Lee <clee@kde.org>, Brian Koropoff <bkoropoff@gmail.com>, "
       "Michael Pyne <mpyne@kde.org>, Sebastian Dröge <sebastian.droege@collabora.co.uk>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
 
   element_class->change_state = GST_DEBUG_FUNCPTR (gst_gme_dec_change_state);
 }
@@ -355,9 +353,7 @@
     if (flow_return == GST_FLOW_EOS) {
       gst_pad_push_event (pad, gst_event_new_eos ());
     } else if (flow_return < GST_FLOW_EOS || flow_return == GST_FLOW_NOT_LINKED) {
-      GST_ELEMENT_ERROR (gme, STREAM, FAILED, ("Internal data stream error."),
-          ("stream stopped, reason %s", gst_flow_get_name (flow_return)));
-
+      GST_ELEMENT_FLOW_ERROR (gme, flow_return);
       gst_pad_push_event (pad, gst_event_new_eos ());
     }
   }
diff --git a/ext/gsm/Makefile.in b/ext/gsm/Makefile.in
index 1313c41..2f553f8 100644
--- a/ext/gsm/Makefile.in
+++ b/ext/gsm/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/gsm/gstgsmdec.c b/ext/gsm/gstgsmdec.c
index e02631f..0f3e49f 100644
--- a/ext/gsm/gstgsmdec.c
+++ b/ext/gsm/gstgsmdec.c
@@ -84,13 +84,13 @@
   element_class = (GstElementClass *) klass;
   base_class = (GstAudioDecoderClass *) klass;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gsmdec_sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gsmdec_src_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gsmdec_sink_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gsmdec_src_template);
   gst_element_class_set_static_metadata (element_class, "GSM audio decoder",
-      "Codec/Decoder/Audio",
-      "Decodes GSM encoded audio", "Philippe Khalaf <burger@speedy.org>");
+      "Codec/Decoder/Audio", "Decodes GSM encoded audio",
+      "Philippe Khalaf <burger@speedy.org>");
 
   base_class->start = GST_DEBUG_FUNCPTR (gst_gsmdec_start);
   base_class->stop = GST_DEBUG_FUNCPTR (gst_gsmdec_stop);
diff --git a/ext/gsm/gstgsmenc.c b/ext/gsm/gstgsmenc.c
index 54ede2e..11c3d74 100644
--- a/ext/gsm/gstgsmenc.c
+++ b/ext/gsm/gstgsmenc.c
@@ -78,13 +78,13 @@
   element_class = (GstElementClass *) klass;
   base_class = (GstAudioEncoderClass *) klass;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gsmenc_sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gsmenc_src_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gsmenc_sink_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gsmenc_src_template);
   gst_element_class_set_static_metadata (element_class, "GSM audio encoder",
-      "Codec/Encoder/Audio",
-      "Encodes GSM audio", "Philippe Khalaf <burger@speedy.org>");
+      "Codec/Encoder/Audio", "Encodes GSM audio",
+      "Philippe Khalaf <burger@speedy.org>");
 
   base_class->start = GST_DEBUG_FUNCPTR (gst_gsmenc_start);
   base_class->stop = GST_DEBUG_FUNCPTR (gst_gsmenc_stop);
diff --git a/ext/gtk/Makefile.in b/ext/gtk/Makefile.in
index 2e93d6c..af84c98 100644
--- a/ext/gtk/Makefile.in
+++ b/ext/gtk/Makefile.in
@@ -316,6 +316,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -337,6 +339,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -386,6 +390,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -531,6 +537,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -657,8 +665,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -701,8 +707,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/gtk/gstgtkglsink.c b/ext/gtk/gstgtkglsink.c
index 5f36fa2..4081754 100644
--- a/ext/gtk/gstgtkglsink.c
+++ b/ext/gtk/gstgtkglsink.c
@@ -80,8 +80,8 @@
       "Sink/Video", "A video sink that renders to a GtkWidget using OpenGL",
       "Matthew Waters <matthew@centricular.com>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_gtk_gl_sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_gtk_gl_sink_template);
 }
 
 static void
diff --git a/ext/gtk/gstgtksink.c b/ext/gtk/gstgtksink.c
index 950beab..e9f9d0c 100644
--- a/ext/gtk/gstgtksink.c
+++ b/ext/gtk/gstgtksink.c
@@ -67,8 +67,8 @@
       "Sink/Video", "A video sink that renders to a GtkWidget",
       "Matthew Waters <matthew@centricular.com>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_gtk_sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_gtk_sink_template);
 }
 
 static void
diff --git a/ext/hls/Makefile.am b/ext/hls/Makefile.am
index 189f9e6..8314ff0 100644
--- a/ext/hls/Makefile.am
+++ b/ext/hls/Makefile.am
@@ -4,6 +4,7 @@
 libgsthls_la_SOURCES =			\
 	m3u8.c					\
 	gsthlsdemux.c				\
+	gsthlsdemux-util.c  \
 	gsthlsplugin.c 			\
 	gsthlssink.c 				\
 	gstm3u8playlist.c
@@ -12,7 +13,7 @@
 libgsthls_la_LIBADD = \
 	$(top_builddir)/gst-libs/gst/uridownloader/libgsturidownloader-@GST_API_VERSION@.la \
         $(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la \
-	$(GST_PLUGINS_BASE_LIBS) -lgstpbutils-$(GST_API_VERSION) -lgstvideo-$(GST_API_VERSION) \
+	$(GST_PLUGINS_BASE_LIBS) -lgstpbutils-$(GST_API_VERSION) -lgstvideo-$(GST_API_VERSION) -lgsttag-$(GST_API_VERSION) \
 	$(GST_BASE_LIBS) $(GST_LIBS) $(LIBM) $(LIBGCRYPT_LIBS) $(NETTLE_LIBS) $(OPENSSL_LIBS)
 libgsthls_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) -no-undefined
 libgsthls_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
diff --git a/ext/hls/Makefile.in b/ext/hls/Makefile.in
index dded051..21d9463 100644
--- a/ext/hls/Makefile.in
+++ b/ext/hls/Makefile.in
@@ -170,8 +170,9 @@
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1)
 am_libgsthls_la_OBJECTS = libgsthls_la-m3u8.lo \
-	libgsthls_la-gsthlsdemux.lo libgsthls_la-gsthlsplugin.lo \
-	libgsthls_la-gsthlssink.lo libgsthls_la-gstm3u8playlist.lo
+	libgsthls_la-gsthlsdemux.lo libgsthls_la-gsthlsdemux-util.lo \
+	libgsthls_la-gsthlsplugin.lo libgsthls_la-gsthlssink.lo \
+	libgsthls_la-gstm3u8playlist.lo
 libgsthls_la_OBJECTS = $(am_libgsthls_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -308,6 +309,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -329,6 +332,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -378,6 +383,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -523,6 +530,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -649,8 +658,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -693,8 +700,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -787,6 +799,7 @@
 libgsthls_la_SOURCES = \
 	m3u8.c					\
 	gsthlsdemux.c				\
+	gsthlsdemux-util.c  \
 	gsthlsplugin.c 			\
 	gsthlssink.c 				\
 	gstm3u8playlist.c
@@ -795,7 +808,7 @@
 libgsthls_la_LIBADD = \
 	$(top_builddir)/gst-libs/gst/uridownloader/libgsturidownloader-@GST_API_VERSION@.la \
         $(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la \
-	$(GST_PLUGINS_BASE_LIBS) -lgstpbutils-$(GST_API_VERSION) -lgstvideo-$(GST_API_VERSION) \
+	$(GST_PLUGINS_BASE_LIBS) -lgstpbutils-$(GST_API_VERSION) -lgstvideo-$(GST_API_VERSION) -lgsttag-$(GST_API_VERSION) \
 	$(GST_BASE_LIBS) $(GST_LIBS) $(LIBM) $(LIBGCRYPT_LIBS) $(NETTLE_LIBS) $(OPENSSL_LIBS)
 
 libgsthls_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) -no-undefined
@@ -887,6 +900,7 @@
 distclean-compile:
 	-rm -f *.tab.c
 
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsthls_la-gsthlsdemux-util.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsthls_la-gsthlsdemux.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsthls_la-gsthlsplugin.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsthls_la-gsthlssink.Plo@am__quote@
@@ -931,6 +945,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgsthls_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsthls_la_CFLAGS) $(CFLAGS) -c -o libgsthls_la-gsthlsdemux.lo `test -f 'gsthlsdemux.c' || echo '$(srcdir)/'`gsthlsdemux.c
 
+libgsthls_la-gsthlsdemux-util.lo: gsthlsdemux-util.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgsthls_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsthls_la_CFLAGS) $(CFLAGS) -MT libgsthls_la-gsthlsdemux-util.lo -MD -MP -MF $(DEPDIR)/libgsthls_la-gsthlsdemux-util.Tpo -c -o libgsthls_la-gsthlsdemux-util.lo `test -f 'gsthlsdemux-util.c' || echo '$(srcdir)/'`gsthlsdemux-util.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgsthls_la-gsthlsdemux-util.Tpo $(DEPDIR)/libgsthls_la-gsthlsdemux-util.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gsthlsdemux-util.c' object='libgsthls_la-gsthlsdemux-util.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgsthls_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsthls_la_CFLAGS) $(CFLAGS) -c -o libgsthls_la-gsthlsdemux-util.lo `test -f 'gsthlsdemux-util.c' || echo '$(srcdir)/'`gsthlsdemux-util.c
+
 libgsthls_la-gsthlsplugin.lo: gsthlsplugin.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgsthls_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsthls_la_CFLAGS) $(CFLAGS) -MT libgsthls_la-gsthlsplugin.lo -MD -MP -MF $(DEPDIR)/libgsthls_la-gsthlsplugin.Tpo -c -o libgsthls_la-gsthlsplugin.lo `test -f 'gsthlsplugin.c' || echo '$(srcdir)/'`gsthlsplugin.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgsthls_la-gsthlsplugin.Tpo $(DEPDIR)/libgsthls_la-gsthlsplugin.Plo
diff --git a/ext/hls/gsthlsdemux-util.c b/ext/hls/gsthlsdemux-util.c
new file mode 100644
index 0000000..252f042
--- /dev/null
+++ b/ext/hls/gsthlsdemux-util.c
@@ -0,0 +1,348 @@
+/* GStreamer
+ * Copyright (C) 2016 Jan Schmidt <jan@centricular.com>
+ * Copyright (C) 2016 Tim-Philipp Müller <tim@centricular.com>
+ *
+ * gsthlsdemux-util.c:
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
+#include <gst/gst.h>
+#include <gst/tag/tag.h>
+#include <string.h>
+
+#include "gsthlsdemux.h"
+
+GST_DEBUG_CATEGORY_EXTERN (gst_hls_demux_debug);
+#define GST_CAT_DEFAULT gst_hls_demux_debug
+
+/* Check for sync byte, error_indicator == 0 and packet has payload.
+ * Adaptation control field (data[3] & 0x30) may be zero for TS packets with
+ * null PIDs. Still, these streams are valid TS streams (for null packets,
+ * AFC is supposed to be 0x1, but the spec also says decoders should just
+ * discard any packets with AFC = 0x00) */
+#define IS_MPEGTS_HEADER(data) (data[0] == 0x47 && \
+                                (data[1] & 0x80) == 0x00 && \
+                                ((data[3] & 0x30) != 0x00 || \
+                                ((data[3] & 0x30) == 0x00 && (data[1] & 0x1f) == 0x1f && (data[2] & 0xff) == 0xff)))
+
+#define PCRTIME_TO_GSTTIME(t) (((t) * (guint64)1000) / 27)
+#define MPEGTIME_TO_GSTTIME(t) (((t) * (guint64)100000) / 9)
+
+static gboolean
+have_ts_sync (const guint8 * data, guint size, guint packet_size, guint num)
+{
+  while (num-- > 0) {
+    if (size < packet_size)
+      return FALSE;
+    if (!IS_MPEGTS_HEADER (data))
+      return FALSE;
+    data += packet_size;
+    size -= packet_size;
+  }
+  return TRUE;
+}
+
+static gint
+find_offset (GstHLSTSReader * r, const guint8 * data, guint size)
+{
+  guint sync_points = CLAMP (size / 188, 25, 100);
+  guint off;
+  const gint packet_size = 188;
+
+  /* FIXME: check 192 as well, and maybe also 204, 208 */
+  for (off = 0; off < MIN (size, packet_size); ++off) {
+    if (have_ts_sync (data + off, size - off, packet_size, sync_points)) {
+      r->packet_size = packet_size;
+      return off;
+    }
+  }
+  return -1;
+}
+
+static gboolean
+handle_pcr (GstHLSTSReader * r, const guint8 * data, guint size)
+{
+  const guint8 *p = data;
+  guint32 hdr = GST_READ_UINT32_BE (p);
+  guint af_len, flags;
+
+  guint64 pcr_base, pcr_ext, pcr, ts;
+
+  data = p + 4;
+  if ((hdr & 0x00000020) == 0)  /* has_adaptation_field */
+    return FALSE;
+  af_len = p[4];                /* adaptation_field_len */
+  ++data;
+  if (af_len < (1 + 6) || af_len > r->packet_size - (4 + 1))
+    return FALSE;
+  flags = data[0];
+  /* Does the packet have a PCR? */
+  if ((flags & 0x10) == 0)
+    return FALSE;
+  ++data;
+  --af_len;
+  pcr_base = (GST_READ_UINT64_BE (data) >> 16) >> (6 + 9);
+  pcr_ext = (GST_READ_UINT64_BE (data) >> 16) & 0x1ff;
+  pcr = pcr_base * 300 + pcr_ext;
+  ts = PCRTIME_TO_GSTTIME (pcr);
+  GST_LOG ("have PCR! %" G_GUINT64_FORMAT "\t%" GST_TIME_FORMAT,
+      pcr, GST_TIME_ARGS (ts));
+  if (r->first_pcr == GST_CLOCK_TIME_NONE)
+    r->first_pcr = ts;
+  r->last_pcr = ts;
+
+  return TRUE;
+}
+
+static gboolean
+handle_pmt (GstHLSTSReader * r, const guint8 * data, guint size)
+{
+  const guint8 *p = data;
+  guint32 hdr = GST_READ_UINT32_BE (p);
+  guint slen, pcr_pid;
+
+  data = p + 4;
+  if ((hdr & 0x00000020) != 0)  /* has_adaptation_field */
+    data += 1 + p[4];           /* adaptation_field_len */
+  data += 1 + data[0];          /* pointer_field */
+  if (data[0] != 0x02)          /* table_id */
+    return FALSE;
+  //gst_util_dump_mem (data, 8);
+  /* we assume the entire PMT fits into a single packet and this is it */
+  if (data[6] != 0 || data[6] != data[7])
+    return FALSE;
+  slen = GST_READ_UINT16_BE (data + 1) & 0x0FFF;
+  if (slen > (gsize) (p + r->packet_size - (data + 1 + 2)) || slen < 5 + 2 + 4)
+    return FALSE;
+  data += 3 + 5;
+  slen -= 5;                    /* bytes after section_length field itself */
+  slen -= 4;                    /* crc at end */
+  pcr_pid = GST_READ_UINT16_BE (data) & 0x1fff;
+  if (pcr_pid != 0x1fff) {
+    GST_DEBUG ("pcr_pid now: %04x", pcr_pid);
+    r->pcr_pid = pcr_pid;
+    return TRUE;
+  }
+
+  return FALSE;
+}
+
+static gboolean
+handle_pat (GstHLSTSReader * r, const guint8 * data, guint size)
+{
+  const guint8 *p = data;
+  guint32 hdr = GST_READ_UINT32_BE (p);
+  guint slen;
+
+  data = p + 4;
+  if ((hdr & 0x00000020) != 0)  /* has_adaptation_field */
+    data += 1 + p[4];           /* adaptation_field_len */
+  data += 1 + data[0];          /* pointer_field */
+  if (data[0] != 0)             /* table_id */
+    return FALSE;
+  /* we assume the entire PAT fits into a single packet and this is it */
+  if (data[6] != 0 || data[6] != data[7])
+    return FALSE;
+  slen = GST_READ_UINT16_BE (data + 1) & 0x0FFF;
+  if (slen > (gsize) (p + r->packet_size - (data + 1 + 2)) || slen < 5 + 4 + 4)
+    return FALSE;
+  data += 3 + 5;
+  slen -= 5;                    /* bytes after section_length field itself */
+  slen -= 4;                    /* crc at end */
+  while (slen >= 4) {
+    guint program_num = GST_READ_UINT16_BE (data);
+    guint val = GST_READ_UINT16_BE (data + 2) & 0x1fff;
+    if (program_num != 0) {
+      GST_DEBUG ("  program %04x: pmt_pid : %04x\n", program_num, val);
+      r->pmt_pid = val;
+      return TRUE;
+    }
+    data += 4;
+    slen -= 4;
+  }
+
+  return FALSE;
+}
+
+void
+gst_hlsdemux_tsreader_init (GstHLSTSReader * r)
+{
+  r->rtype = GST_HLS_TSREADER_NONE;
+  r->packet_size = 188;
+  r->pmt_pid = r->pcr_pid = -1;
+  r->first_pcr = GST_CLOCK_TIME_NONE;
+  r->last_pcr = GST_CLOCK_TIME_NONE;
+}
+
+void
+gst_hlsdemux_tsreader_set_type (GstHLSTSReader * r, GstHLSTSReaderType rtype)
+{
+  r->rtype = rtype;
+  r->have_id3 = FALSE;
+}
+
+static gboolean
+gst_hlsdemux_tsreader_find_pcrs_mpegts (GstHLSTSReader * r,
+    GstBuffer * buffer, GstClockTime * first_pcr, GstClockTime * last_pcr)
+{
+  GstMapInfo info;
+  gint offset;
+  const guint8 *p;
+  const guint8 *data;
+  gsize size;
+
+  if (!gst_buffer_map (buffer, &info, GST_MAP_READ))
+    return FALSE;
+
+  data = info.data;
+  size = info.size;
+
+  *first_pcr = *last_pcr = GST_CLOCK_TIME_NONE;
+
+  offset = find_offset (r, data, size);
+  if (offset < 0) {
+    gst_buffer_unmap (buffer, &info);
+    return FALSE;
+  }
+
+  GST_LOG ("TS packet start offset: %d", offset);
+
+  /* We don't store a partial packet at the end,
+   * and just assume that the final PCR is 
+   * going to be completely inside the last data
+   * segment passed to us */
+  data += offset;
+  size -= offset;
+
+  for (p = data; size >= r->packet_size;
+      p += r->packet_size, size -= r->packet_size) {
+    guint32 hdr = GST_READ_UINT32_BE (p);
+
+    /* sync byte (0x47), error indicator (TEI) not set, PID 0, has_payload */
+    if ((hdr & 0xFF9FFF10) == 0x47000010) {
+      GST_LOG ("Found packet for PID 0000 (PAT)");
+      handle_pat (r, p, size);
+    }
+    /* sync byte (0x47), error indicator (TEI) not set, has_payload, PID = PMT_pid */
+    else if ((hdr & 0xFF800010) == 0x47000010
+        && ((hdr >> 8) & 0x1fff) == r->pmt_pid) {
+      GST_LOG ("Found packet for PID %04x (PMT)", r->pmt_pid);
+      handle_pmt (r, p, size);
+    }
+    /* sync byte (0x47), error indicator (TEI) not set, has_payload */
+    else if ((hdr & 0xFF800010) == 0x47000010
+        && ((hdr >> 8) & 0x1fff) == r->pcr_pid) {
+      GST_LOG ("Found packet for PID %04x (PCR)", r->pcr_pid);
+      handle_pcr (r, p, size);
+    }
+  }
+
+  gst_buffer_unmap (buffer, &info);
+
+  *first_pcr = r->first_pcr;
+  *last_pcr = r->last_pcr;
+
+  /* Return TRUE if this piece was big enough to get a PCR from */
+  return (r->first_pcr != GST_CLOCK_TIME_NONE);
+}
+
+static gboolean
+gst_hlsdemux_tsreader_find_pcrs_id3 (GstHLSTSReader * r,
+    GstBuffer * buffer, GstClockTime * first_pcr, GstClockTime * last_pcr)
+{
+  GstMapInfo info;
+  guint32 tag_size;
+  gsize size;
+  GstTagList *taglist;
+  GstSample *priv_data = NULL;
+  GstBuffer *tag_buf;
+  guint64 pts;
+
+  *first_pcr = r->first_pcr;
+  *last_pcr = r->last_pcr;
+
+  if (r->have_id3)
+    return TRUE;
+
+  /* We need at least 10 bytes, starting with "ID3" for the header */
+  size = gst_buffer_get_size (buffer);
+  if (size < 10)
+    return FALSE;
+
+  /* Read the tag size */
+  tag_size = gst_tag_get_id3v2_tag_size (buffer);
+
+  /* Check we've collected that much */
+  if (size < tag_size)
+    return FALSE;
+
+  /* From here, whether the tag is valid or not we'll
+   * not try and read again */
+  r->have_id3 = TRUE;
+
+  /* Parse the tag */
+  taglist = gst_tag_list_from_id3v2_tag (buffer);
+  if (taglist == NULL)
+    return TRUE;                /* Invalid tag, stop trying */
+
+  /* Extract the timestamps */
+  if (!gst_tag_list_get_sample (taglist, GST_TAG_PRIVATE_DATA, &priv_data))
+    goto out;
+
+  if (!g_str_equal ("com.apple.streaming.transportStreamTimestamp",
+          gst_structure_get_string (gst_sample_get_info (priv_data), "owner")))
+    goto out;
+
+  /* OK, now as per section 3, the tag contains a 33-bit PCR inside a 64-bit
+   * BE-word */
+  tag_buf = gst_sample_get_buffer (priv_data);
+  if (tag_buf == NULL)
+    goto out;
+
+  if (!gst_buffer_map (tag_buf, &info, GST_MAP_READ))
+    goto out;
+
+  pts = GST_READ_UINT64_BE (info.data);
+  *first_pcr = r->first_pcr = MPEGTIME_TO_GSTTIME (pts);
+
+  GST_LOG ("Got AAC TS PTS %" G_GUINT64_FORMAT " (%" G_GUINT64_FORMAT ")",
+      pts, r->first_pcr);
+
+  gst_buffer_unmap (tag_buf, &info);
+
+out:
+  if (priv_data)
+    gst_sample_unref (priv_data);
+
+  gst_tag_list_unref (taglist);
+
+  return TRUE;
+}
+
+gboolean
+gst_hlsdemux_tsreader_find_pcrs (GstHLSTSReader * r,
+    GstBuffer * buffer, GstClockTime * first_pcr, GstClockTime * last_pcr)
+{
+  if (r->rtype == GST_HLS_TSREADER_MPEGTS)
+    return gst_hlsdemux_tsreader_find_pcrs_mpegts (r, buffer, first_pcr,
+        last_pcr);
+
+  return gst_hlsdemux_tsreader_find_pcrs_id3 (r, buffer, first_pcr, last_pcr);
+}
diff --git a/ext/hls/gsthlsdemux.c b/ext/hls/gsthlsdemux.c
index cf51d99..a4eaacd 100644
--- a/ext/hls/gsthlsdemux.c
+++ b/ext/hls/gsthlsdemux.c
@@ -5,6 +5,7 @@
  *  Author: Youness Alaoui <youness.alaoui@collabora.co.uk>, Collabora Ltd.
  *  Author: Sebastian Dröge <sebastian.droege@collabora.co.uk>, Collabora Ltd.
  * Copyright (C) 2014 Sebastian Dröge <sebastian@centricular.com>
+ * Copyright (C) 2015 Tim-Philipp Müller <tim@centricular.com>
  *
  * Gsthlsdemux.c:
  *
@@ -54,9 +55,12 @@
     GST_PAD_ALWAYS,
     GST_STATIC_CAPS ("application/x-hls"));
 
-GST_DEBUG_CATEGORY_STATIC (gst_hls_demux_debug);
+GST_DEBUG_CATEGORY (gst_hls_demux_debug);
 #define GST_CAT_DEFAULT gst_hls_demux_debug
 
+#define GST_M3U8_CLIENT_LOCK(l) /* FIXME */
+#define GST_M3U8_CLIENT_UNLOCK(l)       /* FIXME */
+
 /* GObject */
 static void gst_hls_demux_finalize (GObject * obj);
 
@@ -72,11 +76,11 @@
 static gboolean gst_hls_demux_change_playlist (GstHLSDemux * demux,
     guint max_bitrate, gboolean * changed);
 static GstBuffer *gst_hls_demux_decrypt_fragment (GstHLSDemux * demux,
-    GstBuffer * encrypted_buffer, GError ** err);
+    GstHLSDemuxStream * stream, GstBuffer * encrypted_buffer, GError ** err);
 static gboolean
-gst_hls_demux_decrypt_start (GstHLSDemux * demux, const guint8 * key_data,
-    const guint8 * iv_data);
-static void gst_hls_demux_decrypt_end (GstHLSDemux * demux);
+gst_hls_demux_stream_decrypt_start (GstHLSDemuxStream * stream,
+    const guint8 * key_data, const guint8 * iv_data);
+static void gst_hls_demux_stream_decrypt_end (GstHLSDemuxStream * stream);
 
 static gboolean gst_hls_demux_is_live (GstAdaptiveDemux * demux);
 static GstClockTime gst_hls_demux_get_duration (GstAdaptiveDemux * demux);
@@ -92,7 +96,8 @@
 static GstFlowReturn gst_hls_demux_finish_fragment (GstAdaptiveDemux * demux,
     GstAdaptiveDemuxStream * stream);
 static GstFlowReturn gst_hls_demux_data_received (GstAdaptiveDemux * demux,
-    GstAdaptiveDemuxStream * stream);
+    GstAdaptiveDemuxStream * stream, GstBuffer * buffer);
+static void gst_hls_demux_stream_free (GstAdaptiveDemuxStream * stream);
 static gboolean gst_hls_demux_stream_has_next_fragment (GstAdaptiveDemuxStream *
     stream);
 static GstFlowReturn gst_hls_demux_advance_fragment (GstAdaptiveDemuxStream *
@@ -104,6 +109,9 @@
 static void gst_hls_demux_reset (GstAdaptiveDemux * demux);
 static gboolean gst_hls_demux_get_live_seek_range (GstAdaptiveDemux * demux,
     gint64 * start, gint64 * stop);
+static GstM3U8 *gst_hls_demux_stream_get_m3u8 (GstHLSDemuxStream * hls_stream);
+static void gst_hls_demux_set_current_variant (GstHLSDemux * hlsdemux,
+    GstHLSVariantStream * variant);
 
 #define gst_hls_demux_parent_class parent_class
 G_DEFINE_TYPE (GstHLSDemux, gst_hls_demux, GST_TYPE_ADAPTIVE_DEMUX);
@@ -114,7 +122,7 @@
   GstHLSDemux *demux = GST_HLS_DEMUX (obj);
 
   gst_hls_demux_reset (GST_ADAPTIVE_DEMUX_CAST (demux));
-  gst_m3u8_client_free (demux->client);
+  g_mutex_clear (&demux->keys_lock);
 
   G_OBJECT_CLASS (parent_class)->finalize (obj);
 }
@@ -134,11 +142,8 @@
 
   element_class->change_state = GST_DEBUG_FUNCPTR (gst_hls_demux_change_state);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&srctemplate));
-
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sinktemplate));
+  gst_element_class_add_static_pad_template (element_class, &srctemplate);
+  gst_element_class_add_static_pad_template (element_class, &sinktemplate);
 
   gst_element_class_set_static_metadata (element_class,
       "HLS Demuxer",
@@ -162,6 +167,7 @@
   adaptivedemux_class->stream_update_fragment_info =
       gst_hls_demux_update_fragment_info;
   adaptivedemux_class->stream_select_bitrate = gst_hls_demux_select_bitrate;
+  adaptivedemux_class->stream_free = gst_hls_demux_stream_free;
 
   adaptivedemux_class->start_fragment = gst_hls_demux_start_fragment;
   adaptivedemux_class->finish_fragment = gst_hls_demux_finish_fragment;
@@ -174,7 +180,11 @@
 static void
 gst_hls_demux_init (GstHLSDemux * demux)
 {
-  demux->do_typefind = TRUE;
+  gst_adaptive_demux_set_stream_struct_size (GST_ADAPTIVE_DEMUX_CAST (demux),
+      sizeof (GstHLSDemuxStream));
+
+  demux->keys = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+  g_mutex_init (&demux->keys_lock);
 }
 
 static GstStateChangeReturn
@@ -196,6 +206,7 @@
   switch (transition) {
     case GST_STATE_CHANGE_PAUSED_TO_READY:
       gst_hls_demux_reset (GST_ADAPTIVE_DEMUX_CAST (demux));
+      g_hash_table_remove_all (demux->keys);
       break;
     default:
       break;
@@ -230,6 +241,55 @@
   return 0;
 }
 
+static void
+gst_hls_demux_stream_clear_pending_data (GstHLSDemuxStream * hls_stream)
+{
+  if (hls_stream->pending_encrypted_data)
+    gst_adapter_clear (hls_stream->pending_encrypted_data);
+  gst_buffer_replace (&hls_stream->pending_decrypted_buffer, NULL);
+  gst_buffer_replace (&hls_stream->pending_typefind_buffer, NULL);
+  gst_buffer_replace (&hls_stream->pending_pcr_buffer, NULL);
+  hls_stream->current_offset = -1;
+  gst_hls_demux_stream_decrypt_end (hls_stream);
+}
+
+static void
+gst_hls_demux_clear_all_pending_data (GstHLSDemux * hlsdemux)
+{
+  GstAdaptiveDemux *demux = (GstAdaptiveDemux *) hlsdemux;
+  GList *walk;
+
+  for (walk = demux->streams; walk != NULL; walk = walk->next) {
+    GstHLSDemuxStream *hls_stream = GST_HLS_DEMUX_STREAM_CAST (walk->data);
+    gst_hls_demux_stream_clear_pending_data (hls_stream);
+  }
+}
+
+#if 0
+static void
+gst_hls_demux_set_current (GstHLSDemux * self, GstM3U8 * m3u8)
+{
+  GST_M3U8_CLIENT_LOCK (self);
+  if (m3u8 != self->current) {
+    self->current = m3u8;
+    self->current->duration = GST_CLOCK_TIME_NONE;
+    self->current->current_file = NULL;
+
+#if 0
+    // FIXME: this makes no sense after we just set self->current=m3u8 above (tpm)
+    // also, these values don't necessarily align between different lists
+    m3u8->current_file_duration = self->current->current_file_duration;
+    m3u8->sequence = self->current->sequence;
+    m3u8->sequence_position = self->current->sequence_position;
+    m3u8->highest_sequence_number = self->current->highest_sequence_number;
+    m3u8->first_file_start = self->current->first_file_start;
+    m3u8->last_file_end = self->current->last_file_end;
+#endif
+  }
+  GST_M3U8_CLIENT_UNLOCK (self);
+}
+#endif
+
 static gboolean
 gst_hls_demux_seek (GstAdaptiveDemux * demux, GstEvent * seek)
 {
@@ -238,15 +298,16 @@
   GstSeekFlags flags;
   GstSeekType start_type, stop_type;
   gint64 start, stop;
-  gdouble rate;
-  GList *walk, *current_file = NULL;
+  gdouble rate, old_rate;
+  GList *walk, *stream_walk;
   GstClockTime current_pos, target_pos;
   gint64 current_sequence;
-  GstM3U8MediaFile *file;
   guint64 bitrate;
   gboolean snap_before, snap_after, snap_nearest, keyunit;
   gboolean reverse;
 
+  old_rate = demux->segment.rate;
+
   gst_event_parse_seek (seek, &rate, &format, &flags, &start_type, &start,
       &stop_type, &stop);
 
@@ -254,114 +315,110 @@
 
   /* properly cleanup pending decryption status */
   if (flags & GST_SEEK_FLAG_FLUSH) {
-    gst_hls_demux_decrypt_end (hlsdemux);
+    gst_hls_demux_clear_all_pending_data (hlsdemux);
   }
 
   /* Use I-frame variants for trick modes */
-  if (hlsdemux->client->main->iframe_lists && rate < -1.0
-      && demux->segment.rate >= -1.0 && demux->segment.rate <= 1.0) {
+  if (hlsdemux->master->iframe_variants != NULL
+      && rate < -1.0 && old_rate >= -1.0 && old_rate <= 1.0) {
     GError *err = NULL;
 
-    GST_M3U8_CLIENT_LOCK (hlsdemux->client);
     /* Switch to I-frame variant */
-    hlsdemux->client->main->current_variant =
-        hlsdemux->client->main->iframe_lists;
-    GST_M3U8_CLIENT_UNLOCK (hlsdemux->client);
-    gst_m3u8_client_set_current (hlsdemux->client,
-        hlsdemux->client->main->iframe_lists->data);
+    gst_hls_demux_set_current_variant (hlsdemux,
+        hlsdemux->master->iframe_variants->data);
     gst_uri_downloader_reset (demux->downloader);
     if (!gst_hls_demux_update_playlist (hlsdemux, FALSE, &err)) {
       GST_ELEMENT_ERROR_FROM_ERROR (hlsdemux, "Could not switch playlist", err);
       return FALSE;
     }
     //hlsdemux->discont = TRUE;
-    hlsdemux->do_typefind = TRUE;
 
     gst_hls_demux_change_playlist (hlsdemux, bitrate / ABS (rate), NULL);
-  } else if (rate > -1.0 && rate <= 1.0 && (demux->segment.rate < -1.0
-          || demux->segment.rate > 1.0)) {
+  } else if (rate > -1.0 && rate <= 1.0 && (old_rate < -1.0 || old_rate > 1.0)) {
     GError *err = NULL;
-    GST_M3U8_CLIENT_LOCK (hlsdemux->client);
     /* Switch to normal variant */
-    hlsdemux->client->main->current_variant = hlsdemux->client->main->lists;
-    GST_M3U8_CLIENT_UNLOCK (hlsdemux->client);
-    gst_m3u8_client_set_current (hlsdemux->client,
-        hlsdemux->client->main->lists->data);
+    gst_hls_demux_set_current_variant (hlsdemux,
+        hlsdemux->master->variants->data);
     gst_uri_downloader_reset (demux->downloader);
     if (!gst_hls_demux_update_playlist (hlsdemux, FALSE, &err)) {
       GST_ELEMENT_ERROR_FROM_ERROR (hlsdemux, "Could not switch playlist", err);
       return FALSE;
     }
     //hlsdemux->discont = TRUE;
-    hlsdemux->do_typefind = TRUE;
     /* TODO why not continue using the same? that was being used up to now? */
     gst_hls_demux_change_playlist (hlsdemux, bitrate, NULL);
   }
+  for (stream_walk = demux->streams; stream_walk != NULL;
+      stream_walk = stream_walk->next) {
+    GstHLSDemuxStream *hls_stream =
+        GST_HLS_DEMUX_STREAM_CAST (stream_walk->data);
+    GstM3U8MediaFile *file = NULL;
 
-  GST_M3U8_CLIENT_LOCK (hlsdemux->client);
-  file = GST_M3U8_MEDIA_FILE (hlsdemux->client->current->files->data);
-  current_sequence = file->sequence;
-  current_pos = 0;
-  reverse = rate < 0;
-  target_pos = reverse ? stop : start;
+    current_sequence = 0;
+    current_pos = 0;
+    reverse = rate < 0;
+    target_pos = reverse ? stop : start;
 
-  /* Snap to segment boundary. Improves seek performance on slow machines. */
-  keyunit = ! !(flags & GST_SEEK_FLAG_KEY_UNIT);
-  snap_nearest =
-      (flags & GST_SEEK_FLAG_SNAP_NEAREST) == GST_SEEK_FLAG_SNAP_NEAREST;
-  snap_before = ! !(flags & GST_SEEK_FLAG_SNAP_BEFORE);
-  snap_after = ! !(flags & GST_SEEK_FLAG_SNAP_AFTER);
+    /* Snap to segment boundary. Improves seek performance on slow machines. */
+    keyunit = ! !(flags & GST_SEEK_FLAG_KEY_UNIT);
+    snap_nearest =
+        (flags & GST_SEEK_FLAG_SNAP_NEAREST) == GST_SEEK_FLAG_SNAP_NEAREST;
+    snap_before = ! !(flags & GST_SEEK_FLAG_SNAP_BEFORE);
+    snap_after = ! !(flags & GST_SEEK_FLAG_SNAP_AFTER);
 
-  /* FIXME: Here we need proper discont handling */
-  for (walk = hlsdemux->client->current->files; walk; walk = walk->next) {
-    file = walk->data;
+    GST_M3U8_CLIENT_LOCK (hlsdemux->client);
+    /* FIXME: Here we need proper discont handling */
+    for (walk = hls_stream->playlist->files; walk; walk = walk->next) {
+      file = walk->data;
 
-    current_sequence = file->sequence;
-    current_file = walk;
-    if ((!reverse && snap_after) || snap_nearest) {
-      if (current_pos >= target_pos)
-        break;
-      if (snap_nearest && target_pos - current_pos < file->duration / 2)
-        break;
-    } else if (reverse && snap_after) {
-      /* check if the next fragment is our target, in this case we want to
-       * start from the previous fragment */
-      GstClockTime next_pos = current_pos + file->duration;
+      current_sequence = file->sequence;
+      if ((!reverse && snap_after) || snap_nearest) {
+        if (current_pos >= target_pos)
+          break;
+        if (snap_nearest && target_pos - current_pos < file->duration / 2)
+          break;
+      } else if (reverse && snap_after) {
+        /* check if the next fragment is our target, in this case we want to
+         * start from the previous fragment */
+        GstClockTime next_pos = current_pos + file->duration;
 
-      if (next_pos <= target_pos && target_pos < next_pos + file->duration) {
+        if (next_pos <= target_pos && target_pos < next_pos + file->duration) {
+          break;
+        }
+      } else if (current_pos <= target_pos
+          && target_pos < current_pos + file->duration) {
         break;
       }
-    } else if (current_pos <= target_pos
-        && target_pos < current_pos + file->duration) {
-      break;
+      current_pos += file->duration;
     }
-    current_pos += file->duration;
-  }
 
-  if (walk == NULL) {
-    GST_DEBUG_OBJECT (demux, "seeking further than track duration");
-    current_sequence++;
-  }
+    if (walk == NULL) {
+      GST_DEBUG_OBJECT (demux, "seeking further than track duration");
+      current_sequence++;
+    }
 
-  GST_DEBUG_OBJECT (demux, "seeking to sequence %u", (guint) current_sequence);
-  hlsdemux->reset_pts = TRUE;
-  hlsdemux->client->sequence = current_sequence;
-  hlsdemux->client->current_file =
-      current_file ? current_file : hlsdemux->client->current->files;
-  hlsdemux->client->sequence_position = current_pos;
-  GST_M3U8_CLIENT_UNLOCK (hlsdemux->client);
+    GST_DEBUG_OBJECT (demux, "seeking to sequence %u",
+        (guint) current_sequence);
+    hls_stream->reset_pts = TRUE;
+    hls_stream->playlist->sequence = current_sequence;
+    hls_stream->playlist->current_file = walk;
+    hls_stream->playlist->sequence_position = current_pos;
+    GST_M3U8_CLIENT_UNLOCK (hlsdemux->client);
 
-  /* Play from the end of the current selected segment */
-  if (reverse && (snap_before || snap_after || snap_nearest))
-    current_pos += file->duration;
+    /* Play from the end of the current selected segment */
+    if (file) {
+      if (reverse && (snap_before || snap_after || snap_nearest))
+        current_pos += file->duration;
+    }
 
-  if (keyunit || snap_before || snap_after || snap_nearest) {
-    if (!reverse)
-      gst_segment_do_seek (&demux->segment, rate, format, flags, start_type,
-          current_pos, stop_type, stop, NULL);
-    else
-      gst_segment_do_seek (&demux->segment, rate, format, flags, start_type,
-          start, stop_type, current_pos, NULL);
+    if (keyunit || snap_before || snap_after || snap_nearest) {
+      if (!reverse)
+        gst_segment_do_seek (&demux->segment, rate, format, flags, start_type,
+            current_pos, stop_type, stop, NULL);
+      else
+        gst_segment_do_seek (&demux->segment, rate, format, flags, start_type,
+            start, stop_type, current_pos, NULL);
+    }
   }
 
   return TRUE;
@@ -377,74 +434,185 @@
   return GST_FLOW_OK;
 }
 
+static void
+create_stream_for_playlist (GstAdaptiveDemux * demux, GstM3U8 * playlist,
+    gboolean is_primary_playlist, gboolean selected)
+{
+  GstHLSDemux *hlsdemux = GST_HLS_DEMUX_CAST (demux);
+  GstHLSDemuxStream *hlsdemux_stream;
+  GstAdaptiveDemuxStream *stream;
+
+  if (!selected) {
+    /* FIXME: Later, create the stream but mark not-selected */
+    GST_LOG_OBJECT (demux, "Ignoring not-selected stream");
+    return;
+  }
+
+  stream = gst_adaptive_demux_stream_new (demux,
+      gst_hls_demux_create_pad (hlsdemux));
+
+  hlsdemux_stream = GST_HLS_DEMUX_STREAM_CAST (stream);
+
+  hlsdemux_stream->stream_type = GST_HLS_TSREADER_NONE;
+
+  hlsdemux_stream->playlist = gst_m3u8_ref (playlist);
+  hlsdemux_stream->is_primary_playlist = is_primary_playlist;
+
+  hlsdemux_stream->do_typefind = TRUE;
+  hlsdemux_stream->reset_pts = TRUE;
+}
+
 static gboolean
 gst_hls_demux_setup_streams (GstAdaptiveDemux * demux)
 {
   GstHLSDemux *hlsdemux = GST_HLS_DEMUX_CAST (demux);
+  GstHLSVariantStream *playlist = hlsdemux->current_variant;
+  gint i;
 
-  /* only 1 output supported */
-  gst_adaptive_demux_stream_new (demux, gst_hls_demux_create_pad (hlsdemux));
+  if (playlist == NULL) {
+    GST_WARNING_OBJECT (demux, "Can't configure streams - no variant selected");
+    return FALSE;
+  }
 
-  hlsdemux->reset_pts = TRUE;
+  gst_hls_demux_clear_all_pending_data (hlsdemux);
+
+  /* 1 output for the main playlist */
+  create_stream_for_playlist (demux, playlist->m3u8, TRUE, TRUE);
+
+  for (i = 0; i < GST_HLS_N_MEDIA_TYPES; ++i) {
+    GList *mlist = playlist->media[i];
+    while (mlist != NULL) {
+      GstHLSMedia *media = mlist->data;
+
+      if (media->uri == NULL /* || media->mtype != GST_HLS_MEDIA_TYPE_AUDIO */ ) {
+        /* No uri means this is a placeholder for a stream
+         * contained in another mux */
+        GST_LOG_OBJECT (demux, "Skipping stream %s type %d with no URI",
+            media->name, media->mtype);
+        mlist = mlist->next;
+        continue;
+      }
+      GST_LOG_OBJECT (demux, "media of type %d - %s, uri: %s", i,
+          media->name, media->uri);
+      create_stream_for_playlist (demux, media->playlist, FALSE,
+          (media->mtype == GST_HLS_MEDIA_TYPE_VIDEO ||
+              media->mtype == GST_HLS_MEDIA_TYPE_AUDIO));
+
+      mlist = mlist->next;
+    }
+  }
 
   return TRUE;
 }
 
+static const gchar *
+gst_adaptive_demux_get_manifest_ref_uri (GstAdaptiveDemux * d)
+{
+  return d->manifest_base_uri ? d->manifest_base_uri : d->manifest_uri;
+}
+
+static void
+gst_hls_demux_set_current_variant (GstHLSDemux * hlsdemux,
+    GstHLSVariantStream * variant)
+{
+  if (hlsdemux->current_variant == variant || variant == NULL)
+    return;
+
+  if (hlsdemux->current_variant != NULL) {
+    gint i;
+
+    //#warning FIXME: Synching fragments across variants
+    //  should be done based on media timestamps, and
+    //  discont-sequence-numbers not sequence numbers.
+    variant->m3u8->sequence_position =
+        hlsdemux->current_variant->m3u8->sequence_position;
+    variant->m3u8->sequence = hlsdemux->current_variant->m3u8->sequence;
+
+    GST_DEBUG_OBJECT (hlsdemux,
+        "Switching Variant. Copying over sequence %" G_GINT64_FORMAT
+        " and sequence_pos %" GST_TIME_FORMAT, variant->m3u8->sequence,
+        GST_TIME_ARGS (variant->m3u8->sequence_position));
+
+    for (i = 0; i < GST_HLS_N_MEDIA_TYPES; ++i) {
+      GList *mlist = hlsdemux->current_variant->media[i];
+
+      while (mlist != NULL) {
+        GstHLSMedia *old_media = mlist->data;
+        GstHLSMedia *new_media =
+            gst_hls_variant_find_matching_media (variant, old_media);
+
+        if (new_media) {
+          new_media->playlist->sequence = old_media->playlist->sequence;
+          new_media->playlist->sequence_position =
+              old_media->playlist->sequence_position;
+        }
+        mlist = mlist->next;
+      }
+    }
+
+    gst_hls_variant_stream_unref (hlsdemux->current_variant);
+  }
+
+  hlsdemux->current_variant = gst_hls_variant_stream_ref (variant);
+
+}
 
 static gboolean
 gst_hls_demux_process_manifest (GstAdaptiveDemux * demux, GstBuffer * buf)
 {
+  GstHLSVariantStream *variant;
   GstHLSDemux *hlsdemux = GST_HLS_DEMUX_CAST (demux);
   gchar *playlist = NULL;
 
-  if (hlsdemux->client)
-    gst_m3u8_client_free (hlsdemux->client);
-
-  hlsdemux->client =
-      gst_m3u8_client_new (demux->manifest_uri, demux->manifest_base_uri);
-
-  GST_INFO_OBJECT (demux, "Changed location: %s (base uri: %s)",
-      demux->manifest_uri, GST_STR_NULL (demux->manifest_base_uri));
+  GST_INFO_OBJECT (demux, "Initial playlist location: %s (base uri: %s)",
+      demux->manifest_uri, demux->manifest_base_uri);
 
   playlist = gst_hls_src_buf_to_utf8_playlist (buf);
   if (playlist == NULL) {
-    GST_WARNING_OBJECT (demux, "Error validating first playlist.");
+    GST_WARNING_OBJECT (demux, "Error validating initial playlist");
     return FALSE;
-  } else if (!gst_m3u8_client_update (hlsdemux->client, playlist)) {
+  }
+
+  GST_M3U8_CLIENT_LOCK (self);
+  hlsdemux->master = gst_hls_master_playlist_new_from_data (playlist,
+      gst_adaptive_demux_get_manifest_ref_uri (demux));
+
+  if (hlsdemux->master == NULL || hlsdemux->master->variants == NULL) {
     /* In most cases, this will happen if we set a wrong url in the
      * source element and we have received the 404 HTML response instead of
      * the playlist */
-    GST_ELEMENT_ERROR (demux, STREAM, DECODE, ("Invalid playlist."), (NULL));
+    GST_ELEMENT_ERROR (demux, STREAM, DECODE, ("Invalid playlist."),
+        ("Could not parse playlist. Check if the URL is correct."));
+    GST_M3U8_CLIENT_UNLOCK (self);
     return FALSE;
   }
 
-  /* If this playlist is a variant playlist, select the first one
-   * and update it */
-  if (gst_m3u8_client_has_variant_playlist (hlsdemux->client)) {
-    GstM3U8 *child = NULL;
+  /* select the initial variant stream */
+  if (demux->connection_speed == 0) {
+    variant = hlsdemux->master->default_variant;
+  } else {
+    variant =
+        gst_hls_master_playlist_get_variant_for_bitrate (hlsdemux->master,
+        NULL, demux->connection_speed);
+  }
+
+  if (variant) {
+    GST_INFO_OBJECT (hlsdemux, "selected %s", variant->name);
+    gst_hls_demux_set_current_variant (hlsdemux, variant);      // FIXME: inline?
+  }
+
+  /* get the selected media playlist (unless the inital list was one already) */
+  if (!hlsdemux->master->is_simple) {
     GError *err = NULL;
 
-    if (demux->connection_speed == 0) {
-      GST_M3U8_CLIENT_LOCK (hlsdemux->client);
-      child = hlsdemux->client->main->current_variant->data;
-      GST_M3U8_CLIENT_UNLOCK (hlsdemux->client);
-    } else {
-      GList *tmp = gst_m3u8_client_get_playlist_for_bitrate (hlsdemux->client,
-          demux->connection_speed);
-      GST_M3U8_CLIENT_LOCK (hlsdemux->client);
-      hlsdemux->client->main->current_variant = tmp;
-      GST_M3U8_CLIENT_UNLOCK (hlsdemux->client);
-
-      child = GST_M3U8 (tmp->data);
-    }
-
-    gst_m3u8_client_set_current (hlsdemux->client, child);
     if (!gst_hls_demux_update_playlist (hlsdemux, FALSE, &err)) {
-      GST_ELEMENT_ERROR_FROM_ERROR (demux, "Could not fetch the child playlist",
+      GST_ELEMENT_ERROR_FROM_ERROR (demux, "Could not fetch media playlist",
           err);
+      GST_M3U8_CLIENT_UNLOCK (self);
       return FALSE;
     }
   }
+  GST_M3U8_CLIENT_UNLOCK (self);
 
   return gst_hls_demux_setup_streams (demux);
 }
@@ -453,64 +621,111 @@
 gst_hls_demux_get_duration (GstAdaptiveDemux * demux)
 {
   GstHLSDemux *hlsdemux = GST_HLS_DEMUX_CAST (demux);
+  GstClockTime duration = GST_CLOCK_TIME_NONE;
 
-  return gst_m3u8_client_get_duration (hlsdemux->client);
+  if (hlsdemux->current_variant != NULL)
+    duration = gst_m3u8_get_duration (hlsdemux->current_variant->m3u8);
+
+  return duration;
 }
 
 static gboolean
 gst_hls_demux_is_live (GstAdaptiveDemux * demux)
 {
   GstHLSDemux *hlsdemux = GST_HLS_DEMUX_CAST (demux);
+  gboolean is_live = FALSE;
 
-  return gst_m3u8_client_is_live (hlsdemux->client);
+  if (hlsdemux->current_variant)
+    is_live = gst_hls_variant_stream_is_live (hlsdemux->current_variant);
+
+  return is_live;
+}
+
+static const GstHLSKey *
+gst_hls_demux_get_key (GstHLSDemux * demux, const gchar * key_url,
+    const gchar * referer, gboolean allow_cache)
+{
+  GstFragment *key_fragment;
+  GstBuffer *key_buffer;
+  GstHLSKey *key;
+  GError *err = NULL;
+
+  GST_LOG_OBJECT (demux, "Looking up key for key url %s", key_url);
+
+  g_mutex_lock (&demux->keys_lock);
+
+  key = g_hash_table_lookup (demux->keys, key_url);
+
+  if (key != NULL) {
+    GST_LOG_OBJECT (demux, "Found key for key url %s in key cache", key_url);
+    goto out;
+  }
+
+  GST_INFO_OBJECT (demux, "Fetching key %s", key_url);
+
+  key_fragment =
+      gst_uri_downloader_fetch_uri (GST_ADAPTIVE_DEMUX (demux)->downloader,
+      key_url, referer, FALSE, FALSE, allow_cache, &err);
+
+  if (key_fragment == NULL) {
+    GST_WARNING_OBJECT (demux, "Failed to download key to decrypt data: %s",
+        err ? err->message : "error");
+    g_clear_error (&err);
+    goto out;
+  }
+
+  key_buffer = gst_fragment_get_buffer (key_fragment);
+
+  key = g_new0 (GstHLSKey, 1);
+  if (gst_buffer_extract (key_buffer, 0, key->data, 16) < 16)
+    GST_WARNING_OBJECT (demux, "Download decryption key is too short!");
+
+  g_hash_table_insert (demux->keys, g_strdup (key_url), key);
+
+  gst_buffer_unref (key_buffer);
+  g_object_unref (key_fragment);
+
+out:
+
+  g_mutex_unlock (&demux->keys_lock);
+
+  if (key != NULL)
+    GST_MEMDUMP_OBJECT (demux, "Key", key->data, 16);
+
+  return key;
 }
 
 static gboolean
 gst_hls_demux_start_fragment (GstAdaptiveDemux * demux,
     GstAdaptiveDemuxStream * stream)
 {
+  GstHLSDemuxStream *hls_stream = GST_HLS_DEMUX_STREAM_CAST (stream);
   GstHLSDemux *hlsdemux = GST_HLS_DEMUX_CAST (demux);
+  const GstHLSKey *key;
+  GstM3U8 *m3u8;
 
-  if (hlsdemux->current_key) {
-    GError *err = NULL;
-    GstFragment *key_fragment;
-    GstBuffer *key_buffer;
-    GstMapInfo key_info;
+  gst_hls_demux_stream_clear_pending_data (hls_stream);
 
-    /* new key? */
-    if (hlsdemux->key_url
-        && strcmp (hlsdemux->key_url, hlsdemux->current_key) == 0) {
-      key_fragment = g_object_ref (hlsdemux->key_fragment);
-    } else {
-      g_free (hlsdemux->key_url);
-      hlsdemux->key_url = NULL;
+  /* Init the timestamp reader for this fragment */
+  gst_hlsdemux_tsreader_init (&hls_stream->tsreader);
+  /* Reset the stream type if we already know it */
+  gst_hlsdemux_tsreader_set_type (&hls_stream->tsreader,
+      hls_stream->stream_type);
 
-      if (hlsdemux->key_fragment)
-        g_object_unref (hlsdemux->key_fragment);
-      hlsdemux->key_fragment = NULL;
+  /* If no decryption is needed, there's nothing to be done here */
+  if (hls_stream->current_key == NULL)
+    return TRUE;
 
-      GST_INFO_OBJECT (demux, "Fetching key %s", hlsdemux->current_key);
-      key_fragment =
-          gst_uri_downloader_fetch_uri (demux->downloader,
-          hlsdemux->current_key, hlsdemux->client->main ?
-          hlsdemux->client->main->uri : NULL, FALSE, FALSE,
-          hlsdemux->client->current ? hlsdemux->client->current->
-          allowcache : TRUE, &err);
-      if (key_fragment == NULL)
-        goto key_failed;
-      hlsdemux->key_url = g_strdup (hlsdemux->current_key);
-      hlsdemux->key_fragment = g_object_ref (key_fragment);
-    }
+  m3u8 = gst_hls_demux_stream_get_m3u8 (hls_stream);
 
-    key_buffer = gst_fragment_get_buffer (key_fragment);
-    gst_buffer_map (key_buffer, &key_info, GST_MAP_READ);
+  key = gst_hls_demux_get_key (hlsdemux, hls_stream->current_key,
+      m3u8->uri, m3u8->allowcache);
 
-    gst_hls_demux_decrypt_start (hlsdemux, key_info.data, hlsdemux->current_iv);
+  if (key == NULL)
+    goto key_failed;
 
-    gst_buffer_unmap (key_buffer, &key_info);
-    gst_buffer_unref (key_buffer);
-    g_object_unref (key_fragment);
-  }
+  gst_hls_demux_stream_decrypt_start (hls_stream, key->data,
+      hls_stream->current_iv);
 
   return TRUE;
 
@@ -523,57 +738,107 @@
   }
 }
 
+static GstHLSTSReaderType
+caps_to_reader (const GstCaps * caps)
+{
+  const GstStructure *s = gst_caps_get_structure (caps, 0);
+
+  if (gst_structure_has_name (s, "video/mpegts"))
+    return GST_HLS_TSREADER_MPEGTS;
+  if (gst_structure_has_name (s, "application/x-id3"))
+    return GST_HLS_TSREADER_ID3;
+
+  return GST_HLS_TSREADER_NONE;
+}
+
 static GstFlowReturn
 gst_hls_demux_handle_buffer (GstAdaptiveDemux * demux,
-    GstAdaptiveDemuxStream * stream, GstBuffer * buffer, gboolean force)
+    GstAdaptiveDemuxStream * stream, GstBuffer * buffer, gboolean at_eos)
 {
+  GstHLSDemuxStream *hls_stream = GST_HLS_DEMUX_STREAM_CAST (stream);   // FIXME: pass HlsStream into function
   GstHLSDemux *hlsdemux = GST_HLS_DEMUX_CAST (demux);
+  GstMapInfo info;
+  GstClockTime first_pcr, last_pcr;
 
-  if (G_UNLIKELY (hlsdemux->do_typefind && buffer != NULL)) {
+  if (buffer == NULL)
+    return GST_FLOW_OK;
+
+  gst_buffer_map (buffer, &info, GST_MAP_READ);
+
+  if (G_UNLIKELY (hls_stream->do_typefind)) {
     GstCaps *caps = NULL;
-    GstMapInfo info;
     guint buffer_size;
     GstTypeFindProbability prob = GST_TYPE_FIND_NONE;
 
+    if (hls_stream->pending_typefind_buffer)
+      buffer = gst_buffer_append (hls_stream->pending_typefind_buffer, buffer);
+    hls_stream->pending_typefind_buffer = NULL;
+
     gst_buffer_map (buffer, &info, GST_MAP_READ);
     buffer_size = info.size;
 
     /* Typefind could miss if buffer is too small. In this case we
      * will retry later */
-    if (buffer_size >= (2 * 1024)) {
+    if (buffer_size >= (2 * 1024) || at_eos) {
       caps =
           gst_type_find_helper_for_data (GST_OBJECT_CAST (hlsdemux), info.data,
           info.size, &prob);
     }
-    gst_buffer_unmap (buffer, &info);
 
     if (G_UNLIKELY (!caps)) {
+      /* Won't need this mapping any more all paths return inside this if() */
+      gst_buffer_unmap (buffer, &info);
+
       /* Only fail typefinding if we already a good amount of data
        * and we still don't know the type */
-      if (buffer_size > (2 * 1024 * 1024) || force) {
+      if (buffer_size > (2 * 1024 * 1024) || at_eos) {
         GST_ELEMENT_ERROR (hlsdemux, STREAM, TYPE_NOT_FOUND,
             ("Could not determine type of stream"), (NULL));
         gst_buffer_unref (buffer);
         return GST_FLOW_NOT_NEGOTIATED;
-      } else {
-        if (hlsdemux->pending_buffer)
-          hlsdemux->pending_buffer =
-              gst_buffer_append (buffer, hlsdemux->pending_buffer);
-        else
-          hlsdemux->pending_buffer = buffer;
-        return GST_FLOW_OK;
       }
+
+      hls_stream->pending_typefind_buffer = buffer;
+
+      return GST_FLOW_OK;
     }
 
     GST_DEBUG_OBJECT (hlsdemux, "Typefind result: %" GST_PTR_FORMAT " prob:%d",
         caps, prob);
 
+    hls_stream->stream_type = caps_to_reader (caps);
+    gst_hlsdemux_tsreader_set_type (&hls_stream->tsreader,
+        hls_stream->stream_type);
+
     gst_adaptive_demux_stream_set_caps (stream, caps);
-    hlsdemux->do_typefind = FALSE;
+
+    hls_stream->do_typefind = FALSE;
+  }
+  g_assert (hls_stream->pending_typefind_buffer == NULL);
+
+  gst_buffer_unmap (buffer, &info);
+
+  // Accumulate this buffer
+  if (hls_stream->pending_pcr_buffer) {
+    buffer = gst_buffer_append (hls_stream->pending_pcr_buffer, buffer);
+    hls_stream->pending_pcr_buffer = NULL;
   }
 
-  if (buffer)
+  if (!gst_hlsdemux_tsreader_find_pcrs (&hls_stream->tsreader, buffer,
+          &first_pcr, &last_pcr)
+      && !at_eos) {
+    // Store this buffer for later
+    hls_stream->pending_pcr_buffer = buffer;
+    return GST_FLOW_OK;
+  }
+
+  if (buffer) {
+    buffer = gst_buffer_make_writable (buffer);
+    GST_BUFFER_OFFSET (buffer) = hls_stream->current_offset;
+    hls_stream->current_offset += gst_buffer_get_size (buffer);
+    GST_BUFFER_OFFSET_END (buffer) = hls_stream->current_offset;
     return gst_adaptive_demux_stream_push_buffer (stream, buffer);
+  }
   return GST_FLOW_OK;
 }
 
@@ -581,43 +846,51 @@
 gst_hls_demux_finish_fragment (GstAdaptiveDemux * demux,
     GstAdaptiveDemuxStream * stream)
 {
-  GstHLSDemux *hlsdemux = GST_HLS_DEMUX_CAST (demux);
+  GstHLSDemuxStream *hls_stream = GST_HLS_DEMUX_STREAM_CAST (stream);   // FIXME: pass HlsStream into function
   GstFlowReturn ret = GST_FLOW_OK;
 
-  if (hlsdemux->current_key)
-    gst_hls_demux_decrypt_end (hlsdemux);
-
-  /* ideally this should be empty, but this eos might have been
-   * caused by an error on the source element */
-  GST_DEBUG_OBJECT (demux, "Data still on the adapter when EOS was received"
-      ": %" G_GSIZE_FORMAT, gst_adapter_available (stream->adapter));
-  gst_adapter_clear (stream->adapter);
+  if (hls_stream->current_key)
+    gst_hls_demux_stream_decrypt_end (hls_stream);
 
   if (stream->last_ret == GST_FLOW_OK) {
-    if (hlsdemux->pending_buffer) {
-      if (hlsdemux->current_key) {
+    if (hls_stream->pending_decrypted_buffer) {
+      if (hls_stream->current_key) {
         GstMapInfo info;
         gssize unpadded_size;
 
         /* Handle pkcs7 unpadding here */
-        gst_buffer_map (hlsdemux->pending_buffer, &info, GST_MAP_READ);
+        gst_buffer_map (hls_stream->pending_decrypted_buffer, &info,
+            GST_MAP_READ);
         unpadded_size = info.size - info.data[info.size - 1];
-        gst_buffer_unmap (hlsdemux->pending_buffer, &info);
+        gst_buffer_unmap (hls_stream->pending_decrypted_buffer, &info);
 
-        gst_buffer_resize (hlsdemux->pending_buffer, 0, unpadded_size);
+        gst_buffer_resize (hls_stream->pending_decrypted_buffer, 0,
+            unpadded_size);
       }
 
       ret =
-          gst_hls_demux_handle_buffer (demux, stream, hlsdemux->pending_buffer,
-          TRUE);
-      hlsdemux->pending_buffer = NULL;
+          gst_hls_demux_handle_buffer (demux, stream,
+          hls_stream->pending_decrypted_buffer, TRUE);
+      hls_stream->pending_decrypted_buffer = NULL;
     }
-  } else {
-    if (hlsdemux->pending_buffer)
-      gst_buffer_unref (hlsdemux->pending_buffer);
-    hlsdemux->pending_buffer = NULL;
+
+    if (ret == GST_FLOW_OK || ret == GST_FLOW_NOT_LINKED) {
+      if (hls_stream->pending_pcr_buffer) {
+        GstBuffer *buf = hls_stream->pending_pcr_buffer;
+        hls_stream->pending_pcr_buffer = NULL;
+
+        ret = gst_hls_demux_handle_buffer (demux, stream, buf, TRUE);
+      }
+
+      GST_LOG_OBJECT (stream,
+          "Fragment PCRs were %" GST_TIME_FORMAT " to %" GST_TIME_FORMAT,
+          GST_TIME_ARGS (hls_stream->tsreader.first_pcr),
+          GST_TIME_ARGS (hls_stream->tsreader.last_pcr));
+    }
   }
 
+  gst_hls_demux_stream_clear_pending_data (hls_stream);
+
   if (ret == GST_FLOW_OK || ret == GST_FLOW_NOT_LINKED)
     return gst_adaptive_demux_stream_advance_fragment (demux, stream,
         stream->fragment.duration);
@@ -626,28 +899,36 @@
 
 static GstFlowReturn
 gst_hls_demux_data_received (GstAdaptiveDemux * demux,
-    GstAdaptiveDemuxStream * stream)
+    GstAdaptiveDemuxStream * stream, GstBuffer * buffer)
 {
+  GstHLSDemuxStream *hls_stream = GST_HLS_DEMUX_STREAM_CAST (stream);
   GstHLSDemux *hlsdemux = GST_HLS_DEMUX_CAST (demux);
-  gsize available;
-  GstBuffer *buffer = NULL;
 
-  available = gst_adapter_available (stream->adapter);
+  if (hls_stream->current_offset == -1)
+    hls_stream->current_offset = 0;
 
   /* Is it encrypted? */
-  if (hlsdemux->current_key) {
+  if (hls_stream->current_key) {
     GError *err = NULL;
+    gsize size;
     GstBuffer *tmp_buffer;
 
-    /* must be a multiple of 16 */
-    available = available & (~0xF);
+    if (hls_stream->pending_encrypted_data == NULL)
+      hls_stream->pending_encrypted_data = gst_adapter_new ();
 
-    if (available == 0) {
+    gst_adapter_push (hls_stream->pending_encrypted_data, buffer);
+    size = gst_adapter_available (hls_stream->pending_encrypted_data);
+
+    /* must be a multiple of 16 */
+    size &= (~0xF);
+
+    if (size == 0) {
       return GST_FLOW_OK;
     }
 
-    buffer = gst_adapter_take_buffer (stream->adapter, available);
-    buffer = gst_hls_demux_decrypt_fragment (hlsdemux, buffer, &err);
+    buffer = gst_adapter_take_buffer (hls_stream->pending_encrypted_data, size);
+    buffer =
+        gst_hls_demux_decrypt_fragment (hlsdemux, hls_stream, buffer, &err);
     if (buffer == NULL) {
       GST_ELEMENT_ERROR (demux, STREAM, DECODE, ("Failed to decrypt buffer"),
           ("decryption failed %s", err->message));
@@ -655,55 +936,95 @@
       return GST_FLOW_ERROR;
     }
 
-    tmp_buffer = hlsdemux->pending_buffer;
-    hlsdemux->pending_buffer = buffer;
+    tmp_buffer = hls_stream->pending_decrypted_buffer;
+    hls_stream->pending_decrypted_buffer = buffer;
     buffer = tmp_buffer;
-  } else {
-    buffer = gst_adapter_take_buffer (stream->adapter, available);
-    if (hlsdemux->pending_buffer) {
-      buffer = gst_buffer_append (hlsdemux->pending_buffer, buffer);
-      hlsdemux->pending_buffer = NULL;
-    }
   }
 
   return gst_hls_demux_handle_buffer (demux, stream, buffer, FALSE);
 }
 
+static void
+gst_hls_demux_stream_free (GstAdaptiveDemuxStream * stream)
+{
+  GstHLSDemuxStream *hls_stream = GST_HLS_DEMUX_STREAM_CAST (stream);
+
+  if (hls_stream->playlist) {
+    gst_m3u8_unref (hls_stream->playlist);
+    hls_stream->playlist = NULL;
+  }
+
+  if (hls_stream->pending_encrypted_data)
+    g_object_unref (hls_stream->pending_encrypted_data);
+
+  gst_buffer_replace (&hls_stream->pending_decrypted_buffer, NULL);
+  gst_buffer_replace (&hls_stream->pending_typefind_buffer, NULL);
+  gst_buffer_replace (&hls_stream->pending_pcr_buffer, NULL);
+
+  if (hls_stream->current_key) {
+    g_free (hls_stream->current_key);
+    hls_stream->current_key = NULL;
+  }
+  if (hls_stream->current_iv) {
+    g_free (hls_stream->current_iv);
+    hls_stream->current_iv = NULL;
+  }
+  gst_hls_demux_stream_decrypt_end (hls_stream);
+}
+
+static GstM3U8 *
+gst_hls_demux_stream_get_m3u8 (GstHLSDemuxStream * hlsdemux_stream)
+{
+  GstM3U8 *m3u8;
+
+  m3u8 = hlsdemux_stream->playlist;
+
+  return m3u8;
+}
+
 static gboolean
 gst_hls_demux_stream_has_next_fragment (GstAdaptiveDemuxStream * stream)
 {
-  GstHLSDemux *hlsdemux = GST_HLS_DEMUX_CAST (stream->demux);
+  gboolean has_next;
+  GstM3U8 *m3u8;
 
-  return gst_m3u8_client_has_next_fragment (hlsdemux->client,
-      stream->demux->segment.rate > 0);
+  m3u8 = gst_hls_demux_stream_get_m3u8 (GST_HLS_DEMUX_STREAM_CAST (stream));
+
+  has_next = gst_m3u8_has_next_fragment (m3u8, stream->demux->segment.rate > 0);
+
+  return has_next;
 }
 
 static GstFlowReturn
 gst_hls_demux_advance_fragment (GstAdaptiveDemuxStream * stream)
 {
-  GstHLSDemux *hlsdemux = GST_HLS_DEMUX_CAST (stream->demux);
+  GstHLSDemuxStream *hlsdemux_stream = GST_HLS_DEMUX_STREAM_CAST (stream);
+  GstM3U8 *m3u8;
 
-  gst_m3u8_client_advance_fragment (hlsdemux->client,
-      stream->demux->segment.rate > 0);
-  hlsdemux->reset_pts = FALSE;
+  m3u8 = gst_hls_demux_stream_get_m3u8 (hlsdemux_stream);
+
+  gst_m3u8_advance_fragment (m3u8, stream->demux->segment.rate > 0);
+  hlsdemux_stream->reset_pts = FALSE;
+
   return GST_FLOW_OK;
 }
 
 static GstFlowReturn
 gst_hls_demux_update_fragment_info (GstAdaptiveDemuxStream * stream)
 {
+  GstHLSDemuxStream *hlsdemux_stream = GST_HLS_DEMUX_STREAM_CAST (stream);
   GstHLSDemux *hlsdemux = GST_HLS_DEMUX_CAST (stream->demux);
-  gchar *next_fragment_uri;
-  GstClockTime duration;
-  GstClockTime timestamp;
-  gboolean discont;
-  gint64 range_start, range_end;
-  gchar *key = NULL;
-  guint8 *iv = NULL;
+  GstM3U8MediaFile *file;
+  GstClockTime sequence_pos;
+  gboolean discont, forward;
+  GstM3U8 *m3u8;
 
-  if (!gst_m3u8_client_get_next_fragment (hlsdemux->client, &discont,
-          &next_fragment_uri, &duration, &timestamp, &range_start, &range_end,
-          &key, &iv, stream->demux->segment.rate > 0)) {
+  m3u8 = gst_hls_demux_stream_get_m3u8 (hlsdemux_stream);
+
+  forward = (stream->demux->segment.rate > 0);
+  file = gst_m3u8_get_next_fragment (m3u8, forward, &sequence_pos, &discont);
+
+  if (file == NULL) {
     GST_INFO_OBJECT (hlsdemux, "This playlist doesn't contain more fragments");
     return GST_FLOW_EOS;
   }
@@ -712,23 +1033,33 @@
     discont = TRUE;
 
   /* set up our source for download */
-  if (hlsdemux->reset_pts || discont || stream->demux->segment.rate < 0.0) {
-    stream->fragment.timestamp = timestamp;
+  if (hlsdemux_stream->reset_pts || discont
+      || stream->demux->segment.rate < 0.0) {
+    stream->fragment.timestamp = sequence_pos;
   } else {
     stream->fragment.timestamp = GST_CLOCK_TIME_NONE;
   }
 
-  g_free (hlsdemux->current_key);
-  hlsdemux->current_key = key;
-  g_free (hlsdemux->current_iv);
-  hlsdemux->current_iv = iv;
+  g_free (hlsdemux_stream->current_key);
+  hlsdemux_stream->current_key = g_strdup (file->key);
+  g_free (hlsdemux_stream->current_iv);
+  hlsdemux_stream->current_iv = g_memdup (file->iv, sizeof (file->iv));
+
   g_free (stream->fragment.uri);
-  stream->fragment.uri = next_fragment_uri;
-  stream->fragment.range_start = range_start;
-  stream->fragment.range_end = range_end;
-  stream->fragment.duration = duration;
+  stream->fragment.uri = g_strdup (file->uri);
+
+  GST_DEBUG_OBJECT (hlsdemux, "Stream %p URI now %s", stream, file->uri);
+
+  stream->fragment.range_start = file->offset;
+  if (file->size != -1)
+    stream->fragment.range_end = file->offset + file->size - 1;
+  else
+    stream->fragment.range_end = -1;
+
+  stream->fragment.duration = file->duration;
+
   if (discont)
-    stream->discont = discont;
+    stream->discont = TRUE;
 
   return GST_FLOW_OK;
 }
@@ -738,22 +1069,25 @@
 {
   GstAdaptiveDemux *demux = GST_ADAPTIVE_DEMUX_CAST (stream->demux);
   GstHLSDemux *hlsdemux = GST_HLS_DEMUX_CAST (stream->demux);
+  GstHLSDemuxStream *hls_stream = GST_HLS_DEMUX_STREAM_CAST (stream);
+
   gboolean changed = FALSE;
 
   GST_M3U8_CLIENT_LOCK (hlsdemux->client);
-  if (!hlsdemux->client->main->lists) {
+  if (hlsdemux->master == NULL || hlsdemux->master->is_simple) {
     GST_M3U8_CLIENT_UNLOCK (hlsdemux->client);
     return FALSE;
   }
   GST_M3U8_CLIENT_UNLOCK (hlsdemux->client);
 
-  /* FIXME: Currently several issues have be found when letting bitrate adaptation
-   * happen using trick modes (such as 'All streams finished without buffers') and
-   * the adaptive algorithm does not properly behave. */
-  if (demux->segment.rate != 1.0)
+  if (hls_stream->is_primary_playlist == FALSE) {
+    GST_LOG_OBJECT (hlsdemux,
+        "Stream %p Not choosing new bitrate - not the primary stream", stream);
     return FALSE;
+  }
 
-  gst_hls_demux_change_playlist (hlsdemux, bitrate, &changed);
+  gst_hls_demux_change_playlist (hlsdemux, bitrate / MAX (1.0,
+          ABS (demux->segment.rate)), &changed);
   if (changed)
     gst_hls_demux_setup_streams (GST_ADAPTIVE_DEMUX_CAST (hlsdemux));
   return changed;
@@ -764,37 +1098,19 @@
 {
   GstHLSDemux *demux = GST_HLS_DEMUX_CAST (ademux);
 
-  demux->do_typefind = TRUE;
-  demux->reset_pts = TRUE;
-
-  g_free (demux->key_url);
-  demux->key_url = NULL;
-
-  if (demux->key_fragment)
-    g_object_unref (demux->key_fragment);
-  demux->key_fragment = NULL;
-
-  if (demux->client) {
-    gst_m3u8_client_free (demux->client);
-    demux->client = NULL;
+  GST_M3U8_CLIENT_LOCK (hlsdemux->client);
+  if (demux->master) {
+    gst_hls_master_playlist_unref (demux->master);
+    demux->master = NULL;
   }
-  /* TODO recreated on hls only if reset was not for disposing */
-  demux->client = gst_m3u8_client_new ("", NULL);
-
+  if (demux->current_variant != NULL) {
+    gst_hls_variant_stream_unref (demux->current_variant);
+    demux->current_variant = NULL;
+  }
   demux->srcpad_counter = 0;
-  if (demux->pending_buffer)
-    gst_buffer_unref (demux->pending_buffer);
-  demux->pending_buffer = NULL;
-  if (demux->current_key) {
-    g_free (demux->current_key);
-    demux->current_key = NULL;
-  }
-  if (demux->current_iv) {
-    g_free (demux->current_iv);
-    demux->current_iv = NULL;
-  }
 
-  gst_hls_demux_decrypt_end (demux);
+  gst_hls_demux_clear_all_pending_data (demux);
+  GST_M3U8_CLIENT_UNLOCK (hlsdemux->client);
 }
 
 static gchar *
@@ -822,6 +1138,163 @@
   return NULL;
 }
 
+static gint
+gst_hls_demux_find_variant_match (const GstHLSVariantStream * a,
+    const GstHLSVariantStream * b)
+{
+  if (g_strcmp0 (a->name, b->name) == 0 &&
+      a->bandwidth == b->bandwidth &&
+      a->program_id == b->program_id &&
+      g_strcmp0 (a->codecs, b->codecs) == 0 &&
+      a->width == b->width &&
+      a->height == b->height && a->iframe == b->iframe) {
+    return 0;
+  }
+
+  return 1;
+}
+
+/* Update the master playlist, which contains the list of available
+ * variants */
+static gboolean
+gst_hls_demux_update_variant_playlist (GstHLSDemux * hlsdemux, gchar * data,
+    const gchar * uri, const gchar * base_uri)
+{
+  GstHLSMasterPlaylist *new_master, *old;
+  gboolean ret = FALSE;
+  GList *l, *unmatched_lists;
+  GstHLSVariantStream *new_variant;
+
+  new_master = gst_hls_master_playlist_new_from_data (data, base_uri ? base_uri : uri); // FIXME: check which uri to use here
+
+  if (new_master == NULL)
+    return ret;
+
+  if (new_master->is_simple) {
+    // FIXME: we should be able to support this though, in the unlikely
+    // case that it changed?
+    GST_ERROR
+        ("Cannot update variant playlist: New playlist is not a variant playlist");
+    gst_hls_master_playlist_unref (new_master);
+    return FALSE;
+  }
+
+  GST_M3U8_CLIENT_LOCK (self);
+
+  if (hlsdemux->master->is_simple) {
+    GST_ERROR
+        ("Cannot update variant playlist: Current playlist is not a variant playlist");
+    goto out;
+  }
+
+  /* Now see if the variant playlist still has the same lists */
+  unmatched_lists = g_list_copy (hlsdemux->master->variants);
+  for (l = new_master->variants; l != NULL; l = l->next) {
+    GList *match = g_list_find_custom (unmatched_lists, l->data,
+        (GCompareFunc) gst_hls_demux_find_variant_match);
+
+    if (match) {
+      GstHLSVariantStream *variant = l->data;
+      GstHLSVariantStream *old = match->data;
+
+      unmatched_lists = g_list_delete_link (unmatched_lists, match);
+      /* FIXME: Deal with losing position due to missing an update */
+      variant->m3u8->sequence_position = old->m3u8->sequence_position;
+      variant->m3u8->sequence = old->m3u8->sequence;
+    }
+  }
+
+  if (unmatched_lists != NULL) {
+    GST_WARNING ("Unable to match all playlists");
+
+    for (l = unmatched_lists; l != NULL; l = l->next) {
+      if (l->data == hlsdemux->current_variant) {
+        GST_WARNING ("Unable to match current playlist");
+      }
+    }
+
+    g_list_free (unmatched_lists);
+  }
+
+  /* Switch out the variant playlist */
+  old = hlsdemux->master;
+
+  // FIXME: check all this and also switch of variants, if anything needs updating
+  hlsdemux->master = new_master;
+
+  if (hlsdemux->current_variant == NULL) {
+    new_variant = new_master->default_variant;
+  } else {
+    /* Find the same variant in the new playlist */
+    new_variant =
+        gst_hls_master_playlist_get_matching_variant (new_master,
+        hlsdemux->current_variant);
+  }
+
+  /* Use the function to set the current variant, as it copies over data */
+  if (new_variant != NULL)
+    gst_hls_demux_set_current_variant (hlsdemux, new_variant);
+
+  gst_hls_master_playlist_unref (old);
+
+  ret = (hlsdemux->current_variant != NULL);
+out:
+  GST_M3U8_CLIENT_UNLOCK (self);
+
+  return ret;
+}
+
+static gboolean
+gst_hls_demux_update_rendition_manifest (GstHLSDemux * demux,
+    GstHLSMedia * media, GError ** err)
+{
+  GstAdaptiveDemux *adaptive_demux = GST_ADAPTIVE_DEMUX (demux);
+  GstFragment *download;
+  GstBuffer *buf;
+  gchar *playlist;
+  const gchar *main_uri;
+  GstM3U8 *m3u8;
+  gchar *uri = media->uri;
+
+  main_uri = gst_adaptive_demux_get_manifest_ref_uri (adaptive_demux);
+  download =
+      gst_uri_downloader_fetch_uri (adaptive_demux->downloader, uri, main_uri,
+      TRUE, TRUE, TRUE, err);
+
+  if (download == NULL)
+    return FALSE;
+
+  m3u8 = media->playlist;
+
+  /* Set the base URI of the playlist to the redirect target if any */
+  if (download->redirect_permanent && download->redirect_uri) {
+    gst_m3u8_set_uri (m3u8, download->redirect_uri, NULL, media->name);
+  } else {
+    gst_m3u8_set_uri (m3u8, download->uri, download->redirect_uri, media->name);
+  }
+
+  buf = gst_fragment_get_buffer (download);
+  playlist = gst_hls_src_buf_to_utf8_playlist (buf);
+  gst_buffer_unref (buf);
+  g_object_unref (download);
+
+  if (playlist == NULL) {
+    GST_WARNING_OBJECT (demux, "Couldn't validate playlist encoding");
+    g_set_error (err, GST_STREAM_ERROR, GST_STREAM_ERROR_WRONG_TYPE,
+        "Couldn't validate playlist encoding");
+    return FALSE;
+  }
+
+  if (!gst_m3u8_update (m3u8, playlist)) {
+    GST_WARNING_OBJECT (demux, "Couldn't update playlist");
+    g_set_error (err, GST_STREAM_ERROR, GST_STREAM_ERROR_FAILED,
+        "Couldn't update playlist");
+    return FALSE;
+  }
+
+  return TRUE;
+}
+
 static gboolean
 gst_hls_demux_update_playlist (GstHLSDemux * demux, gboolean update,
     GError ** err)
@@ -830,34 +1303,32 @@
   GstFragment *download;
   GstBuffer *buf;
   gchar *playlist;
-  gboolean main_checked = FALSE, updated = FALSE;
-  gchar *uri, *main_uri;
+  gboolean main_checked = FALSE;
+  const gchar *main_uri;
+  GstM3U8 *m3u8;
+  gchar *uri;
+  gint i;
 
 retry:
-  uri = gst_m3u8_client_get_current_uri (demux->client);
-  main_uri = gst_m3u8_client_get_uri (demux->client);
+  uri = gst_m3u8_get_uri (demux->current_variant->m3u8);
+  main_uri = gst_adaptive_demux_get_manifest_ref_uri (adaptive_demux);
   download =
       gst_uri_downloader_fetch_uri (adaptive_demux->downloader, uri, main_uri,
       TRUE, TRUE, TRUE, err);
-  g_free (main_uri);
   if (download == NULL) {
     gchar *base_uri;
 
-    if (!update || main_checked
-        || !gst_m3u8_client_has_variant_playlist (demux->client)) {
+    if (!update || main_checked || demux->master->is_simple) {
       g_free (uri);
       return FALSE;
     }
-
     g_clear_error (err);
-    main_uri = gst_m3u8_client_get_uri (demux->client);
     GST_INFO_OBJECT (demux,
         "Updating playlist %s failed, attempt to refresh variant playlist %s",
         uri, main_uri);
     download =
         gst_uri_downloader_fetch_uri (adaptive_demux->downloader,
         main_uri, NULL, TRUE, TRUE, TRUE, err);
-    g_free (main_uri);
     if (download == NULL) {
       g_free (uri);
       return FALSE;
@@ -886,8 +1357,7 @@
       base_uri = download->redirect_uri;
     }
 
-    if (!gst_m3u8_client_update_variant_playlist (demux->client, playlist,
-            uri, base_uri)) {
+    if (!gst_hls_demux_update_variant_playlist (demux, playlist, uri, base_uri)) {
       GST_WARNING_OBJECT (demux, "Failed to update the variant playlist");
       g_object_unref (download);
       g_set_error (err, GST_STREAM_ERROR, GST_STREAM_ERROR_FAILED,
@@ -902,18 +1372,16 @@
   }
   g_free (uri);
 
+  m3u8 = demux->current_variant->m3u8;
+
   /* Set the base URI of the playlist to the redirect target if any */
-  GST_M3U8_CLIENT_LOCK (demux->client);
-  g_free (demux->client->current->uri);
-  g_free (demux->client->current->base_uri);
   if (download->redirect_permanent && download->redirect_uri) {
-    demux->client->current->uri = g_strdup (download->redirect_uri);
-    demux->client->current->base_uri = NULL;
+    gst_m3u8_set_uri (m3u8, download->redirect_uri, NULL,
+        demux->current_variant->name);
   } else {
-    demux->client->current->uri = g_strdup (download->uri);
-    demux->client->current->base_uri = g_strdup (download->redirect_uri);
+    gst_m3u8_set_uri (m3u8, download->uri, download->redirect_uri,
+        demux->current_variant->name);
   }
-  GST_M3U8_CLIENT_UNLOCK (demux->client);
 
   buf = gst_fragment_get_buffer (download);
   playlist = gst_hls_src_buf_to_utf8_playlist (buf);
@@ -927,41 +1395,61 @@
     return FALSE;
   }
 
-  updated = gst_m3u8_client_update (demux->client, playlist);
-  if (!updated) {
+  if (!gst_m3u8_update (m3u8, playlist)) {
     GST_WARNING_OBJECT (demux, "Couldn't update playlist");
     g_set_error (err, GST_STREAM_ERROR, GST_STREAM_ERROR_FAILED,
         "Couldn't update playlist");
     return FALSE;
   }
 
+  for (i = 0; i < GST_HLS_N_MEDIA_TYPES; ++i) {
+    GList *mlist = demux->current_variant->media[i];
+
+    while (mlist != NULL) {
+      GstHLSMedia *media = mlist->data;
+
+      if (media->uri == NULL) {
+        /* No uri means this is a placeholder for a stream
+         * contained in another mux */
+        mlist = mlist->next;
+        continue;
+      }
+      GST_LOG_OBJECT (demux,
+          "Updating playlist for media of type %d - %s, uri: %s", i,
+          media->name, media->uri);
+
+      if (!gst_hls_demux_update_rendition_manifest (demux, media, err))
+        return FALSE;
+
+      mlist = mlist->next;
+    }
+  }
+
   /* If it's a live source, do not let the sequence number go beyond
    * three fragments before the end of the list */
-  if (update == FALSE && demux->client->current &&
-      gst_m3u8_client_is_live (demux->client)) {
+  if (update == FALSE && gst_m3u8_is_live (m3u8)) {
     gint64 last_sequence, first_sequence;
 
     GST_M3U8_CLIENT_LOCK (demux->client);
     last_sequence =
-        GST_M3U8_MEDIA_FILE (g_list_last (demux->client->current->
-            files)->data)->sequence;
+        GST_M3U8_MEDIA_FILE (g_list_last (m3u8->files)->data)->sequence;
     first_sequence =
-        GST_M3U8_MEDIA_FILE (demux->client->current->files->data)->sequence;
+        GST_M3U8_MEDIA_FILE (g_list_first (m3u8->files)->data)->sequence;
 
     GST_DEBUG_OBJECT (demux,
         "sequence:%" G_GINT64_FORMAT " , first_sequence:%" G_GINT64_FORMAT
-        " , last_sequence:%" G_GINT64_FORMAT, demux->client->sequence,
+        " , last_sequence:%" G_GINT64_FORMAT, m3u8->sequence,
         first_sequence, last_sequence);
-    if (demux->client->sequence >= last_sequence - 3) {
+    if (m3u8->sequence >= last_sequence - 3) {
       //demux->need_segment = TRUE;
       /* Make sure we never go below the minimum sequence number */
-      demux->client->sequence = MAX (first_sequence, last_sequence - 3);
+      m3u8->sequence = MAX (first_sequence, last_sequence - 3);
       GST_DEBUG_OBJECT (demux,
           "Sequence is beyond playlist. Moving back to %" G_GINT64_FORMAT,
-          demux->client->sequence);
+          m3u8->sequence);
     }
     GST_M3U8_CLIENT_UNLOCK (demux->client);
-  } else if (demux->client->current && !gst_m3u8_client_is_live (demux->client)) {
+  } else if (!gst_m3u8_is_live (m3u8)) {
     GstClockTime current_pos, target_pos;
     guint sequence = 0;
     GList *walk;
@@ -980,15 +1468,15 @@
     } else {
       target_pos = 0;
     }
-    if (GST_CLOCK_TIME_IS_VALID (demux->client->sequence_position)) {
-      target_pos = MAX (target_pos, demux->client->sequence_position);
+    if (GST_CLOCK_TIME_IS_VALID (m3u8->sequence_position)) {
+      target_pos = MAX (target_pos, m3u8->sequence_position);
     }
 
     GST_LOG_OBJECT (demux, "Looking for sequence position %"
         GST_TIME_FORMAT " in updated playlist", GST_TIME_ARGS (target_pos));
 
     current_pos = 0;
-    for (walk = demux->client->current->files; walk; walk = walk->next) {
+    for (walk = m3u8->files; walk; walk = walk->next) {
       GstM3U8MediaFile *file = walk->data;
 
       sequence = file->sequence;
@@ -1001,19 +1489,20 @@
     /* End of playlist */
     if (!walk)
       sequence++;
-    demux->client->sequence = sequence;
-    demux->client->sequence_position = current_pos;
+    m3u8->sequence = sequence;
+    m3u8->sequence_position = current_pos;
     GST_M3U8_CLIENT_UNLOCK (demux->client);
   }
 
-  return updated;
+  return TRUE;
 }
 
 static gboolean
 gst_hls_demux_change_playlist (GstHLSDemux * demux, guint max_bitrate,
     gboolean * changed)
 {
-  GList *previous_variant, *current_variant;
+  GstHLSVariantStream *lowest_variant, *lowest_ivariant;
+  GstHLSVariantStream *previous_variant, *new_variant;
   gint old_bandwidth, new_bandwidth;
   GstAdaptiveDemux *adaptive_demux = GST_ADAPTIVE_DEMUX_CAST (demux);
   GstAdaptiveDemuxStream *stream;
@@ -1022,15 +1511,16 @@
 
   stream = adaptive_demux->streams->data;
 
-  previous_variant = demux->client->main->current_variant;
-  current_variant = gst_m3u8_client_get_playlist_for_bitrate (demux->client,
-      max_bitrate);
+  previous_variant = demux->current_variant;
+  new_variant =
+      gst_hls_master_playlist_get_variant_for_bitrate (demux->master,
+      demux->current_variant, max_bitrate);
 
   GST_M3U8_CLIENT_LOCK (demux->client);
 
 retry_failover_protection:
-  old_bandwidth = GST_M3U8 (previous_variant->data)->bandwidth;
-  new_bandwidth = GST_M3U8 (current_variant->data)->bandwidth;
+  old_bandwidth = previous_variant->bandwidth;
+  new_bandwidth = new_variant->bandwidth;
 
   /* Don't do anything else if the playlist is the same */
   if (new_bandwidth == old_bandwidth) {
@@ -1038,19 +1528,19 @@
     return TRUE;
   }
 
-  demux->client->main->current_variant = current_variant;
   GST_M3U8_CLIENT_UNLOCK (demux->client);
 
-  gst_m3u8_client_set_current (demux->client, current_variant->data);
+  gst_hls_demux_set_current_variant (demux, new_variant);
 
   GST_INFO_OBJECT (demux, "Client was on %dbps, max allowed is %dbps, switching"
       " to bitrate %dbps", old_bandwidth, max_bitrate, new_bandwidth);
 
   if (gst_hls_demux_update_playlist (demux, TRUE, NULL)) {
+    const gchar *main_uri;
     gchar *uri;
-    gchar *main_uri;
-    uri = gst_m3u8_client_get_current_uri (demux->client);
-    main_uri = gst_m3u8_client_get_uri (demux->client);
+
+    uri = gst_m3u8_get_uri (new_variant->m3u8);
+    main_uri = gst_adaptive_demux_get_manifest_ref_uri (adaptive_demux);
     gst_element_post_message (GST_ELEMENT_CAST (demux),
         gst_message_new_element (GST_OBJECT_CAST (demux),
             gst_structure_new (GST_ADAPTIVE_DEMUX_STATISTICS_MESSAGE_NAME,
@@ -1058,58 +1548,60 @@
                 main_uri, "uri", G_TYPE_STRING,
                 uri, "bitrate", G_TYPE_INT, new_bandwidth, NULL)));
     g_free (uri);
-    g_free (main_uri);
     if (changed)
       *changed = TRUE;
     stream->discont = TRUE;
   } else {
-    GList *failover = NULL;
+    GstHLSVariantStream *failover_variant = NULL;
+    GList *failover;
 
     GST_INFO_OBJECT (demux, "Unable to update playlist. Switching back");
     GST_M3U8_CLIENT_LOCK (demux->client);
 
-    failover = g_list_previous (current_variant);
-    if (failover && new_bandwidth == GST_M3U8 (failover->data)->bandwidth) {
-      current_variant = failover;
+    /* we find variants by bitrate by going from highest to lowest, so it's
+     * possible that there's another variant with the same bitrate before the
+     * one selected which we can use as failover */
+    failover = g_list_find (demux->master->variants, new_variant);
+    if (failover != NULL)
+      failover = failover->prev;
+    if (failover != NULL)
+      failover_variant = failover->data;
+    if (failover_variant && new_bandwidth == failover_variant->bandwidth) {
+      new_variant = failover_variant;
       goto retry_failover_protection;
     }
 
-    demux->client->main->current_variant = previous_variant;
     GST_M3U8_CLIENT_UNLOCK (demux->client);
-    gst_m3u8_client_set_current (demux->client, previous_variant->data);
+    gst_hls_demux_set_current_variant (demux, previous_variant);
     /*  Try a lower bitrate (or stop if we just tried the lowest) */
-    if (GST_M3U8 (previous_variant->data)->iframe && new_bandwidth ==
-        GST_M3U8 (g_list_first (demux->client->main->iframe_lists)->data)->
-        bandwidth)
+    lowest_variant = demux->master->variants->data;
+    lowest_ivariant = demux->master->iframe_variants->data;
+    if (previous_variant->iframe && new_bandwidth == lowest_ivariant->bandwidth)
       return FALSE;
-    else if (!GST_M3U8 (previous_variant->data)->iframe && new_bandwidth ==
-        GST_M3U8 (g_list_first (demux->client->main->lists)->data)->bandwidth)
+    if (!previous_variant->iframe && new_bandwidth == lowest_variant->bandwidth)
       return FALSE;
     else
       return gst_hls_demux_change_playlist (demux, new_bandwidth - 1, changed);
   }
 
-  /* Force typefinding since we might have changed media type */
-  demux->do_typefind = TRUE;
-
   return TRUE;
 }
 
 #if defined(HAVE_OPENSSL)
 static gboolean
-gst_hls_demux_decrypt_start (GstHLSDemux * demux, const guint8 * key_data,
-    const guint8 * iv_data)
+gst_hls_demux_stream_decrypt_start (GstHLSDemuxStream * stream,
+    const guint8 * key_data, const guint8 * iv_data)
 {
-  EVP_CIPHER_CTX_init (&demux->aes_ctx);
-  if (!EVP_DecryptInit_ex (&demux->aes_ctx, EVP_aes_128_cbc (), NULL, key_data,
+  EVP_CIPHER_CTX_init (&stream->aes_ctx);
+  if (!EVP_DecryptInit_ex (&stream->aes_ctx, EVP_aes_128_cbc (), NULL, key_data,
           iv_data))
     return FALSE;
-  EVP_CIPHER_CTX_set_padding (&demux->aes_ctx, 0);
+  EVP_CIPHER_CTX_set_padding (&stream->aes_ctx, 0);
   return TRUE;
 }
 
 static gboolean
-decrypt_fragment (GstHLSDemux * demux, gsize length,
+decrypt_fragment (GstHLSDemuxStream * stream, gsize length,
     const guint8 * encrypted_data, guint8 * decrypted_data)
 {
   int len, flen = 0;
@@ -1118,102 +1610,102 @@
     return FALSE;
 
   len = (int) length;
-  if (!EVP_DecryptUpdate (&demux->aes_ctx, decrypted_data, &len, encrypted_data,
-          len))
+  if (!EVP_DecryptUpdate (&stream->aes_ctx, decrypted_data, &len,
+          encrypted_data, len))
     return FALSE;
-  EVP_DecryptFinal_ex (&demux->aes_ctx, decrypted_data + len, &flen);
+  EVP_DecryptFinal_ex (&stream->aes_ctx, decrypted_data + len, &flen);
   g_return_val_if_fail (len + flen == length, FALSE);
   return TRUE;
 }
 
 static void
-gst_hls_demux_decrypt_end (GstHLSDemux * demux)
+gst_hls_demux_stream_decrypt_end (GstHLSDemuxStream * stream)
 {
-  EVP_CIPHER_CTX_cleanup (&demux->aes_ctx);
+  EVP_CIPHER_CTX_cleanup (&stream->aes_ctx);
 }
 
 #elif defined(HAVE_NETTLE)
 static gboolean
-gst_hls_demux_decrypt_start (GstHLSDemux * demux, const guint8 * key_data,
-    const guint8 * iv_data)
+gst_hls_demux_stream_decrypt_start (GstHLSDemuxStream * stream,
+    const guint8 * key_data, const guint8 * iv_data)
 {
-  aes_set_decrypt_key (&demux->aes_ctx.ctx, 16, key_data);
-  CBC_SET_IV (&demux->aes_ctx, iv_data);
+  aes_set_decrypt_key (&stream->aes_ctx.ctx, 16, key_data);
+  CBC_SET_IV (&stream->aes_ctx, iv_data);
 
   return TRUE;
 }
 
 static gboolean
-decrypt_fragment (GstHLSDemux * demux, gsize length,
+decrypt_fragment (GstHLSDemuxStream * stream, gsize length,
     const guint8 * encrypted_data, guint8 * decrypted_data)
 {
   if (length % 16 != 0)
     return FALSE;
 
-  CBC_DECRYPT (&demux->aes_ctx, aes_decrypt, length, decrypted_data,
+  CBC_DECRYPT (&stream->aes_ctx, aes_decrypt, length, decrypted_data,
       encrypted_data);
 
   return TRUE;
 }
 
 static void
-gst_hls_demux_decrypt_end (GstHLSDemux * demux)
+gst_hls_demux_stream_decrypt_end (GstHLSDemuxStream * stream)
 {
   /* NOP */
 }
 
 #else
 static gboolean
-gst_hls_demux_decrypt_start (GstHLSDemux * demux, const guint8 * key_data,
-    const guint8 * iv_data)
+gst_hls_demux_stream_decrypt_start (GstHLSDemuxStream * stream,
+    const guint8 * key_data, const guint8 * iv_data)
 {
   gcry_error_t err = 0;
   gboolean ret = FALSE;
 
   err =
-      gcry_cipher_open (&demux->aes_ctx, GCRY_CIPHER_AES128,
+      gcry_cipher_open (&stream->aes_ctx, GCRY_CIPHER_AES128,
       GCRY_CIPHER_MODE_CBC, 0);
   if (err)
     goto out;
-  err = gcry_cipher_setkey (demux->aes_ctx, key_data, 16);
+  err = gcry_cipher_setkey (stream->aes_ctx, key_data, 16);
   if (err)
     goto out;
-  err = gcry_cipher_setiv (demux->aes_ctx, iv_data, 16);
+  err = gcry_cipher_setiv (stream->aes_ctx, iv_data, 16);
   if (!err)
     ret = TRUE;
 
 out:
   if (!ret)
-    if (demux->aes_ctx)
-      gcry_cipher_close (demux->aes_ctx);
+    if (stream->aes_ctx)
+      gcry_cipher_close (stream->aes_ctx);
 
   return ret;
 }
 
 static gboolean
-decrypt_fragment (GstHLSDemux * demux, gsize length,
+decrypt_fragment (GstHLSDemuxStream * stream, gsize length,
     const guint8 * encrypted_data, guint8 * decrypted_data)
 {
   gcry_error_t err = 0;
 
-  err = gcry_cipher_decrypt (demux->aes_ctx, decrypted_data, length,
+  err = gcry_cipher_decrypt (stream->aes_ctx, decrypted_data, length,
       encrypted_data, length);
 
   return err == 0;
 }
 
 static void
-gst_hls_demux_decrypt_end (GstHLSDemux * demux)
+gst_hls_demux_stream_decrypt_end (GstHLSDemuxStream * stream)
 {
-  if (demux->aes_ctx) {
-    gcry_cipher_close (demux->aes_ctx);
-    demux->aes_ctx = NULL;
+  if (stream->aes_ctx) {
+    gcry_cipher_close (stream->aes_ctx);
+    stream->aes_ctx = NULL;
   }
 }
 #endif
 
 static GstBuffer *
-gst_hls_demux_decrypt_fragment (GstHLSDemux * demux,
+gst_hls_demux_decrypt_fragment (GstHLSDemux * demux, GstHLSDemuxStream * stream,
     GstBuffer * encrypted_buffer, GError ** err)
 {
   GstBuffer *decrypted_buffer = NULL;
@@ -1226,7 +1718,7 @@
   gst_buffer_map (encrypted_buffer, &encrypted_info, GST_MAP_READ);
   gst_buffer_map (decrypted_buffer, &decrypted_info, GST_MAP_WRITE);
 
-  if (!decrypt_fragment (demux, encrypted_info.size,
+  if (!decrypt_fragment (stream, encrypted_info.size,
           encrypted_info.data, decrypted_info.data))
     goto decrypt_error;
 
@@ -1256,9 +1748,16 @@
 gst_hls_demux_get_manifest_update_interval (GstAdaptiveDemux * demux)
 {
   GstHLSDemux *hlsdemux = GST_HLS_DEMUX_CAST (demux);
+  GstClockTime target_duration;
 
-  return gst_util_uint64_scale (gst_m3u8_client_get_target_duration
-      (hlsdemux->client), G_USEC_PER_SEC, GST_SECOND);
+  if (hlsdemux->current_variant) {
+    target_duration =
+        gst_m3u8_get_target_duration (hlsdemux->current_variant->m3u8);
+  } else {
+    target_duration = 5 * GST_SECOND;
+  }
+
+  return gst_util_uint64_scale (target_duration, G_USEC_PER_SEC, GST_SECOND);
 }
 
 static gboolean
@@ -1266,6 +1765,12 @@
     gint64 * stop)
 {
   GstHLSDemux *hlsdemux = GST_HLS_DEMUX_CAST (demux);
+  gboolean ret = FALSE;
 
-  return gst_m3u8_client_get_seek_range (hlsdemux->client, start, stop);
+  if (hlsdemux->current_variant) {
+    ret =
+        gst_m3u8_get_seek_range (hlsdemux->current_variant->m3u8, start, stop);
+  }
+
+  return ret;
 }
diff --git a/ext/hls/gsthlsdemux.h b/ext/hls/gsthlsdemux.h
index 1154236..3b6a4c0 100644
--- a/ext/hls/gsthlsdemux.h
+++ b/ext/hls/gsthlsdemux.h
@@ -1,6 +1,7 @@
 /* GStreamer
  * Copyright (C) 2010 Marc-Andre Lureau <marcandre.lureau@gmail.com>
  * Copyright (C) 2010 Andoni Morales Alastruey <ylatuya@gmail.com>
+ * Copyright (C) 2015 Tim-Philipp Müller <tim@centricular.com>
  *
  * gsthlsdemux.h:
  *
@@ -38,6 +39,7 @@
 #endif
 
 G_BEGIN_DECLS
+
 #define GST_TYPE_HLS_DEMUX \
   (gst_hls_demux_get_type())
 #define GST_HLS_DEMUX(obj) \
@@ -52,8 +54,74 @@
   (G_TYPE_INSTANCE_GET_CLASS ((obj),GST_TYPE_HLS_DEMUX,GstHLSDemuxClass))
 #define GST_HLS_DEMUX_CAST(obj) \
   ((GstHLSDemux *)obj)
+
 typedef struct _GstHLSDemux GstHLSDemux;
 typedef struct _GstHLSDemuxClass GstHLSDemuxClass;
+typedef struct _GstHLSDemuxStream GstHLSDemuxStream;
+typedef struct _GstHLSTSReader GstHLSTSReader;
+
+#define GST_HLS_DEMUX_STREAM_CAST(stream) ((GstHLSDemuxStream *)(stream))
+
+typedef enum {
+  GST_HLS_TSREADER_NONE,
+  GST_HLS_TSREADER_MPEGTS,
+  GST_HLS_TSREADER_ID3
+} GstHLSTSReaderType;
+
+struct _GstHLSTSReader
+{
+  GstHLSTSReaderType rtype;
+  gboolean have_id3;
+
+  gint packet_size;
+  gint pmt_pid;
+  gint pcr_pid;
+
+  GstClockTime last_pcr;
+  GstClockTime first_pcr;
+};
+
+struct _GstHLSDemuxStream
+{
+  GstAdaptiveDemux adaptive_demux_stream;
+
+  GstHLSTSReaderType stream_type;
+
+  GstM3U8 *playlist;
+  gboolean is_primary_playlist;
+
+  gboolean do_typefind;         /* Whether we need to typefind the next buffer */
+  GstBuffer *pending_typefind_buffer; /* for collecting data until typefind succeeds */
+
+  GstAdapter *pending_encrypted_data;  /* for chunking data into 16 byte multiples for decryption */
+  GstBuffer *pending_decrypted_buffer; /* last decrypted buffer for pkcs7 unpadding.
+                                          We only know that it is the last at EOS */
+  guint64 current_offset;              /* offset we're currently at */
+  gboolean reset_pts;
+
+  /* decryption tooling */
+#if defined(HAVE_OPENSSL)
+  EVP_CIPHER_CTX aes_ctx;
+#elif defined(HAVE_NETTLE)
+  struct CBC_CTX (struct aes_ctx, AES_BLOCK_SIZE) aes_ctx;
+#else
+  gcry_cipher_hd_t aes_ctx;
+#endif
+
+  gchar     *current_key;
+  guint8    *current_iv;
+
+  /* Accumulator for reading PAT/PMT/PCR from
+   * the stream so we can set timestamps/segments
+   * and switch cleanly */
+  GstBuffer *pending_pcr_buffer;
+
+  GstHLSTSReader tsreader;
+};
+
+typedef struct {
+  guint8 data[16];
+} GstHLSKey;
 
 /**
  * GstHLSDemux:
@@ -66,30 +134,15 @@
 
   gint srcpad_counter;
 
-  gchar *uri;                   /* Original playlist URI */
-  GstM3U8Client *client;        /* M3U8 client */
-  gboolean do_typefind;         /* Whether we need to typefind the next buffer */
+  /* Decryption key cache: url => GstHLSKey */
+  GHashTable *keys;
+  GMutex      keys_lock;
 
-  /* Cache for the last key */
-  gchar *key_url;
-  GstFragment *key_fragment;
+  /* FIXME: check locking, protected automatically by manifest_lock already? */
+  /* The master playlist with the available variant streams */
+  GstHLSMasterPlaylist *master;
 
-  /* decryption tooling */
-#if defined(HAVE_OPENSSL)
-  EVP_CIPHER_CTX aes_ctx;
-#elif defined(HAVE_NETTLE)
-  struct CBC_CTX (struct aes_ctx, AES_BLOCK_SIZE) aes_ctx;
-#else
-  gcry_cipher_hd_t aes_ctx;
-#endif
-  gchar *current_key;
-  guint8 *current_iv;
-  GstBuffer *pending_buffer; /* decryption scenario:
-                              * the last buffer can only be pushed when
-                              * resized, so need to store and wait for
-                              * EOS to know it is the last */
-
-  gboolean reset_pts;
+  GstHLSVariantStream  *current_variant;
 };
 
 struct _GstHLSDemuxClass
@@ -97,6 +150,13 @@
   GstAdaptiveDemuxClass parent_class;
 };
 
+
+void gst_hlsdemux_tsreader_init (GstHLSTSReader *r);
+void gst_hlsdemux_tsreader_set_type (GstHLSTSReader *r, GstHLSTSReaderType rtype);
+
+gboolean gst_hlsdemux_tsreader_find_pcrs (GstHLSTSReader *r, GstBuffer *buffer,
+    GstClockTime *first_pcr, GstClockTime *last_pcr);
+
 GType gst_hls_demux_get_type (void);
 
 G_END_DECLS
diff --git a/ext/hls/gsthlssink.c b/ext/hls/gsthlssink.c
index 03671d0..b56ef6c 100644
--- a/ext/hls/gsthlssink.c
+++ b/ext/hls/gsthlssink.c
@@ -120,8 +120,7 @@
   element_class = GST_ELEMENT_CLASS (klass);
   bin_class = GST_BIN_CLASS (klass);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
 
   gst_element_class_set_static_metadata (element_class,
       "HTTP Live Streaming sink", "Sink", "HTTP Live Streaming sink",
diff --git a/ext/hls/m3u8.c b/ext/hls/m3u8.c
index df267f7..bdb4acf 100644
--- a/ext/hls/m3u8.c
+++ b/ext/hls/m3u8.c
@@ -1,5 +1,6 @@
 /* GStreamer
  * Copyright (C) 2010 Marc-Andre Lureau <marcandre.lureau@gmail.com>
+ * Copyright (C) 2015 Tim-Philipp Müller <tim@centricular.com>
  *
  * m3u8.c:
  *
@@ -30,60 +31,85 @@
 
 #define GST_CAT_DEFAULT hls_debug
 
-static GstM3U8 *gst_m3u8_new (void);
-static void gst_m3u8_free (GstM3U8 * m3u8);
-static gboolean gst_m3u8_update (GstM3U8Client * client, GstM3U8 * m3u8,
-    gchar * data, gboolean * updated);
 static GstM3U8MediaFile *gst_m3u8_media_file_new (gchar * uri,
     gchar * title, GstClockTime duration, guint sequence);
-static void gst_m3u8_media_file_free (GstM3U8MediaFile * self);
 gchar *uri_join (const gchar * uri, const gchar * path);
 
-static GstM3U8 *
+GstM3U8 *
 gst_m3u8_new (void)
 {
   GstM3U8 *m3u8;
 
   m3u8 = g_new0 (GstM3U8, 1);
 
+  m3u8->current_file = NULL;
+  m3u8->current_file_duration = GST_CLOCK_TIME_NONE;
+  m3u8->sequence = -1;
+  m3u8->sequence_position = 0;
+  m3u8->highest_sequence_number = -1;
+  m3u8->duration = GST_CLOCK_TIME_NONE;
+
+  g_mutex_init (&m3u8->lock);
+  m3u8->ref_count = 1;
+
   return m3u8;
 }
 
+/* call with M3U8_LOCK held */
 static void
-gst_m3u8_set_uri (GstM3U8 * self, gchar * uri, gchar * base_uri, gchar * name)
+gst_m3u8_take_uri (GstM3U8 * self, gchar * uri, gchar * base_uri, gchar * name)
 {
   g_return_if_fail (self != NULL);
 
-  g_free (self->uri);
-  self->uri = uri;
-
-  g_free (self->base_uri);
-  self->base_uri = base_uri;
-
-  g_free (self->name);
-  self->name = name;
+  if (self->uri != uri) {
+    g_free (self->uri);
+    self->uri = uri;
+  }
+  if (self->base_uri != base_uri) {
+    g_free (self->base_uri);
+    self->base_uri = base_uri;
+  }
+  if (self->name != name) {
+    g_free (self->name);
+    self->name = name;
+  }
 }
 
-static void
-gst_m3u8_free (GstM3U8 * self)
+void
+gst_m3u8_set_uri (GstM3U8 * m3u8, const gchar * uri, const gchar * base_uri,
+    const gchar * name)
 {
-  g_return_if_fail (self != NULL);
+  GST_M3U8_LOCK (m3u8);
+  gst_m3u8_take_uri (m3u8, g_strdup (uri), g_strdup (base_uri),
+      g_strdup (name));
+  GST_M3U8_UNLOCK (m3u8);
+}
 
-  g_free (self->uri);
-  g_free (self->base_uri);
-  g_free (self->name);
-  g_free (self->codecs);
+GstM3U8 *
+gst_m3u8_ref (GstM3U8 * m3u8)
+{
+  g_assert (m3u8 != NULL && m3u8->ref_count > 0);
 
-  g_list_foreach (self->files, (GFunc) gst_m3u8_media_file_free, NULL);
-  g_list_free (self->files);
+  g_atomic_int_add (&m3u8->ref_count, 1);
+  return m3u8;
+}
 
-  g_free (self->last_data);
-  g_list_foreach (self->lists, (GFunc) gst_m3u8_free, NULL);
-  g_list_free (self->lists);
-  g_list_foreach (self->iframe_lists, (GFunc) gst_m3u8_free, NULL);
-  g_list_free (self->iframe_lists);
+void
+gst_m3u8_unref (GstM3U8 * self)
+{
+  g_return_if_fail (self != NULL && self->ref_count > 0);
 
-  g_free (self);
+  if (g_atomic_int_dec_and_test (&self->ref_count)) {
+    g_free (self->uri);
+    g_free (self->base_uri);
+    g_free (self->name);
+
+    g_list_foreach (self->files, (GFunc) gst_m3u8_media_file_unref, NULL);
+    g_list_free (self->files);
+
+    g_free (self->last_data);
+    g_free (self);
+  }
 }
 
 static GstM3U8MediaFile *
@@ -97,19 +123,31 @@
   file->title = title;
   file->duration = duration;
   file->sequence = sequence;
+  file->ref_count = 1;
 
   return file;
 }
 
-static void
-gst_m3u8_media_file_free (GstM3U8MediaFile * self)
+GstM3U8MediaFile *
+gst_m3u8_media_file_ref (GstM3U8MediaFile * mfile)
 {
-  g_return_if_fail (self != NULL);
+  g_assert (mfile != NULL && mfile->ref_count > 0);
 
-  g_free (self->title);
-  g_free (self->uri);
-  g_free (self->key);
-  g_free (self);
+  g_atomic_int_add (&mfile->ref_count, 1);
+  return mfile;
+}
+
+void
+gst_m3u8_media_file_unref (GstM3U8MediaFile * self)
+{
+  g_return_if_fail (self != NULL && self->ref_count > 0);
+
+  if (g_atomic_int_dec_and_test (&self->ref_count)) {
+    g_free (self->title);
+    g_free (self->uri);
+    g_free (self->key);
+    g_free (self);
+  }
 }
 
 static gboolean
@@ -257,32 +295,27 @@
 }
 
 static gint
-_m3u8_compare_uri (GstM3U8 * a, gchar * uri)
+gst_hls_variant_stream_compare_by_bitrate (gconstpointer a, gconstpointer b)
 {
-  g_return_val_if_fail (a != NULL, 0);
-  g_return_val_if_fail (uri != NULL, 0);
+  const GstHLSVariantStream *vs_a = (const GstHLSVariantStream *) a;
+  const GstHLSVariantStream *vs_b = (const GstHLSVariantStream *) b;
 
-  return g_strcmp0 (a->uri, uri);
-}
+  if (vs_a->bandwidth == vs_b->bandwidth)
+    return g_strcmp0 (vs_a->name, vs_b->name);
 
-static gint
-gst_m3u8_compare_playlist_by_bitrate (gconstpointer a, gconstpointer b)
-{
-  return ((GstM3U8 *) (a))->bandwidth - ((GstM3U8 *) (b))->bandwidth;
+  return vs_a->bandwidth - vs_b->bandwidth;
 }
 
 /*
  * @data: a m3u8 playlist text data, taking ownership
  */
-static gboolean
-gst_m3u8_update (GstM3U8Client * client, GstM3U8 * self, gchar * data,
-    gboolean * updated)
+gboolean
+gst_m3u8_update (GstM3U8 * self, gchar * data)
 {
   gint val;
   GstClockTime duration;
   gchar *title, *end;
   gboolean discontinuity = FALSE;
-  GstM3U8 *list;
   gchar *current_key = NULL;
   gboolean have_iv = FALSE;
   guint8 iv[16] = { 0, };
@@ -291,22 +324,27 @@
 
   g_return_val_if_fail (self != NULL, FALSE);
   g_return_val_if_fail (data != NULL, FALSE);
-  g_return_val_if_fail (updated != NULL, FALSE);
 
-  *updated = TRUE;
+  GST_M3U8_LOCK (self);
 
   /* check if the data changed since last update */
   if (self->last_data && g_str_equal (self->last_data, data)) {
     GST_DEBUG ("Playlist is the same as previous one");
-    *updated = FALSE;
     g_free (data);
+    GST_M3U8_UNLOCK (self);
     return TRUE;
   }
 
   if (!g_str_has_prefix (data, "#EXTM3U")) {
     GST_WARNING ("Data doesn't start with #EXTM3U");
-    *updated = FALSE;
     g_free (data);
+    GST_M3U8_UNLOCK (self);
+    return FALSE;
+  }
+
+  if (g_strrstr (data, "\n#EXT-X-STREAM-INF:") != NULL) {
+    GST_WARNING ("Not a media playlist, but a master playlist!");
+    GST_M3U8_UNLOCK (self);
     return FALSE;
   }
 
@@ -315,19 +353,18 @@
   g_free (self->last_data);
   self->last_data = data;
 
-  client->current_file = NULL;
+  self->current_file = NULL;
   if (self->files) {
-    g_list_foreach (self->files, (GFunc) gst_m3u8_media_file_free, NULL);
+    g_list_foreach (self->files, (GFunc) gst_m3u8_media_file_unref, NULL);
     g_list_free (self->files);
     self->files = NULL;
   }
-  client->duration = GST_CLOCK_TIME_NONE;
+  self->duration = GST_CLOCK_TIME_NONE;
   mediasequence = 0;
 
   /* By default, allow caching */
   self->allowcache = TRUE;
 
-  list = NULL;
   duration = 0;
   title = NULL;
   data += 7;
@@ -343,28 +380,13 @@
       *r = '\0';
 
     if (data[0] != '#' && data[0] != '\0') {
-      gchar *name = data;
-      if (duration <= 0 && list == NULL) {
-        GST_LOG ("%s: got line without EXTINF or EXTSTREAMINF, dropping", data);
+      if (duration <= 0) {
+        GST_LOG ("%s: got line without EXTINF, dropping", data);
         goto next_line;
       }
 
       data = uri_join (self->base_uri ? self->base_uri : self->uri, data);
-      if (data == NULL)
-        goto next_line;
-
-      if (list != NULL) {
-        if (g_list_find_custom (self->lists, data,
-                (GCompareFunc) _m3u8_compare_uri)) {
-          GST_DEBUG ("Already have a list with this URI");
-          gst_m3u8_free (list);
-          g_free (data);
-        } else {
-          gst_m3u8_set_uri (list, data, NULL, g_strdup (name));
-          self->lists = g_list_append (self->lists, list);
-        }
-        list = NULL;
-      } else {
+      if (data != NULL) {
         GstM3U8MediaFile *file;
         file = gst_m3u8_media_file_new (data, title, duration, mediasequence++);
 
@@ -435,62 +457,6 @@
       } else if (g_str_has_prefix (data_ext_x, "VERSION:")) {
         if (int_from_string (data + 15, &data, &val))
           self->version = val;
-      } else if (g_str_has_prefix (data_ext_x, "STREAM-INF:") ||
-          g_str_has_prefix (data_ext_x, "I-FRAME-STREAM-INF:")) {
-        gchar *v, *a;
-        gboolean iframe = g_str_has_prefix (data_ext_x, "I-FRAME-STREAM-INF:");
-        GstM3U8 *new_list;
-
-        new_list = gst_m3u8_new ();
-        new_list->iframe = iframe;
-        data = data + (iframe ? 26 : 18);
-        while (data && parse_attributes (&data, &a, &v)) {
-          if (g_str_equal (a, "BANDWIDTH")) {
-            if (!int_from_string (v, NULL, &new_list->bandwidth))
-              GST_WARNING ("Error while reading BANDWIDTH");
-          } else if (g_str_equal (a, "PROGRAM-ID")) {
-            if (!int_from_string (v, NULL, &new_list->program_id))
-              GST_WARNING ("Error while reading PROGRAM-ID");
-          } else if (g_str_equal (a, "CODECS")) {
-            g_free (new_list->codecs);
-            new_list->codecs = g_strdup (v);
-          } else if (g_str_equal (a, "RESOLUTION")) {
-            if (!int_from_string (v, &v, &new_list->width))
-              GST_WARNING ("Error while reading RESOLUTION width");
-            if (!v || *v != 'x') {
-              GST_WARNING ("Missing height");
-            } else {
-              v = g_utf8_next_char (v);
-              if (!int_from_string (v, NULL, &new_list->height))
-                GST_WARNING ("Error while reading RESOLUTION height");
-            }
-          } else if (iframe && g_str_equal (a, "URI")) {
-            gchar *name;
-            gchar *uri;
-
-            uri = uri_join (self->base_uri ? self->base_uri : self->uri, v);
-            if (uri) {
-              name = g_strdup (uri);
-              gst_m3u8_set_uri (new_list, uri, NULL, name);
-            }
-          }
-        }
-
-        if (iframe) {
-          if (g_list_find_custom (self->iframe_lists, new_list->uri,
-                  (GCompareFunc) _m3u8_compare_uri)) {
-            GST_DEBUG ("Already have a list with this URI");
-            gst_m3u8_free (new_list);
-          } else {
-            self->iframe_lists = g_list_append (self->iframe_lists, new_list);
-          }
-        } else {
-          if (list != NULL) {
-            GST_WARNING ("Found a list without a uri..., dropping");
-            gst_m3u8_free (list);
-          }
-          list = new_list;
-        }
       } else if (g_str_has_prefix (data_ext_x, "TARGETDURATION:")) {
         if (int_from_string (data + 22, &data, &val))
           self->targetduration = val * GST_SECOND;
@@ -579,38 +545,16 @@
   g_free (current_key);
   current_key = NULL;
 
+  if (self->files == NULL) {
+    GST_ERROR ("Invalid media playlist, it does not contain any media files");
+    GST_M3U8_UNLOCK (self);
+    return FALSE;
+  }
+
   self->files = g_list_reverse (self->files);
 
-  /* reorder playlists by bitrate */
-  if (self->lists) {
-    gchar *top_variant_uri = NULL;
-    gboolean iframe = FALSE;
-
-    if (!self->current_variant) {
-      top_variant_uri = GST_M3U8 (self->lists->data)->uri;
-    } else {
-      top_variant_uri = GST_M3U8 (self->current_variant->data)->uri;
-      iframe = GST_M3U8 (self->current_variant->data)->iframe;
-    }
-
-    self->lists =
-        g_list_sort (self->lists,
-        (GCompareFunc) gst_m3u8_compare_playlist_by_bitrate);
-
-    self->iframe_lists =
-        g_list_sort (self->iframe_lists,
-        (GCompareFunc) gst_m3u8_compare_playlist_by_bitrate);
-
-    if (iframe)
-      self->current_variant =
-          g_list_find_custom (self->iframe_lists, top_variant_uri,
-          (GCompareFunc) _m3u8_compare_uri);
-    else
-      self->current_variant = g_list_find_custom (self->lists, top_variant_uri,
-          (GCompareFunc) _m3u8_compare_uri);
-  }
   /* calculate the start and end times of this media playlist. */
-  if (self->files) {
+  {
     GList *walk;
     GstM3U8MediaFile *file;
     GstClockTime duration = 0;
@@ -618,231 +562,75 @@
     for (walk = self->files; walk; walk = walk->next) {
       file = walk->data;
       duration += file->duration;
-      if (file->sequence > client->highest_sequence_number) {
-        if (client->highest_sequence_number >= 0) {
+      if (file->sequence > self->highest_sequence_number) {
+        if (self->highest_sequence_number >= 0) {
           /* if an update of the media playlist has been missed, there
              will be a gap between self->highest_sequence_number and the
              first sequence number in this media playlist. In this situation
              assume that the missing fragments had a duration of
              targetduration each */
-          client->last_file_end +=
-              (file->sequence - client->highest_sequence_number -
+          self->last_file_end +=
+              (file->sequence - self->highest_sequence_number -
               1) * self->targetduration;
         }
-        client->last_file_end += file->duration;
-        client->highest_sequence_number = file->sequence;
+        self->last_file_end += file->duration;
+        self->highest_sequence_number = file->sequence;
       }
     }
-    if (GST_M3U8_CLIENT_IS_LIVE (client)) {
-      client->first_file_start = client->last_file_end - duration;
+    if (GST_M3U8_IS_LIVE (self)) {
+      self->first_file_start = self->last_file_end - duration;
       GST_DEBUG ("Live playlist range %" GST_TIME_FORMAT " -> %"
-          GST_TIME_FORMAT, GST_TIME_ARGS (client->first_file_start),
-          GST_TIME_ARGS (client->last_file_end));
+          GST_TIME_FORMAT, GST_TIME_ARGS (self->first_file_start),
+          GST_TIME_ARGS (self->last_file_end));
     }
-    client->duration = duration;
+    self->duration = duration;
   }
 
+  /* first-time setup */
+  if (self->files && self->sequence == -1) {
+    GList *file;
+
+    if (GST_M3U8_IS_LIVE (self)) {
+      gint i;
+
+      file = g_list_last (self->files);
+
+      /* for live streams, start GST_M3U8_LIVE_MIN_FRAGMENT_DISTANCE from
+       * the end of the playlist. See section 6.3.3 of HLS draft. Note
+       * the -1, because GST_M3U8_LIVE_MIN_FRAGMENT_DISTANCE = 1 means
+       * start 1 target-duration from the end */
+      for (i = 0; i < GST_M3U8_LIVE_MIN_FRAGMENT_DISTANCE - 1 && file->prev;
+          ++i)
+        file = file->prev;
+    } else {
+      file = g_list_first (self->files);
+    }
+    self->current_file = file;
+    self->sequence = GST_M3U8_MEDIA_FILE (file->data)->sequence;
+    self->sequence_position = 0;
+    GST_DEBUG ("first sequence: %u", (guint) self->sequence);
+  }
+
+  GST_LOG ("processed media playlist %s, %u fragments", self->name,
+      g_list_length (self->files));
+
+  GST_M3U8_UNLOCK (self);
+
   return TRUE;
 }
 
-GstM3U8Client *
-gst_m3u8_client_new (const gchar * uri, const gchar * base_uri)
-{
-  GstM3U8Client *client;
-
-  g_return_val_if_fail (uri != NULL, NULL);
-
-  client = g_new0 (GstM3U8Client, 1);
-  client->main = gst_m3u8_new ();
-  client->current = NULL;
-  client->current_file = NULL;
-  client->current_file_duration = GST_CLOCK_TIME_NONE;
-  client->sequence = -1;
-  client->sequence_position = 0;
-  client->highest_sequence_number = -1;
-  client->duration = GST_CLOCK_TIME_NONE;
-  g_mutex_init (&client->lock);
-  gst_m3u8_set_uri (client->main, g_strdup (uri), g_strdup (base_uri), NULL);
-
-  return client;
-}
-
-void
-gst_m3u8_client_free (GstM3U8Client * self)
-{
-  g_return_if_fail (self != NULL);
-
-  gst_m3u8_free (self->main);
-  g_mutex_clear (&self->lock);
-  g_free (self);
-}
-
-void
-gst_m3u8_client_set_current (GstM3U8Client * self, GstM3U8 * m3u8)
-{
-  g_return_if_fail (self != NULL);
-
-  GST_M3U8_CLIENT_LOCK (self);
-  if (m3u8 != self->current) {
-    self->current = m3u8;
-    self->duration = GST_CLOCK_TIME_NONE;
-    self->current_file = NULL;
-  }
-  GST_M3U8_CLIENT_UNLOCK (self);
-}
-
-gboolean
-gst_m3u8_client_update (GstM3U8Client * self, gchar * data)
-{
-  GstM3U8 *m3u8;
-  gboolean updated = FALSE;
-  gboolean ret = FALSE;
-
-  g_return_val_if_fail (self != NULL, FALSE);
-
-  GST_M3U8_CLIENT_LOCK (self);
-  m3u8 = self->current ? self->current : self->main;
-
-  if (!gst_m3u8_update (self, m3u8, data, &updated))
-    goto out;
-
-  if (!updated)
-    goto out;
-
-  if (self->current && !self->current->files) {
-    GST_ERROR ("Invalid media playlist, it does not contain any media files");
-    goto out;
-  }
-
-  /* select the first playlist, for now */
-  if (!self->current) {
-    if (self->main->lists) {
-      self->current = self->main->current_variant->data;
-    } else {
-      self->current = self->main;
-    }
-  }
-
-  if (m3u8->files && self->sequence == -1) {
-    if (GST_M3U8_CLIENT_IS_LIVE (self)) {
-      /* for live streams, start GST_M3U8_LIVE_MIN_FRAGMENT_DISTANCE from
-         the end of the playlist. See section 6.3.3 of HLS draft */
-      gint pos =
-          g_list_length (m3u8->files) - GST_M3U8_LIVE_MIN_FRAGMENT_DISTANCE;
-      self->current_file = g_list_nth (m3u8->files, pos >= 0 ? pos : 0);
-    } else {
-      self->current_file = g_list_first (m3u8->files);
-    }
-    self->sequence = GST_M3U8_MEDIA_FILE (self->current_file->data)->sequence;
-    self->sequence_position = 0;
-    GST_DEBUG ("Setting first sequence at %u", (guint) self->sequence);
-  }
-
-  ret = TRUE;
-out:
-  GST_M3U8_CLIENT_UNLOCK (self);
-  return ret;
-}
-
-static gint
-_find_m3u8_list_match (const GstM3U8 * a, const GstM3U8 * b)
-{
-  if (g_strcmp0 (a->name, b->name) == 0 &&
-      a->bandwidth == b->bandwidth &&
-      a->program_id == b->program_id &&
-      g_strcmp0 (a->codecs, b->codecs) == 0 &&
-      a->width == b->width &&
-      a->height == b->height && a->iframe == b->iframe) {
-    return 0;
-  }
-
-  return 1;
-}
-
-gboolean
-gst_m3u8_client_update_variant_playlist (GstM3U8Client * self, gchar * data,
-    const gchar * uri, const gchar * base_uri)
-{
-  gboolean ret = FALSE;
-  GList *list_entry, *unmatched_lists;
-  GstM3U8Client *new_client;
-  GstM3U8 *old;
-
-  g_return_val_if_fail (self != NULL, FALSE);
-
-  new_client = gst_m3u8_client_new (uri, base_uri);
-  if (gst_m3u8_client_update (new_client, data)) {
-    if (!new_client->main->lists) {
-      GST_ERROR
-          ("Cannot update variant playlist: New playlist is not a variant playlist");
-      gst_m3u8_client_free (new_client);
-      return FALSE;
-    }
-
-    GST_M3U8_CLIENT_LOCK (self);
-
-    if (!self->main->lists) {
-      GST_ERROR
-          ("Cannot update variant playlist: Current playlist is not a variant playlist");
-      goto out;
-    }
-
-    /* Now see if the variant playlist still has the same lists */
-    unmatched_lists = g_list_copy (self->main->lists);
-    for (list_entry = new_client->main->lists; list_entry;
-        list_entry = list_entry->next) {
-      GList *match = g_list_find_custom (unmatched_lists, list_entry->data,
-          (GCompareFunc) _find_m3u8_list_match);
-      if (match)
-        unmatched_lists = g_list_delete_link (unmatched_lists, match);
-    }
-
-    if (unmatched_lists != NULL) {
-      GST_WARNING ("Unable to match all playlists");
-
-      for (list_entry = unmatched_lists; list_entry;
-          list_entry = list_entry->next) {
-        if (list_entry->data == self->current) {
-          GST_WARNING ("Unable to match current playlist");
-        }
-      }
-
-      g_list_free (unmatched_lists);
-    }
-
-    /* Switch out the variant playlist, steal it from new_client */
-    old = self->main;
-
-    self->main = new_client->main;
-    new_client->main = gst_m3u8_new ();
-
-    if (self->main->lists)
-      self->current = self->main->current_variant->data;
-    else
-      self->current = self->main;
-
-    gst_m3u8_free (old);
-
-    ret = TRUE;
-
-  out:
-    GST_M3U8_CLIENT_UNLOCK (self);
-  }
-
-  gst_m3u8_client_free (new_client);
-  return ret;
-}
-
+/* call with M3U8_LOCK held */
 static GList *
-find_next_fragment (GstM3U8Client * client, GList * l, gboolean forward)
+m3u8_find_next_fragment (GstM3U8 * m3u8, gboolean forward)
 {
   GstM3U8MediaFile *file;
+  GList *l = m3u8->files;
 
   if (forward) {
     while (l) {
       file = l->data;
 
-      if (file->sequence >= client->sequence)
+      if (file->sequence >= m3u8->sequence)
         break;
 
       l = l->next;
@@ -853,7 +641,7 @@
     while (l) {
       file = l->data;
 
-      if (file->sequence <= client->sequence)
+      if (file->sequence <= m3u8->sequence)
         break;
 
       l = l->prev;
@@ -863,102 +651,78 @@
   return l;
 }
 
-static gboolean
-has_next_fragment (GstM3U8Client * client, GList * l, gboolean forward)
+GstM3U8MediaFile *
+gst_m3u8_get_next_fragment (GstM3U8 * m3u8, gboolean forward,
+    GstClockTime * sequence_position, gboolean * discont)
 {
-  l = find_next_fragment (client, l, forward);
+  GstM3U8MediaFile *file = NULL;
 
-  if (l) {
-    return (forward && l->next) || (!forward && l->prev);
-  }
+  g_return_val_if_fail (m3u8 != NULL, NULL);
 
-  return FALSE;
+  GST_M3U8_LOCK (m3u8);
+
+  GST_DEBUG ("Looking for fragment %" G_GINT64_FORMAT, m3u8->sequence);
+
+  if (m3u8->sequence < 0)       /* can't happen really */
+    goto out;
+
+  if (m3u8->current_file == NULL)
+    m3u8->current_file = m3u8_find_next_fragment (m3u8, forward);
+
+  if (m3u8->current_file == NULL)
+    goto out;
+
+  file = gst_m3u8_media_file_ref (m3u8->current_file->data);
+
+  GST_DEBUG ("Got fragment with sequence %u (current sequence %u)",
+      (guint) file->sequence, (guint) m3u8->sequence);
+
+  if (sequence_position)
+    *sequence_position = m3u8->sequence_position;
+  if (discont)
+    *discont = file->discont || (m3u8->sequence != file->sequence);
+
+  m3u8->current_file_duration = file->duration;
+  m3u8->sequence = file->sequence;
+
+out:
+
+  GST_M3U8_UNLOCK (m3u8);
+
+  return file;
 }
 
 gboolean
-gst_m3u8_client_get_next_fragment (GstM3U8Client * client,
-    gboolean * discontinuity, gchar ** uri, GstClockTime * duration,
-    GstClockTime * timestamp, gint64 * range_start, gint64 * range_end,
-    gchar ** key, guint8 ** iv, gboolean forward)
+gst_m3u8_has_next_fragment (GstM3U8 * m3u8, gboolean forward)
 {
-  GstM3U8MediaFile *file;
+  gboolean have_next;
+  GList *cur;
 
-  g_return_val_if_fail (client != NULL, FALSE);
-  g_return_val_if_fail (client->current != NULL, FALSE);
+  g_return_val_if_fail (m3u8 != NULL, FALSE);
 
-  GST_M3U8_CLIENT_LOCK (client);
-  GST_DEBUG ("Looking for fragment %" G_GINT64_FORMAT, client->sequence);
-  if (client->sequence < 0) {
-    GST_M3U8_CLIENT_UNLOCK (client);
-    return FALSE;
-  }
-  if (!client->current_file) {
-    client->current_file =
-        find_next_fragment (client, client->current->files, forward);
-  }
+  GST_M3U8_LOCK (m3u8);
 
-  if (!client->current_file) {
-    GST_M3U8_CLIENT_UNLOCK (client);
-    return FALSE;
-  }
+  GST_DEBUG ("Checking next fragment %" G_GINT64_FORMAT,
+      m3u8->sequence + (forward ? 1 : -1));
 
-  file = GST_M3U8_MEDIA_FILE (client->current_file->data);
-  GST_DEBUG ("Got fragment with sequence %u (client sequence %u)",
-      (guint) file->sequence, (guint) client->sequence);
-
-  client->current_file_duration = file->duration;
-  if (timestamp)
-    *timestamp = client->sequence_position;
-
-  if (discontinuity)
-    *discontinuity = client->sequence != file->sequence || file->discont;
-  if (uri)
-    *uri = g_strdup (file->uri);
-  if (duration)
-    *duration = file->duration;
-  if (range_start)
-    *range_start = file->offset;
-  if (range_end)
-    *range_end = file->size != -1 ? file->offset + file->size - 1 : -1;
-  if (key)
-    *key = g_strdup (file->key);
-  if (iv) {
-    *iv = g_new (guint8, sizeof (file->iv));
-    memcpy (*iv, file->iv, sizeof (file->iv));
-  }
-
-  client->sequence = file->sequence;
-
-  GST_M3U8_CLIENT_UNLOCK (client);
-  return TRUE;
-}
-
-gboolean
-gst_m3u8_client_has_next_fragment (GstM3U8Client * client, gboolean forward)
-{
-  gboolean ret;
-
-  g_return_val_if_fail (client != NULL, FALSE);
-  g_return_val_if_fail (client->current != NULL, FALSE);
-
-  GST_M3U8_CLIENT_LOCK (client);
-  GST_DEBUG ("Checking if has next fragment %" G_GINT64_FORMAT,
-      client->sequence + (forward ? 1 : -1));
-  if (client->current_file) {
-    ret =
-        (forward ? client->current_file->next : client->current_file->prev) !=
-        NULL;
+  if (m3u8->current_file) {
+    cur = m3u8->current_file;
   } else {
-    ret = has_next_fragment (client, client->current->files, forward);
+    cur = m3u8_find_next_fragment (m3u8, forward);
   }
-  GST_M3U8_CLIENT_UNLOCK (client);
-  return ret;
+
+  have_next = (forward && cur->next) || (!forward && cur->prev);
+
+  GST_M3U8_UNLOCK (m3u8);
+
+  return have_next;
 }
 
+/* call with M3U8_LOCK held */
 static void
-alternate_advance (GstM3U8Client * client, gboolean forward)
+m3u8_alternate_advance (GstM3U8 * m3u8, gboolean forward)
 {
-  gint targetnum = client->sequence;
+  gint targetnum = m3u8->sequence;
   GList *tmp;
   GstM3U8MediaFile *mf;
 
@@ -968,7 +732,7 @@
   else
     targetnum -= 1;
 
-  for (tmp = client->current->files; tmp; tmp = tmp->next) {
+  for (tmp = m3u8->files; tmp; tmp = tmp->next) {
     mf = (GstM3U8MediaFile *) tmp->data;
     if (mf->sequence == targetnum)
       break;
@@ -977,218 +741,161 @@
     GST_WARNING ("Can't find next fragment");
     return;
   }
-  client->current_file = tmp;
-  client->sequence = targetnum;
-  client->current_file_duration =
-      GST_M3U8_MEDIA_FILE (client->current_file->data)->duration;
+  m3u8->current_file = tmp;
+  m3u8->sequence = targetnum;
+  m3u8->current_file_duration = GST_M3U8_MEDIA_FILE (tmp->data)->duration;
 }
 
 void
-gst_m3u8_client_advance_fragment (GstM3U8Client * client, gboolean forward)
+gst_m3u8_advance_fragment (GstM3U8 * m3u8, gboolean forward)
 {
   GstM3U8MediaFile *file;
 
-  g_return_if_fail (client != NULL);
-  g_return_if_fail (client->current != NULL);
+  g_return_if_fail (m3u8 != NULL);
 
-  GST_M3U8_CLIENT_LOCK (client);
+  GST_M3U8_LOCK (m3u8);
+
   GST_DEBUG ("Sequence position was %" GST_TIME_FORMAT,
-      GST_TIME_ARGS (client->sequence_position));
-  if (GST_CLOCK_TIME_IS_VALID (client->current_file_duration)) {
+      GST_TIME_ARGS (m3u8->sequence_position));
+  if (GST_CLOCK_TIME_IS_VALID (m3u8->current_file_duration)) {
     /* Advance our position based on the previous fragment we played */
     if (forward)
-      client->sequence_position += client->current_file_duration;
-    else if (client->current_file_duration < client->sequence_position)
-      client->sequence_position -= client->current_file_duration;
+      m3u8->sequence_position += m3u8->current_file_duration;
+    else if (m3u8->current_file_duration < m3u8->sequence_position)
+      m3u8->sequence_position -= m3u8->current_file_duration;
     else
-      client->sequence_position = 0;
-    client->current_file_duration = GST_CLOCK_TIME_NONE;
+      m3u8->sequence_position = 0;
+    m3u8->current_file_duration = GST_CLOCK_TIME_NONE;
     GST_DEBUG ("Sequence position now %" GST_TIME_FORMAT,
-        GST_TIME_ARGS (client->sequence_position));
+        GST_TIME_ARGS (m3u8->sequence_position));
   }
-  if (!client->current_file) {
+  if (!m3u8->current_file) {
     GList *l;
 
-    GST_DEBUG ("Looking for fragment %" G_GINT64_FORMAT, client->sequence);
-    for (l = client->current->files; l != NULL; l = l->next) {
-      if (GST_M3U8_MEDIA_FILE (l->data)->sequence == client->sequence) {
-        client->current_file = l;
+    GST_DEBUG ("Looking for fragment %" G_GINT64_FORMAT, m3u8->sequence);
+    for (l = m3u8->files; l != NULL; l = l->next) {
+      if (GST_M3U8_MEDIA_FILE (l->data)->sequence == m3u8->sequence) {
+        m3u8->current_file = l;
         break;
       }
     }
-    if (client->current_file == NULL) {
+    if (m3u8->current_file == NULL) {
       GST_DEBUG
           ("Could not find current fragment, trying next fragment directly");
-      alternate_advance (client, forward);
+      m3u8_alternate_advance (m3u8, forward);
 
       /* Resync sequence number if the above has failed for live streams */
-      if (client->current_file == NULL && GST_M3U8_CLIENT_IS_LIVE (client)) {
+      if (m3u8->current_file == NULL && GST_M3U8_IS_LIVE (m3u8)) {
         /* for live streams, start GST_M3U8_LIVE_MIN_FRAGMENT_DISTANCE from
            the end of the playlist. See section 6.3.3 of HLS draft */
         gint pos =
-            g_list_length (client->current->files) -
-            GST_M3U8_LIVE_MIN_FRAGMENT_DISTANCE;
-        client->current_file =
-            g_list_nth (client->current->files, pos >= 0 ? pos : 0);
-        client->current_file_duration =
-            GST_M3U8_MEDIA_FILE (client->current_file->data)->duration;
+            g_list_length (m3u8->files) - GST_M3U8_LIVE_MIN_FRAGMENT_DISTANCE;
+        m3u8->current_file = g_list_nth (m3u8->files, pos >= 0 ? pos : 0);
+        m3u8->current_file_duration =
+            GST_M3U8_MEDIA_FILE (m3u8->current_file->data)->duration;
 
         GST_WARNING ("Resyncing live playlist");
       }
-      GST_M3U8_CLIENT_UNLOCK (client);
-      return;
+      goto out;
     }
   }
 
-  file = GST_M3U8_MEDIA_FILE (client->current_file->data);
+  file = GST_M3U8_MEDIA_FILE (m3u8->current_file->data);
   GST_DEBUG ("Advancing from sequence %u", (guint) file->sequence);
   if (forward) {
-    client->current_file = client->current_file->next;
-    if (client->current_file) {
-      client->sequence =
-          GST_M3U8_MEDIA_FILE (client->current_file->data)->sequence;
+    m3u8->current_file = m3u8->current_file->next;
+    if (m3u8->current_file) {
+      m3u8->sequence = GST_M3U8_MEDIA_FILE (m3u8->current_file->data)->sequence;
     } else {
-      client->sequence = file->sequence + 1;
+      m3u8->sequence = file->sequence + 1;
     }
   } else {
-    client->current_file = client->current_file->prev;
-    if (client->current_file) {
-      client->sequence =
-          GST_M3U8_MEDIA_FILE (client->current_file->data)->sequence;
+    m3u8->current_file = m3u8->current_file->prev;
+    if (m3u8->current_file) {
+      m3u8->sequence = GST_M3U8_MEDIA_FILE (m3u8->current_file->data)->sequence;
     } else {
-      client->sequence = file->sequence - 1;
+      m3u8->sequence = file->sequence - 1;
     }
   }
-  if (client->current_file) {
+  if (m3u8->current_file) {
     /* Store duration of the fragment we're using to update the position 
      * the next time we advance */
-    client->current_file_duration =
-        GST_M3U8_MEDIA_FILE (client->current_file->data)->duration;
+    m3u8->current_file_duration =
+        GST_M3U8_MEDIA_FILE (m3u8->current_file->data)->duration;
   }
-  GST_M3U8_CLIENT_UNLOCK (client);
-}
 
-static void
-_sum_duration (GstM3U8MediaFile * self, GstClockTime * duration)
-{
-  *duration += self->duration;
+out:
+
+  GST_M3U8_UNLOCK (m3u8);
 }
 
 GstClockTime
-gst_m3u8_client_get_duration (GstM3U8Client * client)
+gst_m3u8_get_duration (GstM3U8 * m3u8)
 {
   GstClockTime duration = GST_CLOCK_TIME_NONE;
 
-  g_return_val_if_fail (client != NULL, GST_CLOCK_TIME_NONE);
+  g_return_val_if_fail (m3u8 != NULL, GST_CLOCK_TIME_NONE);
 
-  GST_M3U8_CLIENT_LOCK (client);
+  GST_M3U8_LOCK (m3u8);
+
   /* We can only get the duration for on-demand streams */
-  if (!client->current || !client->current->endlist) {
-    GST_M3U8_CLIENT_UNLOCK (client);
-    return GST_CLOCK_TIME_NONE;
-  }
+  if (!m3u8->endlist)
+    goto out;
 
-  if (!GST_CLOCK_TIME_IS_VALID (client->duration) && client->current->files) {
-    client->duration = 0;
-    g_list_foreach (client->current->files, (GFunc) _sum_duration,
-        &client->duration);
+  if (!GST_CLOCK_TIME_IS_VALID (m3u8->duration) && m3u8->files != NULL) {
+    GList *f;
+
+    m3u8->duration = 0;
+    for (f = m3u8->files; f != NULL; f = f->next)
+      m3u8->duration += GST_M3U8_MEDIA_FILE (f)->duration;
   }
-  duration = client->duration;
-  GST_M3U8_CLIENT_UNLOCK (client);
+  duration = m3u8->duration;
+
+out:
+
+  GST_M3U8_UNLOCK (m3u8);
 
   return duration;
 }
 
 GstClockTime
-gst_m3u8_client_get_target_duration (GstM3U8Client * client)
+gst_m3u8_get_target_duration (GstM3U8 * m3u8)
 {
-  GstClockTime duration = 0;
+  GstClockTime target_duration;
 
-  g_return_val_if_fail (client != NULL, GST_CLOCK_TIME_NONE);
+  g_return_val_if_fail (m3u8 != NULL, GST_CLOCK_TIME_NONE);
 
-  GST_M3U8_CLIENT_LOCK (client);
-  duration = client->current->targetduration;
-  GST_M3U8_CLIENT_UNLOCK (client);
-  return duration;
+  GST_M3U8_LOCK (m3u8);
+  target_duration = m3u8->targetduration;
+  GST_M3U8_UNLOCK (m3u8);
+
+  return target_duration;
 }
 
 gchar *
-gst_m3u8_client_get_uri (GstM3U8Client * client)
+gst_m3u8_get_uri (GstM3U8 * m3u8)
 {
   gchar *uri;
 
-  g_return_val_if_fail (client != NULL, NULL);
+  GST_M3U8_LOCK (m3u8);
+  uri = g_strdup (m3u8->uri);
+  GST_M3U8_UNLOCK (m3u8);
 
-  GST_M3U8_CLIENT_LOCK (client);
-  uri = client->main ? g_strdup (client->main->uri) : NULL;
-  GST_M3U8_CLIENT_UNLOCK (client);
-  return uri;
-}
-
-gchar *
-gst_m3u8_client_get_current_uri (GstM3U8Client * client)
-{
-  gchar *uri;
-
-  g_return_val_if_fail (client != NULL, NULL);
-
-  GST_M3U8_CLIENT_LOCK (client);
-  uri = g_strdup (client->current->uri);
-  GST_M3U8_CLIENT_UNLOCK (client);
   return uri;
 }
 
 gboolean
-gst_m3u8_client_has_variant_playlist (GstM3U8Client * client)
+gst_m3u8_is_live (GstM3U8 * m3u8)
 {
-  gboolean ret;
+  gboolean is_live;
 
-  g_return_val_if_fail (client != NULL, FALSE);
+  g_return_val_if_fail (m3u8 != NULL, FALSE);
 
-  GST_M3U8_CLIENT_LOCK (client);
-  ret = (client->main->lists != NULL);
-  GST_M3U8_CLIENT_UNLOCK (client);
-  return ret;
-}
+  GST_M3U8_LOCK (m3u8);
+  is_live = GST_M3U8_IS_LIVE (m3u8);
+  GST_M3U8_UNLOCK (m3u8);
 
-gboolean
-gst_m3u8_client_is_live (GstM3U8Client * client)
-{
-  gboolean ret;
-
-  g_return_val_if_fail (client != NULL, FALSE);
-
-  GST_M3U8_CLIENT_LOCK (client);
-  ret = GST_M3U8_CLIENT_IS_LIVE (client);
-  GST_M3U8_CLIENT_UNLOCK (client);
-  return ret;
-}
-
-GList *
-gst_m3u8_client_get_playlist_for_bitrate (GstM3U8Client * client, guint bitrate)
-{
-  GList *list, *current_variant;
-
-  GST_M3U8_CLIENT_LOCK (client);
-  current_variant = client->main->current_variant;
-
-  /*  Go to the highest possible bandwidth allowed */
-  while (GST_M3U8 (current_variant->data)->bandwidth <= bitrate) {
-    list = g_list_next (current_variant);
-    if (!list)
-      break;
-    current_variant = list;
-  }
-
-  while (GST_M3U8 (current_variant->data)->bandwidth > bitrate) {
-    list = g_list_previous (current_variant);
-    if (!list)
-      break;
-    current_variant = list;
-  }
-  GST_M3U8_CLIENT_UNLOCK (client);
-
-  return current_variant;
+  return is_live;
 }
 
 gchar *
@@ -1248,8 +955,7 @@
 }
 
 gboolean
-gst_m3u8_client_get_seek_range (GstM3U8Client * client, gint64 * start,
-    gint64 * stop)
+gst_m3u8_get_seek_range (GstM3U8 * m3u8, gint64 * start, gint64 * stop)
 {
   GstClockTime duration = 0;
   GList *walk;
@@ -1257,36 +963,641 @@
   guint count;
   guint min_distance = 0;
 
-  g_return_val_if_fail (client != NULL, FALSE);
+  g_return_val_if_fail (m3u8 != NULL, FALSE);
 
-  GST_M3U8_CLIENT_LOCK (client);
+  GST_M3U8_LOCK (m3u8);
 
-  if (client->current == NULL || client->current->files == NULL) {
-    GST_M3U8_CLIENT_UNLOCK (client);
-    return FALSE;
-  }
+  if (m3u8->files == NULL)
+    goto out;
 
-  if (GST_M3U8_CLIENT_IS_LIVE (client)) {
+  if (GST_M3U8_IS_LIVE (m3u8)) {
     /* min_distance is used to make sure the seek range is never closer than
        GST_M3U8_LIVE_MIN_FRAGMENT_DISTANCE fragments from the end of a live
        playlist - see 6.3.3. "Playing the Playlist file" of the HLS draft */
     min_distance = GST_M3U8_LIVE_MIN_FRAGMENT_DISTANCE;
   }
-  count = g_list_length (client->current->files);
+  count = g_list_length (m3u8->files);
 
-  for (walk = client->current->files;
-      walk && count >= min_distance; walk = walk->next) {
+  for (walk = m3u8->files; walk && count >= min_distance; walk = walk->next) {
     file = walk->data;
     --count;
     duration += file->duration;
   }
 
-  if (duration <= 0) {
-    GST_M3U8_CLIENT_UNLOCK (client);
-    return FALSE;
-  }
-  *start = client->first_file_start;
+  if (duration <= 0)
+    goto out;
+
+  *start = m3u8->first_file_start;
   *stop = *start + duration;
-  GST_M3U8_CLIENT_UNLOCK (client);
-  return TRUE;
+
+out:
+
+  GST_M3U8_UNLOCK (m3u8);
+  return (duration > 0);
+}
+
+GstHLSMedia *
+gst_hls_media_ref (GstHLSMedia * media)
+{
+  g_assert (media != NULL && media->ref_count > 0);
+  g_atomic_int_add (&media->ref_count, 1);
+  return media;
+}
+
+void
+gst_hls_media_unref (GstHLSMedia * media)
+{
+  g_assert (media != NULL && media->ref_count > 0);
+  if (g_atomic_int_dec_and_test (&media->ref_count)) {
+    g_free (media->group_id);
+    g_free (media->name);
+    g_free (media->uri);
+    g_free (media);
+  }
+}
+
+static GstHLSMediaType
+gst_m3u8_get_hls_media_type_from_string (const gchar * type_name)
+{
+  if (strcmp (type_name, "AUDIO") == 0)
+    return GST_HLS_MEDIA_TYPE_AUDIO;
+  if (strcmp (type_name, "VIDEO") == 0)
+    return GST_HLS_MEDIA_TYPE_VIDEO;
+  if (strcmp (type_name, "SUBTITLES") == 0)
+    return GST_HLS_MEDIA_TYPE_SUBTITLES;
+  if (strcmp (type_name, "CLOSED_CAPTIONS") == 0)
+    return GST_HLS_MEDIA_TYPE_CLOSED_CAPTIONS;
+
+  return GST_HLS_MEDIA_TYPE_INVALID;
+}
+
+#define GST_HLS_MEDIA_TYPE_NAME(mtype) gst_m3u8_hls_media_type_get_nick(mtype)
+static inline const gchar *
+gst_m3u8_hls_media_type_get_nick (GstHLSMediaType mtype)
+{
+  static const gchar *nicks[GST_HLS_N_MEDIA_TYPES] = { "audio", "video",
+    "subtitle", "closed-captions"
+  };
+
+  if (mtype < 0 || mtype >= GST_HLS_N_MEDIA_TYPES)
+    return "invalid";
+
+  return nicks[mtype];
+}
+
+/* returns unquoted copy of string */
+static gchar *
+gst_m3u8_unquote (const gchar * str)
+{
+  const gchar *start, *end;
+
+  start = strchr (str, '"');
+  if (start == NULL)
+    return g_strdup (str);
+  end = strchr (start + 1, '"');
+  if (end == NULL) {
+    GST_WARNING ("Broken quoted string [%s] - can't find end quote", str);
+    return g_strdup (start + 1);
+  }
+  return g_strndup (start + 1, (gsize) (end - (start + 1)));
+}
+
+static GstHLSMedia *
+gst_m3u8_parse_media (gchar * desc, const gchar * base_uri)
+{
+  GstHLSMediaType mtype = GST_HLS_MEDIA_TYPE_INVALID;
+  GstHLSMedia *media;
+  gchar *a, *v;
+
+  media = g_new0 (GstHLSMedia, 1);
+  media->ref_count = 1;
+  media->playlist = gst_m3u8_new ();
+
+  GST_LOG ("parsing %s", desc);
+  while (desc != NULL && parse_attributes (&desc, &a, &v)) {
+    if (strcmp (a, "TYPE") == 0) {
+      media->mtype = gst_m3u8_get_hls_media_type_from_string (v);
+    } else if (strcmp (a, "GROUP-ID") == 0) {
+      g_free (media->group_id);
+      media->group_id = gst_m3u8_unquote (v);
+    } else if (strcmp (a, "NAME") == 0) {
+      g_free (media->name);
+      media->name = gst_m3u8_unquote (v);
+    } else if (strcmp (a, "URI") == 0) {
+      gchar *uri;
+
+      g_free (media->uri);
+      uri = gst_m3u8_unquote (v);
+      media->uri = uri_join (base_uri, uri);
+      g_free (uri);
+    } else if (strcmp (a, "LANGUAGE") == 0) {
+      g_free (media->lang);
+      media->lang = gst_m3u8_unquote (v);
+    } else if (strcmp (a, "DEFAULT") == 0) {
+      media->is_default = g_ascii_strcasecmp (v, "yes") == 0;
+    } else if (strcmp (a, "FORCED") == 0) {
+      media->forced = g_ascii_strcasecmp (v, "yes") == 0;
+    } else if (strcmp (a, "AUTOSELECT") == 0) {
+      media->autoselect = g_ascii_strcasecmp (v, "yes") == 0;
+    } else {
+      /* unhandled: ASSOC-LANGUAGE, INSTREAM-ID, CHARACTERISTICS */
+      GST_FIXME ("EXT-X-MEDIA: unhandled attribute: %s = %s", a, v);
+    }
+  }
+
+  if (media->mtype == GST_HLS_MEDIA_TYPE_INVALID)
+    goto required_attributes_missing;
+
+  if (media->uri == NULL)
+    goto existing_stream;
+
+  if (media->group_id == NULL || media->name == NULL)
+    goto required_attributes_missing;
+
+  if (mtype == GST_HLS_MEDIA_TYPE_CLOSED_CAPTIONS)
+    goto uri_with_cc;
+
+  GST_DEBUG ("media: %s, group '%s', name '%s', uri '%s', %s %s %s, lang=%s",
+      GST_HLS_MEDIA_TYPE_NAME (media->mtype), media->group_id, media->name,
+      media->uri, media->is_default ? "default" : "-",
+      media->autoselect ? "autoselect" : "-",
+      media->forced ? "forced" : "-", media->lang ? media->lang : "??");
+
+  return media;
+
+uri_with_cc:
+  {
+    GST_WARNING ("closed captions EXT-X-MEDIA should not have URI specified");
+    goto out_error;
+  }
+required_attributes_missing:
+  {
+    GST_WARNING ("EXT-X-MEDIA description is missing required attributes");
+    goto out_error;
+    /* fall through */
+  }
+existing_stream:
+  {
+    GST_DEBUG ("EXT-X-MEDIA without URI, describes embedded stream, skipping");
+    /* fall through */
+  }
+
+out_error:
+  {
+    gst_hls_media_unref (media);
+    return NULL;
+  }
+}
+
+static GstHLSVariantStream *
+gst_hls_variant_stream_new (void)
+{
+  GstHLSVariantStream *stream;
+
+  stream = g_new0 (GstHLSVariantStream, 1);
+  stream->m3u8 = gst_m3u8_new ();
+  stream->refcount = 1;
+  return stream;
+}
+
+GstHLSVariantStream *
+gst_hls_variant_stream_ref (GstHLSVariantStream * stream)
+{
+  g_atomic_int_inc (&stream->refcount);
+  return stream;
+}
+
+void
+gst_hls_variant_stream_unref (GstHLSVariantStream * stream)
+{
+  if (g_atomic_int_dec_and_test (&stream->refcount)) {
+    gint i;
+
+    g_free (stream->name);
+    g_free (stream->uri);
+    g_free (stream->codecs);
+    gst_m3u8_unref (stream->m3u8);
+    for (i = 0; i < GST_HLS_N_MEDIA_TYPES; ++i) {
+      g_free (stream->media_groups[i]);
+      g_list_free_full (stream->media[i], (GDestroyNotify) gst_hls_media_unref);
+    }
+    g_free (stream);
+  }
+}
+
+static GstHLSVariantStream *
+find_variant_stream_by_name (GList * list, const gchar * name)
+{
+  for (; list != NULL; list = list->next) {
+    GstHLSVariantStream *variant_stream = list->data;
+
+    if (variant_stream->name != NULL && !strcmp (variant_stream->name, name))
+      return variant_stream;
+  }
+  return NULL;
+}
+
+static GstHLSVariantStream *
+find_variant_stream_by_uri (GList * list, const gchar * uri)
+{
+  for (; list != NULL; list = list->next) {
+    GstHLSVariantStream *variant_stream = list->data;
+
+    if (variant_stream->uri != NULL && !strcmp (variant_stream->uri, uri))
+      return variant_stream;
+  }
+  return NULL;
+}
+
+static GstHLSMasterPlaylist *
+gst_hls_master_playlist_new (void)
+{
+  GstHLSMasterPlaylist *playlist;
+
+  playlist = g_new0 (GstHLSMasterPlaylist, 1);
+  playlist->refcount = 1;
+  playlist->is_simple = FALSE;
+
+  return playlist;
+}
+
+void
+gst_hls_master_playlist_unref (GstHLSMasterPlaylist * playlist)
+{
+  if (g_atomic_int_dec_and_test (&playlist->refcount)) {
+    g_list_free_full (playlist->variants,
+        (GDestroyNotify) gst_hls_variant_stream_unref);
+    g_list_free_full (playlist->iframe_variants,
+        (GDestroyNotify) gst_hls_variant_stream_unref);
+    g_free (playlist->last_data);
+    g_free (playlist);
+  }
+}
+
+static gint
+hls_media_name_compare_func (gconstpointer media, gconstpointer name)
+{
+  return strcmp (((GstHLSMedia *) media)->name, (const gchar *) name);
+}
+
+/* Takes ownership of @data */
+GstHLSMasterPlaylist *
+gst_hls_master_playlist_new_from_data (gchar * data, const gchar * base_uri)
+{
+  GHashTable *media_groups[GST_HLS_N_MEDIA_TYPES] = { NULL, };
+  GstHLSMasterPlaylist *playlist;
+  GstHLSVariantStream *pending_stream;
+  gchar *end, *free_data = data;
+  gint val, i;
+  GList *l;
+
+  if (!g_str_has_prefix (data, "#EXTM3U")) {
+    GST_WARNING ("Data doesn't start with #EXTM3U");
+    g_free (free_data);
+    return NULL;
+  }
+
+  playlist = gst_hls_master_playlist_new ();
+
+  /* store data before we modify it for parsing */
+  playlist->last_data = g_strdup (data);
+
+  GST_TRACE ("data:\n%s", data);
+
+  if (strstr (data, "\n#EXTINF:") != NULL) {
+    GST_INFO ("This is a simple media playlist, not a master playlist");
+
+    pending_stream = gst_hls_variant_stream_new ();
+    pending_stream->name = g_strdup (base_uri);
+    pending_stream->uri = g_strdup (base_uri);
+    gst_m3u8_set_uri (pending_stream->m3u8, base_uri, NULL, base_uri);
+    playlist->variants = g_list_append (playlist->variants, pending_stream);
+    playlist->default_variant = gst_hls_variant_stream_ref (pending_stream);
+    playlist->is_simple = TRUE;
+
+    if (!gst_m3u8_update (pending_stream->m3u8, data)) {
+      GST_WARNING ("Failed to parse media playlist");
+      gst_hls_master_playlist_unref (playlist);
+      playlist = NULL;
+    }
+    return playlist;
+  }
+
+  pending_stream = NULL;
+  data += 7;
+  while (TRUE) {
+    gchar *r;
+
+    end = g_utf8_strchr (data, -1, '\n');
+    if (end)
+      *end = '\0';
+
+    r = g_utf8_strchr (data, -1, '\r');
+    if (r)
+      *r = '\0';
+
+    if (data[0] != '#' && data[0] != '\0') {
+      gchar *name, *uri;
+
+      if (pending_stream == NULL) {
+        GST_LOG ("%s: got line without EXT-STREAM-INF, dropping", data);
+        goto next_line;
+      }
+
+      name = data;
+      uri = uri_join (base_uri, name);
+      if (uri == NULL)
+        goto next_line;
+
+      pending_stream->name = g_strdup (name);
+      pending_stream->uri = uri;
+
+      if (find_variant_stream_by_name (playlist->variants, name)
+          || find_variant_stream_by_uri (playlist->variants, uri)) {
+        GST_DEBUG ("Already have a list with this name or URI: %s", name);
+        gst_hls_variant_stream_unref (pending_stream);
+      } else {
+        GST_INFO ("stream %s @ %u: %s", name, pending_stream->bandwidth, uri);
+        gst_m3u8_set_uri (pending_stream->m3u8, uri, NULL, name);
+        playlist->variants = g_list_append (playlist->variants, pending_stream);
+        /* use first stream in the playlist as default */
+        if (playlist->default_variant == NULL) {
+          playlist->default_variant =
+              gst_hls_variant_stream_ref (pending_stream);
+        }
+      }
+      pending_stream = NULL;
+    } else if (g_str_has_prefix (data, "#EXT-X-VERSION:")) {
+      if (int_from_string (data + 15, &data, &val))
+        playlist->version = val;
+    } else if (g_str_has_prefix (data, "#EXT-X-STREAM-INF:") ||
+        g_str_has_prefix (data, "#EXT-X-I-FRAME-STREAM-INF:")) {
+      GstHLSVariantStream *stream;
+      gchar *v, *a;
+
+      stream = gst_hls_variant_stream_new ();
+      stream->iframe = g_str_has_prefix (data, "#EXT-X-I-FRAME-STREAM-INF:");
+      data += stream->iframe ? 26 : 18;
+      while (data && parse_attributes (&data, &a, &v)) {
+        if (g_str_equal (a, "BANDWIDTH")) {
+          if (!int_from_string (v, NULL, &stream->bandwidth))
+            GST_WARNING ("Error while reading BANDWIDTH");
+        } else if (g_str_equal (a, "PROGRAM-ID")) {
+          if (!int_from_string (v, NULL, &stream->program_id))
+            GST_WARNING ("Error while reading PROGRAM-ID");
+        } else if (g_str_equal (a, "CODECS")) {
+          g_free (stream->codecs);
+          stream->codecs = g_strdup (v);
+        } else if (g_str_equal (a, "RESOLUTION")) {
+          if (!int_from_string (v, &v, &stream->width))
+            GST_WARNING ("Error while reading RESOLUTION width");
+          if (!v || *v != 'x') {
+            GST_WARNING ("Missing height");
+          } else {
+            v = g_utf8_next_char (v);
+            if (!int_from_string (v, NULL, &stream->height))
+              GST_WARNING ("Error while reading RESOLUTION height");
+          }
+        } else if (stream->iframe && g_str_equal (a, "URI")) {
+          stream->uri = uri_join (base_uri, v);
+          if (stream->uri != NULL) {
+            stream->name = g_strdup (stream->uri);
+            gst_m3u8_set_uri (stream->m3u8, stream->uri, NULL, stream->name);
+          } else {
+            gst_hls_variant_stream_unref (stream);
+          }
+        } else if (g_str_equal (a, "AUDIO")) {
+          g_free (stream->media_groups[GST_HLS_MEDIA_TYPE_AUDIO]);
+          stream->media_groups[GST_HLS_MEDIA_TYPE_AUDIO] = gst_m3u8_unquote (v);
+        } else if (g_str_equal (a, "SUBTITLES")) {
+          g_free (stream->media_groups[GST_HLS_MEDIA_TYPE_SUBTITLES]);
+          stream->media_groups[GST_HLS_MEDIA_TYPE_SUBTITLES] =
+              gst_m3u8_unquote (v);
+        } else if (g_str_equal (a, "VIDEO")) {
+          g_free (stream->media_groups[GST_HLS_MEDIA_TYPE_VIDEO]);
+          stream->media_groups[GST_HLS_MEDIA_TYPE_VIDEO] = gst_m3u8_unquote (v);
+        } else if (g_str_equal (a, "CLOSED-CAPTIONS")) {
+          /* closed captions will be embedded inside the video stream, ignore */
+        }
+      }
+
+      if (stream->iframe) {
+        if (find_variant_stream_by_uri (playlist->iframe_variants, stream->uri)) {
+          GST_DEBUG ("Already have a list with this URI");
+          gst_hls_variant_stream_unref (stream);
+        } else {
+          playlist->iframe_variants =
+              g_list_append (playlist->iframe_variants, stream);
+        }
+      } else {
+        if (pending_stream != NULL) {
+          GST_WARNING ("variant stream without uri, dropping");
+          gst_hls_variant_stream_unref (pending_stream);
+        }
+        pending_stream = stream;
+      }
+    } else if (g_str_has_prefix (data, "#EXT-X-MEDIA:")) {
+      GstHLSMedia *media;
+      GList *list;
+
+      media = gst_m3u8_parse_media (data + strlen ("#EXT-X-MEDIA:"), base_uri);
+
+      if (media == NULL)
+        goto next_line;
+
+      if (media_groups[media->mtype] == NULL) {
+        media_groups[media->mtype] =
+            g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+      }
+
+      list = g_hash_table_lookup (media_groups[media->mtype], media->group_id);
+
+      /* make sure there isn't already a media with the same name */
+      if (!g_list_find_custom (list, media->name, hls_media_name_compare_func)) {
+        g_hash_table_replace (media_groups[media->mtype],
+            g_strdup (media->group_id), g_list_append (list, media));
+        GST_INFO ("Added media %s to group %s", media->name, media->group_id);
+      } else {
+        GST_WARNING ("  media with name '%s' already exists in group '%s'!",
+            media->name, media->group_id);
+        gst_hls_media_unref (media);
+      }
+    } else if (*data != '\0') {
+      GST_LOG ("Ignored line: %s", data);
+    }
+
+  next_line:
+    if (!end)
+      break;
+    data = g_utf8_next_char (end);      /* skip \n */
+  }
+
+  if (pending_stream != NULL) {
+    GST_WARNING ("#EXT-X-STREAM-INF without uri, dropping");
+    gst_hls_variant_stream_unref (pending_stream);
+  }
+
+  g_free (free_data);
+
+  /* Add alternative renditions media to variant streams */
+  for (l = playlist->variants; l != NULL; l = l->next) {
+    GstHLSVariantStream *stream = l->data;
+    GList *mlist;
+
+    for (i = 0; i < GST_HLS_N_MEDIA_TYPES; ++i) {
+      if (stream->media_groups[i] != NULL && media_groups[i] != NULL) {
+        GST_INFO ("Adding %s group '%s' to stream '%s'",
+            GST_HLS_MEDIA_TYPE_NAME (i), stream->media_groups[i], stream->name);
+
+        mlist = g_hash_table_lookup (media_groups[i], stream->media_groups[i]);
+
+        if (mlist == NULL)
+          GST_WARNING ("Group '%s' does not exist!", stream->media_groups[i]);
+
+        while (mlist != NULL) {
+          GstHLSMedia *media = mlist->data;
+
+          GST_DEBUG ("  %s media %s, uri: %s", GST_HLS_MEDIA_TYPE_NAME (i),
+              media->name, media->uri);
+
+          stream->media[i] =
+              g_list_append (stream->media[i], gst_hls_media_ref (media));
+          mlist = mlist->next;
+        }
+      }
+    }
+  }
+
+  /* clean up our temporary alternative rendition groups hash tables */
+  for (i = 0; i < GST_HLS_N_MEDIA_TYPES; ++i) {
+    if (media_groups[i] != NULL) {
+      GList *groups, *mlist;
+
+      groups = g_hash_table_get_keys (media_groups[i]);
+      for (l = groups; l != NULL; l = l->next) {
+        mlist = g_hash_table_lookup (media_groups[i], l->data);
+        g_list_free_full (mlist, (GDestroyNotify) gst_hls_media_unref);
+      }
+      g_list_free (groups);
+      g_hash_table_unref (media_groups[i]);
+    }
+  }
+
+  if (playlist->variants == NULL) {
+    GST_WARNING ("Master playlist without any media playlists!");
+    gst_hls_master_playlist_unref (playlist);
+    return NULL;
+  }
+
+  /* reorder variants by bitrate */
+  playlist->variants =
+      g_list_sort (playlist->variants,
+      (GCompareFunc) gst_hls_variant_stream_compare_by_bitrate);
+
+  playlist->iframe_variants =
+      g_list_sort (playlist->iframe_variants,
+      (GCompareFunc) gst_hls_variant_stream_compare_by_bitrate);
+
+  /* FIXME: restore old current_variant after master playlist update
+   * (move into code that does that update) */
+#if 0
+  {
+    gchar *top_variant_uri = NULL;
+    gboolean iframe = FALSE;
+
+    if (!self->current_variant) {
+      top_variant_uri = GST_M3U8 (self->lists->data)->uri;
+    } else {
+      top_variant_uri = GST_M3U8 (self->current_variant->data)->uri;
+      iframe = GST_M3U8 (self->current_variant->data)->iframe;
+    }
+
+    /* here we sorted the lists */
+
+    if (iframe)
+      playlist->current_variant =
+          find_variant_stream_by_uri (playlist->iframe_variants,
+          top_variant_uri);
+    else
+      playlist->current_variant =
+          find_variant_stream_by_uri (playlist->variants, top_variant_uri);
+  }
+#endif
+
+  GST_DEBUG ("parsed master playlist with %d streams and %d I-frame streams",
+      g_list_length (playlist->variants),
+      g_list_length (playlist->iframe_variants));
+
+
+  return playlist;
+}
+
+gboolean
+gst_hls_variant_stream_is_live (GstHLSVariantStream * variant)
+{
+  gboolean is_live;
+
+  g_return_val_if_fail (variant != NULL, FALSE);
+
+  is_live = gst_m3u8_is_live (variant->m3u8);
+
+  return is_live;
+}
+
+static gint
+compare_media (const GstHLSMedia * a, const GstHLSMedia * b)
+{
+  return strcmp (a->name, b->name);
+}
+
+GstHLSMedia *
+gst_hls_variant_find_matching_media (GstHLSVariantStream * stream,
+    GstHLSMedia * media)
+{
+  GList *mlist = stream->media[media->mtype];
+  GList *match;
+
+  if (mlist == NULL)
+    return NULL;
+
+  match = g_list_find_custom (mlist, media, (GCompareFunc) compare_media);
+  if (match == NULL)
+    return NULL;
+
+  return match->data;
+}
+
+GstHLSVariantStream *
+gst_hls_master_playlist_get_variant_for_bitrate (GstHLSMasterPlaylist *
+    playlist, GstHLSVariantStream * current_variant, guint bitrate)
+{
+  GstHLSVariantStream *variant = current_variant;
+  GList *l;
+
+  /* variant lists are sorted low to high, so iterate from highest to lowest */
+  if (current_variant == NULL || !current_variant->iframe)
+    l = g_list_last (playlist->variants);
+  else
+    l = g_list_last (playlist->iframe_variants);
+
+  while (l != NULL) {
+    variant = l->data;
+    if (variant->bandwidth <= bitrate)
+      break;
+    l = l->prev;
+  }
+
+  return variant;
+}
+
+GstHLSVariantStream *
+gst_hls_master_playlist_get_matching_variant (GstHLSMasterPlaylist * playlist,
+    GstHLSVariantStream * current_variant)
+{
+  if (current_variant->iframe) {
+    return find_variant_stream_by_uri (playlist->iframe_variants,
+        current_variant->uri);
+  }
+
+  return find_variant_stream_by_uri (playlist->variants, current_variant->uri);
 }
diff --git a/ext/hls/m3u8.h b/ext/hls/m3u8.h
index 24eaaa1..3a5023b 100644
--- a/ext/hls/m3u8.h
+++ b/ext/hls/m3u8.h
@@ -1,6 +1,7 @@
 /* GStreamer
  * Copyright (C) 2010 Marc-Andre Lureau <marcandre.lureau@gmail.com>
  * Copyright (C) 2010 Andoni Morales Alastruey <ylatuya@gmail.com>
+ * Copyright (C) 2015 Tim-Philipp Müller <tim@centricular.com>
  *
  * m3u8.h:
  *
@@ -29,15 +30,18 @@
 
 typedef struct _GstM3U8 GstM3U8;
 typedef struct _GstM3U8MediaFile GstM3U8MediaFile;
+typedef struct _GstHLSMedia GstHLSMedia;
 typedef struct _GstM3U8Client GstM3U8Client;
+typedef struct _GstHLSVariantStream GstHLSVariantStream;
+typedef struct _GstHLSMasterPlaylist GstHLSMasterPlaylist;
 
 #define GST_M3U8(m) ((GstM3U8*)m)
 #define GST_M3U8_MEDIA_FILE(f) ((GstM3U8MediaFile*)f)
 
-#define GST_M3U8_CLIENT_LOCK(c) g_mutex_lock (&c->lock);
-#define GST_M3U8_CLIENT_UNLOCK(c) g_mutex_unlock (&c->lock);
+#define GST_M3U8_LOCK(m) g_mutex_lock (&m->lock);
+#define GST_M3U8_UNLOCK(m) g_mutex_unlock (&m->lock);
 
-#define GST_M3U8_CLIENT_IS_LIVE(c) ((!(c)->current || (c)->current->endlist) ? FALSE : TRUE)
+#define GST_M3U8_IS_LIVE(m) ((m)->endlist == FALSE)
 
 /* hlsdemux must not get closer to the end of a live stream than
    GST_M3U8_LIVE_MIN_FRAGMENT_DISTANCE fragments. Section 6.3.3
@@ -53,26 +57,36 @@
   gchar *name;                  /* This will be the "name" of the playlist, the original
                                  * relative/absolute uri in a variant playlist */
 
+  /* parsed info */
   gboolean endlist;             /* if ENDLIST has been reached */
   gint version;                 /* last EXT-X-VERSION */
   GstClockTime targetduration;  /* last EXT-X-TARGETDURATION */
   gboolean allowcache;          /* last EXT-X-ALLOWCACHE */
 
-  gint bandwidth;
-  gint program_id;
-  gchar *codecs;
-  gint width;
-  gint height;
-  gboolean iframe;
   GList *files;
 
+  /* state */
+  GList *current_file;
+  GstClockTime current_file_duration; /* Duration of current fragment */
+  gint64 sequence;                    /* the next sequence for this client */
+  GstClockTime sequence_position;     /* position of this sequence */
+  gint64 highest_sequence_number;     /* largest seen sequence number */
+  GstClockTime first_file_start;      /* timecode of the start of the first fragment in the current media playlist */
+  GstClockTime last_file_end;         /* timecode of the end of the last fragment in the current media playlist */
+  GstClockTime duration;              /* cached total duration */
+
   /*< private > */
   gchar *last_data;
-  GList *lists;                 /* list of GstM3U8 from the main playlist */
-  GList *iframe_lists;          /* I-frame lists from the main playlist */
-  GList *current_variant;       /* Current variant playlist used */
+  GMutex lock;
+
+  gint ref_count;               /* ATOMIC */
 };
 
+GstM3U8 *          gst_m3u8_ref   (GstM3U8 * m3u8);
+
+void               gst_m3u8_unref (GstM3U8 * m3u8);
+
+
 struct _GstM3U8MediaFile
 {
   gchar *title;
@@ -83,73 +97,136 @@
   gchar *key;
   guint8 iv[16];
   gint64 offset, size;
+  gint ref_count;               /* ATOMIC */
 };
 
-struct _GstM3U8Client
+GstM3U8MediaFile * gst_m3u8_media_file_ref   (GstM3U8MediaFile * mfile);
+
+void               gst_m3u8_media_file_unref (GstM3U8MediaFile * mfile);
+
+GstM3U8 *          gst_m3u8_new (void);
+
+gboolean           gst_m3u8_update               (GstM3U8  * m3u8,
+                                                  gchar    * data);
+
+void               gst_m3u8_set_uri              (GstM3U8      * m3u8,
+                                                  const gchar  * uri,
+                                                  const gchar  * base_uri,
+                                                  const gchar  * name);
+
+GstM3U8MediaFile * gst_m3u8_get_next_fragment    (GstM3U8      * m3u8,
+                                                  gboolean       forward,
+                                                  GstClockTime * sequence_position,
+                                                  gboolean     * discont);
+
+gboolean           gst_m3u8_has_next_fragment    (GstM3U8 * m3u8,
+                                                  gboolean  forward);
+
+void               gst_m3u8_advance_fragment     (GstM3U8 * m3u8,
+                                                  gboolean  forward);
+
+GstClockTime       gst_m3u8_get_duration         (GstM3U8 * m3u8);
+
+GstClockTime       gst_m3u8_get_target_duration  (GstM3U8 * m3u8);
+
+gchar *            gst_m3u8_get_uri              (GstM3U8 * m3u8);
+
+gboolean           gst_m3u8_is_live              (GstM3U8 * m3u8);
+
+gboolean           gst_m3u8_get_seek_range       (GstM3U8 * m3u8,
+                                                  gint64  * start,
+                                                  gint64  * stop);
+
+typedef enum
 {
-  GstM3U8 *main;                /* main playlist */
-  GstM3U8 *current;
-  GList *current_file;
-  GstClockTime current_file_duration; /* Duration of current fragment */
-  gint64 sequence;              /* the next sequence for this client */
-  GstClockTime sequence_position; /* position of this sequence */
-  gint64 highest_sequence_number; /* largest seen sequence number */
-  GstClockTime first_file_start; /* timecode of the start of the first fragment in the current media playlist */
-  GstClockTime last_file_end; /* timecode of the end of the last fragment in the current media playlist */
-  GstClockTime duration; /* cached total duration */
-  GMutex lock;
+  GST_HLS_MEDIA_TYPE_INVALID = -1,
+  GST_HLS_MEDIA_TYPE_AUDIO,
+  GST_HLS_MEDIA_TYPE_VIDEO,
+  GST_HLS_MEDIA_TYPE_SUBTITLES,
+  GST_HLS_MEDIA_TYPE_CLOSED_CAPTIONS,
+  GST_HLS_N_MEDIA_TYPES
+} GstHLSMediaType;
+
+struct _GstHLSMedia {
+  GstHLSMediaType mtype;
+  gchar *group_id;
+  gchar *name;
+  gchar *lang;
+  gchar *uri;
+  gboolean is_default;
+  gboolean autoselect;
+  gboolean forced;
+
+  GstM3U8 *playlist;            /* media playlist */
+
+  gint ref_count;               /* ATOMIC */
 };
 
+GstHLSMedia * gst_hls_media_ref   (GstHLSMedia * media);
 
-GstM3U8Client * gst_m3u8_client_new (const gchar * uri, const gchar * base_uri);
+void          gst_hls_media_unref (GstHLSMedia * media);
 
-void            gst_m3u8_client_free (GstM3U8Client * client);
 
-gboolean        gst_m3u8_client_update (GstM3U8Client * client, gchar * data);
+struct _GstHLSVariantStream {
+  gchar *name;         /* This will be the "name" of the playlist, the original
+                        * relative/absolute uri in a variant playlist */
+  gchar *uri;
+  gchar *codecs;
+  gint bandwidth;
+  gint program_id;
+  gint width;
+  gint height;
+  gboolean iframe;
 
-gboolean        gst_m3u8_client_update_variant_playlist (GstM3U8Client * client,
-                                                         gchar         * data,
-                                                         const gchar   * uri,
-                                                         const gchar   * base_uri);
+  gint refcount;       /* ATOMIC */
 
-void            gst_m3u8_client_set_current         (GstM3U8Client * client,
-                                                     GstM3U8       * m3u8);
+  GstM3U8 *m3u8;       /* media playlist */
 
-gboolean        gst_m3u8_client_get_next_fragment   (GstM3U8Client * client,
-                                                     gboolean      * discontinuity,
-                                                     gchar        ** uri,
-                                                     GstClockTime  * duration,
-                                                     GstClockTime  * timestamp,
-                                                     gint64        * range_start,
-                                                     gint64        * range_end,
-                                                     gchar        ** key,
-                                                     guint8       ** iv,
-                                                     gboolean        forward);
+  /* alternative renditions */
+  gchar *media_groups[GST_HLS_N_MEDIA_TYPES];
+  GList *media[GST_HLS_N_MEDIA_TYPES];
+};
 
-gboolean        gst_m3u8_client_has_next_fragment   (GstM3U8Client * client,
-                                                     gboolean        forward);
+GstHLSVariantStream * gst_hls_variant_stream_ref (GstHLSVariantStream * stream);
 
-void            gst_m3u8_client_advance_fragment    (GstM3U8Client * client,
-                                                     gboolean        forward);
+void                  gst_hls_variant_stream_unref (GstHLSVariantStream * stream);
 
-GstClockTime    gst_m3u8_client_get_duration        (GstM3U8Client * client);
+gboolean              gst_hls_variant_stream_is_live (GstHLSVariantStream * stream);
 
-GstClockTime    gst_m3u8_client_get_target_duration (GstM3U8Client * client);
+GstHLSMedia *         gst_hls_variant_find_matching_media (GstHLSVariantStream  * stream,
+                          GstHLSMedia *media);
 
-gchar *         gst_m3u8_client_get_uri             (GstM3U8Client * client);
 
-gchar *         gst_m3u8_client_get_current_uri     (GstM3U8Client * client);
+struct _GstHLSMasterPlaylist
+{
+  /* Available variant streams, sorted by bitrate (low -> high) */
+  GList    *variants;
+  GList    *iframe_variants;
 
-gboolean        gst_m3u8_client_has_variant_playlist (GstM3U8Client * client);
+  GstHLSVariantStream *default_variant;  /* first in the list */
 
-gboolean        gst_m3u8_client_is_live             (GstM3U8Client * client);
+  gint      version;                     /* EXT-X-VERSION */
 
-GList *         gst_m3u8_client_get_playlist_for_bitrate (GstM3U8Client * client,
-                                                          guint           bitrate);
+  gint      refcount;                    /* ATOMIC */
 
-gboolean        gst_m3u8_client_get_seek_range      (GstM3U8Client * client,
-                                                     gint64        * start,
-                                                     gint64        * stop);
+  gboolean  is_simple;                   /* TRUE if simple main media playlist,
+                                          * FALSE if variant playlist (either
+                                          * way the variants list will be set) */
+
+  /*< private > */
+  gchar   *last_data;
+};
+
+GstHLSMasterPlaylist * gst_hls_master_playlist_new_from_data (gchar       * data,
+                                                              const gchar * base_uri);
+
+GstHLSVariantStream *  gst_hls_master_playlist_get_variant_for_bitrate (GstHLSMasterPlaylist * playlist,
+                                                                        GstHLSVariantStream  * current_variant,
+                                                                        guint                  bitrate);
+GstHLSVariantStream *  gst_hls_master_playlist_get_matching_variant (GstHLSMasterPlaylist * playlist,
+                                                                     GstHLSVariantStream  * current_variant);
+
+void                   gst_hls_master_playlist_unref (GstHLSMasterPlaylist * playlist);
 
 G_END_DECLS
 
diff --git a/ext/kate/Makefile.in b/ext/kate/Makefile.in
index 9cc80ac..70879e9 100644
--- a/ext/kate/Makefile.in
+++ b/ext/kate/Makefile.in
@@ -308,6 +308,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -329,6 +331,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -378,6 +382,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -523,6 +529,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -649,8 +657,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -693,8 +699,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/kate/gstkatedec.c b/ext/kate/gstkatedec.c
index c61d514..88a5666 100644
--- a/ext/kate/gstkatedec.c
+++ b/ext/kate/gstkatedec.c
@@ -162,10 +162,8 @@
   gstelement_class->change_state =
       GST_DEBUG_FUNCPTR (gst_kate_dec_change_state);
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "Kate stream text decoder", "Codec/Decoder/Subtitle",
diff --git a/ext/kate/gstkateenc.c b/ext/kate/gstkateenc.c
index d88914a..12bd1c8 100644
--- a/ext/kate/gstkateenc.c
+++ b/ext/kate/gstkateenc.c
@@ -214,10 +214,8 @@
   gstelement_class->change_state =
       GST_DEBUG_FUNCPTR (gst_kate_enc_change_state);
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "Kate stream encoder", "Codec/Encoder/Subtitle",
diff --git a/ext/kate/gstkateparse.c b/ext/kate/gstkateparse.c
index 99ea0c8..0cb9db0 100644
--- a/ext/kate/gstkateparse.c
+++ b/ext/kate/gstkateparse.c
@@ -109,10 +109,10 @@
 
   gstelement_class->change_state = gst_kate_parse_change_state;
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_kate_parse_src_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_kate_parse_sink_factory));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_kate_parse_src_factory);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_kate_parse_sink_factory);
 
   gst_element_class_set_static_metadata (gstelement_class, "Kate stream parser",
       "Codec/Parser/Subtitle",
diff --git a/ext/ladspa/Makefile.in b/ext/ladspa/Makefile.in
index 27d850a..274d3db 100644
--- a/ext/ladspa/Makefile.in
+++ b/ext/ladspa/Makefile.in
@@ -307,6 +307,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -328,6 +330,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -377,6 +381,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -522,6 +528,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -648,8 +656,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -692,8 +698,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/ladspa/gstladspa.c b/ext/ladspa/gstladspa.c
index df06693..624cbd8 100644
--- a/ext/ladspa/gstladspa.c
+++ b/ext/ladspa/gstladspa.c
@@ -24,21 +24,21 @@
  * SECTION:element-ladspa
  * @short_description: bridge for LADSPA (Linux Audio Developer's Simple Plugin API)
  * @see_also: #GstAudioConvert #GstAudioResample, #GstAudioTestSrc, #GstAutoAudioSink
- * 
+ *
  * The LADSPA (Linux Audio Developer's Simple Plugin API) element is a bridge
  * for plugins using the <ulink url="http://www.ladspa.org/">LADSPA</ulink> API.
  * It scans all installed LADSPA plugins and registers them as gstreamer
  * elements. If available it can also parse LRDF files and use the metadata for
  * element classification. The functionality you get depends on the LADSPA plugins
  * you have installed.
- * 
+ *
  * <refsect2>
  * <title>Example LADSPA line without this plugins</title>
  * |[
  * (padsp) listplugins
  * (padsp) analyseplugin cmt.so amp_mono
  * gst-launch-1.0 -e filesrc location="$myfile" ! decodebin ! audioconvert ! audioresample ! "audio/x-raw,format=S16LE,rate=48000,channels=1" ! wavenc ! filesink location="testin.wav"
- * (padsp) applyplugin testin.wav testout.wav cmt.so amp_mono 2 
+ * (padsp) applyplugin testin.wav testout.wav cmt.so amp_mono 2
  * gst-launch-1.0 playbin uri=file://"$PWD"/testout.wav
  * ]| Decode any audio file into wav with the format expected for the specific ladspa plugin to be applied, apply the ladspa filter and play it.
  * </refsect2>
@@ -76,7 +76,7 @@
  * ]| List details of the plugin, parameters, range and defaults included.
  * </refsect2>
  *
- * The elements categorize in: 
+ * The elements categorize in:
  * <itemizedlist>
  * <listitem><para>Filter/Effect/Audio/LADSPA:</para>
  * <refsect2>
@@ -86,7 +86,7 @@
  * ]| Decode any audio file, filter it through Calf Reverb LADSPA then TAP Stereo Echo, and play it.
  * </refsect2>
  * </listitem>
- * <listitem><para>Source/Audio/LADSPA:</para> 
+ * <listitem><para>Source/Audio/LADSPA:</para>
  * <refsect2>
  * <title>Example Source/Audio/LADSPA line with this plugins</title>
  * |[
@@ -236,8 +236,7 @@
       continue;
     }
 
-    ladspa_meta = gst_structure_new_empty ("ladspa");
-    gst_structure_set (ladspa_meta,
+    ladspa_meta = gst_structure_new ("ladspa",
         "plugin-filename", G_TYPE_STRING, file_name,
         "element-ix", G_TYPE_UINT, i,
         "element-type-name", G_TYPE_STRING, type_name,
@@ -360,7 +359,7 @@
     }
     if (skip)
       break;
-    /* 
+    /*
      * transform path: /usr/lib/ladspa -> /usr/share/ladspa/rdf/
      * yes, this is ugly, but lrdf has not searchpath
      */
@@ -402,8 +401,8 @@
   GST_DEBUG_CATEGORY_INIT (ladspa_debug, "ladspa", 0, "LADSPA plugins");
 
 #ifdef ENABLE_NLS
-  GST_DEBUG ("binding text domain %s to locale dir %s", GETTEXT_PACKAGE,
-      LOCALEDIR);
+  GST_DEBUG_OBJECT (plugin, "binding text domain %s to locale dir %s",
+      GETTEXT_PACKAGE, LOCALEDIR);
   bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
   bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
 #endif
@@ -420,13 +419,12 @@
   if (ladspa_meta_all) {
     n = gst_structure_n_fields (ladspa_meta_all);
   }
-  GST_INFO ("%d entries in cache", n);
+  GST_INFO_OBJECT (plugin, "%d entries in cache", n);
   if (!n) {
     ladspa_meta_all = gst_structure_new_empty ("ladspa");
-    res = ladspa_plugin_path_search (plugin);
-    if (res) {
+    if ((res = ladspa_plugin_path_search (plugin))) {
       n = gst_structure_n_fields (ladspa_meta_all);
-      GST_INFO ("%d entries after scanning", n);
+      GST_INFO_OBJECT (plugin, "%d entries after scanning", n);
       gst_plugin_set_cache_data (plugin, ladspa_meta_all);
     }
   } else {
@@ -438,7 +436,7 @@
     const gchar *name;
     const GValue *value;
 
-    GST_INFO ("register types");
+    GST_INFO_OBJECT (plugin, "register types");
 
     for (i = 0; i < n; i++) {
       name = gst_structure_nth_field_name (ladspa_meta_all, i);
@@ -452,7 +450,7 @@
   }
 
   if (!res) {
-    GST_WARNING ("no LADSPA plugins found, check LADSPA_PATH");
+    GST_WARNING_OBJECT (plugin, "no LADSPA plugins found, check LADSPA_PATH");
   }
 
   /* we don't want to fail, even if there are no elements registered */
diff --git a/ext/ladspa/gstladspasource.c b/ext/ladspa/gstladspasource.c
index 943da62..c078664 100644
--- a/ext/ladspa/gstladspasource.c
+++ b/ext/ladspa/gstladspasource.c
@@ -256,7 +256,7 @@
 gst_ladspa_source_type_fill (GstBaseSrc * base, guint64 offset,
     guint length, GstBuffer * buffer)
 {
-  GstLADSPASource *ladspa;
+  GstLADSPASource *ladspa = GST_LADSPA_SOURCE (base);
   GstClockTime next_time;
   gint64 next_sample, next_byte;
   gint bytes, samples;
@@ -264,8 +264,6 @@
   GstMapInfo map;
   gint samplerate, bpf;
 
-  ladspa = GST_LADSPA_SOURCE (base);
-
   /* example for tagging generated data */
   if (!ladspa->tags_pushed) {
     GstTagList *taglist;
diff --git a/ext/ladspa/gstladspautils.c b/ext/ladspa/gstladspautils.c
index c358b5e..d55db6f 100644
--- a/ext/ladspa/gstladspautils.c
+++ b/ext/ladspa/gstladspautils.c
@@ -1,4 +1,4 @@
-/* GStreamer LADSPA utils 
+/* GStreamer LADSPA utils
  * Copyright (C) 1999 Erik Walthinsen <omega@cse.ogi.edu>
  *               2001 Steve Baker <stevebaker_org@yahoo.co.uk>
  *               2003 Andy Wingo <wingo at pobox.com>
@@ -21,7 +21,7 @@
  * Boston, MA 02110-1301, USA.
  */
 
-/* 
+/*
  * This module is smartly shared between the source, transform and
  * sink elements. Handling any specific LADSPA <-> gstreamer interaction.
  *
@@ -65,7 +65,7 @@
 GST_DEBUG_CATEGORY_EXTERN (ladspa_debug);
 #define GST_CAT_DEFAULT ladspa_debug
 
-/* 
+/*
  * Interleaved buffer: (c1c2c1c2...)
  * De-interleaved buffer: (c1c1...c2c2...)
  */
@@ -81,7 +81,7 @@
       outdata[i * samples + j] = ((LADSPA_Data *) indata)[j * audio_in + i];
 }
 
-/* 
+/*
  * Interleaved buffer: (c1c2c1c2...)
  * De-interleaved buffer: (c1c1...c2c2...)
  */
@@ -517,24 +517,20 @@
     GObjectClass * object_class, guint offset)
 {
   GParamSpec *p;
-  gint i, ix;
+  gint i;
 
   ladspa_class->properties = offset;
 
-  /* properties have an offset */
-  ix = ladspa_class->properties;
-
   /* register properties */
-
-  for (i = 0; i < ladspa_class->count.control.in; i++, ix++) {
+  for (i = 0; i < ladspa_class->count.control.in; i++, offset++) {
     p = gst_ladspa_object_class_get_param_spec (ladspa_class, object_class,
         ladspa_class->map.control.in[i]);
-    g_object_class_install_property (object_class, ix, p);
+    g_object_class_install_property (object_class, offset, p);
   }
-  for (i = 0; i < ladspa_class->count.control.out; i++, ix++) {
+  for (i = 0; i < ladspa_class->count.control.out; i++, offset++) {
     p = gst_ladspa_object_class_get_param_spec (ladspa_class, object_class,
         ladspa_class->map.control.out[i]);
-    g_object_class_install_property (object_class, ix, p);
+    g_object_class_install_property (object_class, offset, p);
   }
 }
 
@@ -577,7 +573,7 @@
     GST_DEBUG ("LADSPA uri (id=%lu) : %s", desc->UniqueID, uri);
 
     /* we can take this directly from 'desc', keep this example for future
-       attributes. 
+       attributes.
 
        if ((str = lrdf_get_setting_metadata (uri, "title"))) {
        GST_DEBUG ("LADSPA title : %s", str);
@@ -730,15 +726,14 @@
   ladspa->activated = FALSE;
   ladspa->rate = 0;
 
-  ladspa->ports.audio.in =
-      g_new0 (LADSPA_Data *, ladspa->klass->count.audio.in);
+  ladspa->ports.audio.in = g_new0 (LADSPA_Data *, ladspa_class->count.audio.in);
   ladspa->ports.audio.out =
-      g_new0 (LADSPA_Data *, ladspa->klass->count.audio.out);
+      g_new0 (LADSPA_Data *, ladspa_class->count.audio.out);
 
   ladspa->ports.control.in =
-      g_new0 (LADSPA_Data, ladspa->klass->count.control.in);
+      g_new0 (LADSPA_Data, ladspa_class->count.control.in);
   ladspa->ports.control.out =
-      g_new0 (LADSPA_Data, ladspa->klass->count.control.out);
+      g_new0 (LADSPA_Data, ladspa_class->count.control.out);
 }
 
 void
@@ -840,7 +835,7 @@
   ladspa_class->plugin = NULL;
 }
 
-/* 
+/*
  * Create the type & register the element.
  */
 void
diff --git a/ext/libde265/Makefile.in b/ext/libde265/Makefile.in
index c6c4676..484db3b 100644
--- a/ext/libde265/Makefile.in
+++ b/ext/libde265/Makefile.in
@@ -304,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/libde265/libde265-dec.c b/ext/libde265/libde265-dec.c
index e11f12c..8053168 100644
--- a/ext/libde265/libde265-dec.c
+++ b/ext/libde265/libde265-dec.c
@@ -117,10 +117,8 @@
   decoder_class->handle_frame =
       GST_DEBUG_FUNCPTR (gst_libde265_dec_handle_frame);
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_template);
+  gst_element_class_add_static_pad_template (gstelement_class, &src_template);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "HEVC/H.265 decoder",
diff --git a/ext/libmms/Makefile.in b/ext/libmms/Makefile.in
index 80f2ed8..02fadaa 100644
--- a/ext/libmms/Makefile.in
+++ b/ext/libmms/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/libmms/gstmms.c b/ext/libmms/gstmms.c
index 5e3ff38..56243a2 100644
--- a/ext/libmms/gstmms.c
+++ b/ext/libmms/gstmms.c
@@ -100,8 +100,7 @@
           0, G_MAXINT / 1000, DEFAULT_CONNECTION_SPEED,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "MMS streaming source", "Source/Network",
diff --git a/ext/libvisual/Makefile.in b/ext/libvisual/Makefile.in
index e53a246..4fd8b2d 100644
--- a/ext/libvisual/Makefile.in
+++ b/ext/libvisual/Makefile.in
@@ -300,6 +300,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -321,6 +323,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -370,6 +374,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -515,6 +521,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -641,8 +649,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -685,8 +691,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/libvisual/visual-gl.c b/ext/libvisual/visual-gl.c
index 85c91e0..c796d4b 100644
--- a/ext/libvisual/visual-gl.c
+++ b/ext/libvisual/visual-gl.c
@@ -216,10 +216,8 @@
         klass->plugin->info->name, klass->plugin->info->version);
 
     /* FIXME: improve to only register what plugin supports? */
-    gst_element_class_add_pad_template (element_class,
-        gst_static_pad_template_get (&src_template));
-    gst_element_class_add_pad_template (element_class,
-        gst_static_pad_template_get (&sink_template));
+    gst_element_class_add_static_pad_template (element_class, &src_template);
+    gst_element_class_add_static_pad_template (element_class, &sink_template);
 
     gst_element_class_set_metadata (element_class,
         longname, "Visualization", klass->plugin->info->about,
diff --git a/ext/lv2/Makefile.am b/ext/lv2/Makefile.am
index ea4517f..844823c 100644
--- a/ext/lv2/Makefile.am
+++ b/ext/lv2/Makefile.am
@@ -1,15 +1,18 @@
 plugin_LTLIBRARIES = libgstlv2.la
 
-libgstlv2_la_SOURCES = gstlv2.c
+libgstlv2_la_SOURCES = gstlv2.c gstlv2utils.c gstlv2filter.c gstlv2source.c
 libgstlv2_la_CFLAGS = \
 	-I$(top_srcdir)/gst-libs \
+	$(GST_AUDIO_CFLAGS) \
+	$(GST_BASE_CFLAGS) \
 	$(GST_PLUGINS_BASE_CFLAGS) \
-	$(GST_CFLAGS) $(SLV2_CFLAGS)
+	$(GST_CFLAGS) $(LILV_CFLAGS)
 libgstlv2_la_LIBADD = \
-	$(top_builddir)/gst-libs/gst/signalprocessor/libgstsignalprocessor-@GST_API_VERSION@.la \
+	$(GST_AUDIO_LIBS) \
+	$(GST_BASE_LIBS) \
 	$(GST_PLUGINS_BASE_LIBS) -lgstaudio-$(GST_API_VERSION) \
-	$(LIBM) $(SLV2_LIBS)
+	$(LIBM) $(LILV_LIBS)
 libgstlv2_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
 libgstlv2_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
 
-noinst_HEADERS = gstlv2.h
+noinst_HEADERS = gstlv2.h gstlv2utils.h
diff --git a/ext/lv2/Makefile.in b/ext/lv2/Makefile.in
index f8d6a08..24389e9 100644
--- a/ext/lv2/Makefile.in
+++ b/ext/lv2/Makefile.in
@@ -163,10 +163,12 @@
 am__installdirs = "$(DESTDIR)$(plugindir)"
 LTLIBRARIES = $(plugin_LTLIBRARIES)
 am__DEPENDENCIES_1 =
-libgstlv2_la_DEPENDENCIES = $(top_builddir)/gst-libs/gst/signalprocessor/libgstsignalprocessor-@GST_API_VERSION@.la \
+libgstlv2_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1)
-am_libgstlv2_la_OBJECTS = libgstlv2_la-gstlv2.lo
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am_libgstlv2_la_OBJECTS = libgstlv2_la-gstlv2.lo \
+	libgstlv2_la-gstlv2utils.lo libgstlv2_la-gstlv2filter.lo \
+	libgstlv2_la-gstlv2source.lo
 libgstlv2_la_OBJECTS = $(am_libgstlv2_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -303,6 +305,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +328,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +379,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +526,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +654,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +696,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -779,20 +792,23 @@
 top_srcdir = @top_srcdir@
 wayland_scanner = @wayland_scanner@
 plugin_LTLIBRARIES = libgstlv2.la
-libgstlv2_la_SOURCES = gstlv2.c
+libgstlv2_la_SOURCES = gstlv2.c gstlv2utils.c gstlv2filter.c gstlv2source.c
 libgstlv2_la_CFLAGS = \
 	-I$(top_srcdir)/gst-libs \
+	$(GST_AUDIO_CFLAGS) \
+	$(GST_BASE_CFLAGS) \
 	$(GST_PLUGINS_BASE_CFLAGS) \
-	$(GST_CFLAGS) $(SLV2_CFLAGS)
+	$(GST_CFLAGS) $(LILV_CFLAGS)
 
 libgstlv2_la_LIBADD = \
-	$(top_builddir)/gst-libs/gst/signalprocessor/libgstsignalprocessor-@GST_API_VERSION@.la \
+	$(GST_AUDIO_LIBS) \
+	$(GST_BASE_LIBS) \
 	$(GST_PLUGINS_BASE_LIBS) -lgstaudio-$(GST_API_VERSION) \
-	$(LIBM) $(SLV2_LIBS)
+	$(LIBM) $(LILV_LIBS)
 
 libgstlv2_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
 libgstlv2_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-noinst_HEADERS = gstlv2.h
+noinst_HEADERS = gstlv2.h gstlv2utils.h
 all: all-am
 
 .SUFFIXES:
@@ -872,6 +888,9 @@
 	-rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstlv2_la-gstlv2.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstlv2_la-gstlv2filter.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstlv2_la-gstlv2source.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstlv2_la-gstlv2utils.Plo@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -904,6 +923,27 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstlv2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstlv2_la_CFLAGS) $(CFLAGS) -c -o libgstlv2_la-gstlv2.lo `test -f 'gstlv2.c' || echo '$(srcdir)/'`gstlv2.c
 
+libgstlv2_la-gstlv2utils.lo: gstlv2utils.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstlv2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstlv2_la_CFLAGS) $(CFLAGS) -MT libgstlv2_la-gstlv2utils.lo -MD -MP -MF $(DEPDIR)/libgstlv2_la-gstlv2utils.Tpo -c -o libgstlv2_la-gstlv2utils.lo `test -f 'gstlv2utils.c' || echo '$(srcdir)/'`gstlv2utils.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstlv2_la-gstlv2utils.Tpo $(DEPDIR)/libgstlv2_la-gstlv2utils.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstlv2utils.c' object='libgstlv2_la-gstlv2utils.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstlv2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstlv2_la_CFLAGS) $(CFLAGS) -c -o libgstlv2_la-gstlv2utils.lo `test -f 'gstlv2utils.c' || echo '$(srcdir)/'`gstlv2utils.c
+
+libgstlv2_la-gstlv2filter.lo: gstlv2filter.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstlv2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstlv2_la_CFLAGS) $(CFLAGS) -MT libgstlv2_la-gstlv2filter.lo -MD -MP -MF $(DEPDIR)/libgstlv2_la-gstlv2filter.Tpo -c -o libgstlv2_la-gstlv2filter.lo `test -f 'gstlv2filter.c' || echo '$(srcdir)/'`gstlv2filter.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstlv2_la-gstlv2filter.Tpo $(DEPDIR)/libgstlv2_la-gstlv2filter.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstlv2filter.c' object='libgstlv2_la-gstlv2filter.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstlv2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstlv2_la_CFLAGS) $(CFLAGS) -c -o libgstlv2_la-gstlv2filter.lo `test -f 'gstlv2filter.c' || echo '$(srcdir)/'`gstlv2filter.c
+
+libgstlv2_la-gstlv2source.lo: gstlv2source.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstlv2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstlv2_la_CFLAGS) $(CFLAGS) -MT libgstlv2_la-gstlv2source.lo -MD -MP -MF $(DEPDIR)/libgstlv2_la-gstlv2source.Tpo -c -o libgstlv2_la-gstlv2source.lo `test -f 'gstlv2source.c' || echo '$(srcdir)/'`gstlv2source.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstlv2_la-gstlv2source.Tpo $(DEPDIR)/libgstlv2_la-gstlv2source.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstlv2source.c' object='libgstlv2_la-gstlv2source.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstlv2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstlv2_la_CFLAGS) $(CFLAGS) -c -o libgstlv2_la-gstlv2source.lo `test -f 'gstlv2source.c' || echo '$(srcdir)/'`gstlv2source.c
+
 mostlyclean-libtool:
 	-rm -f *.lo
 
diff --git a/ext/lv2/README b/ext/lv2/README
index 5a409ff..10c6a8e 100644
--- a/ext/lv2/README
+++ b/ext/lv2/README
@@ -2,26 +2,70 @@
 
 Dependencies:
 
-SLV2 0.6.* <http://drobilla.net/software/slv2>
+Lilv 0.6.6 <http://drobilla.net/software/lilv/>
 
-Which in turn depends on:
 
-librdf (redland) >= 1.0.6 <http://librdf.org>
+Features:
 
+The plugin wrapper support the following plugin features:
+http://lv2plug.in/ns/lv2core
+http://lv2plug.in/ns/ext/event
+http://lv2plug.in/ns/ext/port-groups
+
+and these host features:
+http://lv2plug.in/ns/ext/log
+http://lv2plug.in/ns/ext/urid
 
 Example Pipeline:
 
 Requires swh-lv2 <http://plugin.org.uk/releases/>
 
-gst-launch-0.10 -v filesrc location=/usr/share/sounds/login.wav ! wavparse ! audioconvert ! plugin-org-uk-swh-plugins-djFlanger ! audioconvert ! alsasink
-
+gst-launch-1.0 -v filesrc location=/usr/share/sounds/login.wav ! wavparse ! audioconvert ! plugin-org-uk-swh-plugins-djFlanger ! audioconvert ! autoaudiosink
 (A longer wav will be a better example)
 
+gst-launch-1.0 plugin-org-uk-swh-plugins-analogueOsc num-buffers=100 wave=1 ! wavenc ! filesink location="/tmp/lv2.wav"
 
 Requires calf <http://calf.sourceforge.net/>
 
-GST_DEBUG="*:2,signalprocessor:5,lv2:5" 
-gst-launch calf-sourceforge-net-plugins-Monosynth event-in="C-3" ! pulsesink
-gst-launch calf-sourceforge-net-plugins-Monosynth event-in="C-3" name=ms ! pulsesink ms. ! fakesink
-gst-launch calf-sourceforge-net-plugins-Organ event-in="C-3" name=s ! interleave name=i ! pulsesink s. ! i.
+GST_DEBUG="*:2,lv2:5"
+gst-launch-1.0 calf-sourceforge-net-plugins-Monosynth event-in="C-3" ! autoaudiosink
+gst-launch-1.0 calf-sourceforge-net-plugins-Monosynth event-in="C-3" name=ms ! autoaudiosink ms. ! fakesink
+gst-launch-1.0 calf-sourceforge-net-plugins-Organ event-in="C-3" name=s ! interleave name=i ! autoaudiosink s. ! i.
 
+
+TODO
+* make filters gap-aware
+* report latency
+  lilv_plugin_has_latency(), lilv_plugin_get_latency_port_index()
+* support more host features
+  GST_DEBUG="lv2:4" GST_DEBUG_FILE=/tmp/gst.log gst-inspect lv2
+  grep -o "needs host feature: .*$" /tmp/gst.log  | sort | uniq -c | sort -n
+* make source elements useful
+  Most source elements use Atom port where they accept midi events. Since it is
+  full fledged midi, we should only ever use channel-0 and instead use multiple
+  instances
+  1) We could expose those as "audio/x-midi-event" sink pads, but then those are
+     not sources anymore.
+  2) We could expose those as properties using a new type like GST_FOURCC. If we
+     ignore "System Exclusive" messages, all other midi messages are 1-3 bytes.
+     We stuff the bytes right to left. E.g: the lowest byte is the status byte
+  3) We could use the GstBtNote enum + the toneconversion classes
+  https://www.midi.org/specifications/item/table-1-summary-of-midi-message
+  Open questions:
+  - with one property, we can't handle polyphony
+  - we can't query lv2 plugins for their polyphony :/
+
+  If lv2 gets a polyphony extension it would be a single non-negative integer:
+    0: unbound,  1 monophonic,  > 1  N-polyphonic
+  I've checked a few synths and they all have an upper limit. Still the way
+  voices work in trackers is not the same as they work in synths - e.g. in a
+  tracker one can play a note twice
+
+  Or we just play them monophonic and try to implement a polychildbin. The bin
+  takes a GstElement to be used as a voice. For each new voice it would create a
+  new instance and it uses a built-in mixer. Downside is that all properties
+  would be per voice.
+
+* example sources:
+  http://svn.drobilla.net/lad/trunk/lilv/utils/lv2info.c
+  http://svn.drobilla.net/lad/trunk/jalv/src/jalv.c
diff --git a/ext/lv2/gstlv2.c b/ext/lv2/gstlv2.c
index 41fcc21..acad443 100644
--- a/ext/lv2/gstlv2.c
+++ b/ext/lv2/gstlv2.c
@@ -2,6 +2,7 @@
  * Copyright (C) 1999 Erik Walthinsen <omega@cse.ogi.edu>
  *               2001 Steve Baker <stevebaker_org@yahoo.co.uk>
  *               2003 Andy Wingo <wingo at pobox.com>
+ *               2016 Thibault Saunier <thibault.saunier@collabora.com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -35,785 +36,104 @@
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
-#include <string.h>
-#include <math.h>
-#include <glib.h>
-#include <gst/audio/audio.h>
-#include <gst/audio/multichannel.h>
 
+#include <string.h>
 #include "gstlv2.h"
-#include <slv2/slv2.h>
+
+#include <gst/audio/audio-channels.h>
+#include <lv2/lv2plug.in/ns/ext/port-groups/port-groups.h>
+#include "lv2/lv2plug.in/ns/ext/event/event.h"
+#include "lv2/lv2plug.in/ns/ext/presets/presets.h"
+#include "lv2/lv2plug.in/ns/ext/state/state.h"
+
+GST_DEBUG_CATEGORY (lv2_debug);
+#define GST_CAT_DEFAULT lv2_debug
 
 #define GST_LV2_DEFAULT_PATH \
   "/usr/lib/lv2" G_SEARCHPATH_SEPARATOR_S \
   "/usr/local/lib/lv2" G_SEARCHPATH_SEPARATOR_S \
   LIBDIR "/lv2"
 
-static void gst_lv2_set_property (GObject * object,
-    guint prop_id, const GValue * value, GParamSpec * pspec);
-
-static void gst_lv2_get_property (GObject * object,
-    guint prop_id, GValue * value, GParamSpec * pspec);
-
-static gboolean gst_lv2_setup (GstSignalProcessor * sigproc, GstCaps * caps);
-static gboolean gst_lv2_start (GstSignalProcessor * sigproc);
-static void gst_lv2_stop (GstSignalProcessor * sigproc);
-static void gst_lv2_cleanup (GstSignalProcessor * sigproc);
-static void gst_lv2_process (GstSignalProcessor * sigproc, guint nframes);
-
-static SLV2World world;
-static SLV2Value audio_class;
-static SLV2Value control_class;
-static SLV2Value input_class;
-static SLV2Value output_class;
-static SLV2Value integer_prop;
-static SLV2Value toggled_prop;
-static SLV2Value in_place_broken_pred;
-static SLV2Value in_group_pred;
-static SLV2Value has_role_pred;
-static SLV2Value lv2_symbol_pred;
-
-static SLV2Value center_role;
-static SLV2Value left_role;
-static SLV2Value right_role;
-static SLV2Value rear_center_role;
-static SLV2Value rear_left_role;
-static SLV2Value rear_right_role;
-static SLV2Value lfe_role;
-static SLV2Value center_left_role;
-static SLV2Value center_right_role;
-static SLV2Value side_left_role;
-static SLV2Value side_right_role;
-
-static GstSignalProcessorClass *parent_class;
-
-static GstPlugin *gst_lv2_plugin;
-
-GST_DEBUG_CATEGORY_STATIC (lv2_debug);
-#define GST_CAT_DEFAULT lv2_debug
-
-static GQuark descriptor_quark = 0;
-
-
-/* Convert an LV2 port role to a Gst channel positon
- * WARNING: If the group has only a single port,
- * GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER will be returned for pg:centerRole
- * (which is used by LV2 for mono groups), but this is not correct.  In this
- * case the value must be changed to GST_AUDIO_CHANNEL_POSITION_FRONT_MONO
- * (this can't be done by this function because this information isn't known
- * at the time it is used).
- */
-static GstAudioChannelPosition
-gst_lv2_role_to_position (SLV2Value role)
-{
-  /* Front.  Mono and left/right are mututally exclusive */
-  if (slv2_value_equals (role, center_role)) {
-
-    return GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER;
-  } else if (slv2_value_equals (role, left_role)) {
-    return GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT;
-  } else if (slv2_value_equals (role, right_role)) {
-    return GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT;
-
-    /* Rear. Left/right and center are mututally exclusive */
-  } else if (slv2_value_equals (role, rear_center_role)) {
-    return GST_AUDIO_CHANNEL_POSITION_REAR_CENTER;
-  } else if (slv2_value_equals (role, rear_left_role)) {
-    return GST_AUDIO_CHANNEL_POSITION_REAR_LEFT;
-  } else if (slv2_value_equals (role, rear_right_role)) {
-    return GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT;
-
-    /* Subwoofer/low-frequency-effects */
-  } else if (slv2_value_equals (role, lfe_role)) {
-    return GST_AUDIO_CHANNEL_POSITION_LFE;
-
-    /* Center front speakers. Center and left/right_of_center
-     * are mutually exclusive */
-  } else if (slv2_value_equals (role, center_left_role)) {
-    return GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER;
-  } else if (slv2_value_equals (role, center_right_role)) {
-    return GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER;
-
-    /* sides */
-  } else if (slv2_value_equals (role, side_left_role)) {
-    return GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT;
-  } else if (slv2_value_equals (role, side_right_role)) {
-    return GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT;
-  }
-
-  return GST_AUDIO_CHANNEL_POSITION_INVALID;
-}
-
-/* Find and return the group @a uri in @a groups, or NULL if not found */
-static GstLV2Group *
-gst_lv2_class_find_group (GArray * groups, SLV2Value uri)
-{
-  int i = 0;
-  for (; i < groups->len; ++i)
-    if (slv2_value_equals (g_array_index (groups, GstLV2Group, i).uri, uri))
-      return &g_array_index (groups, GstLV2Group, i);
-  return NULL;
-}
-
-static GstAudioChannelPosition *
-gst_lv2_build_positions (GstLV2Group * group)
-{
-  GstAudioChannelPosition *positions = NULL;
-
-  /* don't do anything for mono */
-  if (group->ports->len > 1) {
-    gint i;
-
-    positions = g_new (GstAudioChannelPosition, group->ports->len);
-    for (i = 0; i < group->ports->len; ++i)
-      positions[i] = g_array_index (group->ports, GstLV2Port, i).position;
-  }
-  return positions;
-}
+GstStructure *lv2_meta_all = NULL;
 
 static void
-gst_lv2_base_init (gpointer g_class)
+lv2_plugin_register_element (GstPlugin * plugin, GstStructure * lv2_meta)
 {
-  GstLV2Class *klass = (GstLV2Class *) g_class;
-  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-  GstSignalProcessorClass *gsp_class = GST_SIGNAL_PROCESSOR_CLASS (g_class);
-  SLV2Plugin lv2plugin;
-  SLV2Value val;
-  SLV2Values values, sub_values;
-  GstLV2Group *group = NULL;
-  GstAudioChannelPosition position = GST_AUDIO_CHANNEL_POSITION_INVALID;
-  guint j, in_pad_index = 0, out_pad_index = 0;
-  const gchar *klass_tags;
-  gchar *longname, *author;
+  guint audio_in, audio_out;
 
-  lv2plugin = (SLV2Plugin) g_type_get_qdata (G_OBJECT_CLASS_TYPE (klass),
-      descriptor_quark);
+  gst_structure_get_uint (lv2_meta, "audio-in", &audio_in);
+  gst_structure_get_uint (lv2_meta, "audio-out", &audio_out);
 
-  g_assert (lv2plugin);
-
-  GST_DEBUG ("base_init %p, plugin %s", g_class,
-      slv2_value_as_string (slv2_plugin_get_uri (lv2plugin)));
-
-  gsp_class->num_group_in = 0;
-  gsp_class->num_group_out = 0;
-  gsp_class->num_audio_in = 0;
-  gsp_class->num_audio_out = 0;
-  gsp_class->num_control_in = 0;
-  gsp_class->num_control_out = 0;
-
-  klass->in_groups = g_array_new (FALSE, TRUE, sizeof (GstLV2Group));
-  klass->out_groups = g_array_new (FALSE, TRUE, sizeof (GstLV2Group));
-  klass->audio_in_ports = g_array_new (FALSE, TRUE, sizeof (GstLV2Port));
-  klass->audio_out_ports = g_array_new (FALSE, TRUE, sizeof (GstLV2Port));
-  klass->control_in_ports = g_array_new (FALSE, TRUE, sizeof (GstLV2Port));
-  klass->control_out_ports = g_array_new (FALSE, TRUE, sizeof (GstLV2Port));
-
-  /* find ports and groups */
-  for (j = 0; j < slv2_plugin_get_num_ports (lv2plugin); j++) {
-    const SLV2Port port = slv2_plugin_get_port_by_index (lv2plugin, j);
-    const gboolean is_input = slv2_port_is_a (lv2plugin, port, input_class);
-    gboolean in_group = FALSE;
-    struct _GstLV2Port desc = { j, 0, };
-    values = slv2_port_get_value (lv2plugin, port, in_group_pred);
-
-    if (slv2_values_size (values) > 0) {
-      /* port is part of a group */
-      SLV2Value group_uri = slv2_values_get_at (values, 0);
-      GArray *groups = is_input ? klass->in_groups : klass->out_groups;
-      GstLV2Group *group = gst_lv2_class_find_group (groups, group_uri);
-      in_group = TRUE;
-      if (group == NULL) {
-        GstLV2Group g;
-        g.uri = slv2_value_duplicate (group_uri);
-        g.pad = is_input ? in_pad_index++ : out_pad_index++;
-        g.ports = g_array_new (FALSE, TRUE, sizeof (GstLV2Port));
-        g.has_roles = TRUE;
-        g.symbol = NULL;
-        sub_values = slv2_plugin_get_value_for_subject (lv2plugin, group_uri,
-            lv2_symbol_pred);
-        /* symbol is mandatory */
-        if (slv2_values_size (sub_values) > 0) {
-          g.symbol = slv2_value_duplicate (slv2_values_get_at (sub_values, 0));
-          if (!gst_element_class_get_pad_template (element_class,
-                  slv2_value_as_string (g.symbol))) {
-            g_array_append_val (groups, g);
-            group = &g_array_index (groups, GstLV2Group, groups->len - 1);
-            assert (group);
-            assert (slv2_value_equals (group->uri, group_uri));
-          } else {
-            GST_WARNING ("plugin %s has duplicate group symbol '%s'",
-                slv2_value_as_string (slv2_plugin_get_uri (lv2plugin)),
-                slv2_value_as_string (g.symbol));
-            in_group = FALSE;
-          }
-        } else {
-          GST_WARNING ("plugin %s has illegal group with no symbol",
-              slv2_value_as_string (slv2_plugin_get_uri (lv2plugin)));
-          in_group = FALSE;
-        }
-      }
-
-      if (in_group) {
-        position = GST_AUDIO_CHANNEL_POSITION_INVALID;
-        sub_values = slv2_port_get_value (lv2plugin, port, has_role_pred);
-        if (slv2_values_size (sub_values) > 0) {
-          SLV2Value role = slv2_values_get_at (sub_values, 0);
-          position = gst_lv2_role_to_position (role);
-        }
-        slv2_values_free (sub_values);
-        if (position != GST_AUDIO_CHANNEL_POSITION_INVALID) {
-          desc.position = position;
-          g_array_append_val (group->ports, desc);
-        } else {
-          in_group = FALSE;
-        }
-      }
-    }
-
-    if (!in_group) {
-      /* port is not part of a group, or it is part of a group but that group
-       * is illegal so we just ignore it */
-      if (slv2_port_is_a (lv2plugin, port, audio_class)) {
-        desc.pad = is_input ? in_pad_index++ : out_pad_index++;
-        if (is_input)
-          g_array_append_val (klass->audio_in_ports, desc);
-        else
-          g_array_append_val (klass->audio_out_ports, desc);
-      } else if (slv2_port_is_a (lv2plugin, port, control_class)) {
-        if (is_input)
-          g_array_append_val (klass->control_in_ports, desc);
-        else
-          g_array_append_val (klass->control_out_ports, desc);
-      } else {
-        /* unknown port type */
-        GST_INFO ("unhandled port %d", j);
-        continue;
-      }
-    }
-    slv2_values_free (values);
-  }
-
-  gsp_class->num_group_in = klass->in_groups->len;
-  gsp_class->num_group_out = klass->out_groups->len;
-  gsp_class->num_audio_in = klass->audio_in_ports->len;
-  gsp_class->num_audio_out = klass->audio_out_ports->len;
-  gsp_class->num_control_in = klass->control_in_ports->len;
-  gsp_class->num_control_out = klass->control_out_ports->len;
-
-  /* add input group pad templates */
-  for (j = 0; j < gsp_class->num_group_in; ++j) {
-    group = &g_array_index (klass->in_groups, GstLV2Group, j);
-
-    gst_signal_processor_class_add_pad_template (gsp_class,
-        slv2_value_as_string (group->symbol), GST_PAD_SINK, j,
-        group->ports->len);
-  }
-
-  /* add output group pad templates */
-  for (j = 0; j < gsp_class->num_group_out; ++j) {
-    group = &g_array_index (klass->out_groups, GstLV2Group, j);
-
-    gst_signal_processor_class_add_pad_template (gsp_class,
-        slv2_value_as_string (group->symbol), GST_PAD_SRC, j,
-        group->ports->len);
-  }
-
-  /* add non-grouped input port pad templates */
-  for (j = 0; j < gsp_class->num_audio_in; ++j) {
-    struct _GstLV2Port *desc =
-        &g_array_index (klass->audio_in_ports, GstLV2Port, j);
-    SLV2Port port = slv2_plugin_get_port_by_index (lv2plugin, desc->index);
-    const gchar *name =
-        slv2_value_as_string (slv2_port_get_symbol (lv2plugin, port));
-    gst_signal_processor_class_add_pad_template (gsp_class, name, GST_PAD_SINK,
-        j, 1);
-  }
-
-  /* add non-grouped output port pad templates */
-  for (j = 0; j < gsp_class->num_audio_out; ++j) {
-    struct _GstLV2Port *desc =
-        &g_array_index (klass->audio_out_ports, GstLV2Port, j);
-    SLV2Port port = slv2_plugin_get_port_by_index (lv2plugin, desc->index);
-    const gchar *name =
-        slv2_value_as_string (slv2_port_get_symbol (lv2plugin, port));
-    gst_signal_processor_class_add_pad_template (gsp_class, name, GST_PAD_SRC,
-        j, 1);
-  }
-
-  val = slv2_plugin_get_name (lv2plugin);
-  if (val) {
-    longname = g_strdup (slv2_value_as_string (val));
-    slv2_value_free (val);
+  if (audio_in == 0) {
+    gst_lv2_source_register_element (plugin, lv2_meta);
   } else {
-    longname = g_strdup ("no description available");
-  }
-  val = slv2_plugin_get_author_name (lv2plugin);
-  if (val) {
-    author = g_strdup (slv2_value_as_string (val));
-    slv2_value_free (val);
-  } else {
-    author = g_strdup ("no author available");
-  }
-
-  if (gsp_class->num_audio_in == 0)
-    klass_tags = "Source/Audio/LV2";
-  else if (gsp_class->num_audio_out == 0) {
-    if (gsp_class->num_control_out == 0)
-      klass_tags = "Sink/Audio/LV2";
-    else
-      klass_tags = "Sink/Analyzer/Audio/LV2";
-  } else
-    klass_tags = "Filter/Effect/Audio/LV2";
-
-  GST_INFO ("tags : %s", klass_tags);
-  gst_element_class_set_metadata (element_class, longname,
-      klass_tags, longname, author);
-  g_free (longname);
-  g_free (author);
-
-  if (!slv2_plugin_has_feature (lv2plugin, in_place_broken_pred))
-    GST_SIGNAL_PROCESSOR_CLASS_SET_CAN_PROCESS_IN_PLACE (klass);
-
-  klass->plugin = lv2plugin;
-}
-
-static gchar *
-gst_lv2_class_get_param_name (GstLV2Class * klass, SLV2Port port)
-{
-  SLV2Plugin lv2plugin = klass->plugin;
-  gchar *ret;
-
-  ret = g_strdup (slv2_value_as_string (slv2_port_get_symbol (lv2plugin,
-              port)));
-
-  /* this is the same thing that param_spec_* will do */
-  g_strcanon (ret, G_CSET_A_2_Z G_CSET_a_2_z G_CSET_DIGITS "-", '-');
-  /* satisfy glib2 (argname[0] must be [A-Za-z]) */
-  if (!((ret[0] >= 'a' && ret[0] <= 'z') || (ret[0] >= 'A' && ret[0] <= 'Z'))) {
-    gchar *tempstr = ret;
-
-    ret = g_strconcat ("param-", ret, NULL);
-    g_free (tempstr);
-  }
-
-  /* check for duplicate property names */
-  if (g_object_class_find_property (G_OBJECT_CLASS (klass), ret)) {
-    gint n = 1;
-    gchar *nret = g_strdup_printf ("%s-%d", ret, n++);
-
-    while (g_object_class_find_property (G_OBJECT_CLASS (klass), nret)) {
-      g_free (nret);
-      nret = g_strdup_printf ("%s-%d", ret, n++);
-    }
-    g_free (ret);
-    ret = nret;
-  }
-
-  GST_DEBUG ("built property name '%s' from port name '%s'", ret,
-      slv2_value_as_string (slv2_port_get_symbol (lv2plugin, port)));
-
-  return ret;
-}
-
-static gchar *
-gst_lv2_class_get_param_nick (GstLV2Class * klass, SLV2Port port)
-{
-  SLV2Plugin lv2plugin = klass->plugin;
-
-  return g_strdup (slv2_value_as_string (slv2_port_get_name (lv2plugin, port)));
-}
-
-static GParamSpec *
-gst_lv2_class_get_param_spec (GstLV2Class * klass, gint portnum)
-{
-  SLV2Plugin lv2plugin = klass->plugin;
-  SLV2Port port = slv2_plugin_get_port_by_index (lv2plugin, portnum);
-  SLV2Value lv2def, lv2min, lv2max;
-  GParamSpec *ret;
-  gchar *name, *nick;
-  gint perms;
-  gfloat lower = 0.0f, upper = 1.0f, def = 0.0f;
-
-  nick = gst_lv2_class_get_param_nick (klass, port);
-  name = gst_lv2_class_get_param_name (klass, port);
-
-  GST_DEBUG ("%s trying port %s : %s",
-      slv2_value_as_string (slv2_plugin_get_uri (lv2plugin)), name, nick);
-
-  perms = G_PARAM_READABLE;
-  if (slv2_port_is_a (lv2plugin, port, input_class))
-    perms |= G_PARAM_WRITABLE | G_PARAM_CONSTRUCT;
-  if (slv2_port_is_a (lv2plugin, port, control_class))
-    perms |= GST_PARAM_CONTROLLABLE;
-
-  if (slv2_port_has_property (lv2plugin, port, toggled_prop)) {
-    ret = g_param_spec_boolean (name, nick, nick, FALSE, perms);
-    goto done;
-  }
-
-  slv2_port_get_range (lv2plugin, port, &lv2def, &lv2min, &lv2max);
-
-  if (lv2def)
-    def = slv2_value_as_float (lv2def);
-  if (lv2min)
-    lower = slv2_value_as_float (lv2min);
-  if (lv2max)
-    upper = slv2_value_as_float (lv2max);
-
-  slv2_value_free (lv2def);
-  slv2_value_free (lv2min);
-  slv2_value_free (lv2max);
-
-  if (def < lower) {
-    GST_WARNING ("%s has lower bound %f > default %f",
-        slv2_value_as_string (slv2_plugin_get_uri (lv2plugin)), lower, def);
-    lower = def;
-  }
-
-  if (def > upper) {
-    GST_WARNING ("%s has upper bound %f < default %f",
-        slv2_value_as_string (slv2_plugin_get_uri (lv2plugin)), upper, def);
-    upper = def;
-  }
-
-  if (slv2_port_has_property (lv2plugin, port, integer_prop))
-    ret = g_param_spec_int (name, nick, nick, lower, upper, def, perms);
-  else
-    ret = g_param_spec_float (name, nick, nick, lower, upper, def, perms);
-
-done:
-  g_free (name);
-  g_free (nick);
-
-  return ret;
-}
-
-static void
-gst_lv2_class_init (GstLV2Class * klass, SLV2Plugin lv2plugin)
-{
-  GObjectClass *gobject_class;
-  GstSignalProcessorClass *gsp_class;
-  GParamSpec *p;
-  gint i, ix;
-
-  GST_DEBUG ("class_init %p", klass);
-
-  gobject_class = (GObjectClass *) klass;
-  gobject_class->set_property = gst_lv2_set_property;
-  gobject_class->get_property = gst_lv2_get_property;
-
-  gsp_class = GST_SIGNAL_PROCESSOR_CLASS (klass);
-  gsp_class->setup = gst_lv2_setup;
-  gsp_class->start = gst_lv2_start;
-  gsp_class->stop = gst_lv2_stop;
-  gsp_class->cleanup = gst_lv2_cleanup;
-  gsp_class->process = gst_lv2_process;
-
-  klass->plugin = lv2plugin;
-
-  /* properties have an offset of 1 */
-  ix = 1;
-
-  /* register properties */
-
-  for (i = 0; i < gsp_class->num_control_in; i++, ix++) {
-    p = gst_lv2_class_get_param_spec (klass,
-        g_array_index (klass->control_in_ports, GstLV2Port, i).index);
-
-    g_object_class_install_property (gobject_class, ix, p);
-  }
-
-  for (i = 0; i < gsp_class->num_control_out; i++, ix++) {
-    p = gst_lv2_class_get_param_spec (klass,
-        g_array_index (klass->control_out_ports, GstLV2Port, i).index);
-
-    g_object_class_install_property (gobject_class, ix, p);
+    gst_lv2_filter_register_element (plugin, lv2_meta);
   }
 }
 
 static void
-gst_lv2_init (GstLV2 * lv2, GstLV2Class * klass)
+lv2_count_ports (const LilvPlugin * lv2plugin, guint * audio_in,
+    guint * audio_out, guint * control)
 {
-  lv2->plugin = klass->plugin;
-  lv2->instance = NULL;
-  lv2->activated = FALSE;
-}
+  GHashTable *port_groups = g_hash_table_new_full (g_str_hash, g_str_equal,
+      g_free, NULL);
+  guint i;
 
-static void
-gst_lv2_set_property (GObject * object, guint prop_id, const GValue * value,
-    GParamSpec * pspec)
-{
-  GstSignalProcessor *gsp;
-  GstSignalProcessorClass *gsp_class;
+  *audio_in = *audio_out = *control = 0;
+  for (i = 0; i < lilv_plugin_get_num_ports (lv2plugin); i++) {
+    const LilvPort *port = lilv_plugin_get_port_by_index (lv2plugin, i);
 
-  gsp = GST_SIGNAL_PROCESSOR (object);
-  gsp_class = GST_SIGNAL_PROCESSOR_GET_CLASS (object);
+    if (lilv_port_is_a (lv2plugin, port, audio_class)) {
+      const gboolean is_input = lilv_port_is_a (lv2plugin, port, input_class);
+      LilvNodes *lv2group = lilv_port_get (lv2plugin, port, group_pred);
 
-  /* remember, properties have an offset of 1 */
-  prop_id--;
+      if (lv2group) {
+        const gchar *uri = lilv_node_as_uri (lv2group);
 
-  /* only input ports */
-  g_return_if_fail (prop_id < gsp_class->num_control_in);
+        if (g_hash_table_contains (port_groups, uri))
+          continue;
 
-  /* now see what type it is */
-  switch (pspec->value_type) {
-    case G_TYPE_BOOLEAN:
-      gsp->control_in[prop_id] = g_value_get_boolean (value) ? 0.0f : 1.0f;
-      break;
-    case G_TYPE_INT:
-      gsp->control_in[prop_id] = g_value_get_int (value);
-      break;
-    case G_TYPE_FLOAT:
-      gsp->control_in[prop_id] = g_value_get_float (value);
-      break;
-    default:
-      g_assert_not_reached ();
-  }
-}
-
-static void
-gst_lv2_get_property (GObject * object, guint prop_id, GValue * value,
-    GParamSpec * pspec)
-{
-  GstSignalProcessor *gsp;
-  GstSignalProcessorClass *gsp_class;
-  gfloat *controls;
-
-  gsp = GST_SIGNAL_PROCESSOR (object);
-  gsp_class = GST_SIGNAL_PROCESSOR_GET_CLASS (object);
-
-  /* remember, properties have an offset of 1 */
-  prop_id--;
-
-  if (prop_id < gsp_class->num_control_in) {
-    controls = gsp->control_in;
-  } else if (prop_id < gsp_class->num_control_in + gsp_class->num_control_out) {
-    controls = gsp->control_out;
-    prop_id -= gsp_class->num_control_in;
-  } else {
-    g_return_if_reached ();
-  }
-
-  /* now see what type it is */
-  switch (pspec->value_type) {
-    case G_TYPE_BOOLEAN:
-      g_value_set_boolean (value, controls[prop_id] > 0.0f);
-      break;
-    case G_TYPE_INT:
-      g_value_set_int (value, CLAMP (controls[prop_id], G_MININT, G_MAXINT));
-      break;
-    case G_TYPE_FLOAT:
-      g_value_set_float (value, controls[prop_id]);
-      break;
-    default:
-      g_return_if_reached ();
-  }
-}
-
-static gboolean
-gst_lv2_setup (GstSignalProcessor * gsp, GstCaps * caps)
-{
-  GstLV2 *lv2;
-  GstLV2Class *oclass;
-  GstSignalProcessorClass *gsp_class;
-  GstStructure *s;
-  gint i;
-  GstLV2Group *group = NULL;
-  GstAudioChannelPosition *positions = NULL;
-  GstPad *pad;
-
-  gsp_class = GST_SIGNAL_PROCESSOR_GET_CLASS (gsp);
-  lv2 = (GstLV2 *) gsp;
-  oclass = (GstLV2Class *) gsp_class;
-
-  g_return_val_if_fail (lv2->activated == FALSE, FALSE);
-
-  GST_DEBUG_OBJECT (lv2, "instantiating the plugin at %d Hz", gsp->sample_rate);
-
-  if (!(lv2->instance =
-          slv2_plugin_instantiate (oclass->plugin, gsp->sample_rate, NULL)))
-    goto no_instance;
-
-  /* connect the control ports */
-  for (i = 0; i < gsp_class->num_control_in; i++)
-    slv2_instance_connect_port (lv2->instance,
-        g_array_index (oclass->control_in_ports, GstLV2Port, i).index,
-        &(gsp->control_in[i]));
-  for (i = 0; i < gsp_class->num_control_out; i++)
-    slv2_instance_connect_port (lv2->instance,
-        g_array_index (oclass->control_out_ports, GstLV2Port, i).index,
-        &(gsp->control_out[i]));
-
-  /* set input group pad audio channel position */
-  for (i = 0; i < gsp_class->num_group_in; ++i) {
-    group = &g_array_index (oclass->in_groups, GstLV2Group, i);
-    if (group->has_roles) {
-      if ((positions = gst_lv2_build_positions (group))) {
-        if ((pad = gst_element_get_static_pad (GST_ELEMENT (gsp),
-                    slv2_value_as_string (group->symbol)))) {
-          GST_INFO_OBJECT (lv2, "set audio channel positions on sink pad %s",
-              slv2_value_as_string (group->symbol));
-          s = gst_caps_get_structure (caps, 0);
-          gst_audio_set_channel_positions (s, positions);
-          gst_object_unref (pad);
-        }
-        g_free (positions);
-        positions = NULL;
+        g_hash_table_add (port_groups, g_strdup (uri));
+        lilv_node_free (lv2group);
       }
-    }
-  }
-  /* set output group pad audio channel position */
-  for (i = 0; i < gsp_class->num_group_out; ++i) {
-    group = &g_array_index (oclass->out_groups, GstLV2Group, i);
-    if (group->has_roles) {
-      if ((positions = gst_lv2_build_positions (group))) {
-        if ((pad = gst_element_get_static_pad (GST_ELEMENT (gsp),
-                    slv2_value_as_string (group->symbol)))) {
-          GST_INFO_OBJECT (lv2, "set audio channel positions on src pad %s",
-              slv2_value_as_string (group->symbol));
-          s = gst_caps_get_structure (caps, 0);
-          gst_audio_set_channel_positions (s, positions);
-          gst_object_unref (pad);
-        }
-        g_free (positions);
-        positions = NULL;
-      }
-    }
-  }
-  return TRUE;
 
-no_instance:
-  {
-    GST_WARNING_OBJECT (gsp, "could not create instance");
-    return FALSE;
+      if (is_input)
+        (*audio_in)++;
+      else
+        (*audio_out)++;
+    } else if (lilv_port_is_a (lv2plugin, port, control_class) ||
+        lilv_port_is_a (lv2plugin, port, cv_class)) {
+      (*control)++;
+    }
   }
+  g_hash_table_unref (port_groups);
 }
 
+/* search the plugin path */
 static gboolean
-gst_lv2_start (GstSignalProcessor * gsp)
+lv2_plugin_discover (GstPlugin * plugin)
 {
-  GstLV2 *lv2 = (GstLV2 *) gsp;
+  guint audio_in, audio_out, control;
+  LilvIter *i;
+  const LilvPlugins *plugins = lilv_world_get_all_plugins (world);
 
-  g_return_val_if_fail (lv2->activated == FALSE, FALSE);
-  g_return_val_if_fail (lv2->instance != NULL, FALSE);
-
-  GST_DEBUG_OBJECT (lv2, "activating");
-
-  slv2_instance_activate (lv2->instance);
-
-  lv2->activated = TRUE;
-
-  return TRUE;
-}
-
-static void
-gst_lv2_stop (GstSignalProcessor * gsp)
-{
-  GstLV2 *lv2 = (GstLV2 *) gsp;
-
-  g_return_if_fail (lv2->activated == TRUE);
-  g_return_if_fail (lv2->instance != NULL);
-
-  GST_DEBUG_OBJECT (lv2, "deactivating");
-
-  slv2_instance_deactivate (lv2->instance);
-
-  lv2->activated = FALSE;
-}
-
-static void
-gst_lv2_cleanup (GstSignalProcessor * gsp)
-{
-  GstLV2 *lv2 = (GstLV2 *) gsp;
-
-  g_return_if_fail (lv2->activated == FALSE);
-  g_return_if_fail (lv2->instance != NULL);
-
-  GST_DEBUG_OBJECT (lv2, "cleaning up");
-
-  slv2_instance_free (lv2->instance);
-
-  lv2->instance = NULL;
-}
-
-static void
-gst_lv2_process (GstSignalProcessor * gsp, guint nframes)
-{
-  GstSignalProcessorClass *gsp_class;
-  GstLV2 *lv2;
-  GstLV2Class *lv2_class;
-  GstLV2Group *lv2_group;
-  GstLV2Port *lv2_port;
-  GstSignalProcessorGroup *gst_group;
-  guint i, j;
-
-  gsp_class = GST_SIGNAL_PROCESSOR_GET_CLASS (gsp);
-  lv2 = (GstLV2 *) gsp;
-  lv2_class = (GstLV2Class *) gsp_class;
-
-  /* multi channel inputs */
-  for (i = 0; i < gsp_class->num_group_in; i++) {
-    lv2_group = &g_array_index (lv2_class->in_groups, GstLV2Group, i);
-    gst_group = &gsp->group_in[i];
-    for (j = 0; j < lv2_group->ports->len; ++j) {
-      lv2_port = &g_array_index (lv2_group->ports, GstLV2Port, j);
-      slv2_instance_connect_port (lv2->instance, lv2_port->index,
-          gst_group->buffer + (j * nframes));
-    }
-  }
-  /* mono inputs */
-  for (i = 0; i < gsp_class->num_audio_in; i++) {
-    lv2_port = &g_array_index (lv2_class->audio_in_ports, GstLV2Port, i);
-    slv2_instance_connect_port (lv2->instance, lv2_port->index,
-        gsp->audio_in[i]);
-  }
-  /* multi channel outputs */
-  for (i = 0; i < gsp_class->num_group_out; i++) {
-    lv2_group = &g_array_index (lv2_class->out_groups, GstLV2Group, i);
-    gst_group = &gsp->group_out[i];
-    for (j = 0; j < lv2_group->ports->len; ++j) {
-      lv2_port = &g_array_index (lv2_group->ports, GstLV2Port, j);
-      slv2_instance_connect_port (lv2->instance, lv2_port->index,
-          gst_group->buffer + (j * nframes));
-    }
-  }
-  /* mono outputs */
-  for (i = 0; i < gsp_class->num_audio_out; i++) {
-    lv2_port = &g_array_index (lv2_class->audio_out_ports, GstLV2Port, i);
-    slv2_instance_connect_port (lv2->instance, lv2_port->index,
-        gsp->audio_out[i]);
-  }
-
-  slv2_instance_run (lv2->instance, nframes);
-}
-
-/* search the plugin path
- */
-static gboolean
-lv2_plugin_discover (void)
-{
-  guint i, j;
-  SLV2Plugins plugins = slv2_world_get_all_plugins (world);
-
-  for (i = 0; i < slv2_plugins_size (plugins); ++i) {
-    SLV2Plugin lv2plugin = slv2_plugins_get_at (plugins, i);
-    gint num_audio_ports = 0;
+  for (i = lilv_plugins_begin (plugins); !lilv_plugins_is_end (plugins, i);
+      i = lilv_plugins_next (plugins, i)) {
+    GstStructure *lv2_meta = NULL;
+    GValue value = { 0, };
+    const LilvPlugin *lv2plugin = lilv_plugins_get (plugins, i);
     const gchar *plugin_uri, *p;
     gchar *type_name;
-    GTypeInfo typeinfo = {
-      sizeof (GstLV2Class),
-      (GBaseInitFunc) gst_lv2_base_init,
-      NULL,
-      (GClassInitFunc) gst_lv2_class_init,
-      NULL,
-      lv2plugin,
-      sizeof (GstLV2),
-      0,
-      (GInstanceInitFunc) gst_lv2_init,
-    };
-    GType type;
+    gboolean can_do_presets;
 
-    plugin_uri = slv2_value_as_uri (slv2_plugin_get_uri (lv2plugin));
+    plugin_uri = lilv_node_as_uri (lilv_plugin_get_uri (lv2plugin));
+
+    /* check if we support the required host features */
+    if (!gst_lv2_check_required_features (lv2plugin)) {
+      GST_FIXME ("lv2 plugin %s needs host features", plugin_uri);
+      continue;
+    }
+
     /* construct the type name from plugin URI */
     if ((p = strstr (plugin_uri, "://"))) {
       /* cut off the protocol (e.g. http://) */
@@ -828,85 +148,154 @@
       goto next;
 
     /* check if this has any audio ports */
-    for (j = 0; j < slv2_plugin_get_num_ports (lv2plugin); j++) {
-      const SLV2Port port = slv2_plugin_get_port_by_index (lv2plugin, j);
-      if (slv2_port_is_a (lv2plugin, port, audio_class)) {
-        num_audio_ports++;
+    lv2_count_ports (lv2plugin, &audio_in, &audio_out, &control);
+
+    if (audio_in == 0 && audio_out == 0) {
+      GST_FIXME ("plugin %s has no audio pads", type_name);
+      goto next;
+    } else if (audio_in == 0) {
+      if (audio_out != 1) {
+        GST_FIXME ("plugin %s is not a GstBaseSrc (num_src_pads: %d)",
+            type_name, audio_out);
+        goto next;
+      }
+    } else if (audio_out == 0) {
+      GST_FIXME ("plugin %s is a sink element (num_sink_pads: %d"
+          " num_src_pads: %d)", type_name, audio_in, audio_out);
+      goto next;
+    } else {
+      if (audio_in != 1 || audio_out != 1) {
+        GST_FIXME ("plugin %s is not a GstAudioFilter (num_sink_pads: %d"
+            " num_src_pads: %d)", type_name, audio_in, audio_out);
+        goto next;
       }
     }
-    if (!num_audio_ports) {
-      GST_INFO ("plugin %s has no audio ports", type_name);
-      goto next;
-    }
 
-    /* create the type */
-    type =
-        g_type_register_static (GST_TYPE_SIGNAL_PROCESSOR, type_name, &typeinfo,
-        0);
+    /* check supported extensions */
+    can_do_presets = lilv_plugin_has_extension_data (lv2plugin, state_iface)
+        || lilv_plugin_has_feature (lv2plugin, state_uri)
+        || (control > 0);
+    GST_INFO ("plugin %s can%s do presets", type_name,
+        (can_do_presets ? "" : "'t"));
 
-    /* FIXME: not needed anymore when we can add pad templates, etc in class_init
-     * as class_data contains the LADSPA_Descriptor too */
-    g_type_set_qdata (type, descriptor_quark, (gpointer) lv2plugin);
+    lv2_meta = gst_structure_new ("lv2",
+        "element-uri", G_TYPE_STRING, plugin_uri,
+        "element-type-name", G_TYPE_STRING, type_name,
+        "audio-in", G_TYPE_UINT, audio_in,
+        "audio-out", G_TYPE_UINT, audio_out,
+        "can-do-presets", G_TYPE_BOOLEAN, can_do_presets, NULL);
 
-    if (!gst_element_register (gst_lv2_plugin, type_name, GST_RANK_NONE, type))
-      goto next;
+    g_value_init (&value, GST_TYPE_STRUCTURE);
+    g_value_set_boxed (&value, lv2_meta);
+    gst_structure_set_value (lv2_meta_all, type_name, &value);
+    g_value_unset (&value);
+
+    // don't free type_name
+    continue;
 
   next:
     g_free (type_name);
   }
+
   return TRUE;
 }
 
 static gboolean
 plugin_init (GstPlugin * plugin)
 {
+  gboolean res = FALSE;
+  gint n = 0;
+
   GST_DEBUG_CATEGORY_INIT (lv2_debug, "lv2",
       GST_DEBUG_FG_GREEN | GST_DEBUG_BG_BLACK | GST_DEBUG_BOLD, "LV2");
 
-  world = slv2_world_new ();
-  slv2_world_load_all (world);
+  world = lilv_world_new ();
+  lilv_world_load_all (world);
+  gst_lv2_host_init ();
 
-  audio_class = slv2_value_new_uri (world, SLV2_PORT_CLASS_AUDIO);
-  control_class = slv2_value_new_uri (world, SLV2_PORT_CLASS_CONTROL);
-  input_class = slv2_value_new_uri (world, SLV2_PORT_CLASS_INPUT);
-  output_class = slv2_value_new_uri (world, SLV2_PORT_CLASS_OUTPUT);
+/* have been added after lilv-0.22.0, which is the last release */
+#ifndef LILV_URI_ATOM_PORT
+#define LILV_URI_ATOM_PORT    "http://lv2plug.in/ns/ext/atom#AtomPort"
+#endif
+#ifndef LILV_URI_CV_PORT
+#define LILV_URI_CV_PORT      "http://lv2plug.in/ns/lv2core#CVPort"
+#endif
 
-#define NS_LV2 "http://lv2plug.in/ns/lv2core#"
-#define NS_PG  "http://lv2plug.in/ns/ext/port-groups"
+  atom_class = lilv_new_uri (world, LILV_URI_ATOM_PORT);
+  audio_class = lilv_new_uri (world, LILV_URI_AUDIO_PORT);
+  control_class = lilv_new_uri (world, LILV_URI_CONTROL_PORT);
+  cv_class = lilv_new_uri (world, LILV_URI_CV_PORT);
+  event_class = lilv_new_uri (world, LILV_URI_EVENT_PORT);
+  input_class = lilv_new_uri (world, LILV_URI_INPUT_PORT);
+  output_class = lilv_new_uri (world, LILV_URI_OUTPUT_PORT);
+  preset_class = lilv_new_uri (world, LV2_PRESETS__Preset);
+  state_iface = lilv_new_uri (world, LV2_STATE__interface);
+  state_uri = lilv_new_uri (world, LV2_STATE_URI);
 
-  integer_prop = slv2_value_new_uri (world, NS_LV2 "integer");
-  toggled_prop = slv2_value_new_uri (world, NS_LV2 "toggled");
-  in_place_broken_pred = slv2_value_new_uri (world, NS_LV2 "inPlaceBroken");
-  in_group_pred = slv2_value_new_uri (world, NS_PG "inGroup");
-  has_role_pred = slv2_value_new_uri (world, NS_PG "role");
-  lv2_symbol_pred = slv2_value_new_string (world, NS_LV2 "symbol");
+  integer_prop = lilv_new_uri (world, LV2_CORE__integer);
+  toggled_prop = lilv_new_uri (world, LV2_CORE__toggled);
+  designation_pred = lilv_new_uri (world, LV2_CORE__designation);
+  in_place_broken_pred = lilv_new_uri (world, LV2_CORE__inPlaceBroken);
+  optional_pred = lilv_new_uri (world, LV2_CORE__optionalFeature);
+  group_pred = lilv_new_uri (world, LV2_PORT_GROUPS__group);
+  supports_event_pred = lilv_new_uri (world, LV2_EVENT__supportsEvent);
+  label_pred = lilv_new_uri (world, LILV_NS_RDFS "label");
 
-  center_role = slv2_value_new_uri (world, NS_PG "centerChannel");
-  left_role = slv2_value_new_uri (world, NS_PG "leftChannel");
-  right_role = slv2_value_new_uri (world, NS_PG "rightChannel");
-  rear_center_role = slv2_value_new_uri (world, NS_PG "rearCenterChannel");
-  rear_left_role = slv2_value_new_uri (world, NS_PG "rearLeftChannel");
-  rear_right_role = slv2_value_new_uri (world, NS_PG "rearRightChannel");
-  lfe_role = slv2_value_new_uri (world, NS_PG "lfeChannel");
-  center_left_role = slv2_value_new_uri (world, NS_PG "centerLeftChannel");
-  center_right_role = slv2_value_new_uri (world, NS_PG "centerRightChannel");
-  side_left_role = slv2_value_new_uri (world, NS_PG "sideLeftChannel");
-  side_right_role = slv2_value_new_uri (world, NS_PG "sideRightChannel");
+  center_role = lilv_new_uri (world, LV2_PORT_GROUPS__center);
+  left_role = lilv_new_uri (world, LV2_PORT_GROUPS__left);
+  right_role = lilv_new_uri (world, LV2_PORT_GROUPS__right);
+  rear_center_role = lilv_new_uri (world, LV2_PORT_GROUPS__rearCenter);
+  rear_left_role = lilv_new_uri (world, LV2_PORT_GROUPS__rearLeft);
+  rear_right_role = lilv_new_uri (world, LV2_PORT_GROUPS__rearLeft);
+  lfe_role = lilv_new_uri (world, LV2_PORT_GROUPS__lowFrequencyEffects);
+  center_left_role = lilv_new_uri (world, LV2_PORT_GROUPS__centerLeft);
+  center_right_role = lilv_new_uri (world, LV2_PORT_GROUPS__centerRight);
+  side_left_role = lilv_new_uri (world, LV2_PORT_GROUPS__sideLeft);
+  side_right_role = lilv_new_uri (world, LV2_PORT_GROUPS__sideRight);
 
   gst_plugin_add_dependency_simple (plugin,
       "LV2_PATH", GST_LV2_DEFAULT_PATH, NULL, GST_PLUGIN_DEPENDENCY_FLAG_NONE);
 
-  parent_class = g_type_class_ref (GST_TYPE_SIGNAL_PROCESSOR);
-
-  gst_lv2_plugin = plugin;
-  descriptor_quark = g_quark_from_static_string ("slv2-plugin");
-
   /* ensure GstAudioChannelPosition type is registered */
   if (!gst_audio_channel_position_get_type ())
     return FALSE;
 
-  if (!lv2_plugin_discover ()) {
-    GST_WARNING ("no lv2 plugins found, check LV2_PATH");
+  lv2_meta_all = (GstStructure *) gst_plugin_get_cache_data (plugin);
+  if (lv2_meta_all) {
+    n = gst_structure_n_fields (lv2_meta_all);
+  }
+  GST_INFO_OBJECT (plugin, "%d entries in cache", n);
+  if (!n) {
+    lv2_meta_all = gst_structure_new_empty ("lv2");
+    if ((res = lv2_plugin_discover (plugin))) {
+      n = gst_structure_n_fields (lv2_meta_all);
+      GST_INFO_OBJECT (plugin, "%d entries after scanning", n);
+      gst_plugin_set_cache_data (plugin, lv2_meta_all);
+    }
+  } else {
+    res = TRUE;
+  }
+
+  if (n) {
+    gint i;
+    const gchar *name;
+    const GValue *value;
+
+    GST_INFO_OBJECT (plugin, "register types");
+
+    for (i = 0; i < n; i++) {
+      name = gst_structure_nth_field_name (lv2_meta_all, i);
+      value = gst_structure_get_value (lv2_meta_all, name);
+      if (G_VALUE_TYPE (value) == GST_TYPE_STRUCTURE) {
+        GstStructure *lv2_meta = g_value_get_boxed (value);
+
+        lv2_plugin_register_element (plugin, lv2_meta);
+      }
+    }
+  }
+
+  if (!res) {
+    GST_WARNING_OBJECT (plugin, "no lv2 plugins found, check LV2_PATH");
   }
 
   /* we don't want to fail, even if there are no elements registered */
@@ -918,31 +307,39 @@
 #endif
      static void plugin_cleanup (GstPlugin * plugin)
 {
-  slv2_value_free (audio_class);
-  slv2_value_free (control_class);
-  slv2_value_free (input_class);
-  slv2_value_free (output_class);
+  lilv_node_free (atom_class);
+  lilv_node_free (audio_class);
+  lilv_node_free (control_class);
+  lilv_node_free (cv_class);
+  lilv_node_free (event_class);
+  lilv_node_free (input_class);
+  lilv_node_free (output_class);
+  lilv_node_free (preset_class);
+  lilv_node_free (state_iface);
+  lilv_node_free (state_uri);
 
-  slv2_value_free (integer_prop);
-  slv2_value_free (toggled_prop);
-  slv2_value_free (in_place_broken_pred);
-  slv2_value_free (in_group_pred);
-  slv2_value_free (has_role_pred);
-  slv2_value_free (lv2_symbol_pred);
+  lilv_node_free (integer_prop);
+  lilv_node_free (toggled_prop);
+  lilv_node_free (designation_pred);
+  lilv_node_free (in_place_broken_pred);
+  lilv_node_free (optional_pred);
+  lilv_node_free (group_pred);
+  lilv_node_free (supports_event_pred);
+  lilv_node_free (label_pred);
 
-  slv2_value_free (center_role);
-  slv2_value_free (left_role);
-  slv2_value_free (right_role);
-  slv2_value_free (rear_center_role);
-  slv2_value_free (rear_left_role);
-  slv2_value_free (rear_right_role);
-  slv2_value_free (lfe_role);
-  slv2_value_free (center_left_role);
-  slv2_value_free (center_right_role);
-  slv2_value_free (side_left_role);
-  slv2_value_free (side_right_role);
+  lilv_node_free (center_role);
+  lilv_node_free (left_role);
+  lilv_node_free (right_role);
+  lilv_node_free (rear_center_role);
+  lilv_node_free (rear_left_role);
+  lilv_node_free (rear_right_role);
+  lilv_node_free (lfe_role);
+  lilv_node_free (center_left_role);
+  lilv_node_free (center_right_role);
+  lilv_node_free (side_left_role);
+  lilv_node_free (side_right_role);
 
-  slv2_world_free (world);
+  lilv_world_free (world);
 }
 
 GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
diff --git a/ext/lv2/gstlv2.h b/ext/lv2/gstlv2.h
index 6f0b466..177f9b2 100644
--- a/ext/lv2/gstlv2.h
+++ b/ext/lv2/gstlv2.h
@@ -1,7 +1,8 @@
 /* GStreamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- *
- * gstladspa.h: Header for LV2 plugin
+ * Copyright (C) 1999 Erik Walthinsen <omega@cse.ogi.edu>
+ *               2001 Steve Baker <stevebaker_org@yahoo.co.uk>
+ *               2003 Andy Wingo <wingo at pobox.com>
+ *               2016 Thibault Saunier <thibault.saunier@collabora.com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -19,77 +20,51 @@
  * Boston, MA 02110-1301, USA.
  */
 
-
 #ifndef __GST_LV2_H__
 #define __GST_LV2_H__
 
-
-#include <slv2/slv2.h>
-
+#include <lilv/lilv.h>
 #include <gst/gst.h>
 
-#include <gst/signalprocessor/gstsignalprocessor.h>
+#include "gstlv2utils.h"
 
+LilvWorld *world;
+LilvNode *atom_class;
+LilvNode *audio_class;
+LilvNode *control_class;
+LilvNode *cv_class;
+LilvNode *event_class;
+LilvNode *input_class;
+LilvNode *output_class;
+LilvNode *preset_class;
+LilvNode *state_iface;
+LilvNode *state_uri;
 
-G_BEGIN_DECLS
+LilvNode *integer_prop;
+LilvNode *toggled_prop;
+LilvNode *designation_pred;
+LilvNode *in_place_broken_pred;
+LilvNode *optional_pred;
+LilvNode *group_pred;
+LilvNode *supports_event_pred;
+LilvNode *label_pred;
 
+LilvNode *center_role;
+LilvNode *left_role;
+LilvNode *right_role;
+LilvNode *rear_center_role;
+LilvNode *rear_left_role;
+LilvNode *rear_right_role;
+LilvNode *lfe_role;
+LilvNode *center_left_role;
+LilvNode *center_right_role;
+LilvNode *side_left_role;
+LilvNode *side_right_role;
 
-typedef struct _lv2_control_info {
-  gchar *name;
-  gchar *param_name;
-  gfloat lowerbound, upperbound;
-  gfloat def;
-  gboolean lower, upper, samplerate;
-  gboolean toggled, logarithmic, integer, writable;
-} lv2_control_info;
+GstStructure *lv2_meta_all;
 
-
-typedef struct _GstLV2 GstLV2;
-typedef struct _GstLV2Class GstLV2Class;
-typedef struct _GstLV2Group GstLV2Group;
-typedef struct _GstLV2Port GstLV2Port;
-
-
-struct _GstLV2 {
-  GstSignalProcessor parent;
-
-  SLV2Plugin plugin;
-  SLV2Instance instance;
-
-  gboolean activated;
-};
-
-struct _GstLV2Group {
-  SLV2Value uri; /**< RDF resource (URI or blank node) */
-  guint pad; /**< Gst pad index */
-  SLV2Value symbol; /**< Gst pad name / LV2 group symbol */
-  GArray *ports; /**< Array of GstLV2Port */
-  gboolean has_roles; /**< TRUE iff all ports have a known role */
-};
-
-struct _GstLV2Port {
-  gint index; /**< LV2 port index (on LV2 plugin) */
-  gint pad; /**< Gst pad index (iff not part of a group) */
-  SLV2Value role; /**< Channel position / port role */
-  GstAudioChannelPosition position; /**< Channel position */
-};
-
-struct _GstLV2Class {
-  GstSignalProcessorClass parent_class;
-
-  SLV2Plugin plugin;
-
-  GArray *in_groups; /**< Array of GstLV2Group */
-  GArray *out_groups; /**< Array of GstLV2Group */
-  GArray *audio_in_ports; /**< Array of GstLV2Port */
-  GArray *audio_out_ports; /**< Array of GstLV2Port */
-  GArray *control_in_ports; /**< Array of GstLV2Port */
-  GArray *control_out_ports; /**< Array of GstLV2Port */
-
-};
-
-
-G_END_DECLS
-
-
+void gst_lv2_filter_register_element (GstPlugin *plugin,
+                                      GstStructure * lv2_meta);
+void gst_lv2_source_register_element (GstPlugin *plugin,
+                                      GstStructure * lv2_meta);
 #endif /* __GST_LV2_H__ */
diff --git a/ext/lv2/gstlv2filter.c b/ext/lv2/gstlv2filter.c
new file mode 100644
index 0000000..03181e5
--- /dev/null
+++ b/ext/lv2/gstlv2filter.c
@@ -0,0 +1,574 @@
+/* GStreamer
+ * Copyright (C) 1999 Erik Walthinsen <omega@cse.ogi.edu>
+ *               2001 Steve Baker <stevebaker_org@yahoo.co.uk>
+ *               2003 Andy Wingo <wingo at pobox.com>
+ *               2016 Thibault Saunier <thibault.saunier@collabora.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#include "gstlv2.h"
+#include "gstlv2utils.h"
+
+#include <string.h>
+#include <math.h>
+#include <glib.h>
+
+#include <lilv/lilv.h>
+
+#include <gst/audio/audio.h>
+#include <gst/audio/gstaudiofilter.h>
+#include <gst/audio/audio-channels.h>
+
+GST_DEBUG_CATEGORY_EXTERN (lv2_debug);
+#define GST_CAT_DEFAULT lv2_debug
+
+typedef struct _lv2_control_info
+{
+  gchar *name;
+  gchar *param_name;
+  gfloat lowerbound, upperbound;
+  gfloat def;
+  gboolean lower, upper, samplerate;
+  gboolean toggled, logarithmic, integer, writable;
+} lv2_control_info;
+
+
+typedef struct _GstLV2Filter GstLV2Filter;
+typedef struct _GstLV2FilterClass GstLV2FilterClass;
+
+
+struct _GstLV2Filter
+{
+  GstAudioFilter parent;
+
+  GstLV2 lv2;
+};
+
+struct _GstLV2FilterClass
+{
+  GstAudioFilterClass parent_class;
+
+  GstLV2Class lv2;
+};
+
+static GstAudioFilter *parent_class = NULL;
+
+/* preset interface */
+
+static gchar **
+gst_lv2_filter_get_preset_names (GstPreset * preset)
+{
+  GstLV2Filter *self = (GstLV2Filter *) preset;
+
+  return gst_lv2_get_preset_names (&self->lv2, (GstObject *) self);
+}
+
+static gboolean
+gst_lv2_filter_load_preset (GstPreset * preset, const gchar * name)
+{
+  GstLV2Filter *self = (GstLV2Filter *) preset;
+
+  return gst_lv2_load_preset (&self->lv2, (GstObject *) self, name);
+}
+
+static gboolean
+gst_lv2_filter_save_preset (GstPreset * preset, const gchar * name)
+{
+  GstLV2Filter *self = (GstLV2Filter *) preset;
+
+  return gst_lv2_save_preset (&self->lv2, (GstObject *) self, name);
+}
+
+static gboolean
+gst_lv2_filter_rename_preset (GstPreset * preset, const gchar * old_name,
+    const gchar * new_name)
+{
+  return FALSE;
+}
+
+static gboolean
+gst_lv2_filter_delete_preset (GstPreset * preset, const gchar * name)
+{
+  GstLV2Filter *self = (GstLV2Filter *) preset;
+
+  return gst_lv2_delete_preset (&self->lv2, (GstObject *) self, name);
+}
+
+static gboolean
+gst_lv2_filter_set_meta (GstPreset * preset, const gchar * name,
+    const gchar * tag, const gchar * value)
+{
+  return FALSE;
+}
+
+static gboolean
+gst_lv2_filter_get_meta (GstPreset * preset, const gchar * name,
+    const gchar * tag, gchar ** value)
+{
+  *value = NULL;
+  return FALSE;
+}
+
+static void
+gst_lv2_filter_preset_interface_init (gpointer g_iface, gpointer iface_data)
+{
+  GstPresetInterface *iface = g_iface;
+
+  iface->get_preset_names = gst_lv2_filter_get_preset_names;
+  iface->load_preset = gst_lv2_filter_load_preset;
+  iface->save_preset = gst_lv2_filter_save_preset;
+  iface->rename_preset = gst_lv2_filter_rename_preset;
+  iface->delete_preset = gst_lv2_filter_delete_preset;
+  iface->set_meta = gst_lv2_filter_set_meta;
+  iface->get_meta = gst_lv2_filter_get_meta;
+}
+
+
+/* GObject vmethods implementation */
+static void
+gst_lv2_filter_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstLV2Filter *self = (GstLV2Filter *) object;
+
+  gst_lv2_object_set_property (&self->lv2, object, prop_id, value, pspec);
+}
+
+static void
+gst_lv2_filter_get_property (GObject * object, guint prop_id, GValue * value,
+    GParamSpec * pspec)
+{
+  GstLV2Filter *self = (GstLV2Filter *) object;
+
+  gst_lv2_object_get_property (&self->lv2, object, prop_id, value, pspec);
+}
+
+static void
+gst_lv2_filter_finalize (GObject * object)
+{
+  GstLV2Filter *self = (GstLV2Filter *) object;
+
+  gst_lv2_finalize (&self->lv2);
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+#if 0
+/* Convert an LV2 port role to a Gst channel positon
+ * WARNING: If the group has only a single port,
+ * GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER will be returned for pg:centerRole
+ * (which is used by LV2 for mono groups), but this is not correct.  In this
+ * case the value must be changed to GST_AUDIO_CHANNEL_POSITION_FRONT_MONO
+ * (this can't be done by this function because this information isn't known
+ * at the time it is used).
+ */
+static GstAudioChannelPosition
+gst_lv2_filter_role_to_position (LilvNode * role)
+{
+  /* Front.  Mono and left/right are mututally exclusive */
+  if (lilv_node_equals (role, center_role)) {
+
+    return GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER;
+  } else if (lilv_node_equals (role, left_role)) {
+    return GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT;
+  } else if (lilv_node_equals (role, right_role)) {
+    return GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT;
+
+    /* Rear. Left/right and center are mututally exclusive */
+  } else if (lilv_node_equals (role, rear_center_role)) {
+    return GST_AUDIO_CHANNEL_POSITION_REAR_CENTER;
+  } else if (lilv_node_equals (role, rear_left_role)) {
+    return GST_AUDIO_CHANNEL_POSITION_REAR_LEFT;
+  } else if (lilv_node_equals (role, rear_right_role)) {
+    return GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT;
+
+    /* Subwoofer/low-frequency-effects */
+  } else if (lilv_node_equals (role, lfe_role)) {
+    return GST_AUDIO_CHANNEL_POSITION_LFE1;
+
+    /* Center front speakers. Center and left/right_of_center
+     * are mutually exclusive */
+  } else if (lilv_node_equals (role, center_left_role)) {
+    return GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER;
+  } else if (lilv_node_equals (role, center_right_role)) {
+    return GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER;
+
+    /* sides */
+  } else if (lilv_node_equals (role, side_left_role)) {
+    return GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT;
+  } else if (lilv_node_equals (role, side_right_role)) {
+    return GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT;
+  }
+
+  return GST_AUDIO_CHANNEL_POSITION_INVALID;
+}
+
+static GstAudioChannelPosition *
+gst_lv2_filter_build_positions (GstLV2Group * group)
+{
+  GstAudioChannelPosition *positions = NULL;
+
+  /* don't do anything for mono */
+  if (group->ports->len > 1) {
+    gint i;
+
+    positions = g_new (GstAudioChannelPosition, group->ports->len);
+    for (i = 0; i < group->ports->len; ++i)
+      positions[i] = g_array_index (group->ports, GstLV2Port, i).position;
+  }
+  return positions;
+}
+#endif
+
+/* Find and return the group @a uri in @a groups, or NULL if not found */
+static void
+gst_lv2_filter_type_class_add_pad_templates (GstLV2FilterClass * klass)
+{
+  GstCaps *srccaps, *sinkcaps;
+  GstPadTemplate *pad_template;
+  GstElementClass *elem_class = GST_ELEMENT_CLASS (klass);
+
+  gint in_channels = 1, out_channels = 1;
+
+  in_channels = klass->lv2.in_group.ports->len;
+
+  out_channels = klass->lv2.out_group.ports->len;
+
+  /* FIXME Implement deintereleaved audio support */
+  sinkcaps = gst_caps_new_simple ("audio/x-raw",
+      "format", G_TYPE_STRING, GST_AUDIO_NE (F32),
+      "channels", G_TYPE_INT, in_channels,
+      "rate", GST_TYPE_INT_RANGE, 1, G_MAXINT,
+      "layout", G_TYPE_STRING, "interleaved", NULL);
+
+  srccaps = gst_caps_new_simple ("audio/x-raw",
+      "format", G_TYPE_STRING, GST_AUDIO_NE (F32),
+      "channels", G_TYPE_INT, out_channels,
+      "rate", GST_TYPE_INT_RANGE, 1, G_MAXINT,
+      "layout", G_TYPE_STRING, "interleaved", NULL);
+
+  pad_template =
+      gst_pad_template_new (GST_BASE_TRANSFORM_SINK_NAME, GST_PAD_SINK,
+      GST_PAD_ALWAYS, sinkcaps);
+  gst_element_class_add_pad_template (elem_class, pad_template);
+
+  pad_template =
+      gst_pad_template_new (GST_BASE_TRANSFORM_SRC_NAME, GST_PAD_SRC,
+      GST_PAD_ALWAYS, srccaps);
+  gst_element_class_add_pad_template (elem_class, pad_template);
+
+  gst_caps_unref (sinkcaps);
+  gst_caps_unref (srccaps);
+}
+
+static gboolean
+gst_lv2_filter_setup (GstAudioFilter * gsp, const GstAudioInfo * info)
+{
+  GstLV2Filter *self = (GstLV2Filter *) gsp;
+
+  g_return_val_if_fail (self->lv2.activated == FALSE, FALSE);
+
+  GST_DEBUG_OBJECT (self, "instantiating the plugin at %d Hz",
+      GST_AUDIO_INFO_RATE (info));
+
+  if (!gst_lv2_setup (&self->lv2, GST_AUDIO_INFO_RATE (info)))
+    goto no_instance;
+
+  /* FIXME Handle audio channel positionning while negotiating CAPS */
+#if 0
+  gint i;
+  /* set input group pad audio channel position */
+  for (i = 0; i < oclass->lv2.in_groups->len; ++i) {
+    group = &g_array_index (oclass->lv2.in_groups, GstLV2Group, i);
+    if (group->has_roles) {
+      if ((positions = gst_lv2_filter_build_positions (group))) {
+        if ((pad = gst_element_get_static_pad (GST_ELEMENT (gsp),
+                    lilv_node_as_string (group->symbol)))) {
+          GST_INFO_OBJECT (self, "set audio channel positions on sink pad %s",
+              lilv_node_as_string (group->symbol));
+          s = gst_caps_get_structure (caps, 0);
+          gst_audio_set_channel_positions (s, positions);
+          gst_object_unref (pad);
+        }
+        g_free (positions);
+        positions = NULL;
+      }
+    }
+  }
+  /* set output group pad audio channel position */
+  for (i = 0; i < oclass->lv2.out_groups->len; ++i) {
+    group = &g_array_index (oclass->lv2.out_groups, GstLV2Group, i);
+    if (group->has_roles) {
+      if ((positions = gst_lv2_filter_build_positions (group))) {
+        if ((pad = gst_element_get_static_pad (GST_ELEMENT (gsp),
+                    lilv_node_as_string (group->symbol)))) {
+          GST_INFO_OBJECT (self, "set audio channel positions on src pad %s",
+              lilv_node_as_string (group->symbol));
+          s = gst_caps_get_structure (caps, 0);
+          gst_audio_set_channel_positions (s, positions);
+          gst_object_unref (pad);
+        }
+        g_free (positions);
+        positions = NULL;
+      }
+    }
+  }
+#endif
+
+  return TRUE;
+
+no_instance:
+  {
+    GST_ERROR_OBJECT (gsp, "could not create instance");
+    return FALSE;
+  }
+}
+
+static gboolean
+gst_lv2_filter_stop (GstBaseTransform * transform)
+{
+  GstLV2Filter *lv2 = (GstLV2Filter *) transform;
+
+  return gst_lv2_cleanup (&lv2->lv2, (GstObject *) lv2);
+}
+
+static inline void
+gst_lv2_filter_deinterleave_data (guint n_channels, gfloat * outdata,
+    guint samples, gfloat * indata)
+{
+  guint i, j;
+
+  for (i = 0; i < n_channels; i++)
+    for (j = 0; j < samples; j++)
+      outdata[i * samples + j] = indata[j * n_channels + i];
+}
+
+static inline void
+gst_lv2_filter_interleave_data (guint n_channels, gfloat * outdata,
+    guint samples, gfloat * indata)
+{
+  guint i, j;
+
+  for (i = 0; i < n_channels; i++)
+    for (j = 0; j < samples; j++) {
+      outdata[j * n_channels + i] = indata[i * samples + j];
+    }
+}
+
+static GstFlowReturn
+gst_lv2_filter_transform_data (GstLV2Filter * self,
+    GstMapInfo * in_map, GstMapInfo * out_map)
+{
+  GstLV2FilterClass *klass =
+      (GstLV2FilterClass *) GST_AUDIO_FILTER_GET_CLASS (self);
+  GstLV2Class *lv2_class = &klass->lv2;
+  GstLV2Group *lv2_group;
+  GstLV2Port *lv2_port;
+  guint j, k, l, nframes, samples, out_samples;
+  gfloat *in = NULL, *out = NULL, *cv = NULL, *mem;
+  gfloat val;
+
+  nframes = in_map->size / sizeof (float);
+
+  /* multi channel inputs */
+  lv2_group = &lv2_class->in_group;
+  samples = nframes / lv2_group->ports->len;
+  GST_LOG_OBJECT (self, "in : samples=%u, nframes=%u, ports=%d", samples,
+      nframes, lv2_group->ports->len);
+
+  if (lv2_group->ports->len > 1) {
+    in = g_new0 (gfloat, nframes);
+    out = g_new0 (gfloat, samples * lv2_group->ports->len);
+    gst_lv2_filter_deinterleave_data (lv2_group->ports->len, in,
+        samples, (gfloat *) in_map->data);
+  } else {
+    in = (gfloat *) in_map->data;
+    out = (gfloat *) out_map->data;
+  }
+
+  for (j = 0; j < lv2_group->ports->len; ++j) {
+    lv2_port = &g_array_index (lv2_group->ports, GstLV2Port, j);
+    lilv_instance_connect_port (self->lv2.instance, lv2_port->index,
+        in + (j * samples));
+  }
+
+  /* multi channel outputs */
+  lv2_group = &lv2_class->out_group;
+  out_samples = nframes / lv2_group->ports->len;
+
+  GST_LOG_OBJECT (self, "out: samples=%u, nframes=%u, ports=%d", out_samples,
+      nframes, lv2_group->ports->len);
+  for (j = 0; j < lv2_group->ports->len; ++j) {
+    lv2_port = &g_array_index (lv2_group->ports, GstLV2Port, j);
+    lilv_instance_connect_port (self->lv2.instance, lv2_port->index,
+        out + (j * out_samples));
+  }
+
+  /* cv ports */
+  cv = g_new (gfloat, samples * lv2_class->num_cv_in);
+  for (j = k = 0; j < lv2_class->control_in_ports->len; j++) {
+    lv2_port = &g_array_index (lv2_class->control_in_ports, GstLV2Port, j);
+    if (lv2_port->type != GST_LV2_PORT_CV)
+      continue;
+
+    mem = cv + (k * samples);
+    val = self->lv2.ports.control.in[j];
+    /* FIXME: use gst_control_binding_get_value_array */
+    for (l = 0; l < samples; l++)
+      mem[l] = val;
+    lilv_instance_connect_port (self->lv2.instance, lv2_port->index, mem);
+    k++;
+  }
+
+  lilv_instance_run (self->lv2.instance, samples);
+
+  if (lv2_group->ports->len > 1) {
+    gst_lv2_filter_interleave_data (lv2_group->ports->len,
+        (gfloat *) out_map->data, out_samples, out);
+    g_free (out);
+    g_free (in);
+  }
+  g_free (cv);
+
+  return GST_FLOW_OK;
+}
+
+static GstFlowReturn
+gst_lv2_filter_transform_ip (GstBaseTransform * transform, GstBuffer * buf)
+{
+  GstFlowReturn ret;
+  GstMapInfo map;
+
+  gst_buffer_map (buf, &map, GST_MAP_READWRITE);
+
+  ret = gst_lv2_filter_transform_data ((GstLV2Filter *) transform, &map, &map);
+
+  gst_buffer_unmap (buf, &map);
+
+  return ret;
+}
+
+static GstFlowReturn
+gst_lv2_filter_transform (GstBaseTransform * transform,
+    GstBuffer * inbuf, GstBuffer * outbuf)
+{
+  GstMapInfo in_map, out_map;
+  GstFlowReturn ret;
+
+  gst_buffer_map (inbuf, &in_map, GST_MAP_READ);
+  gst_buffer_map (outbuf, &out_map, GST_MAP_WRITE);
+
+  ret = gst_lv2_filter_transform_data ((GstLV2Filter *) transform,
+      &in_map, &out_map);
+
+  gst_buffer_unmap (inbuf, &in_map);
+  gst_buffer_unmap (outbuf, &out_map);
+
+  return ret;
+}
+
+static void
+gst_lv2_filter_base_init (gpointer g_class)
+{
+  GstLV2FilterClass *klass = (GstLV2FilterClass *) g_class;
+  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+  gst_lv2_class_init (&klass->lv2, G_TYPE_FROM_CLASS (klass));
+
+  gst_lv2_element_class_set_metadata (&klass->lv2, element_class,
+      "Filter/Effect/Audio/LV2");
+
+  gst_lv2_filter_type_class_add_pad_templates (klass);
+}
+
+static void
+gst_lv2_filter_base_finalize (GstLV2FilterClass * lv2_class)
+{
+  gst_lv2_class_finalize (&lv2_class->lv2);
+}
+
+static void
+gst_lv2_filter_class_init (GstLV2FilterClass * klass)
+{
+  GObjectClass *gobject_class = (GObjectClass *) klass;
+  GstBaseTransformClass *transform_class = GST_BASE_TRANSFORM_CLASS (klass);
+  GstAudioFilterClass *audiofilter_class = GST_AUDIO_FILTER_CLASS (klass);
+
+  GST_DEBUG ("class_init %p", klass);
+
+  gobject_class->set_property = gst_lv2_filter_set_property;
+  gobject_class->get_property = gst_lv2_filter_get_property;
+  gobject_class->finalize = gst_lv2_filter_finalize;
+
+  audiofilter_class->setup = gst_lv2_filter_setup;
+
+  transform_class->stop = gst_lv2_filter_stop;
+  transform_class->transform = gst_lv2_filter_transform;
+  transform_class->transform_ip = gst_lv2_filter_transform_ip;
+
+  gst_lv2_class_install_properties (&klass->lv2, gobject_class, 1);
+}
+
+static void
+gst_lv2_filter_init (GstLV2Filter * self, GstLV2FilterClass * klass)
+{
+  gst_lv2_init (&self->lv2, &klass->lv2);
+
+  if (!lilv_plugin_has_feature (klass->lv2.plugin, in_place_broken_pred))
+    gst_base_transform_set_in_place (GST_BASE_TRANSFORM (self), TRUE);
+}
+
+void
+gst_lv2_filter_register_element (GstPlugin * plugin, GstStructure * lv2_meta)
+{
+  GTypeInfo info = {
+    sizeof (GstLV2FilterClass),
+    (GBaseInitFunc) gst_lv2_filter_base_init,
+    (GBaseFinalizeFunc) gst_lv2_filter_base_finalize,
+    (GClassInitFunc) gst_lv2_filter_class_init,
+    NULL,
+    NULL,
+    sizeof (GstLV2Filter),
+    0,
+    (GInstanceInitFunc) gst_lv2_filter_init,
+  };
+  const gchar *type_name =
+      gst_structure_get_string (lv2_meta, "element-type-name");
+  GType element_type =
+      g_type_register_static (GST_TYPE_AUDIO_FILTER, type_name, &info, 0);
+  gboolean can_do_presets;
+
+  /* register interfaces */
+  gst_structure_get_boolean (lv2_meta, "can-do-presets", &can_do_presets);
+  if (can_do_presets) {
+    const GInterfaceInfo preset_interface_info = {
+      (GInterfaceInitFunc) gst_lv2_filter_preset_interface_init,
+      NULL,
+      NULL
+    };
+    g_type_add_interface_static (element_type, GST_TYPE_PRESET,
+        &preset_interface_info);
+  }
+
+  gst_element_register (plugin, type_name, GST_RANK_NONE, element_type);
+
+  if (!parent_class)
+    parent_class = g_type_class_ref (GST_TYPE_AUDIO_FILTER);
+}
diff --git a/ext/lv2/gstlv2source.c b/ext/lv2/gstlv2source.c
new file mode 100644
index 0000000..56f9911
--- /dev/null
+++ b/ext/lv2/gstlv2source.c
@@ -0,0 +1,755 @@
+/* GStreamer
+ * Copyright (C) 1999 Erik Walthinsen <omega@cse.ogi.edu>
+ *               2001 Steve Baker <stevebaker_org@yahoo.co.uk>
+ *               2003 Andy Wingo <wingo at pobox.com>
+ *               2016 Stefan Sauer <ensonic@users.sf.net>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#include "gstlv2.h"
+#include "gstlv2utils.h"
+
+#include <string.h>
+#include <math.h>
+#include <glib.h>
+
+#include <lilv/lilv.h>
+
+#include <gst/audio/audio.h>
+#include <gst/audio/audio-channels.h>
+#include <gst/base/gstbasesrc.h>
+
+GST_DEBUG_CATEGORY_EXTERN (lv2_debug);
+#define GST_CAT_DEFAULT lv2_debug
+
+
+typedef struct _GstLV2Source GstLV2Source;
+typedef struct _GstLV2SourceClass GstLV2SourceClass;
+
+struct _GstLV2Source
+{
+  GstBaseSrc parent;
+
+  GstLV2 lv2;
+
+  /* audio parameters */
+  GstAudioInfo info;
+  gint samples_per_buffer;
+
+  /*< private > */
+  gboolean tags_pushed;         /* send tags just once ? */
+  GstClockTimeDiff timestamp_offset;    /* base offset */
+  GstClockTime next_time;       /* next timestamp */
+  gint64 next_sample;           /* next sample to send */
+  gint64 next_byte;             /* next byte to send */
+  gint64 sample_stop;
+  gboolean check_seek_stop;
+  gboolean eos_reached;
+  gint generate_samples_per_buffer;     /* used to generate a partial buffer */
+  gboolean can_activate_pull;
+  gboolean reverse;             /* play backwards */
+};
+
+struct _GstLV2SourceClass
+{
+  GstBaseSrcClass parent_class;
+
+  GstLV2Class lv2;
+};
+
+enum
+{
+  GST_LV2_SOURCE_PROP_0,
+  GST_LV2_SOURCE_PROP_SAMPLES_PER_BUFFER,
+  GST_LV2_SOURCE_PROP_IS_LIVE,
+  GST_LV2_SOURCE_PROP_TIMESTAMP_OFFSET,
+  GST_LV2_SOURCE_PROP_CAN_ACTIVATE_PUSH,
+  GST_LV2_SOURCE_PROP_CAN_ACTIVATE_PULL,
+  GST_LV2_SOURCE_PROP_LAST
+};
+
+static GstBaseSrc *parent_class = NULL;
+
+/* preset interface */
+
+static gchar **
+gst_lv2_source_get_preset_names (GstPreset * preset)
+{
+  GstLV2Source *self = (GstLV2Source *) preset;
+
+  return gst_lv2_get_preset_names (&self->lv2, (GstObject *) self);
+}
+
+static gboolean
+gst_lv2_source_load_preset (GstPreset * preset, const gchar * name)
+{
+  GstLV2Source *self = (GstLV2Source *) preset;
+
+  return gst_lv2_load_preset (&self->lv2, (GstObject *) self, name);
+}
+
+static gboolean
+gst_lv2_source_save_preset (GstPreset * preset, const gchar * name)
+{
+  GstLV2Source *self = (GstLV2Source *) preset;
+
+  return gst_lv2_save_preset (&self->lv2, (GstObject *) self, name);
+}
+
+static gboolean
+gst_lv2_source_rename_preset (GstPreset * preset, const gchar * old_name,
+    const gchar * new_name)
+{
+  return FALSE;
+}
+
+static gboolean
+gst_lv2_source_delete_preset (GstPreset * preset, const gchar * name)
+{
+  GstLV2Source *self = (GstLV2Source *) preset;
+
+  return gst_lv2_delete_preset (&self->lv2, (GstObject *) self, name);
+}
+
+static gboolean
+gst_lv2_source_set_meta (GstPreset * preset, const gchar * name,
+    const gchar * tag, const gchar * value)
+{
+  return FALSE;
+}
+
+static gboolean
+gst_lv2_source_get_meta (GstPreset * preset, const gchar * name,
+    const gchar * tag, gchar ** value)
+{
+  *value = NULL;
+  return FALSE;
+}
+
+static void
+gst_lv2_source_preset_interface_init (gpointer g_iface, gpointer iface_data)
+{
+  GstPresetInterface *iface = g_iface;
+
+  iface->get_preset_names = gst_lv2_source_get_preset_names;
+  iface->load_preset = gst_lv2_source_load_preset;
+  iface->save_preset = gst_lv2_source_save_preset;
+  iface->rename_preset = gst_lv2_source_rename_preset;
+  iface->delete_preset = gst_lv2_source_delete_preset;
+  iface->set_meta = gst_lv2_source_set_meta;
+  iface->get_meta = gst_lv2_source_get_meta;
+}
+
+
+/* GstBasesrc vmethods implementation */
+
+static gboolean
+gst_lv2_source_set_caps (GstBaseSrc * base, GstCaps * caps)
+{
+  GstLV2Source *lv2 = (GstLV2Source *) base;
+  GstAudioInfo info;
+
+  if (!gst_audio_info_from_caps (&info, caps)) {
+    GST_ERROR_OBJECT (base, "received invalid caps");
+    return FALSE;
+  }
+
+  GST_DEBUG_OBJECT (lv2, "negotiated to caps %" GST_PTR_FORMAT, caps);
+
+  lv2->info = info;
+
+  gst_base_src_set_blocksize (base,
+      GST_AUDIO_INFO_BPF (&info) * lv2->samples_per_buffer);
+
+  if (!gst_lv2_setup (&lv2->lv2, GST_AUDIO_INFO_RATE (&info)))
+    goto no_instance;
+
+  return TRUE;
+
+no_instance:
+  {
+    GST_ERROR_OBJECT (lv2, "could not create instance");
+    return FALSE;
+  }
+}
+
+static GstCaps *
+gst_lv2_source_fixate (GstBaseSrc * base, GstCaps * caps)
+{
+  GstLV2Source *lv2 = (GstLV2Source *) base;
+  GstStructure *structure;
+
+  caps = gst_caps_make_writable (caps);
+
+  structure = gst_caps_get_structure (caps, 0);
+
+  GST_DEBUG_OBJECT (lv2, "fixating samplerate to %d", GST_AUDIO_DEF_RATE);
+
+  gst_structure_fixate_field_nearest_int (structure, "rate",
+      GST_AUDIO_DEF_RATE);
+
+  gst_structure_fixate_field_string (structure, "format", GST_AUDIO_NE (F32));
+
+  gst_structure_fixate_field_nearest_int (structure, "channels",
+      lv2->lv2.klass->out_group.ports->len);
+
+  caps = GST_BASE_SRC_CLASS (parent_class)->fixate (base, caps);
+
+  return caps;
+}
+
+static void
+gst_lv2_source_get_times (GstBaseSrc * base, GstBuffer * buffer,
+    GstClockTime * start, GstClockTime * end)
+{
+  /* for live sources, sync on the timestamp of the buffer */
+  if (gst_base_src_is_live (base)) {
+    GstClockTime timestamp = GST_BUFFER_TIMESTAMP (buffer);
+
+    if (GST_CLOCK_TIME_IS_VALID (timestamp)) {
+      /* get duration to calculate end time */
+      GstClockTime duration = GST_BUFFER_DURATION (buffer);
+
+      if (GST_CLOCK_TIME_IS_VALID (duration)) {
+        *end = timestamp + duration;
+      }
+      *start = timestamp;
+    }
+  } else {
+    *start = -1;
+    *end = -1;
+  }
+}
+
+/* seek to time, will be called when we operate in push mode. In pull mode we
+ * get the requested byte offset. */
+static gboolean
+gst_lv2_source_do_seek (GstBaseSrc * base, GstSegment * segment)
+{
+  GstLV2Source *lv2 = (GstLV2Source *) base;
+  GstClockTime time;
+  gint samplerate, bpf;
+  gint64 next_sample;
+
+  GST_DEBUG_OBJECT (lv2, "seeking %" GST_SEGMENT_FORMAT, segment);
+
+  time = segment->position;
+  lv2->reverse = (segment->rate < 0.0);
+
+  samplerate = GST_AUDIO_INFO_RATE (&lv2->info);
+  bpf = GST_AUDIO_INFO_BPF (&lv2->info);
+
+  /* now move to the time indicated, don't seek to the sample *after* the time */
+  next_sample = gst_util_uint64_scale_int (time, samplerate, GST_SECOND);
+  lv2->next_byte = next_sample * bpf;
+  if (samplerate == 0)
+    lv2->next_time = 0;
+  else
+    lv2->next_time =
+        gst_util_uint64_scale_round (next_sample, GST_SECOND, samplerate);
+
+  GST_DEBUG_OBJECT (lv2, "seeking next_sample=%" G_GINT64_FORMAT
+      " next_time=%" GST_TIME_FORMAT, next_sample,
+      GST_TIME_ARGS (lv2->next_time));
+
+  g_assert (lv2->next_time <= time);
+
+  lv2->next_sample = next_sample;
+
+  if (!lv2->reverse) {
+    if (GST_CLOCK_TIME_IS_VALID (segment->start)) {
+      segment->time = segment->start;
+    }
+  } else {
+    if (GST_CLOCK_TIME_IS_VALID (segment->stop)) {
+      segment->time = segment->stop;
+    }
+  }
+
+  if (GST_CLOCK_TIME_IS_VALID (segment->stop)) {
+    time = segment->stop;
+    lv2->sample_stop =
+        gst_util_uint64_scale_round (time, samplerate, GST_SECOND);
+    lv2->check_seek_stop = TRUE;
+  } else {
+    lv2->check_seek_stop = FALSE;
+  }
+  lv2->eos_reached = FALSE;
+
+  return TRUE;
+}
+
+static gboolean
+gst_lv2_source_is_seekable (GstBaseSrc * base)
+{
+  /* we're seekable... */
+  return TRUE;
+}
+
+static gboolean
+gst_lv2_source_query (GstBaseSrc * base, GstQuery * query)
+{
+  GstLV2Source *lv2 = (GstLV2Source *) base;
+  gboolean res = FALSE;
+
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_CONVERT:
+    {
+      GstFormat src_fmt, dest_fmt;
+      gint64 src_val, dest_val;
+
+      gst_query_parse_convert (query, &src_fmt, &src_val, &dest_fmt, &dest_val);
+
+      if (!gst_audio_info_convert (&lv2->info, src_fmt, src_val, dest_fmt,
+              &dest_val)) {
+        GST_DEBUG_OBJECT (lv2, "query failed");
+        return FALSE;
+      }
+
+      gst_query_set_convert (query, src_fmt, src_val, dest_fmt, dest_val);
+      res = TRUE;
+      break;
+    }
+    case GST_QUERY_SCHEDULING:
+    {
+      /* if we can operate in pull mode */
+      gst_query_set_scheduling (query, GST_SCHEDULING_FLAG_SEEKABLE, 1, -1, 0);
+      gst_query_add_scheduling_mode (query, GST_PAD_MODE_PUSH);
+      if (lv2->can_activate_pull)
+        gst_query_add_scheduling_mode (query, GST_PAD_MODE_PULL);
+
+      res = TRUE;
+      break;
+    }
+    default:
+      res = GST_BASE_SRC_CLASS (parent_class)->query (base, query);
+      break;
+  }
+
+  return res;
+}
+
+static inline void
+gst_lv2_source_interleave_data (guint n_channels, gfloat * outdata,
+    guint samples, gfloat * indata)
+{
+  guint i, j;
+
+  for (i = 0; i < n_channels; i++)
+    for (j = 0; j < samples; j++) {
+      outdata[j * n_channels + i] = indata[i * samples + j];
+    }
+}
+
+static GstFlowReturn
+gst_lv2_source_fill (GstBaseSrc * base, guint64 offset,
+    guint length, GstBuffer * buffer)
+{
+  GstLV2Source *lv2 = (GstLV2Source *) base;
+  GstLV2SourceClass *klass = (GstLV2SourceClass *) GST_BASE_SRC_GET_CLASS (lv2);
+  GstLV2Class *lv2_class = &klass->lv2;
+  GstLV2Group *lv2_group;
+  GstLV2Port *lv2_port;
+  GstClockTime next_time;
+  gint64 next_sample, next_byte;
+  guint bytes, samples;
+  GstElementClass *eclass;
+  GstMapInfo map;
+  gint samplerate, bpf;
+  guint j, k, l;
+  gfloat *out = NULL, *cv = NULL, *mem;
+  gfloat val;
+
+  /* example for tagging generated data */
+  if (!lv2->tags_pushed) {
+    GstTagList *taglist;
+
+    taglist = gst_tag_list_new (GST_TAG_DESCRIPTION, "lv2 wave", NULL);
+
+    eclass = GST_ELEMENT_CLASS (parent_class);
+    if (eclass->send_event)
+      eclass->send_event (GST_ELEMENT (base), gst_event_new_tag (taglist));
+    else
+      gst_tag_list_unref (taglist);
+    lv2->tags_pushed = TRUE;
+  }
+
+  if (lv2->eos_reached) {
+    GST_INFO_OBJECT (lv2, "eos");
+    return GST_FLOW_EOS;
+  }
+
+  samplerate = GST_AUDIO_INFO_RATE (&lv2->info);
+  bpf = GST_AUDIO_INFO_BPF (&lv2->info);
+
+  /* if no length was given, use our default length in samples otherwise convert
+   * the length in bytes to samples. */
+  if (length == -1)
+    samples = lv2->samples_per_buffer;
+  else
+    samples = length / bpf;
+
+  /* if no offset was given, use our next logical byte */
+  if (offset == -1)
+    offset = lv2->next_byte;
+
+  /* now see if we are at the byteoffset we think we are */
+  if (offset != lv2->next_byte) {
+    GST_DEBUG_OBJECT (lv2, "seek to new offset %" G_GUINT64_FORMAT, offset);
+    /* we have a discont in the expected sample offset, do a 'seek' */
+    lv2->next_sample = offset / bpf;
+    lv2->next_time =
+        gst_util_uint64_scale_int (lv2->next_sample, GST_SECOND, samplerate);
+    lv2->next_byte = offset;
+  }
+
+  /* check for eos */
+  if (lv2->check_seek_stop &&
+      (lv2->sample_stop > lv2->next_sample) &&
+      (lv2->sample_stop < lv2->next_sample + samples)
+      ) {
+    /* calculate only partial buffer */
+    lv2->generate_samples_per_buffer = lv2->sample_stop - lv2->next_sample;
+    next_sample = lv2->sample_stop;
+    lv2->eos_reached = TRUE;
+
+    GST_INFO_OBJECT (lv2, "eos reached");
+  } else {
+    /* calculate full buffer */
+    lv2->generate_samples_per_buffer = samples;
+    next_sample = lv2->next_sample + (lv2->reverse ? (-samples) : samples);
+  }
+
+  bytes = lv2->generate_samples_per_buffer * bpf;
+
+  next_byte = lv2->next_byte + (lv2->reverse ? (-bytes) : bytes);
+  next_time = gst_util_uint64_scale_int (next_sample, GST_SECOND, samplerate);
+
+  GST_LOG_OBJECT (lv2, "samplerate %d", samplerate);
+  GST_LOG_OBJECT (lv2,
+      "next_sample %" G_GINT64_FORMAT ", ts %" GST_TIME_FORMAT, next_sample,
+      GST_TIME_ARGS (next_time));
+
+  gst_buffer_set_size (buffer, bytes);
+
+  GST_BUFFER_OFFSET (buffer) = lv2->next_sample;
+  GST_BUFFER_OFFSET_END (buffer) = next_sample;
+  if (!lv2->reverse) {
+    GST_BUFFER_TIMESTAMP (buffer) = lv2->timestamp_offset + lv2->next_time;
+    GST_BUFFER_DURATION (buffer) = next_time - lv2->next_time;
+  } else {
+    GST_BUFFER_TIMESTAMP (buffer) = lv2->timestamp_offset + next_time;
+    GST_BUFFER_DURATION (buffer) = lv2->next_time - next_time;
+  }
+
+  gst_object_sync_values (GST_OBJECT (lv2), GST_BUFFER_TIMESTAMP (buffer));
+
+  lv2->next_time = next_time;
+  lv2->next_sample = next_sample;
+  lv2->next_byte = next_byte;
+
+  GST_LOG_OBJECT (lv2, "generating %u samples at ts %" GST_TIME_FORMAT,
+      samples, GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buffer)));
+
+  gst_buffer_map (buffer, &map, GST_MAP_WRITE);
+
+  /* multi channel outputs */
+  lv2_group = &lv2_class->out_group;
+  if (lv2_group->ports->len > 1) {
+    out = g_new0 (gfloat, samples * lv2_group->ports->len);
+    for (j = 0; j < lv2_group->ports->len; ++j) {
+      lv2_port = &g_array_index (lv2_group->ports, GstLV2Port, j);
+      lilv_instance_connect_port (lv2->lv2.instance, lv2_port->index,
+          out + (j * samples));
+      GST_LOG_OBJECT (lv2, "connected port %d/%d", j, lv2_group->ports->len);
+    }
+  } else {
+    lv2_port = &g_array_index (lv2_group->ports, GstLV2Port, 0);
+    lilv_instance_connect_port (lv2->lv2.instance, lv2_port->index,
+        (gfloat *) map.data);
+    GST_LOG_OBJECT (lv2, "connected port 0");
+  }
+
+  /* cv ports */
+  cv = g_new (gfloat, samples * lv2_class->num_cv_in);
+  for (j = k = 0; j < lv2_class->control_in_ports->len; j++) {
+    lv2_port = &g_array_index (lv2_class->control_in_ports, GstLV2Port, j);
+    if (lv2_port->type != GST_LV2_PORT_CV)
+      continue;
+
+    mem = cv + (k * samples);
+    val = lv2->lv2.ports.control.in[j];
+    /* FIXME: use gst_control_binding_get_value_array */
+    for (l = 0; l < samples; l++)
+      mem[l] = val;
+    lilv_instance_connect_port (lv2->lv2.instance, lv2_port->index, mem);
+    k++;
+  }
+
+  lilv_instance_run (lv2->lv2.instance, samples);
+
+  if (lv2_group->ports->len > 1) {
+    gst_lv2_source_interleave_data (lv2_group->ports->len,
+        (gfloat *) map.data, samples, out);
+    g_free (out);
+  }
+
+  g_free (cv);
+
+  gst_buffer_unmap (buffer, &map);
+
+  return GST_FLOW_OK;
+}
+
+static gboolean
+gst_lv2_source_start (GstBaseSrc * base)
+{
+  GstLV2Source *lv2 = (GstLV2Source *) base;
+
+  lv2->next_sample = 0;
+  lv2->next_byte = 0;
+  lv2->next_time = 0;
+  lv2->check_seek_stop = FALSE;
+  lv2->eos_reached = FALSE;
+  lv2->tags_pushed = FALSE;
+
+  GST_INFO_OBJECT (base, "starting");
+
+  return TRUE;
+}
+
+static gboolean
+gst_lv2_source_stop (GstBaseSrc * base)
+{
+  GstLV2Source *lv2 = (GstLV2Source *) base;
+
+  GST_INFO_OBJECT (base, "stopping");
+  return gst_lv2_cleanup (&lv2->lv2, (GstObject *) lv2);
+}
+
+/* GObject vmethods implementation */
+static void
+gst_lv2_source_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstLV2Source *self = (GstLV2Source *) object;
+
+  switch (prop_id) {
+    case GST_LV2_SOURCE_PROP_SAMPLES_PER_BUFFER:
+      self->samples_per_buffer = g_value_get_int (value);
+      gst_base_src_set_blocksize (GST_BASE_SRC (self),
+          GST_AUDIO_INFO_BPF (&self->info) * self->samples_per_buffer);
+      break;
+    case GST_LV2_SOURCE_PROP_IS_LIVE:
+      gst_base_src_set_live (GST_BASE_SRC (self), g_value_get_boolean (value));
+      break;
+    case GST_LV2_SOURCE_PROP_TIMESTAMP_OFFSET:
+      self->timestamp_offset = g_value_get_int64 (value);
+      break;
+    case GST_LV2_SOURCE_PROP_CAN_ACTIVATE_PUSH:
+      GST_BASE_SRC (self)->can_activate_push = g_value_get_boolean (value);
+      break;
+    case GST_LV2_SOURCE_PROP_CAN_ACTIVATE_PULL:
+      self->can_activate_pull = g_value_get_boolean (value);
+      break;
+    default:
+      gst_lv2_object_set_property (&self->lv2, object, prop_id, value, pspec);
+      break;
+  }
+}
+
+static void
+gst_lv2_source_get_property (GObject * object, guint prop_id, GValue * value,
+    GParamSpec * pspec)
+{
+  GstLV2Source *self = (GstLV2Source *) object;
+
+  switch (prop_id) {
+    case GST_LV2_SOURCE_PROP_SAMPLES_PER_BUFFER:
+      g_value_set_int (value, self->samples_per_buffer);
+      break;
+    case GST_LV2_SOURCE_PROP_IS_LIVE:
+      g_value_set_boolean (value, gst_base_src_is_live (GST_BASE_SRC (self)));
+      break;
+    case GST_LV2_SOURCE_PROP_TIMESTAMP_OFFSET:
+      g_value_set_int64 (value, self->timestamp_offset);
+      break;
+    case GST_LV2_SOURCE_PROP_CAN_ACTIVATE_PUSH:
+      g_value_set_boolean (value, GST_BASE_SRC (self)->can_activate_push);
+      break;
+    case GST_LV2_SOURCE_PROP_CAN_ACTIVATE_PULL:
+      g_value_set_boolean (value, self->can_activate_pull);
+      break;
+    default:
+      gst_lv2_object_get_property (&self->lv2, object, prop_id, value, pspec);
+      break;
+  }
+}
+
+static void
+gst_lv2_source_finalize (GObject * object)
+{
+  GstLV2Source *self = (GstLV2Source *) object;
+
+  gst_lv2_finalize (&self->lv2);
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+
+static void
+gst_lv2_source_base_init (gpointer g_class)
+{
+  GstLV2SourceClass *klass = (GstLV2SourceClass *) g_class;
+  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+  GstPadTemplate *pad_template;
+  GstCaps *srccaps;
+
+  gst_lv2_class_init (&klass->lv2, G_TYPE_FROM_CLASS (klass));
+
+  gst_lv2_element_class_set_metadata (&klass->lv2, element_class,
+      "Source/Audio/LV2");
+
+  srccaps = gst_caps_new_simple ("audio/x-raw",
+      "format", G_TYPE_STRING, GST_AUDIO_NE (F32),
+      "channels", G_TYPE_INT, klass->lv2.out_group.ports->len,
+      "rate", GST_TYPE_INT_RANGE, 1, G_MAXINT,
+      "layout", G_TYPE_STRING, "interleaved", NULL);
+
+  pad_template =
+      gst_pad_template_new (GST_BASE_TRANSFORM_SRC_NAME, GST_PAD_SRC,
+      GST_PAD_ALWAYS, srccaps);
+  gst_element_class_add_pad_template (element_class, pad_template);
+
+  gst_caps_unref (srccaps);
+}
+
+static void
+gst_lv2_source_base_finalize (GstLV2SourceClass * lv2_class)
+{
+  gst_lv2_class_finalize (&lv2_class->lv2);
+}
+
+static void
+gst_lv2_source_class_init (GstLV2SourceClass * klass)
+{
+  GObjectClass *gobject_class = (GObjectClass *) klass;
+  GstBaseSrcClass *src_class = (GstBaseSrcClass *) klass;
+
+  GST_DEBUG ("class_init %p", klass);
+
+  gobject_class->set_property = gst_lv2_source_set_property;
+  gobject_class->get_property = gst_lv2_source_get_property;
+  gobject_class->finalize = gst_lv2_source_finalize;
+
+  src_class->set_caps = gst_lv2_source_set_caps;
+  src_class->fixate = gst_lv2_source_fixate;
+  src_class->is_seekable = gst_lv2_source_is_seekable;
+  src_class->do_seek = gst_lv2_source_do_seek;
+  src_class->query = gst_lv2_source_query;
+  src_class->get_times = gst_lv2_source_get_times;
+  src_class->start = gst_lv2_source_start;
+  src_class->stop = gst_lv2_source_stop;
+  src_class->fill = gst_lv2_source_fill;
+
+  g_object_class_install_property (gobject_class,
+      GST_LV2_SOURCE_PROP_SAMPLES_PER_BUFFER,
+      g_param_spec_int ("samplesperbuffer", "Samples per buffer",
+          "Number of samples in each outgoing buffer", 1, G_MAXINT, 1024,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, GST_LV2_SOURCE_PROP_IS_LIVE,
+      g_param_spec_boolean ("is-live", "Is Live",
+          "Whether to act as a live source", FALSE,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class,
+      GST_LV2_SOURCE_PROP_TIMESTAMP_OFFSET,
+      g_param_spec_int64 ("timestamp-offset", "Timestamp offset",
+          "An offset added to timestamps set on buffers (in ns)", G_MININT64,
+          G_MAXINT64, G_GINT64_CONSTANT (0),
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class,
+      GST_LV2_SOURCE_PROP_CAN_ACTIVATE_PUSH,
+      g_param_spec_boolean ("can-activate-push", "Can activate push",
+          "Can activate in push mode", TRUE,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class,
+      GST_LV2_SOURCE_PROP_CAN_ACTIVATE_PULL,
+      g_param_spec_boolean ("can-activate-pull", "Can activate pull",
+          "Can activate in pull mode", FALSE,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  gst_lv2_class_install_properties (&klass->lv2, gobject_class,
+      GST_LV2_SOURCE_PROP_LAST);
+}
+
+static void
+gst_lv2_source_init (GstLV2Source * self, GstLV2SourceClass * klass)
+{
+  gst_lv2_init (&self->lv2, &klass->lv2);
+
+  gst_base_src_set_format (GST_BASE_SRC (self), GST_FORMAT_TIME);
+  gst_base_src_set_blocksize (GST_BASE_SRC (self), -1);
+
+  self->samples_per_buffer = 1024;
+  self->generate_samples_per_buffer = self->samples_per_buffer;
+}
+
+void
+gst_lv2_source_register_element (GstPlugin * plugin, GstStructure * lv2_meta)
+{
+  GTypeInfo info = {
+    sizeof (GstLV2SourceClass),
+    (GBaseInitFunc) gst_lv2_source_base_init,
+    (GBaseFinalizeFunc) gst_lv2_source_base_finalize,
+    (GClassInitFunc) gst_lv2_source_class_init,
+    NULL,
+    NULL,
+    sizeof (GstLV2Source),
+    0,
+    (GInstanceInitFunc) gst_lv2_source_init,
+  };
+  const gchar *type_name =
+      gst_structure_get_string (lv2_meta, "element-type-name");
+  GType element_type =
+      g_type_register_static (GST_TYPE_BASE_SRC, type_name, &info, 0);
+  gboolean can_do_presets;
+
+  /* register interfaces */
+  gst_structure_get_boolean (lv2_meta, "can-do-presets", &can_do_presets);
+  if (can_do_presets) {
+    const GInterfaceInfo preset_interface_info = {
+      (GInterfaceInitFunc) gst_lv2_source_preset_interface_init,
+      NULL,
+      NULL
+    };
+
+    g_type_add_interface_static (element_type, GST_TYPE_PRESET,
+        &preset_interface_info);
+  }
+
+  gst_element_register (plugin, type_name, GST_RANK_NONE, element_type);
+
+  if (!parent_class)
+    parent_class = g_type_class_ref (GST_TYPE_BASE_SRC);
+}
diff --git a/ext/lv2/gstlv2utils.c b/ext/lv2/gstlv2utils.c
new file mode 100644
index 0000000..fc30595
--- /dev/null
+++ b/ext/lv2/gstlv2utils.c
@@ -0,0 +1,963 @@
+/* GStreamer
+ * Copyright (C) 2016 Thibault Saunier <thibault.saunier@collabora.com>
+ *               2016 Stefan Sauer <ensonic@users.sf.net>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "string.h"
+#include "stdlib.h"
+
+#include "gstlv2.h"
+#include "gstlv2utils.h"
+
+#include "lv2/lv2plug.in/ns/ext/atom/atom.h"
+#include "lv2/lv2plug.in/ns/ext/atom/forge.h"
+#include <lv2/lv2plug.in/ns/ext/log/log.h>
+#include <lv2/lv2plug.in/ns/ext/state/state.h>
+#include <lv2/lv2plug.in/ns/ext/urid/urid.h>
+
+GST_DEBUG_CATEGORY_EXTERN (lv2_debug);
+#define GST_CAT_DEFAULT lv2_debug
+
+/* host features */
+
+/* - log extension */
+
+static int
+lv2_log_printf (LV2_Log_Handle handle, LV2_URID type, const char *fmt, ...)
+{
+  va_list ap;
+
+  va_start (ap, fmt);
+  gst_debug_log_valist (lv2_debug, GST_LEVEL_INFO, "", "", 0, NULL, fmt, ap);
+  va_end (ap);
+  return 1;
+}
+
+static int
+lv2_log_vprintf (LV2_Log_Handle handle, LV2_URID type,
+    const char *fmt, va_list ap)
+{
+  gst_debug_log_valist (lv2_debug, GST_LEVEL_INFO, "", "", 0, NULL, fmt, ap);
+  return 1;
+}
+
+static LV2_Log_Log lv2_log = {
+  /* handle = */ NULL, lv2_log_printf, lv2_log_vprintf
+};
+
+
+static const LV2_Feature lv2_log_feature = { LV2_LOG__log, &lv2_log };
+
+/* - urid map/unmap extension */
+
+static LV2_URID
+lv2_urid_map (LV2_URID_Map_Handle handle, const char *uri)
+{
+  return (LV2_URID) g_quark_from_string (uri);
+}
+
+static const char *
+lv2_urid_unmap (LV2_URID_Unmap_Handle handle, LV2_URID urid)
+{
+  return g_quark_to_string ((GQuark) urid);
+}
+
+static LV2_URID_Map lv2_map = {
+  /* handle = */ NULL, lv2_urid_map
+};
+
+static LV2_URID_Unmap lv2_unmap = {
+  /* handle = */ NULL, lv2_urid_unmap
+};
+
+static const LV2_Feature lv2_map_feature = { LV2_URID__map, &lv2_map };
+static const LV2_Feature lv2_unmap_feature = { LV2_URID__unmap, &lv2_unmap };
+
+/* feature list */
+
+static const LV2_Feature *lv2_features[] = {
+  &lv2_log_feature,
+  &lv2_map_feature,
+  &lv2_unmap_feature,
+  NULL
+};
+
+gboolean
+gst_lv2_check_required_features (const LilvPlugin * lv2plugin)
+{
+  LilvNodes *required_features = lilv_plugin_get_required_features (lv2plugin);
+  if (required_features) {
+    LilvIter *i;
+    gint j;
+    gboolean missing = FALSE;
+
+    for (i = lilv_nodes_begin (required_features);
+        !lilv_nodes_is_end (required_features, i);
+        i = lilv_nodes_next (required_features, i)) {
+      const LilvNode *required_feature = lilv_nodes_get (required_features, i);
+      const char *required_feature_uri = lilv_node_as_uri (required_feature);
+      missing = TRUE;
+
+      for (j = 0; lv2_features[j]; j++) {
+        if (!strcmp (lv2_features[j]->URI, required_feature_uri)) {
+          missing = FALSE;
+          break;
+        }
+      }
+      if (missing) {
+        GST_FIXME ("lv2 plugin %s needs host feature: %s",
+            lilv_node_as_uri (lilv_plugin_get_uri (lv2plugin)),
+            required_feature_uri);
+        break;
+      }
+    }
+    lilv_nodes_free (required_features);
+    return (!missing);
+  }
+  return TRUE;
+}
+
+static LV2_Atom_Forge forge;
+
+void
+gst_lv2_host_init (void)
+{
+  lv2_atom_forge_init (&forge, &lv2_map);
+}
+
+/* preset interface */
+
+static char *
+make_bundle_name (GstObject * obj, const gchar * name)
+{
+  GstElementFactory *factory;
+  gchar *basename, *s, *bundle;
+
+  factory = gst_element_get_factory ((GstElement *) obj);
+  basename = g_strdup (gst_element_factory_get_metadata (factory,
+          GST_ELEMENT_METADATA_LONGNAME));
+  s = basename;
+  while ((s = strchr (s, ' '))) {
+    *s = '_';
+  }
+  bundle = g_strjoin (NULL, basename, "_", name, ".preset.lv2", NULL);
+
+  g_free (basename);
+
+  return bundle;
+}
+
+gchar **
+gst_lv2_get_preset_names (GstLV2 * lv2, GstObject * obj)
+{
+  /* lazily scan for presets when first called */
+  if (!lv2->presets) {
+    LilvNodes *presets;
+
+    if ((presets = lilv_plugin_get_related (lv2->klass->plugin, preset_class))) {
+      LilvIter *j;
+
+      lv2->presets = g_hash_table_new_full (g_str_hash, g_str_equal, g_free,
+          (GDestroyNotify) lilv_node_free);
+
+      for (j = lilv_nodes_begin (presets);
+          !lilv_nodes_is_end (presets, j); j = lilv_nodes_next (presets, j)) {
+        const LilvNode *preset = lilv_nodes_get (presets, j);
+        LilvNodes *titles;
+
+        lilv_world_load_resource (world, preset);
+        titles = lilv_world_find_nodes (world, preset, label_pred, NULL);
+        if (titles) {
+          const LilvNode *title = lilv_nodes_get_first (titles);
+          g_hash_table_insert (lv2->presets,
+              g_strdup (lilv_node_as_string (title)),
+              lilv_node_duplicate (preset));
+          lilv_nodes_free (titles);
+        } else {
+          GST_WARNING_OBJECT (obj, "plugin has preset '%s' without rdfs:label",
+              lilv_node_as_string (preset));
+        }
+      }
+      lilv_nodes_free (presets);
+    }
+  }
+  if (lv2->presets) {
+    GList *node, *keys = g_hash_table_get_keys (lv2->presets);
+    gchar **names = g_new0 (gchar *, g_hash_table_size (lv2->presets) + 1);
+    gint i = 0;
+
+    for (node = keys; node; node = g_list_next (node)) {
+      names[i++] = g_strdup (node->data);
+    }
+    g_list_free (keys);
+    return names;
+  }
+  return NULL;
+}
+
+static void
+set_port_value (const char *port_symbol, void *data, const void *value,
+    uint32_t size, uint32_t type)
+{
+  gpointer *user_data = (gpointer *) data;
+  GstLV2Class *klass = user_data[0];
+  GstObject *obj = user_data[1];
+  gchar *prop_name = g_hash_table_lookup (klass->sym_to_name, port_symbol);
+  gfloat fvalue;
+
+  if (!prop_name) {
+    GST_WARNING_OBJECT (obj, "Preset port '%s' is missing", port_symbol);
+    return;
+  }
+
+  if (type == forge.Float) {
+    fvalue = *(const gfloat *) value;
+  } else if (type == forge.Double) {
+    fvalue = *(const gdouble *) value;
+  } else if (type == forge.Int) {
+    fvalue = *(const gint32 *) value;
+  } else if (type == forge.Long) {
+    fvalue = *(const gint64 *) value;
+  } else {
+    GST_WARNING_OBJECT (obj, "Preset '%s' value has bad type '%s'",
+        port_symbol, lv2_unmap.unmap (lv2_unmap.handle, type));
+    return;
+  }
+  g_object_set (obj, prop_name, fvalue, NULL);
+}
+
+gboolean
+gst_lv2_load_preset (GstLV2 * lv2, GstObject * obj, const gchar * name)
+{
+  LilvNode *preset = g_hash_table_lookup (lv2->presets, name);
+  LilvState *state = lilv_state_new_from_world (world, &lv2_map, preset);
+  gpointer user_data[] = { lv2->klass, obj };
+
+  GST_INFO_OBJECT (obj, "loading preset <%s>", lilv_node_as_string (preset));
+
+  lilv_state_restore (state, lv2->instance, set_port_value,
+      (gpointer) user_data, 0, NULL);
+
+  lilv_state_free (state);
+  return FALSE;
+}
+
+static const void *
+get_port_value (const char *port_symbol, void *data, uint32_t * size,
+    uint32_t * type)
+{
+  gpointer *user_data = (gpointer *) data;
+  GstLV2Class *klass = user_data[0];
+  GstObject *obj = user_data[1];
+  gchar *prop_name = g_hash_table_lookup (klass->sym_to_name, port_symbol);
+  static gfloat fvalue;
+
+  if (!prop_name) {
+    GST_WARNING_OBJECT (obj, "Preset port '%s' is missing", port_symbol);
+    *size = *type = 0;
+    return NULL;
+  }
+
+  *size = sizeof (float);
+  *type = forge.Float;
+  g_object_get (obj, prop_name, &fvalue, NULL);
+  /* FIXME: can we return &lv2->ports.{in,out}[x]; */
+  return &fvalue;
+}
+
+gboolean
+gst_lv2_save_preset (GstLV2 * lv2, GstObject * obj, const gchar * name)
+{
+  gchar *filename, *bundle, *dir, *tmp_dir;
+  gpointer user_data[] = { lv2->klass, obj };
+  LilvState *state;
+  LilvNode *bundle_dir;
+  const LilvNode *state_uri;
+  LilvInstance *instance = lv2->instance;
+  gboolean res;
+#ifndef HAVE_LILV_0_22
+  gchar *filepath;
+#endif
+
+  filename = g_strjoin (NULL, name, ".ttl", NULL);
+  bundle = make_bundle_name (obj, name);
+  /* dir needs to end on a dir separator for the lilv_new_file_uri() to work */
+  dir =
+      g_build_filename (g_get_home_dir (), ".lv2", bundle, G_DIR_SEPARATOR_S,
+      NULL);
+  tmp_dir = g_dir_make_tmp ("gstlv2-XXXXXX", NULL);
+  g_mkdir_with_parents (dir, 0750);
+
+  if (!instance) {
+    /* instance is NULL until we play!! */
+    instance = lilv_plugin_instantiate (lv2->klass->plugin, GST_AUDIO_DEF_RATE,
+        lv2_features);
+  }
+
+  state = lilv_state_new_from_instance (lv2->klass->plugin, instance, &lv2_map,
+      tmp_dir, dir, dir, dir, get_port_value, user_data,
+      LV2_STATE_IS_POD | LV2_STATE_IS_PORTABLE, NULL);
+
+  lilv_state_set_label (state, name);
+
+  res = lilv_state_save (world, &lv2_map, &lv2_unmap, state, /*uri */ NULL, dir,
+      filename) != 0;
+
+  /* reload bundle into the world */
+  bundle_dir = lilv_new_file_uri (world, NULL, dir);
+  lilv_world_unload_bundle (world, bundle_dir);
+  lilv_world_load_bundle (world, bundle_dir);
+  lilv_node_free (bundle_dir);
+
+#ifdef HAVE_LILV_0_22
+  state_uri = lilv_state_get_uri (state);
+#else
+  filepath = g_build_filename (dir, filename, NULL);
+  state_uri = lilv_new_uri (world, filepath);
+  g_free (filepath);
+#endif
+  lilv_world_load_resource (world, state_uri);
+  g_hash_table_insert (lv2->presets, g_strdup (name),
+      lilv_node_duplicate (state_uri));
+#ifndef HAVE_LILV_0_22
+  lilv_node_free ((LilvNode *) state_uri);
+#endif
+
+  lilv_state_free (state);
+  if (!lv2->instance) {
+    lilv_instance_free (instance);
+  }
+
+  g_free (tmp_dir);
+  g_free (dir);
+  g_free (bundle);
+  g_free (filename);
+
+  return res;
+}
+
+#if 0
+gboolean
+gst_lv2_rename_preset (GstLV2 * lv2, GstObject * obj,
+    const gchar * old_name, const gchar * new_name)
+{
+  /* need to relabel the preset */
+  return FALSE;
+}
+#endif
+
+gboolean
+gst_lv2_delete_preset (GstLV2 * lv2, GstObject * obj, const gchar * name)
+{
+#ifdef HAVE_LILV_0_22
+  LilvNode *preset = g_hash_table_lookup (lv2->presets, name);
+  LilvState *state = lilv_state_new_from_world (world, &lv2_map, preset);
+
+  lilv_world_unload_resource (world, lilv_state_get_uri (state));
+  lilv_state_delete (world, state);
+  lilv_state_free (state);
+#endif
+  g_hash_table_remove (lv2->presets, name);
+
+  return FALSE;
+}
+
+/* api helpers */
+
+void
+gst_lv2_init (GstLV2 * lv2, GstLV2Class * lv2_class)
+{
+  lv2->klass = lv2_class;
+
+  lv2->instance = NULL;
+  lv2->activated = FALSE;
+
+  lv2->ports.control.in = g_new0 (gfloat, lv2_class->control_in_ports->len);
+  lv2->ports.control.out = g_new0 (gfloat, lv2_class->control_out_ports->len);
+}
+
+void
+gst_lv2_finalize (GstLV2 * lv2)
+{
+  if (lv2->presets) {
+    g_hash_table_destroy (lv2->presets);
+  }
+  g_free (lv2->ports.control.in);
+  g_free (lv2->ports.control.out);
+}
+
+gboolean
+gst_lv2_setup (GstLV2 * lv2, unsigned long rate)
+{
+  GstLV2Class *lv2_class = lv2->klass;
+  GstLV2Port *port;
+  GArray *ports;
+  gint i;
+
+  if (lv2->instance)
+    lilv_instance_free (lv2->instance);
+
+  if (!(lv2->instance =
+          lilv_plugin_instantiate (lv2_class->plugin, rate, lv2_features)))
+    return FALSE;
+
+  /* connect the control ports */
+  ports = lv2_class->control_in_ports;
+  for (i = 0; i < ports->len; i++) {
+    port = &g_array_index (ports, GstLV2Port, i);
+    if (port->type != GST_LV2_PORT_CONTROL)
+      continue;
+    lilv_instance_connect_port (lv2->instance, port->index,
+        &(lv2->ports.control.in[i]));
+  }
+  ports = lv2_class->control_out_ports;
+  for (i = 0; i < ports->len; i++) {
+    port = &g_array_index (ports, GstLV2Port, i);
+    if (port->type != GST_LV2_PORT_CONTROL)
+      continue;
+    lilv_instance_connect_port (lv2->instance, port->index,
+        &(lv2->ports.control.out[i]));
+  }
+
+  lilv_instance_activate (lv2->instance);
+  lv2->activated = TRUE;
+
+  return TRUE;
+}
+
+gboolean
+gst_lv2_cleanup (GstLV2 * lv2, GstObject * obj)
+{
+  if (lv2->activated == FALSE) {
+    GST_ERROR_OBJECT (obj, "Deactivating but LV2 plugin not activated");
+    return TRUE;
+  }
+
+  if (lv2->instance == NULL) {
+    GST_ERROR_OBJECT (obj, "Deactivating but no LV2 plugin set");
+    return TRUE;
+  }
+
+  GST_DEBUG_OBJECT (obj, "deactivating");
+
+  lilv_instance_deactivate (lv2->instance);
+
+  lv2->activated = FALSE;
+
+  lilv_instance_free (lv2->instance);
+  lv2->instance = NULL;
+
+  return TRUE;
+}
+
+void
+gst_lv2_object_set_property (GstLV2 * lv2, GObject * object,
+    guint prop_id, const GValue * value, GParamSpec * pspec)
+{
+  GType base, type = pspec->value_type;
+  /* remember, properties have an offset */
+  prop_id -= lv2->klass->properties;
+
+  /* only input ports */
+  g_return_if_fail (prop_id < lv2->klass->control_in_ports->len);
+
+  while ((base = g_type_parent (type)))
+    type = base;
+
+  /* now see what type it is */
+  switch (type) {
+    case G_TYPE_BOOLEAN:
+      lv2->ports.control.in[prop_id] =
+          g_value_get_boolean (value) ? 0.0f : 1.0f;
+      break;
+    case G_TYPE_INT:
+      lv2->ports.control.in[prop_id] = g_value_get_int (value);
+      break;
+    case G_TYPE_FLOAT:
+      lv2->ports.control.in[prop_id] = g_value_get_float (value);
+      break;
+    case G_TYPE_ENUM:
+      lv2->ports.control.in[prop_id] = g_value_get_enum (value);
+      break;
+    default:
+      GST_WARNING_OBJECT (object, "unhandled type: %s",
+          g_type_name (pspec->value_type));
+      g_assert_not_reached ();
+  }
+}
+
+void
+gst_lv2_object_get_property (GstLV2 * lv2, GObject * object,
+    guint prop_id, GValue * value, GParamSpec * pspec)
+{
+  GType base, type = pspec->value_type;
+  gfloat *controls;
+
+  /* remember, properties have an offset */
+  prop_id -= lv2->klass->properties;
+
+  if (prop_id < lv2->klass->control_in_ports->len) {
+    controls = lv2->ports.control.in;
+  } else if (prop_id < lv2->klass->control_in_ports->len +
+      lv2->klass->control_out_ports->len) {
+    controls = lv2->ports.control.out;
+    prop_id -= lv2->klass->control_in_ports->len;
+  } else {
+    g_return_if_reached ();
+  }
+
+  while ((base = g_type_parent (type)))
+    type = base;
+
+  /* now see what type it is */
+  switch (type) {
+    case G_TYPE_BOOLEAN:
+      g_value_set_boolean (value, controls[prop_id] > 0.0f);
+      break;
+    case G_TYPE_INT:
+      g_value_set_int (value, CLAMP (controls[prop_id], G_MININT, G_MAXINT));
+      break;
+    case G_TYPE_FLOAT:
+      g_value_set_float (value, controls[prop_id]);
+      break;
+    case G_TYPE_ENUM:
+      g_value_set_enum (value, (gint) controls[prop_id]);
+      break;
+    default:
+      GST_WARNING_OBJECT (object, "unhandled type: %s",
+          g_type_name (pspec->value_type));
+      g_return_if_reached ();
+  }
+}
+
+
+static gchar *
+gst_lv2_class_get_param_name (GstLV2Class * klass, GObjectClass * object_class,
+    const gchar * port_symbol)
+{
+  gchar *ret = g_strdup (port_symbol);
+
+  /* this is the same thing that param_spec_* will do */
+  g_strcanon (ret, G_CSET_A_2_Z G_CSET_a_2_z G_CSET_DIGITS "-", '-');
+  /* satisfy glib2 (argname[0] must be [A-Za-z]) */
+  if (!((ret[0] >= 'a' && ret[0] <= 'z') || (ret[0] >= 'A' && ret[0] <= 'Z'))) {
+    gchar *tempstr = ret;
+
+    ret = g_strconcat ("param-", ret, NULL);
+    g_free (tempstr);
+  }
+
+  /* check for duplicate property names */
+  if (g_object_class_find_property (object_class, ret)) {
+    gint n = 1;
+    gchar *nret = g_strdup_printf ("%s-%d", ret, n++);
+
+    while (g_object_class_find_property (object_class, nret)) {
+      g_free (nret);
+      nret = g_strdup_printf ("%s-%d", ret, n++);
+    }
+    g_free (ret);
+    ret = nret;
+  }
+
+  GST_DEBUG ("built property name '%s' from port name '%s'", ret, port_symbol);
+  return ret;
+}
+
+static gchar *
+gst_lv2_class_get_param_nick (GstLV2Class * klass, const LilvPort * port)
+{
+  const LilvPlugin *lv2plugin = klass->plugin;
+
+  return g_strdup (lilv_node_as_string (lilv_port_get_name (lv2plugin, port)));
+}
+
+static int
+enum_val_cmp (GEnumValue * p1, GEnumValue * p2)
+{
+  return p1->value - p2->value;
+}
+
+static GParamSpec *
+gst_lv2_class_get_param_spec (GstLV2Class * klass, GObjectClass * object_class,
+    gint portnum)
+{
+  const LilvPlugin *lv2plugin = klass->plugin;
+  const LilvPort *port = lilv_plugin_get_port_by_index (lv2plugin, portnum);
+  LilvNode *lv2def, *lv2min, *lv2max;
+  LilvScalePoints *points;
+  GParamSpec *ret;
+  gchar *name, *nick;
+  gint perms;
+  gfloat lower = 0.0f, upper = 1.0f, def = 0.0f;
+  GType enum_type = G_TYPE_INVALID;
+  const gchar *port_symbol =
+      lilv_node_as_string (lilv_port_get_symbol (lv2plugin, port));
+
+  nick = gst_lv2_class_get_param_nick (klass, port);
+  name = gst_lv2_class_get_param_name (klass, object_class, port_symbol);
+
+  GST_DEBUG ("%s trying port %s : %s",
+      lilv_node_as_string (lilv_plugin_get_uri (lv2plugin)), name, nick);
+
+  perms = G_PARAM_READABLE;
+  if (lilv_port_is_a (lv2plugin, port, input_class))
+    perms |= G_PARAM_WRITABLE | G_PARAM_CONSTRUCT;
+  if (lilv_port_is_a (lv2plugin, port, control_class) ||
+      lilv_port_is_a (lv2plugin, port, cv_class))
+    perms |= GST_PARAM_CONTROLLABLE;
+
+  if (lilv_port_has_property (lv2plugin, port, toggled_prop)) {
+    ret = g_param_spec_boolean (name, nick, nick, FALSE, perms);
+    goto done;
+  }
+
+  lilv_port_get_range (lv2plugin, port, &lv2def, &lv2min, &lv2max);
+
+  if (lv2def)
+    def = lilv_node_as_float (lv2def);
+  if (lv2min)
+    lower = lilv_node_as_float (lv2min);
+  if (lv2max)
+    upper = lilv_node_as_float (lv2max);
+
+  lilv_node_free (lv2def);
+  lilv_node_free (lv2min);
+  lilv_node_free (lv2max);
+
+  if (def < lower) {
+    if (lv2def && lv2min) {
+      GST_WARNING ("%s:%s has lower bound %f > default %f",
+          lilv_node_as_string (lilv_plugin_get_uri (lv2plugin)), name, lower,
+          def);
+    }
+    lower = def;
+  }
+
+  if (def > upper) {
+    if (lv2def && lv2max) {
+      GST_WARNING ("%s:%s has upper bound %f < default %f",
+          lilv_node_as_string (lilv_plugin_get_uri (lv2plugin)), name, upper,
+          def);
+    }
+    upper = def;
+  }
+
+  if ((points = lilv_port_get_scale_points (lv2plugin, port))) {
+    GEnumValue *enums;
+    LilvIter *i;
+    gint j = 0, n, def_ix = -1;
+
+    n = lilv_scale_points_size (points);
+    enums = g_new (GEnumValue, n + 1);
+
+    for (i = lilv_scale_points_begin (points);
+        !lilv_scale_points_is_end (points, i);
+        i = lilv_scale_points_next (points, i)) {
+      const LilvScalePoint *point = lilv_scale_points_get (points, i);
+      gfloat v = lilv_node_as_float (lilv_scale_point_get_value (point));
+      const gchar *l = lilv_node_as_string (lilv_scale_point_get_label (point));
+
+      /* check if value can be safely converted to int */
+      if (v != (gint) v) {
+        GST_INFO ("%s:%s non integer scale point %lf, %s",
+            lilv_node_as_string (lilv_plugin_get_uri (lv2plugin)), name, v, l);
+        break;
+      }
+      if (v == def) {
+        def_ix = j;
+      }
+      enums[j].value = (gint) v;
+      enums[j].value_nick = enums[j].value_name = l;
+      GST_LOG ("%s:%s enum: %lf, %s",
+          lilv_node_as_string (lilv_plugin_get_uri (lv2plugin)), name, v, l);
+      j++;
+    }
+    if (j == n) {
+      gchar *type_name;
+
+      /* scalepoints are not sorted */
+      qsort (enums, n, sizeof (GEnumValue),
+          (int (*)(const void *, const void *)) enum_val_cmp);
+
+      if (def_ix == -1) {
+        if (lv2def) {
+          GST_WARNING ("%s:%s has default %f outside of scalepoints",
+              lilv_node_as_string (lilv_plugin_get_uri (lv2plugin)), name, def);
+        }
+        def = enums[0].value;
+      }
+      /* terminator */
+      enums[j].value = 0;
+      enums[j].value_name = enums[j].value_nick = NULL;
+
+      type_name = g_strdup_printf ("%s%s",
+          g_type_name (G_TYPE_FROM_CLASS (object_class)), name);
+      enum_type = g_enum_register_static (type_name, enums);
+      g_free (type_name);
+    } else {
+      g_free (enums);
+    }
+    lilv_scale_points_free (points);
+  }
+
+  if (enum_type != G_TYPE_INVALID) {
+    ret = g_param_spec_enum (name, nick, nick, enum_type, def, perms);
+  } else if (lilv_port_has_property (lv2plugin, port, integer_prop))
+    ret = g_param_spec_int (name, nick, nick, lower, upper, def, perms);
+  else
+    ret = g_param_spec_float (name, nick, nick, lower, upper, def, perms);
+
+done:
+  // build a map of (port_symbol to ret->name) for extensions
+  g_hash_table_insert (klass->sym_to_name, (gchar *) port_symbol,
+      (gchar *) ret->name);
+
+  g_free (name);
+  g_free (nick);
+
+  return ret;
+}
+
+void
+gst_lv2_class_install_properties (GstLV2Class * lv2_class,
+    GObjectClass * object_class, guint offset)
+{
+  GParamSpec *p;
+  guint i;
+
+  lv2_class->properties = offset;
+
+  for (i = 0; i < lv2_class->control_in_ports->len; i++, offset++) {
+    p = gst_lv2_class_get_param_spec (lv2_class, object_class,
+        g_array_index (lv2_class->control_in_ports, GstLV2Port, i).index);
+
+    g_object_class_install_property (object_class, offset, p);
+  }
+
+  for (i = 0; i < lv2_class->control_out_ports->len; i++, offset++) {
+    p = gst_lv2_class_get_param_spec (lv2_class, object_class,
+        g_array_index (lv2_class->control_out_ports, GstLV2Port, i).index);
+
+    g_object_class_install_property (object_class, offset, p);
+  }
+}
+
+void
+gst_lv2_element_class_set_metadata (GstLV2Class * lv2_class,
+    GstElementClass * elem_class, const gchar * lv2_class_tags)
+{
+  const LilvPlugin *lv2plugin = lv2_class->plugin;
+  LilvNode *val;
+  const LilvPluginClass *lv2plugin_class;
+  const LilvNode *cval;
+  gchar *longname, *author, *class_tags = NULL;
+
+  val = lilv_plugin_get_name (lv2plugin);
+  if (val) {
+    longname = g_strdup (lilv_node_as_string (val));
+    lilv_node_free (val);
+  } else {
+    longname = g_strdup ("no description available");
+  }
+  val = lilv_plugin_get_author_name (lv2plugin);
+  if (val) {
+    // TODO: check lilv_plugin_get_author_email(lv2plugin);
+    author = g_strdup (lilv_node_as_string (val));
+    lilv_node_free (val);
+  } else {
+    author = g_strdup ("no author available");
+  }
+
+  // TODO: better description from:
+  // lilv_plugin_get_author_homepage() and lilv_plugin_get_project()
+
+  lv2plugin_class = lilv_plugin_get_class (lv2plugin);
+  cval = lilv_plugin_class_get_label (lv2plugin_class);
+  if (cval) {
+    class_tags = g_strconcat (lv2_class_tags, "/", lilv_node_as_string (cval),
+        NULL);
+  }
+
+  gst_element_class_set_metadata (elem_class, longname,
+      (class_tags ? class_tags : lv2_class_tags), longname, author);
+  g_free (longname);
+  g_free (author);
+  g_free (class_tags);
+}
+
+
+void
+gst_lv2_class_init (GstLV2Class * lv2_class, GType type)
+{
+  const GValue *value =
+      gst_structure_get_value (lv2_meta_all, g_type_name (type));
+  GstStructure *lv2_meta = g_value_get_boxed (value);
+  const LilvPlugin *lv2plugin;
+  guint j, in_pad_index = 0, out_pad_index = 0;
+  const LilvPlugins *plugins = lilv_world_get_all_plugins (world);
+  LilvNode *plugin_uri;
+  const gchar *element_uri;
+
+  GST_DEBUG ("LV2 initializing class");
+
+  element_uri = gst_structure_get_string (lv2_meta, "element-uri");
+  plugin_uri = lilv_new_uri (world, element_uri);
+  g_assert (plugin_uri);
+  lv2plugin = lilv_plugins_get_by_uri (plugins, plugin_uri);
+  g_assert (lv2plugin);
+  lv2_class->plugin = lv2plugin;
+  lilv_node_free (plugin_uri);
+
+  lv2_class->sym_to_name = g_hash_table_new (g_str_hash, g_str_equal);
+
+  lv2_class->in_group.ports = g_array_new (FALSE, TRUE, sizeof (GstLV2Port));
+  lv2_class->out_group.ports = g_array_new (FALSE, TRUE, sizeof (GstLV2Port));
+  lv2_class->control_in_ports = g_array_new (FALSE, TRUE, sizeof (GstLV2Port));
+  lv2_class->control_out_ports = g_array_new (FALSE, TRUE, sizeof (GstLV2Port));
+
+  /* find ports and groups */
+  for (j = 0; j < lilv_plugin_get_num_ports (lv2plugin); j++) {
+    const LilvPort *port = lilv_plugin_get_port_by_index (lv2plugin, j);
+    const gboolean is_input = lilv_port_is_a (lv2plugin, port, input_class);
+    const gboolean is_optional = lilv_port_has_property (lv2plugin, port,
+        optional_pred);
+    GstLV2Port desc = { j, GST_LV2_PORT_AUDIO, -1, };
+    LilvNodes *lv2group = lilv_port_get (lv2plugin, port, group_pred);
+    /* FIXME Handle channels positionning
+     * GstAudioChannelPosition position = GST_AUDIO_CHANNEL_POSITION_INVALID; */
+
+    if (lv2group) {
+      /* port is part of a group */
+      const gchar *group_uri = lilv_node_as_uri (lv2group);
+      GstLV2Group *group = is_input
+          ? &lv2_class->in_group : &lv2_class->out_group;
+
+      if (group->uri == NULL) {
+        group->uri = g_strdup (group_uri);
+        group->pad = is_input ? in_pad_index++ : out_pad_index++;
+        group->ports = g_array_new (FALSE, TRUE, sizeof (GstLV2Port));
+      }
+
+      /* FIXME Handle channels positionning
+         position = GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT;
+         sub_values = lilv_port_get_value (lv2plugin, port, designation_pred);
+         if (lilv_nodes_size (sub_values) > 0) {
+         LilvNode *role = lilv_nodes_get_at (sub_values, 0);
+         position = gst_lv2_filter_role_to_position (role);
+         }
+         lilv_nodes_free (sub_values);
+
+         if (position != GST_AUDIO_CHANNEL_POSITION_INVALID) {
+         desc.position = position;
+         } */
+
+      g_array_append_val (group->ports, desc);
+    } else {
+      /* port is not part of a group, or it is part of a group but that group
+       * is illegal so we just ignore it */
+      if (lilv_port_is_a (lv2plugin, port, audio_class)) {
+        if (is_input) {
+          desc.pad = in_pad_index++;
+          g_array_append_val (lv2_class->in_group.ports, desc);
+        } else {
+          desc.pad = out_pad_index++;
+          g_array_append_val (lv2_class->out_group.ports, desc);
+        }
+      } else if (lilv_port_is_a (lv2plugin, port, control_class)) {
+        desc.type = GST_LV2_PORT_CONTROL;
+        if (is_input) {
+          lv2_class->num_control_in++;
+          g_array_append_val (lv2_class->control_in_ports, desc);
+        } else {
+          lv2_class->num_control_out++;
+          g_array_append_val (lv2_class->control_out_ports, desc);
+        }
+      } else if (lilv_port_is_a (lv2plugin, port, cv_class)) {
+        desc.type = GST_LV2_PORT_CV;
+        if (is_input) {
+          lv2_class->num_cv_in++;
+          g_array_append_val (lv2_class->control_in_ports, desc);
+        } else {
+          lv2_class->num_cv_out++;
+          g_array_append_val (lv2_class->control_out_ports, desc);
+        }
+      } else if (lilv_port_is_a (lv2plugin, port, event_class)) {
+        LilvNodes *supported = lilv_port_get_value (lv2plugin, port,
+            supports_event_pred);
+
+        GST_INFO ("%s: unhandled event port %d: %s, optional=%d, input=%d",
+            element_uri, j,
+            lilv_node_as_string (lilv_port_get_symbol (lv2plugin, port)),
+            is_optional, is_input);
+
+        if (lilv_nodes_size (supported) > 0) {
+          LilvIter *i;
+
+          for (i = lilv_nodes_begin (supported);
+              !lilv_nodes_is_end (supported, i);
+              i = lilv_nodes_next (supported, i)) {
+            const LilvNode *value = lilv_nodes_get (supported, i);
+            GST_INFO ("  type = %s", lilv_node_as_uri (value));
+          }
+        }
+        lilv_nodes_free (supported);
+        // FIXME: handle them
+      } else {
+        /* unhandled port type */
+        const LilvNodes *classes = lilv_port_get_classes (lv2plugin, port);
+        GST_INFO ("%s: unhandled port %d: %s, optional=%d, input=%d",
+            element_uri, j,
+            lilv_node_as_string (lilv_port_get_symbol (lv2plugin, port)),
+            is_optional, is_input);
+        if (classes && lilv_nodes_size (classes) > 0) {
+          LilvIter *i;
+
+          // FIXME: we getting the same classe multiple times
+          for (i = lilv_nodes_begin (classes);
+              !lilv_nodes_is_end (classes, i);
+              i = lilv_nodes_next (classes, i)) {
+            const LilvNode *value = lilv_nodes_get (classes, i);
+            GST_INFO ("  class = %s", lilv_node_as_uri (value));
+          }
+        }
+      }
+    }
+  }
+}
+
+void
+gst_lv2_class_finalize (GstLV2Class * lv2_class)
+{
+  GST_DEBUG ("LV2 finalizing class");
+
+  g_hash_table_destroy (lv2_class->sym_to_name);
+
+  g_array_free (lv2_class->in_group.ports, TRUE);
+  lv2_class->in_group.ports = NULL;
+  g_array_free (lv2_class->out_group.ports, TRUE);
+  lv2_class->out_group.ports = NULL;
+  g_array_free (lv2_class->control_in_ports, TRUE);
+  lv2_class->control_in_ports = NULL;
+  g_array_free (lv2_class->control_out_ports, TRUE);
+  lv2_class->control_out_ports = NULL;
+}
diff --git a/ext/lv2/gstlv2utils.h b/ext/lv2/gstlv2utils.h
new file mode 100644
index 0000000..b179e36
--- /dev/null
+++ b/ext/lv2/gstlv2utils.h
@@ -0,0 +1,134 @@
+/* GStreamer
+ * Copyright (C) 2016 Thibault Saunier <thibault.saunier@collabora.com>
+ *               2016 Stefan Sauer <ensonic@users.sf.net>
+ *
+ * gstlv2utils.h: Header for LV2 plugin utils
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_LV2_UTILS_H__
+#define __GST_LV2_UTILS_H__
+
+#include <gst/gst.h>
+#include <gst/audio/audio.h>
+#include <gst/audio/audio-channels.h>
+
+#include <lilv/lilv.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GstLV2Group GstLV2Group;
+typedef struct _GstLV2Port GstLV2Port;
+
+typedef struct _GstLV2 GstLV2;
+typedef struct _GstLV2Class GstLV2Class;
+
+struct _GstLV2Group
+{
+  gchar *uri; /**< RDF resource (URI or blank node) */
+  guint pad; /**< Gst pad index */
+  gchar *symbol; /**< Gst pad name / LV2 group symbol */
+  GArray *ports; /**< Array of GstLV2Port */
+  /* FIXME: not set as of now */
+  gboolean has_roles; /**< TRUE iff all ports have a known role */
+};
+
+typedef enum {
+  GST_LV2_PORT_AUDIO = 0,
+  GST_LV2_PORT_CONTROL,
+  GST_LV2_PORT_CV
+} GstLV2PortType;
+
+struct _GstLV2Port
+{
+  gint index; /**< LV2 port index (on LV2 plugin) */
+  GstLV2PortType type; /**< Port type */
+  /**< Gst pad index (iff not part of a group), only for audio ports */
+  gint pad;
+  /* FIXME: not set as of now */
+  LilvNode *role; /**< Channel position / port role */
+  GstAudioChannelPosition position; /**< Channel position */
+};
+
+struct _GstLV2
+{
+  GstLV2Class *klass;
+
+  LilvInstance *instance;
+  GHashTable *presets;
+
+  gboolean activated;
+  unsigned long rate;
+
+  struct
+  {
+    struct
+    {
+      gfloat *in;
+      gfloat *out;
+    } control;
+  } ports;
+};
+
+struct _GstLV2Class
+{
+  guint properties;
+
+  const LilvPlugin *plugin;
+  GHashTable *sym_to_name;
+
+  gint num_control_in, num_control_out;
+  gint num_cv_in, num_cv_out;
+
+  GstLV2Group in_group; /**< Array of GstLV2Group */
+  GstLV2Group out_group; /**< Array of GstLV2Group */
+  GArray *control_in_ports; /**< Array of GstLV2Port */
+  GArray *control_out_ports; /**< Array of GstLV2Port */
+};
+
+gboolean gst_lv2_check_required_features (const LilvPlugin * lv2plugin);
+
+void gst_lv2_host_init (void);
+
+gchar **gst_lv2_get_preset_names (GstLV2 * lv2, GstObject * obj);
+gboolean gst_lv2_load_preset (GstLV2 * lv2, GstObject * obj, const gchar * name);
+gboolean gst_lv2_save_preset (GstLV2 * lv2, GstObject * obj, const gchar * name);
+gboolean gst_lv2_delete_preset (GstLV2 * lv2, GstObject * obj, const gchar * name);
+
+
+void gst_lv2_init (GstLV2 * lv2, GstLV2Class * lv2_class);
+void gst_lv2_finalize (GstLV2 * lv2);
+
+gboolean gst_lv2_setup (GstLV2 * lv2, unsigned long rate);
+gboolean gst_lv2_cleanup (GstLV2 * lv2, GstObject *obj);
+
+void gst_lv2_object_set_property (GstLV2 * lv2, GObject * object,
+    guint prop_id, const GValue * value, GParamSpec * pspec);
+void gst_lv2_object_get_property (GstLV2 * lv2, GObject * object,
+    guint prop_id, GValue * value, GParamSpec * pspec);
+
+void gst_lv2_class_install_properties (GstLV2Class * lv2_class,
+    GObjectClass * object_class, guint offset);
+void gst_lv2_element_class_set_metadata (GstLV2Class * lv2_class,
+    GstElementClass * elem_class, const gchar * lv2_class_tags);
+
+void gst_lv2_class_init (GstLV2Class * lv2_class, GType type);
+void gst_lv2_class_finalize (GstLV2Class * lv2_class);
+
+G_END_DECLS
+
+#endif /* __GST_LV2_UTILS_H__ */
diff --git a/ext/mimic/Makefile.in b/ext/mimic/Makefile.in
index 75d2f6c..2289d2c 100644
--- a/ext/mimic/Makefile.in
+++ b/ext/mimic/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/mimic/gstmimdec.c b/ext/mimic/gstmimdec.c
index c7ad022..4ad38f9 100644
--- a/ext/mimic/gstmimdec.c
+++ b/ext/mimic/gstmimdec.c
@@ -80,10 +80,8 @@
   gstelement_class = (GstElementClass *) klass;
   gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_mim_dec_change_state);
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "Mimic Decoder",
diff --git a/ext/mimic/gstmimenc.c b/ext/mimic/gstmimenc.c
index c94c411..3232ca5 100644
--- a/ext/mimic/gstmimenc.c
+++ b/ext/mimic/gstmimenc.c
@@ -122,10 +122,8 @@
           " when no data is received",
           FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
   gst_element_class_set_static_metadata (gstelement_class,
       "Mimic Encoder",
       "Codec/Encoder/Video",
diff --git a/ext/modplug/Makefile.in b/ext/modplug/Makefile.in
index ebd6793..b34fa04 100644
--- a/ext/modplug/Makefile.in
+++ b/ext/modplug/Makefile.in
@@ -302,6 +302,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -323,6 +325,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -372,6 +376,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -517,6 +523,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -643,8 +651,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,8 +693,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/modplug/gstmodplug.cc b/ext/modplug/gstmodplug.cc
index ff3641d..b5fbcb2 100644
--- a/ext/modplug/gstmodplug.cc
+++ b/ext/modplug/gstmodplug.cc
@@ -205,10 +205,8 @@
 
   gstelement_class->change_state = gst_modplug_change_state;
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&modplug_sink_template_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&modplug_src_template_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &modplug_sink_template_factory);
+  gst_element_class_add_static_pad_template (gstelement_class, &modplug_src_template_factory);
 
   gst_element_class_set_static_metadata (gstelement_class, "ModPlug",
       "Codec/Decoder/Audio", "Module decoder based on modplug engine",
diff --git a/ext/mpeg2enc/Makefile.in b/ext/mpeg2enc/Makefile.in
index 56c7db7..7506150 100644
--- a/ext/mpeg2enc/Makefile.in
+++ b/ext/mpeg2enc/Makefile.in
@@ -306,6 +306,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -327,6 +329,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -376,6 +380,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -521,6 +527,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -647,8 +655,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,8 +697,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/mpeg2enc/gstmpeg2enc.cc b/ext/mpeg2enc/gstmpeg2enc.cc
index 5c686cc..b974826 100644
--- a/ext/mpeg2enc/gstmpeg2enc.cc
+++ b/ext/mpeg2enc/gstmpeg2enc.cc
@@ -126,10 +126,8 @@
 
   element_class->change_state = GST_DEBUG_FUNCPTR (gst_mpeg2enc_change_state);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (element_class, &src_template);
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
 
   gst_element_class_set_static_metadata (element_class,
       "mpeg2enc video encoder", "Codec/Encoder/Video",
diff --git a/ext/mplex/Makefile.in b/ext/mplex/Makefile.in
index cfcd330..2eee97f 100644
--- a/ext/mplex/Makefile.in
+++ b/ext/mplex/Makefile.in
@@ -306,6 +306,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -327,6 +329,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -376,6 +380,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -521,6 +527,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -647,8 +655,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,8 +697,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/mplex/gstmplex.cc b/ext/mplex/gstmplex.cc
index ae50bea..7f7b4ec 100644
--- a/ext/mplex/gstmplex.cc
+++ b/ext/mplex/gstmplex.cc
@@ -149,12 +149,9 @@
       "Ronald Bultje <rbultje@ronald.bitfreak.net>\n"
       "Mark Nauwelaerts <mnauw@users.sourceforge.net>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_templ));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&video_sink_templ));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&audio_sink_templ));
+  gst_element_class_add_static_pad_template (element_class, &src_templ);
+  gst_element_class_add_static_pad_template (element_class, &video_sink_templ);
+  gst_element_class_add_static_pad_template (element_class, &audio_sink_templ);
 }
 
 static void
@@ -679,7 +676,8 @@
     g_free (padname);
 
     /* may now be up to us to get things going */
-    gst_mplex_start_task (mplex);
+    if (GST_STATE (element) > GST_STATE_READY)
+      gst_mplex_start_task (mplex);
     GST_MPLEX_MUTEX_UNLOCK (mplex);
   }
 }
diff --git a/ext/musepack/Makefile.in b/ext/musepack/Makefile.in
index fc7c2f1..ade1322 100644
--- a/ext/musepack/Makefile.in
+++ b/ext/musepack/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/musepack/gstmusepackdec.c b/ext/musepack/gstmusepackdec.c
index bf08b1d..5b68200 100644
--- a/ext/musepack/gstmusepackdec.c
+++ b/ext/musepack/gstmusepackdec.c
@@ -19,10 +19,6 @@
  * Boston, MA 02110-1301, USA.
  */
 
-/* FIXME 0.11: suppress warnings for deprecated API such as GStaticRecMutex
- * with newer GLib versions (>= 2.31.0) */
-#define GLIB_DISABLE_DEPRECATION_WARNINGS
-
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -44,66 +40,67 @@
     );
 
 #ifdef MPC_FIXED_POINT
-#define BASE_CAPS \
-  "audio/x-raw-int, " \
-    "signed = (bool) TRUE, " \
-    "width = (int) 32, " \
-    "depth = (int) 32"
+# if G_BYTE_ORDER == G_LITTLE_ENDIAN
+#  define GST_MPC_FORMAT "S32LE"
+# else
+#  define GST_MPC_FORMAT "S32BE"
+# endif
 #else
-#define BASE_CAPS \
-  "audio/x-raw-float, " \
-    "width = (int) 32"
+# if G_BYTE_ORDER == G_LITTLE_ENDIAN
+#  define GST_MPC_FORMAT "F32LE"
+# else
+#  define GST_MPC_FORMAT "F32BE"
+# endif
 #endif
 
 static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
     GST_PAD_SRC,
     GST_PAD_ALWAYS,
-    GST_STATIC_CAPS (BASE_CAPS ", "
-        "endianness = (int) BYTE_ORDER, "
+    GST_STATIC_CAPS ("audio/x-raw, "
+        "format = (string) " GST_MPC_FORMAT ", "
+        "layout = (string) interleaved, "
         "rate = (int) [ 8000, 96000 ], " "channels = (int) [ 1, 2 ]")
     );
 
 static void gst_musepackdec_dispose (GObject * obj);
 
-static gboolean gst_musepackdec_src_event (GstPad * pad, GstEvent * event);
-static const GstQueryType *gst_musepackdec_get_src_query_types (GstPad * pad);
-static gboolean gst_musepackdec_src_query (GstPad * pad, GstQuery * query);
-static gboolean gst_musepackdec_sink_activate (GstPad * sinkpad);
-static gboolean
-gst_musepackdec_sink_activate_pull (GstPad * sinkpad, gboolean active);
+static gboolean gst_musepackdec_src_event (GstPad * pad, GstObject * parent,
+    GstEvent * event);
+static gboolean gst_musepackdec_src_query (GstPad * pad, GstObject * parent,
+    GstQuery * query);
+static gboolean gst_musepackdec_sink_activate (GstPad * sinkpad,
+    GstObject * parent);
+static gboolean gst_musepackdec_sink_activate_mode (GstPad * sinkpad,
+    GstObject * parent, GstPadMode mode, gboolean active);
 
 static void gst_musepackdec_loop (GstPad * sinkpad);
 static GstStateChangeReturn
 gst_musepackdec_change_state (GstElement * element, GstStateChange transition);
 
-GST_BOILERPLATE (GstMusepackDec, gst_musepackdec, GstElement, GST_TYPE_ELEMENT);
-
-static void
-gst_musepackdec_base_init (gpointer klass)
-{
-  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
-
-  gst_element_class_set_static_metadata (element_class, "Musepack decoder",
-      "Codec/Decoder/Audio",
-      "Musepack decoder", "Ronald Bultje <rbultje@ronald.bitfreak.net>");
-}
+#define parent_class gst_musepackdec_parent_class
+G_DEFINE_TYPE (GstMusepackDec, gst_musepackdec, GST_TYPE_ELEMENT);
 
 static void
 gst_musepackdec_class_init (GstMusepackDecClass * klass)
 {
-  GST_ELEMENT_CLASS (klass)->change_state =
-      GST_DEBUG_FUNCPTR (gst_musepackdec_change_state);
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
 
-  G_OBJECT_CLASS (klass)->dispose = GST_DEBUG_FUNCPTR (gst_musepackdec_dispose);
+  gst_element_class_add_static_pad_template (element_class, &src_template);
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
+
+  gst_element_class_set_static_metadata (element_class, "Musepack decoder",
+      "Codec/Decoder/Audio",
+      "Musepack decoder", "Ronald Bultje <rbultje@ronald.bitfreak.net>");
+
+  gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_musepackdec_dispose);
+
+  element_class->change_state =
+      GST_DEBUG_FUNCPTR (gst_musepackdec_change_state);
 }
 
 static void
-gst_musepackdec_init (GstMusepackDec * musepackdec, GstMusepackDecClass * klass)
+gst_musepackdec_init (GstMusepackDec * musepackdec)
 {
   musepackdec->offset = 0;
   musepackdec->rate = 0;
@@ -118,8 +115,8 @@
       gst_pad_new_from_static_template (&sink_template, "sink");
   gst_pad_set_activate_function (musepackdec->sinkpad,
       GST_DEBUG_FUNCPTR (gst_musepackdec_sink_activate));
-  gst_pad_set_activatepull_function (musepackdec->sinkpad,
-      GST_DEBUG_FUNCPTR (gst_musepackdec_sink_activate_pull));
+  gst_pad_set_activatemode_function (musepackdec->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_musepackdec_sink_activate_mode));
   gst_element_add_pad (GST_ELEMENT (musepackdec), musepackdec->sinkpad);
 
   musepackdec->srcpad = gst_pad_new_from_static_template (&src_template, "src");
@@ -127,8 +124,6 @@
       GST_DEBUG_FUNCPTR (gst_musepackdec_src_event));
   gst_pad_set_query_function (musepackdec->srcpad,
       GST_DEBUG_FUNCPTR (gst_musepackdec_src_query));
-  gst_pad_set_query_type_function (musepackdec->srcpad,
-      GST_DEBUG_FUNCPTR (gst_musepackdec_get_src_query_types));
   gst_pad_use_fixed_caps (musepackdec->srcpad);
   gst_element_add_pad (GST_ELEMENT (musepackdec), musepackdec->srcpad);
 }
@@ -157,22 +152,19 @@
 static void
 gst_musepackdec_send_newsegment (GstMusepackDec * dec)
 {
-  GstSegment *s = &dec->segment;
-  gint64 stop_time = GST_CLOCK_TIME_NONE;
-  gint64 start_time = 0;
+  GstSegment os = dec->segment;
 
-  start_time = gst_util_uint64_scale_int (s->start, GST_SECOND, dec->rate);
-
-  if (s->stop != -1)
-    stop_time = gst_util_uint64_scale_int (s->stop, GST_SECOND, dec->rate);
+  os.format = GST_FORMAT_TIME;
+  os.start = gst_util_uint64_scale_int (os.start, GST_SECOND, dec->rate);
+  if (os.stop)
+    os.stop = gst_util_uint64_scale_int (os.stop, GST_SECOND, dec->rate);
+  os.time = gst_util_uint64_scale_int (os.time, GST_SECOND, dec->rate);
 
   GST_DEBUG_OBJECT (dec, "sending newsegment from %" GST_TIME_FORMAT
-      " to %" GST_TIME_FORMAT ", rate = %.1f", GST_TIME_ARGS (start_time),
-      GST_TIME_ARGS (stop_time), s->rate);
+      " to %" GST_TIME_FORMAT ", rate = %.1f", GST_TIME_ARGS (os.start),
+      GST_TIME_ARGS (os.stop), os.rate);
 
-  gst_pad_push_event (dec->srcpad,
-      gst_event_new_new_segment (FALSE, s->rate, GST_FORMAT_TIME,
-          start_time, stop_time, start_time));
+  gst_pad_push_event (dec->srcpad, gst_event_new_segment (&os));
 }
 
 static gboolean
@@ -216,10 +208,10 @@
   /* operate on segment copy until we know the seek worked */
   segment = dec->segment;
 
-  gst_segment_set_seek (&segment, rate, GST_FORMAT_DEFAULT,
+  gst_segment_do_seek (&segment, rate, GST_FORMAT_DEFAULT,
       flags, start_type, start, stop_type, stop, NULL);
 
-  gst_pad_push_event (dec->sinkpad, gst_event_new_flush_stop ());
+  gst_pad_push_event (dec->sinkpad, gst_event_new_flush_stop (TRUE));
 
   GST_DEBUG_OBJECT (dec, "segment: [%" G_GINT64_FORMAT "-%" G_GINT64_FORMAT
       "] = [%" GST_TIME_FORMAT "-%" GST_TIME_FORMAT "]",
@@ -230,7 +222,7 @@
   GST_DEBUG_OBJECT (dec, "performing seek to sample %" G_GINT64_FORMAT,
       segment.start);
 
-  if (segment.start < 0 || segment.start >= segment.duration) {
+  if (segment.start >= segment.duration) {
     GST_WARNING_OBJECT (dec, "seek out of bounds");
     goto failed;
   }
@@ -251,10 +243,10 @@
   }
 
   if (flush) {
-    gst_pad_push_event (dec->srcpad, gst_event_new_flush_stop ());
+    gst_pad_push_event (dec->srcpad, gst_event_new_flush_stop (TRUE));
   }
 
-  gst_segment_set_last_stop (&segment, GST_FORMAT_DEFAULT, segment.start);
+  segment.position = segment.start;
   dec->segment = segment;
   gst_musepackdec_send_newsegment (dec);
 
@@ -276,12 +268,12 @@
 }
 
 static gboolean
-gst_musepackdec_src_event (GstPad * pad, GstEvent * event)
+gst_musepackdec_src_event (GstPad * pad, GstObject * parent, GstEvent * event)
 {
   GstMusepackDec *dec;
   gboolean res;
 
-  dec = GST_MUSEPACK_DEC (gst_pad_get_parent (pad));
+  dec = GST_MUSEPACK_DEC (parent);
 
   GST_DEBUG_OBJECT (dec, "handling %s event", GST_EVENT_TYPE_NAME (event));
 
@@ -290,31 +282,17 @@
       res = gst_musepackdec_handle_seek_event (dec, event);
       break;
     default:
-      res = gst_pad_event_default (pad, event);
+      res = gst_pad_event_default (pad, parent, event);
       break;
   }
 
-  gst_object_unref (dec);
   return res;
 }
 
-static const GstQueryType *
-gst_musepackdec_get_src_query_types (GstPad * pad)
-{
-  static const GstQueryType query_types[] = {
-    GST_QUERY_POSITION,
-    GST_QUERY_DURATION,
-    GST_QUERY_SEEKING,
-    (GstQueryType) 0
-  };
-
-  return query_types;
-}
-
 static gboolean
-gst_musepackdec_src_query (GstPad * pad, GstQuery * query)
+gst_musepackdec_src_query (GstPad * pad, GstObject * parent, GstQuery * query)
 {
-  GstMusepackDec *musepackdec = GST_MUSEPACK_DEC (gst_pad_get_parent (pad));
+  GstMusepackDec *musepackdec = GST_MUSEPACK_DEC (parent);
   GstFormat format;
   gboolean res = FALSE;
   gint samplerate;
@@ -331,7 +309,7 @@
       gst_query_parse_position (query, &format, NULL);
 
       GST_OBJECT_LOCK (musepackdec);
-      cur_off = musepackdec->segment.last_stop;
+      cur_off = musepackdec->segment.position;
       GST_OBJECT_UNLOCK (musepackdec);
 
       if (format == GST_FORMAT_TIME) {
@@ -365,23 +343,31 @@
     }
     case GST_QUERY_SEEKING:{
       GstFormat fmt;
+      gint64 len, len_off;
 
       res = TRUE;
       gst_query_parse_seeking (query, &fmt, NULL, NULL, NULL);
-      if (fmt == GST_FORMAT_TIME || fmt == GST_FORMAT_DEFAULT)
-        gst_query_set_seeking (query, fmt, TRUE, 0, -1);
-      else
-        gst_query_set_seeking (query, fmt, FALSE, -1, -1);
 
+      GST_OBJECT_LOCK (musepackdec);
+      len_off = musepackdec->segment.duration;
+      GST_OBJECT_UNLOCK (musepackdec);
+
+      if (fmt == GST_FORMAT_TIME) {
+        len = gst_util_uint64_scale_int (len_off, GST_SECOND, samplerate);
+        gst_query_set_seeking (query, fmt, TRUE, 0, len);
+      } else if (fmt == GST_FORMAT_DEFAULT) {
+        gst_query_set_seeking (query, fmt, TRUE, 0, len_off);
+      } else {
+        gst_query_set_seeking (query, fmt, FALSE, -1, -1);
+      }
       break;
     }
     default:
-      res = gst_pad_query_default (pad, query);
+      res = gst_pad_query_default (pad, parent, query);
       break;
   }
 
 done:
-  gst_object_unref (musepackdec);
   return res;
 }
 
@@ -391,6 +377,7 @@
   mpc_streaminfo i;
   GstTagList *tags;
   GstCaps *caps;
+  gchar *stream_id;
 
   /* set up reading */
   gst_musepack_init_reader (musepackdec->r, musepackdec);
@@ -420,10 +407,16 @@
   mpc_demux_get_info (musepackdec->d, &i);
 #endif
 
+  stream_id = gst_pad_create_stream_id (musepackdec->srcpad,
+      GST_ELEMENT_CAST (musepackdec), NULL);
+  gst_pad_push_event (musepackdec->srcpad,
+      gst_event_new_stream_start (stream_id));
+  g_free (stream_id);
+
   /* capsnego */
-  caps = gst_caps_from_string (BASE_CAPS);
-  gst_caps_set_simple (caps,
-      "endianness", G_TYPE_INT, G_BYTE_ORDER,
+  caps = gst_caps_new_simple ("audio/x-raw",
+      "format", G_TYPE_STRING, GST_MPC_FORMAT,
+      "layout", G_TYPE_STRING, "interleaved",
       "channels", G_TYPE_INT, i.channels,
       "rate", G_TYPE_INT, i.sample_freq, NULL);
   gst_pad_use_fixed_caps (musepackdec->srcpad);
@@ -435,12 +428,11 @@
   g_atomic_int_set (&musepackdec->bps, 4 * i.channels);
   g_atomic_int_set (&musepackdec->rate, i.sample_freq);
 
-  gst_segment_set_last_stop (&musepackdec->segment, GST_FORMAT_DEFAULT, 0);
-  gst_segment_set_duration (&musepackdec->segment, GST_FORMAT_DEFAULT,
-      mpc_streaminfo_get_length_samples (&i));
+  musepackdec->segment.position = 0;
+  musepackdec->segment.duration = mpc_streaminfo_get_length_samples (&i);
 
   /* send basic tags */
-  tags = gst_tag_list_new ();
+  tags = gst_tag_list_new_empty ();
   gst_tag_list_add (tags, GST_TAG_MERGE_REPLACE,
       GST_TAG_AUDIO_CODEC, "Musepack", NULL);
 
@@ -472,30 +464,57 @@
   }
 
   GST_LOG_OBJECT (musepackdec, "Posting tags: %" GST_PTR_FORMAT, tags);
-  gst_element_found_tags (GST_ELEMENT (musepackdec), tags);
+  gst_pad_push_event (musepackdec->srcpad, gst_event_new_tag (tags));
+
 
   return TRUE;
 }
 
 static gboolean
-gst_musepackdec_sink_activate (GstPad * sinkpad)
+gst_musepackdec_sink_activate (GstPad * sinkpad, GstObject * parent)
 {
-  if (!gst_pad_check_pull_range (sinkpad))
+  GstQuery *query;
+  gboolean pull_mode;
+
+  query = gst_query_new_scheduling ();
+
+  if (!gst_pad_peer_query (sinkpad, query)) {
+    gst_query_unref (query);
+    return FALSE;
+  }
+
+  pull_mode = gst_query_has_scheduling_mode_with_flags (query,
+      GST_PAD_MODE_PULL, GST_SCHEDULING_FLAG_SEEKABLE);
+  gst_query_unref (query);
+
+  if (!pull_mode)
     return FALSE;
 
-  return gst_pad_activate_pull (sinkpad, TRUE);
+  GST_DEBUG_OBJECT (sinkpad, "activating pull");
+  return gst_pad_activate_mode (sinkpad, GST_PAD_MODE_PULL, TRUE);
 }
 
 static gboolean
-gst_musepackdec_sink_activate_pull (GstPad * sinkpad, gboolean active)
+gst_musepackdec_sink_activate_mode (GstPad * sinkpad, GstObject * parent,
+    GstPadMode mode, gboolean active)
 {
   gboolean result;
 
-  if (active) {
-    result = gst_pad_start_task (sinkpad,
-        (GstTaskFunction) gst_musepackdec_loop, sinkpad, NULL);
-  } else {
-    result = gst_pad_stop_task (sinkpad);
+  switch (mode) {
+    case GST_PAD_MODE_PUSH:
+      result = FALSE;
+      break;
+    case GST_PAD_MODE_PULL:
+      if (active) {
+        result = gst_pad_start_task (sinkpad,
+            (GstTaskFunction) gst_musepackdec_loop, sinkpad, NULL);
+      } else {
+        result = gst_pad_stop_task (sinkpad);
+      }
+      break;
+    default:
+      result = FALSE;
+      break;
   }
 
   return result;
@@ -507,6 +526,7 @@
   GstMusepackDec *musepackdec;
   GstFlowReturn flow;
   GstBuffer *out;
+  GstMapInfo info;
 
 #ifdef MPC_IS_OLD_API
   guint32 update_acc, update_bits;
@@ -530,16 +550,14 @@
 
   bitspersample = g_atomic_int_get (&musepackdec->bps);
 
-  flow = gst_pad_alloc_buffer_and_set_caps (musepackdec->srcpad, -1,
-      MPC_DECODER_BUFFER_LENGTH * 4, GST_PAD_CAPS (musepackdec->srcpad), &out);
+  out = gst_buffer_new_allocate (NULL, MPC_DECODER_BUFFER_LENGTH * 4, NULL);
 
-  if (flow != GST_FLOW_OK) {
-    GST_DEBUG_OBJECT (musepackdec, "Flow: %s", gst_flow_get_name (flow));
-    goto pause_task;
-  }
 #ifdef MPC_IS_OLD_API
+
+  gst_buffer_map (out, &info, GST_MAP_READWRITE);
   num_samples = mpc_decoder_decode (musepackdec->d,
-      (MPC_SAMPLE_FORMAT *) GST_BUFFER_DATA (out), &update_acc, &update_bits);
+      (MPC_SAMPLE_FORMAT *) info.data, &update_acc, &update_bits);
+  gst_buffer_unmap (out, &info);
 
   if (num_samples < 0) {
     GST_ERROR_OBJECT (musepackdec, "Failed to decode sample");
@@ -549,8 +567,10 @@
     goto eos_and_pause;
   }
 #else
-  frame.buffer = (MPC_SAMPLE_FORMAT *) GST_BUFFER_DATA (out);
+  gst_buffer_map (out, &info, GST_MAP_READWRITE);
+  frame.buffer = (MPC_SAMPLE_FORMAT *) info.data;
   err = mpc_demux_decode (musepackdec->d, &frame);
+  gst_buffer_unmap (out, &info);
 
   if (err != MPC_STATUS_OK) {
     GST_ERROR_OBJECT (musepackdec, "Failed to decode sample");
@@ -563,16 +583,16 @@
   num_samples = frame.samples;
 #endif
 
-  GST_BUFFER_SIZE (out) = num_samples * bitspersample;
+  gst_buffer_set_size (out, num_samples * bitspersample);
 
-  GST_BUFFER_OFFSET (out) = musepackdec->segment.last_stop;
-  GST_BUFFER_TIMESTAMP (out) =
-      gst_util_uint64_scale_int (musepackdec->segment.last_stop,
+  GST_BUFFER_OFFSET (out) = musepackdec->segment.position;
+  GST_BUFFER_PTS (out) =
+      gst_util_uint64_scale_int (musepackdec->segment.position,
       GST_SECOND, samplerate);
   GST_BUFFER_DURATION (out) =
       gst_util_uint64_scale_int (num_samples, GST_SECOND, samplerate);
 
-  musepackdec->segment.last_stop += num_samples;
+  musepackdec->segment.position += num_samples;
 
   GST_LOG_OBJECT (musepackdec, "Pushing buffer, timestamp %" GST_TIME_FORMAT,
       GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (out)));
@@ -585,7 +605,7 @@
 
   /* check if we're at the end of a configured segment */
   if (musepackdec->segment.stop != -1 &&
-      musepackdec->segment.last_stop >= musepackdec->segment.stop) {
+      musepackdec->segment.position >= musepackdec->segment.stop) {
     gint64 stop_time;
 
     GST_DEBUG_OBJECT (musepackdec, "Reached end of configured segment");
@@ -633,7 +653,7 @@
   switch (transition) {
     case GST_STATE_CHANGE_READY_TO_PAUSED:
       gst_segment_init (&musepackdec->segment, GST_FORMAT_DEFAULT);
-      gst_segment_set_last_stop (&musepackdec->segment, GST_FORMAT_DEFAULT, 0);
+      musepackdec->segment.position = 0;
       break;
     default:
       break;
diff --git a/ext/musepack/gstmusepackreader.c b/ext/musepack/gstmusepackreader.c
index 6717698..2c5bb14 100644
--- a/ext/musepack/gstmusepackreader.c
+++ b/ext/musepack/gstmusepackreader.c
@@ -77,7 +77,7 @@
     return 0;
   }
 
-  read = MIN (GST_BUFFER_SIZE (buf), size);
+  read = MIN (gst_buffer_get_size (buf), size);
 
   if (read < size) {
     GST_WARNING_OBJECT (musepackdec, "Short read: got only %u bytes of %u "
@@ -86,7 +86,7 @@
     /* GST_ELEMENT_ERROR (musepackdec, RESOURCE, READ, (NULL), (NULL)); */
   }
 
-  memcpy (ptr, GST_BUFFER_DATA (buf), read);
+  gst_buffer_extract (buf, 0, ptr, read);
   gst_buffer_unref (buf);
   return read;
 }
@@ -161,10 +161,14 @@
 {
   GstMusepackDec *dec = GST_MUSEPACK_DEC (this->data);
 #endif
-  GstFormat format = GST_FORMAT_BYTES;
-  gint64 length = -1;
+  GstQuery *query;
+  GstFormat format;
+  gint64 length;
 
-  if (!gst_pad_query_peer_duration (dec->sinkpad, &format, &length))
+  query = gst_query_new_duration (GST_FORMAT_BYTES);
+  if (gst_pad_peer_query (dec->sinkpad, query))
+    gst_query_parse_duration (query, &format, &length);
+  else
     length = -1;
 
   return (mpc_int32_t) length;
diff --git a/ext/nas/Makefile.in b/ext/nas/Makefile.in
index d8cbef4..5ba5243 100644
--- a/ext/nas/Makefile.in
+++ b/ext/nas/Makefile.in
@@ -302,6 +302,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -323,6 +325,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -372,6 +376,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -517,6 +523,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -643,8 +651,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,8 +693,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/nas/nassink.c b/ext/nas/nassink.c
index cd8485b..2d6404b 100644
--- a/ext/nas/nassink.c
+++ b/ext/nas/nassink.c
@@ -94,8 +94,7 @@
 {
   GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
   gst_element_class_set_static_metadata (element_class, "NAS audio sink",
       "Sink/Audio",
       "Plays audio to a Network Audio Server",
diff --git a/ext/neon/Makefile.in b/ext/neon/Makefile.in
index f1797d0..c63636c 100644
--- a/ext/neon/Makefile.in
+++ b/ext/neon/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/neon/gstneonhttpsrc.c b/ext/neon/gstneonhttpsrc.c
index 8a4ff0d..03c596c 100644
--- a/ext/neon/gstneonhttpsrc.c
+++ b/ext/neon/gstneonhttpsrc.c
@@ -203,8 +203,7 @@
   GST_DEBUG_CATEGORY_INIT (neonhttpsrc_debug, "neonhttpsrc", 0,
       "NEON HTTP Client Source");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&srctemplate));
+  gst_element_class_add_static_pad_template (element_class, &srctemplate);
 
   gst_element_class_set_static_metadata (element_class, "HTTP client source",
       "Source/Network",
diff --git a/ext/ofa/Makefile.in b/ext/ofa/Makefile.in
index 58d02ba..6630934 100644
--- a/ext/ofa/Makefile.in
+++ b/ext/ofa/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/openal/Makefile.in b/ext/openal/Makefile.in
index 929858a..b14865e 100644
--- a/ext/openal/Makefile.in
+++ b/ext/openal/Makefile.in
@@ -307,6 +307,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -328,6 +330,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -377,6 +381,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -522,6 +528,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -648,8 +656,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -692,8 +698,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/openal/gstopenalsink.c b/ext/openal/gstopenalsink.c
index 74f58e4..66de051 100644
--- a/ext/openal/gstopenalsink.c
+++ b/ext/openal/gstopenalsink.c
@@ -229,8 +229,8 @@
       "Sink/Audio", "Output audio through OpenAL",
       "Juan Manuel Borges Caño <juanmabcmail@gmail.com>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&openalsink_factory));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &openalsink_factory);
 
 }
 
diff --git a/ext/openal/gstopenalsrc.c b/ext/openal/gstopenalsrc.c
index d06b3c4..26e73d4 100644
--- a/ext/openal/gstopenalsrc.c
+++ b/ext/openal/gstopenalsrc.c
@@ -192,8 +192,8 @@
       "OpenAL Audio Source", "Source/Audio", "Input audio through OpenAL",
       "Juan Manuel Borges Caño <juanmabcmail@gmail.com>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&openalsrc_factory));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &openalsrc_factory);
 }
 
 static void
diff --git a/ext/opencv/Makefile.am b/ext/opencv/Makefile.am
index 0eee38c..360d4ab 100644
--- a/ext/opencv/Makefile.am
+++ b/ext/opencv/Makefile.am
@@ -14,7 +14,6 @@
 			gstedgedetect.cpp \
 			gstfaceblur.cpp \
 			gsthanddetect.cpp \
-			gstpyramidsegment.cpp \
 			gsttemplatematch.cpp \
 			gsttextoverlay.cpp \
 			gstmotioncells.cpp \
@@ -59,7 +58,6 @@
 		gstfaceblur.h \
 		gstfacedetect.h \
 		gsthanddetect.h \
-		gstpyramidsegment.h \
 		gsttemplatematch.h \
 		gsttextoverlay.h \
 		gstskindetect.h \
diff --git a/ext/opencv/Makefile.in b/ext/opencv/Makefile.in
index 1aaafee..bac0228 100644
--- a/ext/opencv/Makefile.in
+++ b/ext/opencv/Makefile.in
@@ -178,7 +178,6 @@
 	libgstopencv_la-gstedgedetect.lo \
 	libgstopencv_la-gstfaceblur.lo \
 	libgstopencv_la-gsthanddetect.lo \
-	libgstopencv_la-gstpyramidsegment.lo \
 	libgstopencv_la-gsttemplatematch.lo \
 	libgstopencv_la-gsttextoverlay.lo \
 	libgstopencv_la-gstmotioncells.lo \
@@ -325,6 +324,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -346,6 +347,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -395,6 +398,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -540,6 +545,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -666,8 +673,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -710,8 +715,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -816,7 +826,6 @@
 			gstedgedetect.cpp \
 			gstfaceblur.cpp \
 			gsthanddetect.cpp \
-			gstpyramidsegment.cpp \
 			gsttemplatematch.cpp \
 			gsttextoverlay.cpp \
 			gstmotioncells.cpp \
@@ -862,7 +871,6 @@
 		gstfaceblur.h \
 		gstfacedetect.h \
 		gsthanddetect.h \
-		gstpyramidsegment.h \
 		gsttemplatematch.h \
 		gsttextoverlay.h \
 		gstskindetect.h \
@@ -973,7 +981,6 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopencv_la-gstopencv.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopencv_la-gstopencvutils.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopencv_la-gstopencvvideofilter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopencv_la-gstpyramidsegment.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopencv_la-gstretinex.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopencv_la-gstsegmentation.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopencv_la-gstskindetect.Plo@am__quote@
@@ -1096,13 +1103,6 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(libgstopencv_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopencv_la_CXXFLAGS) $(CXXFLAGS) -c -o libgstopencv_la-gsthanddetect.lo `test -f 'gsthanddetect.cpp' || echo '$(srcdir)/'`gsthanddetect.cpp
 
-libgstopencv_la-gstpyramidsegment.lo: gstpyramidsegment.cpp
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(libgstopencv_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopencv_la_CXXFLAGS) $(CXXFLAGS) -MT libgstopencv_la-gstpyramidsegment.lo -MD -MP -MF $(DEPDIR)/libgstopencv_la-gstpyramidsegment.Tpo -c -o libgstopencv_la-gstpyramidsegment.lo `test -f 'gstpyramidsegment.cpp' || echo '$(srcdir)/'`gstpyramidsegment.cpp
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstopencv_la-gstpyramidsegment.Tpo $(DEPDIR)/libgstopencv_la-gstpyramidsegment.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gstpyramidsegment.cpp' object='libgstopencv_la-gstpyramidsegment.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(libgstopencv_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopencv_la_CXXFLAGS) $(CXXFLAGS) -c -o libgstopencv_la-gstpyramidsegment.lo `test -f 'gstpyramidsegment.cpp' || echo '$(srcdir)/'`gstpyramidsegment.cpp
-
 libgstopencv_la-gsttemplatematch.lo: gsttemplatematch.cpp
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(libgstopencv_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopencv_la_CXXFLAGS) $(CXXFLAGS) -MT libgstopencv_la-gsttemplatematch.lo -MD -MP -MF $(DEPDIR)/libgstopencv_la-gsttemplatematch.Tpo -c -o libgstopencv_la-gsttemplatematch.lo `test -f 'gsttemplatematch.cpp' || echo '$(srcdir)/'`gsttemplatematch.cpp
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstopencv_la-gsttemplatematch.Tpo $(DEPDIR)/libgstopencv_la-gsttemplatematch.Plo
diff --git a/ext/opencv/MotionCells.cpp b/ext/opencv/MotionCells.cpp
index 9a16176..53d3371 100644
--- a/ext/opencv/MotionCells.cpp
+++ b/ext/opencv/MotionCells.cpp
@@ -79,6 +79,15 @@
   m_cellwidth = 0;
   m_cellheight = 0;
   m_sensitivity = 0;
+
+  memset (&m_header, 0, sizeof (MotionCellHeader));
+  m_header.headersize = GINT32_TO_BE (MC_HEADER);
+  m_header.type = GINT32_TO_BE (MC_TYPE);
+  m_header.version = GINT32_TO_BE (MC_VERSION);
+  m_header.itemsize = 0;
+  m_header.gridx = 0;
+  m_header.gridy = 0;
+  m_header.starttime = 0;
 }
 
 MotionCells::~MotionCells ()
@@ -116,6 +125,8 @@
 
   int sumframecnt = 0;
   int ret = 0;
+  CvSize frameSize;
+
   p_framerate >= 1 ? p_framerate <= 5 ? sumframecnt = 1
       : p_framerate <= 10 ? sumframecnt = 2
       : p_framerate <= 15 ? sumframecnt = 3
@@ -135,21 +146,21 @@
         return ret;
     }
 
-    m_frameSize = cvGetSize (p_frame);
-    m_frameSize.width /= 2;
-    m_frameSize.height /= 2;
-    setMotionCells (m_frameSize.width, m_frameSize.height);
+    frameSize = cvGetSize (p_frame);
+    frameSize.width /= 2;
+    frameSize.height /= 2;
+    setMotionCells (frameSize.width, frameSize.height);
     m_sensitivity = 1 - p_sensitivity;
     m_isVisible = p_isVisible;
     m_pcurFrame = cvCloneImage (p_frame);
-    IplImage *m_pcurgreyImage = cvCreateImage (m_frameSize, IPL_DEPTH_8U, 1);
-    IplImage *m_pprevgreyImage = cvCreateImage (m_frameSize, IPL_DEPTH_8U, 1);
-    IplImage *m_pgreyImage = cvCreateImage (m_frameSize, IPL_DEPTH_8U, 1);
+    IplImage *m_pcurgreyImage = cvCreateImage (frameSize, IPL_DEPTH_8U, 1);
+    IplImage *m_pprevgreyImage = cvCreateImage (frameSize, IPL_DEPTH_8U, 1);
+    IplImage *m_pgreyImage = cvCreateImage (frameSize, IPL_DEPTH_8U, 1);
     IplImage *m_pcurDown =
-        cvCreateImage (m_frameSize, m_pcurFrame->depth, m_pcurFrame->nChannels);
-    IplImage *m_pprevDown = cvCreateImage (m_frameSize, m_pprevFrame->depth,
+        cvCreateImage (frameSize, m_pcurFrame->depth, m_pcurFrame->nChannels);
+    IplImage *m_pprevDown = cvCreateImage (frameSize, m_pprevFrame->depth,
         m_pprevFrame->nChannels);
-    m_pbwImage = cvCreateImage (m_frameSize, IPL_DEPTH_8U, 1);
+    m_pbwImage = cvCreateImage (frameSize, IPL_DEPTH_8U, 1);
     cvPyrDown (m_pprevFrame, m_pprevDown);
     cvCvtColor (m_pprevDown, m_pprevgreyImage, CV_RGB2GRAY);
     cvPyrDown (m_pcurFrame, m_pcurDown);
@@ -333,10 +344,7 @@
     }
   } else
     mc_savefile = NULL;
-  memset (&m_header, 0, sizeof (MotionCellHeader));
-  m_header.headersize = GINT32_TO_BE (MC_HEADER);
-  m_header.type = GINT32_TO_BE (MC_TYPE);
-  m_header.version = GINT32_TO_BE (MC_VERSION);
+
   //it needs these bytes
   m_header.itemsize =
       GINT32_TO_BE ((int) ceil (ceil (m_gridx * m_gridy / 8.0) / 4.0) * 4 +
diff --git a/ext/opencv/MotionCells.h b/ext/opencv/MotionCells.h
index 97137bb..c858d87 100644
--- a/ext/opencv/MotionCells.h
+++ b/ext/opencv/MotionCells.h
@@ -242,7 +242,6 @@
 
   IplImage *m_pcurFrame, *m_pprevFrame, *m_pdifferenceImage,
       *m_pbwImage,*transparencyimg;
-  CvSize m_frameSize;
   bool m_isVisible, m_changed_datafile, m_useAlpha, m_saveInDatafile;
   Cell **m_pCells;
   vector < MotionCellsIdx > m_MotionCells;
diff --git a/ext/opencv/gstcvequalizehist.cpp b/ext/opencv/gstcvequalizehist.cpp
index ea1db28..bd3a7f0 100644
--- a/ext/opencv/gstcvequalizehist.cpp
+++ b/ext/opencv/gstcvequalizehist.cpp
@@ -93,10 +93,8 @@
 
   gstopencvbasefilter_class->cv_trans_func = gst_cv_equalize_hist_transform;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
 
   gst_element_class_set_static_metadata (element_class,
       "cvequalizehist",
diff --git a/ext/opencv/gstcvlaplace.cpp b/ext/opencv/gstcvlaplace.cpp
index c989456..c8293bd 100644
--- a/ext/opencv/gstcvlaplace.cpp
+++ b/ext/opencv/gstcvlaplace.cpp
@@ -164,10 +164,8 @@
           "Sets whether the detected edges should be used as a mask on the original input or not",
           DEFAULT_MASK, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
 
   gst_element_class_set_static_metadata (element_class,
       "cvlaplace",
diff --git a/ext/opencv/gstcvsmooth.cpp b/ext/opencv/gstcvsmooth.cpp
index 8715736..f9a8a02 100644
--- a/ext/opencv/gstcvsmooth.cpp
+++ b/ext/opencv/gstcvsmooth.cpp
@@ -317,18 +317,18 @@
 
   switch (filter->type) {
     case CV_BLUR:
-      blur (Mat (img), Mat (img), Size (filter->width, filter->height),
+      blur (cvarrToMat(img), cvarrToMat(img), Size (filter->width, filter->height),
           Point (-1, -1));
       break;
     case CV_GAUSSIAN:
-      GaussianBlur (Mat (img), Mat (img), Size (filter->width, filter->height),
+      GaussianBlur (cvarrToMat(img), cvarrToMat(img), Size (filter->width, filter->height),
           filter->colorsigma, filter->colorsigma);
       break;
     case CV_MEDIAN:
-      medianBlur (Mat (img), Mat (img), filter->width);
+      medianBlur (cvarrToMat(img), cvarrToMat(img), filter->width);
       break;
     case CV_BILATERAL:
-      bilateralFilter (Mat (img), Mat (img), -1, filter->colorsigma, 0.0);
+      bilateralFilter (cvarrToMat(img), cvarrToMat(img), -1, filter->colorsigma, 0.0);
       break;
     default:
       break;
diff --git a/ext/opencv/gstcvsobel.cpp b/ext/opencv/gstcvsobel.cpp
index d5c9ef7..4c2ccc4 100644
--- a/ext/opencv/gstcvsobel.cpp
+++ b/ext/opencv/gstcvsobel.cpp
@@ -163,10 +163,8 @@
           "Sets whether the detected derivative edges should be used as a mask on the original input or not",
           DEFAULT_MASK, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
 
   gst_element_class_set_static_metadata (element_class,
       "cvsobel",
diff --git a/ext/opencv/gstdisparity.cpp b/ext/opencv/gstdisparity.cpp
index 3ca9015..486e865 100644
--- a/ext/opencv/gstdisparity.cpp
+++ b/ext/opencv/gstdisparity.cpp
@@ -119,12 +119,16 @@
 #include <config.h>
 #endif
 
-#include <opencv2/contrib/contrib.hpp>
 #include "gstdisparity.h"
+#include <opencv2/imgproc/imgproc_c.h>
+#if (CV_MAJOR_VERSION >= 3)
+#include <opencv2/imgproc.hpp>
+#endif
 
 GST_DEBUG_CATEGORY_STATIC (gst_disparity_debug);
 #define GST_CAT_DEFAULT gst_disparity_debug
 
+using namespace cv;
 /* Filter signals and args */
 enum
 {
@@ -141,9 +145,7 @@
 typedef enum
 {
   METHOD_SBM,
-  METHOD_SGBM,
-  METHOD_VAR,
-  METHOD_GC
+  METHOD_SGBM
 } GstDisparityMethod;
 
 #define DEFAULT_METHOD METHOD_SGBM
@@ -157,8 +159,6 @@
     static const GEnumValue values[] = {
       {METHOD_SBM, "Global block matching algorithm", "sbm"},
       {METHOD_SGBM, "Semi-global block matching algorithm", "sgbm"},
-      {METHOD_VAR, "Variational matching algorithm", "svar"},
-      {METHOD_GC, "Graph-cut based matching algorithm", "sgc"},
       {0, NULL, NULL},
     };
     etype = g_enum_register_static ("GstDisparityMethod", values);
@@ -205,8 +205,6 @@
 static int initialise_sbm (GstDisparity * filter);
 static int run_sbm_iteration (GstDisparity * filter);
 static int run_sgbm_iteration (GstDisparity * filter);
-static int run_svar_iteration (GstDisparity * filter);
-static int run_sgc_iteration (GstDisparity * filter);
 static int finalise_sbm (GstDisparity * filter);
 
 /* initialize the disparity's class */
@@ -238,10 +236,8 @@
       "Calculates the stereo disparity map from two (sequences of) rectified and aligned stereo images",
       "Miguel Casas-Sanchez <miguelecasassanchez@gmail.com>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
 }
 
 /* initialize the new element
@@ -582,27 +578,6 @@
         CV_MINMAX, NULL);
     cvCvtColor (fs->cvGray_depth_map2, fs->cvRGB_right, CV_GRAY2RGB);
   }
-  /* The class implements the modified S. G. Kosov algorithm
-     See the comments on top of the file.
-   */
-  else if (METHOD_VAR == fs->method) {
-    cvCvtColor (fs->cvRGB_left, fs->cvGray_left, CV_RGB2GRAY);
-    cvCvtColor (fs->cvRGB_right, fs->cvGray_right, CV_RGB2GRAY);
-    run_svar_iteration (fs);
-    cvCvtColor (fs->cvGray_depth_map2, fs->cvRGB_right, CV_GRAY2RGB);
-  }
-  /* The Graph Cut stereo vision algorithm (GC) introduced in [D] is a global
-     stereo vision method. It calculates depth discontinuities by minimizing an
-     energy function combingin a point-wise matching cost and a smoothness term.
-     See the comments on top of the file.
-   */
-  else if (METHOD_GC == fs->method) {
-    cvCvtColor (fs->cvRGB_left, fs->cvGray_left, CV_RGB2GRAY);
-    cvCvtColor (fs->cvRGB_right, fs->cvGray_right, CV_RGB2GRAY);
-    run_sgc_iteration (fs);
-    cvConvertScale (fs->cvGray_depth_map1, fs->cvGray_depth_map2, -16.0, 0.0);
-    cvCvtColor (fs->cvGray_depth_map2, fs->cvRGB_right, CV_GRAY2RGB);
-  }
 
 
   GST_DEBUG_OBJECT (pad, " right has finished");
@@ -665,72 +640,65 @@
 int
 initialise_sbm (GstDisparity * filter)
 {
-  filter->img_right_as_cvMat_rgb =
-      (void *) new cv::Mat (filter->cvRGB_right, false);
-  filter->img_left_as_cvMat_rgb =
-      (void *) new cv::Mat (filter->cvRGB_left, false);
   filter->img_right_as_cvMat_gray =
-      (void *) new cv::Mat (filter->cvGray_right, false);
+      (void *) new Mat (cvarrToMat (filter->cvGray_right, false));
   filter->img_left_as_cvMat_gray =
-      (void *) new cv::Mat (filter->cvGray_left, false);
+      (void *) new Mat (cvarrToMat (filter->cvGray_left, false));
   filter->depth_map_as_cvMat =
-      (void *) new cv::Mat (filter->cvGray_depth_map1, false);
-  filter->depth_map_as_cvMat2 =
-      (void *) new cv::Mat (filter->cvGray_depth_map2, false);
+      (void *) new Mat (cvarrToMat (filter->cvGray_depth_map1, false));
+#if (CV_MAJOR_VERSION >= 3)
+  filter->sbm = StereoBM::create();
+  filter->sgbm = StereoSGBM::create(1,64,3);
 
-  filter->sbm = (void *) new cv::StereoBM ();
-  filter->sgbm = (void *) new cv::StereoSGBM ();
-  filter->svar = (void *) new cv::StereoVar ();
-  /* SGC has only two parameters on creation: NumerOfDisparities and MaxIters */
-  filter->sgc = cvCreateStereoGCState (16, 2);
+  filter->sbm->setBlockSize (9);
+  filter->sbm->setNumDisparities (32);
+  filter->sbm->setPreFilterSize (9);
+  filter->sbm->setPreFilterCap (32);
+  filter->sbm->setMinDisparity (0);
+  filter->sbm->setTextureThreshold (0);
+  filter->sbm->setUniquenessRatio (0);
+  filter->sbm->setSpeckleWindowSize (0);
+  filter->sbm->setSpeckleRange (0);
+  filter->sbm->setDisp12MaxDiff (0);
 
-  ((cv::StereoBM *) filter->sbm)->state->SADWindowSize = 9;
-  ((cv::StereoBM *) filter->sbm)->state->numberOfDisparities = 32;
-  ((cv::StereoBM *) filter->sbm)->state->preFilterSize = 9;
-  ((cv::StereoBM *) filter->sbm)->state->preFilterCap = 32;
-  ((cv::StereoBM *) filter->sbm)->state->minDisparity = 0;
-  ((cv::StereoBM *) filter->sbm)->state->textureThreshold = 0;
-  ((cv::StereoBM *) filter->sbm)->state->uniquenessRatio = 0;
-  ((cv::StereoBM *) filter->sbm)->state->speckleWindowSize = 0;
-  ((cv::StereoBM *) filter->sbm)->state->speckleRange = 0;
-  ((cv::StereoBM *) filter->sbm)->state->disp12MaxDiff = 0;
+  filter->sgbm->setMinDisparity (1);
+  filter->sgbm->setNumDisparities (64);
+  filter->sgbm->setBlockSize (3);
+  filter->sgbm->setP1 (200);
+  filter->sgbm->setP2 (255);
+  filter->sgbm->setDisp12MaxDiff (0);
+  filter->sgbm->setPreFilterCap (0);
+  filter->sgbm->setUniquenessRatio (0);
+  filter->sgbm->setSpeckleWindowSize (0);
+  filter->sgbm->setSpeckleRange (0);
+  filter->sgbm->setMode (StereoSGBM::MODE_HH);
+#else
+  filter->sbm = (void *) new StereoBM ();
+  filter->sgbm = (void *) new StereoSGBM ();
 
-  ((cv::StereoSGBM *) filter->sgbm)->minDisparity = 1;
-  ((cv::StereoSGBM *) filter->sgbm)->numberOfDisparities = 64;
-  ((cv::StereoSGBM *) filter->sgbm)->SADWindowSize = 3;
-  ((cv::StereoSGBM *) filter->sgbm)->P1 = 200;;
-  ((cv::StereoSGBM *) filter->sgbm)->P2 = 255;
-  ((cv::StereoSGBM *) filter->sgbm)->disp12MaxDiff = 0;
-  ((cv::StereoSGBM *) filter->sgbm)->preFilterCap = 0;
-  ((cv::StereoSGBM *) filter->sgbm)->uniquenessRatio = 0;
-  ((cv::StereoSGBM *) filter->sgbm)->speckleWindowSize = 0;
-  ((cv::StereoSGBM *) filter->sgbm)->speckleRange = 0;
-  ((cv::StereoSGBM *) filter->sgbm)->fullDP = true;
+  ((StereoBM *) filter->sbm)->state->SADWindowSize = 9;
+  ((StereoBM *) filter->sbm)->state->numberOfDisparities = 32;
+  ((StereoBM *) filter->sbm)->state->preFilterSize = 9;
+  ((StereoBM *) filter->sbm)->state->preFilterCap = 32;
+  ((StereoBM *) filter->sbm)->state->minDisparity = 0;
+  ((StereoBM *) filter->sbm)->state->textureThreshold = 0;
+  ((StereoBM *) filter->sbm)->state->uniquenessRatio = 0;
+  ((StereoBM *) filter->sbm)->state->speckleWindowSize = 0;
+  ((StereoBM *) filter->sbm)->state->speckleRange = 0;
+  ((StereoBM *) filter->sbm)->state->disp12MaxDiff = 0;
 
-  /* From Opencv samples/cpp/stereo_match.cpp */
-  ((cv::StereoVar *) filter->svar)->levels = 3;
-  ((cv::StereoVar *) filter->svar)->pyrScale = 0.5;
-  ((cv::StereoVar *) filter->svar)->nIt = 25;
-  ((cv::StereoVar *) filter->svar)->minDisp = -64;
-  ((cv::StereoVar *) filter->svar)->maxDisp = 0;
-  ((cv::StereoVar *) filter->svar)->poly_n = 3;
-  ((cv::StereoVar *) filter->svar)->poly_sigma = 0.0;
-  ((cv::StereoVar *) filter->svar)->fi = 15.0f;
-  ((cv::StereoVar *) filter->svar)->lambda = 0.03f;
-  ((cv::StereoVar *) filter->svar)->penalization =
-      cv::StereoVar::PENALIZATION_TICHONOV;
-  ((cv::StereoVar *) filter->svar)->cycle = cv::StereoVar::CYCLE_V;
-  ((cv::StereoVar *) filter->svar)->flags = cv::StereoVar::USE_SMART_ID |
-      cv::StereoVar::USE_AUTO_PARAMS |
-      cv::StereoVar::USE_INITIAL_DISPARITY |
-      cv::StereoVar::USE_MEDIAN_FILTERING;
-
-  filter->sgc->Ithreshold = 5;
-  filter->sgc->interactionRadius = 1;
-  filter->sgc->occlusionCost = 10000;
-  filter->sgc->minDisparity = 0;
-  filter->sgc->numberOfDisparities = 16;        /* Coming from constructor too */
-  filter->sgc->maxIters = 1;    /* Coming from constructor too */
+  ((StereoSGBM *) filter->sgbm)->minDisparity = 1;
+  ((StereoSGBM *) filter->sgbm)->numberOfDisparities = 64;
+  ((StereoSGBM *) filter->sgbm)->SADWindowSize = 3;
+  ((StereoSGBM *) filter->sgbm)->P1 = 200;;
+  ((StereoSGBM *) filter->sgbm)->P2 = 255;
+  ((StereoSGBM *) filter->sgbm)->disp12MaxDiff = 0;
+  ((StereoSGBM *) filter->sgbm)->preFilterCap = 0;
+  ((StereoSGBM *) filter->sgbm)->uniquenessRatio = 0;
+  ((StereoSGBM *) filter->sgbm)->speckleWindowSize = 0;
+  ((StereoSGBM *) filter->sgbm)->speckleRange = 0;
+  ((StereoSGBM *) filter->sgbm)->fullDP = true;
+#endif
 
   return (0);
 }
@@ -738,53 +706,49 @@
 int
 run_sbm_iteration (GstDisparity * filter)
 {
-  (*((cv::StereoBM *) filter->
-          sbm)) (*((cv::Mat *) filter->img_left_as_cvMat_gray),
-      *((cv::Mat *) filter->img_right_as_cvMat_gray),
-      *((cv::Mat *) filter->depth_map_as_cvMat));
+#if (CV_MAJOR_VERSION >= 3)
+  ((StereoBM *) filter->
+          sbm)->compute (*((Mat *) filter->img_left_as_cvMat_gray),
+      *((Mat *) filter->img_right_as_cvMat_gray),
+      *((Mat *) filter->depth_map_as_cvMat));
+#else
+  (*((StereoBM *) filter->
+          sbm)) (*((Mat *) filter->img_left_as_cvMat_gray),
+      *((Mat *) filter->img_right_as_cvMat_gray),
+      *((Mat *) filter->depth_map_as_cvMat));
+#endif
   return (0);
 }
 
 int
 run_sgbm_iteration (GstDisparity * filter)
 {
-  (*((cv::StereoSGBM *) filter->
-          sgbm)) (*((cv::Mat *) filter->img_left_as_cvMat_gray),
-      *((cv::Mat *) filter->img_right_as_cvMat_gray),
-      *((cv::Mat *) filter->depth_map_as_cvMat));
-  return (0);
-}
-
-int
-run_svar_iteration (GstDisparity * filter)
-{
-  (*((cv::StereoVar *) filter->
-          svar)) (*((cv::Mat *) filter->img_left_as_cvMat_gray),
-      *((cv::Mat *) filter->img_right_as_cvMat_gray),
-      *((cv::Mat *) filter->depth_map_as_cvMat2));
-  return (0);
-}
-
-int
-run_sgc_iteration (GstDisparity * filter)
-{
-  cvFindStereoCorrespondenceGC (filter->cvGray_left,
-      filter->cvGray_right, filter->cvGray_depth_map1,
-      filter->cvGray_depth_map1_2, filter->sgc, 0);
+#if (CV_MAJOR_VERSION >= 3)
+  ((StereoSGBM *) filter->
+          sgbm)->compute (*((Mat *) filter->img_left_as_cvMat_gray),
+      *((Mat *) filter->img_right_as_cvMat_gray),
+      *((Mat *) filter->depth_map_as_cvMat));
+#else
+  (*((StereoSGBM *) filter->
+          sgbm)) (*((Mat *) filter->img_left_as_cvMat_gray),
+      *((Mat *) filter->img_right_as_cvMat_gray),
+      *((Mat *) filter->depth_map_as_cvMat));
+#endif
   return (0);
 }
 
 int
 finalise_sbm (GstDisparity * filter)
 {
-  delete (cv::Mat *) filter->img_left_as_cvMat_rgb;
-  delete (cv::Mat *) filter->img_right_as_cvMat_rgb;
-  delete (cv::Mat *) filter->depth_map_as_cvMat;
-  delete (cv::Mat *) filter->depth_map_as_cvMat2;
-  delete (cv::Mat *) filter->img_left_as_cvMat_gray;
-  delete (cv::Mat *) filter->img_right_as_cvMat_gray;
-  delete (cv::StereoBM *) filter->sbm;
-  delete (cv::StereoSGBM *) filter->sgbm;
-  delete (cv::StereoVar *) filter->svar;
+  delete (Mat *) filter->depth_map_as_cvMat;
+  delete (Mat *) filter->img_left_as_cvMat_gray;
+  delete (Mat *) filter->img_right_as_cvMat_gray;
+#if (CV_MAJOR_VERSION >= 3)
+  filter->sbm.release();
+  filter->sgbm.release();
+#else
+  delete (StereoBM *) filter->sbm;
+  delete (StereoSGBM *) filter->sgbm;
+#endif
   return (0);
 }
diff --git a/ext/opencv/gstdisparity.h b/ext/opencv/gstdisparity.h
index 07e2417..218699d 100644
--- a/ext/opencv/gstdisparity.h
+++ b/ext/opencv/gstdisparity.h
@@ -47,7 +47,9 @@
 #include <gst/gst.h>
 #include <gst/video/video.h>
 
-#include <opencv2/legacy/legacy.hpp>
+#include <opencv2/core/core.hpp>
+#include <opencv2/calib3d/calib3d.hpp>
+#include <opencv2/core/version.hpp>
 
 G_BEGIN_DECLS
 /* #defines don't like whitespacey bits */
@@ -92,16 +94,16 @@
   IplImage *cvGray_depth_map2;  /*IPL_DEPTH_8U */
   IplImage *cvGray_depth_map1_2;        /*IPL_DEPTH_16S */
 
-  void *sbm;                    /* cv::StereoBM */
-  void *sgbm;                   /* cv::StereoSGBM */
-  void *svar;                   /* cv::StereoVar */
-  CvStereoGCState *sgc;         /* This is a C implementation */
-  void *img_right_as_cvMat_rgb; /* cv::Mat */
-  void *img_left_as_cvMat_rgb;  /* cv::Mat */
-  void *depth_map_as_cvMat;     /* cv::Mat */
-  void *depth_map_as_cvMat2;    /* cv::Mat */
   void *img_right_as_cvMat_gray;        /* cv::Mat */
   void *img_left_as_cvMat_gray; /* cv::Mat */
+  void *depth_map_as_cvMat;     /* cv::Mat */
+#if (CV_MAJOR_VERSION >= 3)
+  cv::Ptr<cv::StereoBM> sbm;                    /* cv::StereoBM */
+  cv::Ptr<cv::StereoSGBM> sgbm;                /* cv::StereoSGBM */
+#else
+ void *sbm;                    /* cv::StereoBM */
+ void *sgbm;                   /* cv::StereoSGBM */
+#endif
 };
 
 struct _GstDisparityClass
diff --git a/ext/opencv/gstedgedetect.cpp b/ext/opencv/gstedgedetect.cpp
index 7e6c1e7..1be9836 100644
--- a/ext/opencv/gstedgedetect.cpp
+++ b/ext/opencv/gstedgedetect.cpp
@@ -169,10 +169,8 @@
       "Performs canny edge detection on videos and images.",
       "Michael Sheldon <mike@mikeasoft.com>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
 }
 
 /* initialize the new element
diff --git a/ext/opencv/gstfaceblur.cpp b/ext/opencv/gstfaceblur.cpp
index 2bc88d1..4476e14 100644
--- a/ext/opencv/gstfaceblur.cpp
+++ b/ext/opencv/gstfaceblur.cpp
@@ -80,6 +80,7 @@
 #define DEFAULT_MIN_SIZE_HEIGHT 30
 
 using namespace cv;
+using namespace std;
 enum
 {
   PROP_0,
@@ -227,10 +228,8 @@
       "Blurs faces in images and videos",
       "Michael Sheldon <mike@mikeasoft.com>,Robert Jobbagy <jobbagy.robert@gmail.com>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
 }
 
 /* initialize the new element
@@ -357,9 +356,7 @@
 
   cvCvtColor (img, filter->cvGray, CV_RGB2GRAY);
 
-  Mat image (filter->cvGray, Rect (filter->cvGray->origin,
-          filter->cvGray->origin, filter->cvGray->width,
-          filter->cvGray->height));
+  Mat image = cvarrToMat(filter->cvGray);
   filter->cvCascade->detectMultiScale (image, faces, filter->scale_factor,
       filter->min_neighbors, filter->flags,
       cvSize (filter->min_size_width, filter->min_size_height), cvSize (0, 0));
@@ -368,7 +365,8 @@
 
     for (i = 0; i < faces.size (); ++i) {
       Rect *r = &faces[i];
-      Mat roi (img, Rect (r->x, r->y, r->width, r->height));
+      Mat imag = cvarrToMat(img);
+      Mat roi (imag, Rect (r->x, r->y, r->width, r->height));
       blur (roi, roi, Size (11, 11));
       GaussianBlur (roi, roi, Size (11, 11), 0, 0);
     }
diff --git a/ext/opencv/gstfacedetect.cpp b/ext/opencv/gstfacedetect.cpp
index aff9979..3c82ce0 100644
--- a/ext/opencv/gstfacedetect.cpp
+++ b/ext/opencv/gstfacedetect.cpp
@@ -78,8 +78,12 @@
 
 #include <vector>
 
+using namespace std;
+
 #include "gstfacedetect.h"
-#include <opencv2/imgproc/imgproc_c.h>
+#if (CV_MAJOR_VERSION >= 3)
+#include <opencv2/imgproc.hpp>
+#endif
 
 GST_DEBUG_CATEGORY_STATIC (gst_face_detect_debug);
 #define GST_CAT_DEFAULT gst_face_detect_debug
@@ -349,10 +353,8 @@
       "Performs face detection on videos and images, providing detected positions via bus messages",
       "Michael Sheldon <mike@mikeasoft.com>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
 }
 
 /* initialize the new element
@@ -559,7 +561,7 @@
     img_stddev = stddev.val[0];
   }
   if (img_stddev >= filter->min_stddev) {
-    Mat roi (filter->cvGray, r);
+    Mat roi (cv::cvarrToMat (filter->cvGray), r);
     detector->detectMultiScale (roi, faces, filter->scale_factor,
         filter->min_neighbors, filter->flags, cvSize (min_size_width,
             min_size_height), cvSize (0, 0));
@@ -591,7 +593,7 @@
     gboolean do_display = FALSE;
     gboolean post_msg = FALSE;
 
-    Mat mtxOrg (img, false);
+    Mat mtxOrg (cv::cvarrToMat (img));
 
     if (filter->display) {
       if (gst_buffer_is_writable (buf)) {
diff --git a/ext/opencv/gstgrabcut.cpp b/ext/opencv/gstgrabcut.cpp
index eaf727b..f604953 100644
--- a/ext/opencv/gstgrabcut.cpp
+++ b/ext/opencv/gstgrabcut.cpp
@@ -93,6 +93,7 @@
 GST_DEBUG_CATEGORY_STATIC (gst_grabcut_debug);
 #define GST_CAT_DEFAULT gst_grabcut_debug
 
+using namespace cv;
 /* Filter signals and args */
 enum
 {
@@ -184,10 +185,8 @@
 downstream event is used to create a bbox of PR_FG elements.\n\
 IF nothing is present, then nothing is done.", "Miguel Casas-Sanchez <miguelecasassanchez@gmail.com>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
 }
 
 
@@ -394,8 +393,8 @@
   for (x = 0; x < output->cols; x++) {
     for (y = 0; y < output->rows; y++) {
       CV_MAT_ELEM (*output, uchar, y, x) =
-          (cvGetReal2D (input, y, x) <= cv::GC_PR_FGD) ? cvGetReal2D (input, y,
-          x) : cv::GC_PR_FGD;
+          (cvGetReal2D (input, y, x) <= GC_PR_FGD) ? cvGetReal2D (input, y,
+          x) : GC_PR_FGD;
     }
   }
 }
@@ -405,10 +404,10 @@
 initialise_grabcut (struct grabcut_params *GC, IplImage * image_c,
     CvMat * mask_c)
 {
-  GC->image = (void *) new cv::Mat (image_c, false);    /*  "true" refers to copydata */
-  GC->mask = (void *) new cv::Mat (mask_c, false);
-  GC->bgdModel = (void *) new cv::Mat ();       /*  "true" refers to copydata */
-  GC->fgdModel = (void *) new cv::Mat ();
+  GC->image = (void *) new Mat (cvarrToMat (image_c, false));    /*  "true" refers to copydata */
+  GC->mask = (void *) new Mat (cvarrToMat (mask_c, false));
+  GC->bgdModel = (void *) new Mat ();       /*  "true" refers to copydata */
+  GC->fgdModel = (void *) new Mat ();
 
   return (0);
 }
@@ -417,13 +416,13 @@
 run_grabcut_iteration (struct grabcut_params *GC, IplImage * image_c,
     CvMat * mask_c, CvRect * bbox)
 {
-  ((cv::Mat *) GC->image)->data = (uchar *) image_c->imageData;
-  ((cv::Mat *) GC->mask)->data = mask_c->data.ptr;
+  ((Mat *) GC->image)->data = (uchar *) image_c->imageData;
+  ((Mat *) GC->mask)->data = mask_c->data.ptr;
 
   if (cvCountNonZero (mask_c))
-    grabCut (*((cv::Mat *) GC->image), *((cv::Mat *) GC->mask), cv::Rect (),
-        *((cv::Mat *) GC->bgdModel), *((cv::Mat *) GC->fgdModel), 1,
-        cv::GC_INIT_WITH_MASK);
+    grabCut (*((Mat *) GC->image), *((Mat *) GC->mask), Rect (),
+        *((Mat *) GC->bgdModel), *((Mat *) GC->fgdModel), 1,
+        GC_INIT_WITH_MASK);
 
   return (0);
 }
@@ -432,12 +431,11 @@
 run_grabcut_iteration2 (struct grabcut_params *GC, IplImage * image_c,
     CvMat * mask_c, CvRect * bbox)
 {
-  ((cv::Mat *) GC->image)->data = (uchar *) image_c->imageData;
-  ((cv::Mat *) GC->mask)->data = mask_c->data.ptr;
-
-  grabCut (*((cv::Mat *) GC->image), *((cv::Mat *) GC->mask), *(bbox),
-      *((cv::Mat *) GC->bgdModel), *((cv::Mat *) GC->fgdModel), 1,
-      cv::GC_INIT_WITH_RECT);
+  ((Mat *) GC->image)->data = (uchar *) image_c->imageData;
+  ((Mat *) GC->mask)->data = mask_c->data.ptr;
+  grabCut (*((Mat *) GC->image), *((Mat *) GC->mask), *(bbox),
+      *((Mat *) GC->bgdModel), *((Mat *) GC->fgdModel), 1,
+      GC_INIT_WITH_RECT);
 
   return (0);
 }
@@ -445,10 +443,10 @@
 int
 finalise_grabcut (struct grabcut_params *GC)
 {
-  delete ((cv::Mat *) GC->image);
-  delete ((cv::Mat *) GC->mask);
-  delete ((cv::Mat *) GC->bgdModel);
-  delete ((cv::Mat *) GC->fgdModel);
+  delete ((Mat *) GC->image);
+  delete ((Mat *) GC->mask);
+  delete ((Mat *) GC->bgdModel);
+  delete ((Mat *) GC->fgdModel);
 
   return (0);
 }
diff --git a/ext/opencv/gsthanddetect.cpp b/ext/opencv/gsthanddetect.cpp
index e36b80e..f85f2c9 100644
--- a/ext/opencv/gsthanddetect.cpp
+++ b/ext/opencv/gsthanddetect.cpp
@@ -72,6 +72,7 @@
 #define HAAR_FILE_PALM GST_HAAR_CASCADES_DIR G_DIR_SEPARATOR_S "palm.xml"
 
 using namespace cv;
+using namespace std;
 /* Filter signals and args */
 enum
 {
@@ -245,10 +246,8 @@
       "Performs hand gesture detection on videos, providing detected hand positions via bus message and navigation event, and deals with hand gesture events",
       "Andol Li <andol@andol.info>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
 
 }
 
@@ -407,7 +406,8 @@
     cvCvtColor (img, filter->cvGray, CV_RGB2GRAY);
 
     /* detect FIST gesture fist */
-    Mat roi (filter->cvGray, Rect (filter->cvGray->origin,
+    Mat image = cvarrToMat(filter->cvGray);
+    Mat roi (image, Rect (filter->cvGray->origin,
             filter->cvGray->origin, filter->cvGray->width,
             filter->cvGray->height));
     filter->cvCascade_fist->detectMultiScale (roi, hands, 1.1, 2,
diff --git a/ext/opencv/gstmotioncells.cpp b/ext/opencv/gstmotioncells.cpp
index e1d412f..33f314a 100644
--- a/ext/opencv/gstmotioncells.cpp
+++ b/ext/opencv/gstmotioncells.cpp
@@ -308,10 +308,8 @@
       "Performs motion detection on videos and images, providing detected motion cells index via bus messages",
       "Robert Jobbagy <jobbagy dot robert at gmail dot com>, Nicola Murino <nicola dot murino at gmail.com>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
 }
 
 /* initialize the new element
diff --git a/ext/opencv/gstopencv.cpp b/ext/opencv/gstopencv.cpp
index 4077ba6..8f50cd8 100644
--- a/ext/opencv/gstopencv.cpp
+++ b/ext/opencv/gstopencv.cpp
@@ -33,7 +33,6 @@
 #include "gstfaceblur.h"
 #include "gstfacedetect.h"
 #include "gstmotioncells.h"
-#include "gstpyramidsegment.h"
 #include "gsttemplatematch.h"
 #include "gsttextoverlay.h"
 #include "gsthanddetect.h"
@@ -76,9 +75,6 @@
   if (!gst_motion_cells_plugin_init (plugin))
     return FALSE;
 
-  if (!gst_pyramid_segment_plugin_init (plugin))
-    return FALSE;
-
   if (!gst_template_match_plugin_init (plugin))
     return FALSE;
 
diff --git a/ext/opencv/gstopencvutils.cpp b/ext/opencv/gstopencvutils.cpp
index da6eea9..57b660d 100644
--- a/ext/opencv/gstopencvutils.cpp
+++ b/ext/opencv/gstopencvutils.cpp
@@ -24,7 +24,7 @@
 #endif
 
 #include "gstopencvutils.h"
-#include <opencv2/core/types_c.h>
+#include <opencv2/core/core_c.h>
 
 
 gboolean
diff --git a/ext/opencv/gstpyramidsegment.cpp b/ext/opencv/gstpyramidsegment.cpp
deleted file mode 100644
index d8247c0..0000000
--- a/ext/opencv/gstpyramidsegment.cpp
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2005 Thomas Vander Stichele <thomas@apestaart.org>
- * Copyright (C) 2005 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
- * Copyright (C) 2008 Michael Sheldon <mike@mikeasoft.com>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Alternatively, the contents of this file may be used under the
- * GNU Lesser General Public License Version 2.1 (the "LGPL"), in
- * which case the following provisions apply instead of the ones
- * mentioned above:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-/**
- * SECTION:element-pyramidsegment
- *
- * Applies pyramid segmentation to a video or image.
- *
- * <refsect2>
- * <title>Example launch line</title>
- * |[
- * gst-launch-1.0 -v videotestsrc ! pyramidsegment ! videoconvert ! autovideosink
- * ]|
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-#  include <config.h>
-#endif
-
-#include "gstpyramidsegment.h"
-
-#define BLOCK_SIZE 1000
-
-GST_DEBUG_CATEGORY_STATIC (gst_pyramid_segment_debug);
-#define GST_CAT_DEFAULT gst_pyramid_segment_debug
-
-using namespace cv;
-/* Filter signals and args */
-enum
-{
-  /* FILL ME */
-  LAST_SIGNAL
-};
-
-enum
-{
-  PROP_0,
-  PROP_SILENT,
-  PROP_THRESHOLD1,
-  PROP_THRESHOLD2,
-  PROP_LEVEL
-};
-
-/* the capabilities of the inputs and outputs.
- *
- * describe the real formats here.
- */
-static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
-    GST_PAD_SINK,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("RGB"))
-    );
-
-static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
-    GST_PAD_SRC,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("RGB"))
-    );
-
-G_DEFINE_TYPE (GstPyramidSegment, gst_pyramid_segment,
-    GST_TYPE_OPENCV_VIDEO_FILTER);
-
-static void gst_pyramid_segment_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec);
-static void gst_pyramid_segment_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec);
-
-static GstFlowReturn gst_pyramid_segment_transform_ip (GstOpencvVideoFilter *
-    base, GstBuffer * buf, IplImage * img);
-
-/* Clean up */
-static void
-gst_pyramid_segment_finalize (GObject * obj)
-{
-  GstPyramidSegment *filter = GST_PYRAMID_SEGMENT (obj);
-
-  cvReleaseMemStorage (&filter->storage);
-
-  G_OBJECT_CLASS (gst_pyramid_segment_parent_class)->finalize (obj);
-}
-
-/* initialize the pyramidsegment's class */
-static void
-gst_pyramid_segment_class_init (GstPyramidSegmentClass * klass)
-{
-  GObjectClass *gobject_class;
-  GstOpencvVideoFilterClass *gstopencvbasefilter_class;
-
-  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-  gobject_class = (GObjectClass *) klass;
-  gstopencvbasefilter_class = (GstOpencvVideoFilterClass *) klass;
-
-  gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_pyramid_segment_finalize);
-  gobject_class->set_property = gst_pyramid_segment_set_property;
-  gobject_class->get_property = gst_pyramid_segment_get_property;
-
-  gstopencvbasefilter_class->cv_trans_ip_func =
-      gst_pyramid_segment_transform_ip;
-
-  g_object_class_install_property (gobject_class, PROP_SILENT,
-      g_param_spec_boolean ("silent", "Silent", "Produce verbose output ?",
-          FALSE, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
-
-  g_object_class_install_property (gobject_class, PROP_THRESHOLD1,
-      g_param_spec_double ("threshold1", "Threshold1",
-          "Error threshold for establishing links", 0, 1000, 50,
-          (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
-
-  g_object_class_install_property (gobject_class, PROP_THRESHOLD2,
-      g_param_spec_double ("threshold2", "Threshold2",
-          "Error threshold for segment clustering", 0, 1000, 60,
-          (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
-
-  g_object_class_install_property (gobject_class, PROP_LEVEL,
-      g_param_spec_int ("level", "Level",
-          "Maximum level of the pyramid segmentation", 1, 4, 4,
-          (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
-
-  gst_element_class_set_static_metadata (element_class,
-      "pyramidsegment",
-      "Filter/Effect/Video",
-      "Applies pyramid segmentation to a video or image.",
-      "Michael Sheldon <mike@mikeasoft.com>");
-
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
-}
-
-/* initialize the new element
- * instantiate pads and add them to element
- * set pad calback functions
- * initialize instance structure
- */
-static void
-gst_pyramid_segment_init (GstPyramidSegment * filter)
-{
-  filter->storage = cvCreateMemStorage (BLOCK_SIZE);
-  filter->comp =
-      cvCreateSeq (0, sizeof (CvSeq), sizeof (CvPoint), filter->storage);
-  filter->silent = FALSE;
-  filter->threshold1 = 50.0;
-  filter->threshold2 = 60.0;
-  filter->level = 4;
-
-  gst_opencv_video_filter_set_in_place (GST_OPENCV_VIDEO_FILTER_CAST (filter),
-      TRUE);
-}
-
-static void
-gst_pyramid_segment_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec)
-{
-  GstPyramidSegment *filter = GST_PYRAMID_SEGMENT (object);
-
-  switch (prop_id) {
-    case PROP_SILENT:
-      filter->silent = g_value_get_boolean (value);
-      break;
-    case PROP_THRESHOLD1:
-      filter->threshold1 = g_value_get_double (value);
-      break;
-    case PROP_THRESHOLD2:
-      filter->threshold2 = g_value_get_double (value);
-      break;
-    case PROP_LEVEL:
-      filter->level = g_value_get_int (value);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
-}
-
-static void
-gst_pyramid_segment_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec)
-{
-  GstPyramidSegment *filter = GST_PYRAMID_SEGMENT (object);
-
-  switch (prop_id) {
-    case PROP_SILENT:
-      g_value_set_boolean (value, filter->silent);
-      break;
-    case PROP_THRESHOLD1:
-      g_value_set_double (value, filter->threshold1);
-      break;
-    case PROP_THRESHOLD2:
-      g_value_set_double (value, filter->threshold2);
-      break;
-    case PROP_LEVEL:
-      g_value_set_int (value, filter->level);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
-}
-
-/* transform function
- * this function does the actual processing
- */
-static GstFlowReturn
-gst_pyramid_segment_transform_ip (GstOpencvVideoFilter * base, GstBuffer * buf,
-    IplImage * img)
-{
-  GstPyramidSegment *filter = GST_PYRAMID_SEGMENT (base);
-
-  cvPyrSegmentation (img, img, filter->storage,
-      &(filter->comp), filter->level, filter->threshold1, filter->threshold2);
-
-  return GST_FLOW_OK;
-}
-
-
-/* entry point to initialize the plug-in
- * initialize the plug-in itself
- * register the element factories and other features
- */
-gboolean
-gst_pyramid_segment_plugin_init (GstPlugin * plugin)
-{
-  /* debug category for fltering log messages */
-  GST_DEBUG_CATEGORY_INIT (gst_pyramid_segment_debug, "pyramidsegment",
-      0, "Applies pyramid segmentation to a video or image");
-
-  return gst_element_register (plugin, "pyramidsegment", GST_RANK_NONE,
-      GST_TYPE_PYRAMID_SEGMENT);
-}
diff --git a/ext/opencv/gstpyramidsegment.h b/ext/opencv/gstpyramidsegment.h
deleted file mode 100644
index e715766..0000000
--- a/ext/opencv/gstpyramidsegment.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2005 Thomas Vander Stichele <thomas@apestaart.org>
- * Copyright (C) 2005 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
- * Copyright (C) 2008 Michael Sheldon <mike@mikeasoft.com>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Alternatively, the contents of this file may be used under the
- * GNU Lesser General Public License Version 2.1 (the "LGPL"), in
- * which case the following provisions apply instead of the ones
- * mentioned above:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_PYRAMID_SEGMENT_H__
-#define __GST_PYRAMID_SEGMENT_H__
-
-#include <gstopencvvideofilter.h>
-#include <opencv2/core/version.hpp>
-#include <opencv2/legacy/legacy.hpp>
-
-G_BEGIN_DECLS
-/* #defines don't like whitespacey bits */
-#define GST_TYPE_PYRAMID_SEGMENT \
-  (gst_pyramid_segment_get_type())
-#define GST_PYRAMID_SEGMENT(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_PYRAMID_SEGMENT,GstPyramidSegment))
-#define GST_PYRAMID_SEGMENT_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_PYRAMID_SEGMENT,GstPyramidSegmentClass))
-#define GST_IS_PYRAMID_SEGMENT(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_PYRAMID_SEGMENT))
-#define GST_IS_PYRAMID_SEGMENT_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_PYRAMID_SEGMENT))
-
-typedef struct _GstPyramidSegment GstPyramidSegment;
-typedef struct _GstPyramidSegmentClass GstPyramidSegmentClass;
-
-struct _GstPyramidSegment
-{
-  GstOpencvVideoFilter element;
-
-  GstPad *sinkpad, *srcpad;
-
-  gboolean silent;
-
-  CvMemStorage *storage;
-
-  CvSeq *comp;
-
-  double threshold1, threshold2;
-
-  int level;
-};
-
-struct _GstPyramidSegmentClass
-{
-  GstOpencvVideoFilterClass parent_class;
-};
-
-GType gst_pyramid_segment_get_type (void);
-
-gboolean gst_pyramid_segment_plugin_init (GstPlugin * plugin);
-
-G_END_DECLS
-#endif /* __GST_PYRAMID_SEGMENT_H__ */
diff --git a/ext/opencv/gstretinex.cpp b/ext/opencv/gstretinex.cpp
index 75842f8..a333914 100644
--- a/ext/opencv/gstretinex.cpp
+++ b/ext/opencv/gstretinex.cpp
@@ -167,10 +167,8 @@
       "Multiscale retinex for colour image enhancement",
       "Miguel Casas-Sanchez <miguelecasassanchez@gmail.com>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
 }
 
 /* initialize the new element
@@ -294,7 +292,7 @@
   int gain = 128;
   int offset = 128;
   int filter_size;
-  Mat icvD (retinex->cvD, false);
+  Mat icvD = cvarrToMat(retinex->cvD, false);
 
   if (!gst_buffer_map (buf, &info, (GstMapFlags) GST_MAP_READWRITE)) {
     return GST_FLOW_ERROR;
diff --git a/ext/opencv/gstsegmentation.cpp b/ext/opencv/gstsegmentation.cpp
index e0aa821..472a3c4 100644
--- a/ext/opencv/gstsegmentation.cpp
+++ b/ext/opencv/gstsegmentation.cpp
@@ -91,12 +91,15 @@
 #endif
 
 #include "gstsegmentation.h"
-#include <opencv2/video/background_segm.hpp>
 #include <opencv2/imgproc/imgproc_c.h>
 
 GST_DEBUG_CATEGORY_STATIC (gst_segmentation_debug);
 #define GST_CAT_DEFAULT gst_segmentation_debug
 
+using namespace cv;
+#if (CV_MAJOR_VERSION >= 3)
+  using namespace cv::bgsegm;
+#endif
 /* Filter signals and args */
 enum
 {
@@ -223,10 +226,8 @@
       "Create a Foregound/Background mask applying a particular algorithm",
       "Miguel Casas-Sanchez <miguelecasassanchez@gmail.com>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
 
 }
 
@@ -779,11 +780,16 @@
 int
 initialise_mog (GstSegmentation * filter)
 {
-  filter->img_input_as_cvMat = (void *) new cv::Mat (filter->cvYUV, false);
-  filter->img_fg_as_cvMat = (void *) new cv::Mat (filter->cvFG, false);
+  filter->img_input_as_cvMat = (void *) new Mat (cvarrToMat (filter->cvYUV, false));
+  filter->img_fg_as_cvMat = (void *) new Mat (cvarrToMat(filter->cvFG, false));
 
-  filter->mog = (void *) new cv::BackgroundSubtractorMOG ();
-  filter->mog2 = (void *) new cv::BackgroundSubtractorMOG2 ();
+#if (CV_MAJOR_VERSION >= 3)
+  filter->mog = bgsegm::createBackgroundSubtractorMOG ();
+  filter->mog2 = createBackgroundSubtractorMOG2 ();
+#else
+  filter->mog = (void *) new BackgroundSubtractorMOG ();
+  filter->mog2 = (void *) new BackgroundSubtractorMOG2 ();
+#endif
 
   return (0);
 }
@@ -806,9 +812,15 @@
      European Workshop on Advanced Video-Based Surveillance Systems, 2001
    */
 
-  (*((cv::BackgroundSubtractorMOG *) filter->mog)) (*((cv::Mat *) filter->
-          img_input_as_cvMat), *((cv::Mat *) filter->img_fg_as_cvMat),
+#if (CV_MAJOR_VERSION >= 3)
+  filter->mog->apply (*((Mat *) filter->
+          img_input_as_cvMat), *((Mat *) filter->img_fg_as_cvMat),
       filter->learning_rate);
+#else
+  (*((BackgroundSubtractorMOG *) filter->mog)) (*((Mat *) filter->
+          img_input_as_cvMat), *((Mat *) filter->img_fg_as_cvMat),
+      filter->learning_rate);
+#endif
 
   return (0);
 }
@@ -816,10 +828,10 @@
 int
 run_mog2_iteration (GstSegmentation * filter)
 {
-  ((cv::Mat *) filter->img_input_as_cvMat)->data =
-      (uchar *) filter->cvYUV->imageData;
-  ((cv::Mat *) filter->img_fg_as_cvMat)->data =
-      (uchar *) filter->cvFG->imageData;
+  ((Mat *) filter->img_input_as_cvMat)->data =
+       (uchar *) filter->cvYUV->imageData;
+  ((Mat *) filter->img_fg_as_cvMat)->data =
+       (uchar *) filter->cvFG->imageData;
 
   /*
      BackgroundSubtractorMOG2 [1], Gaussian Mixture-based Background/Foreground
@@ -834,9 +846,15 @@
      Letters, vol. 27, no. 7, pages 773-780, 2006.
    */
 
-  (*((cv::BackgroundSubtractorMOG *) filter->mog2)) (*((cv::Mat *) filter->
-          img_input_as_cvMat), *((cv::Mat *) filter->img_fg_as_cvMat),
+#if (CV_MAJOR_VERSION >= 3)
+  filter->mog2->apply (*((Mat *) filter->
+          img_input_as_cvMat), *((Mat *) filter->img_fg_as_cvMat),
       filter->learning_rate);
+#else
+  (*((BackgroundSubtractorMOG *) filter->mog2)) (*((Mat *) filter->
+          img_input_as_cvMat), *((Mat *) filter->img_fg_as_cvMat),
+      filter->learning_rate);
+#endif
 
   return (0);
 }
@@ -844,9 +862,14 @@
 int
 finalise_mog (GstSegmentation * filter)
 {
-  delete (cv::Mat *) filter->img_input_as_cvMat;
-  delete (cv::Mat *) filter->img_fg_as_cvMat;
-  delete (cv::BackgroundSubtractorMOG *) filter->mog;
-  delete (cv::BackgroundSubtractorMOG2 *) filter->mog2;
+  delete (Mat *) filter->img_input_as_cvMat;
+  delete (Mat *) filter->img_fg_as_cvMat;
+#if (CV_MAJOR_VERSION >= 3)
+  filter->mog.release ();
+  filter->mog2.release ();
+#else
+  delete (BackgroundSubtractorMOG *) filter->mog;
+  delete (BackgroundSubtractorMOG2 *) filter->mog2;
+#endif
   return (0);
 }
diff --git a/ext/opencv/gstsegmentation.h b/ext/opencv/gstsegmentation.h
index 9400853..982e2ba 100644
--- a/ext/opencv/gstsegmentation.h
+++ b/ext/opencv/gstsegmentation.h
@@ -47,7 +47,11 @@
 #include <gst/gst.h>
 #include <gst/video/gstvideofilter.h>
 #include <opencv2/core/core_c.h>
-
+#include <opencv2/video/background_segm.hpp>
+#include <opencv2/core/version.hpp>
+#if (CV_MAJOR_VERSION >= 3)
+  #include <opencv2/bgsegm.hpp>
+#endif
 
 
 G_BEGIN_DECLS
@@ -107,8 +111,13 @@
   CvSeq *contours;
 
   /* for MOG methods */
+#if (CV_MAJOR_VERSION >= 3)
+  cv::Ptr<cv::BackgroundSubtractor> mog;                   /* cv::BackgroundSubtractorMOG */
+  cv::Ptr<cv::BackgroundSubtractorMOG2> mog2;                   /* cv::BackgroundSubtractorMOG2 */
+#else
   void *mog;                    /* cv::BackgroundSubtractorMOG */
   void *mog2;                   /* cv::BackgroundSubtractorMOG2 */
+#endif
   void *img_input_as_cvMat;     /* cv::Mat */
   void *img_fg_as_cvMat;        /* cv::Mat */
   double learning_rate;
diff --git a/ext/opencv/gstskindetect.cpp b/ext/opencv/gstskindetect.cpp
index aade23c..e2fcb59 100644
--- a/ext/opencv/gstskindetect.cpp
+++ b/ext/opencv/gstskindetect.cpp
@@ -60,7 +60,6 @@
 
 #include "gstskindetect.h"
 #include <opencv2/imgproc/imgproc_c.h>
-#include <opencv2/legacy/compat.hpp>
 
 GST_DEBUG_CATEGORY_STATIC (gst_skin_detect_debug);
 #define GST_CAT_DEFAULT gst_skin_detect_debug
@@ -163,10 +162,8 @@
       "Performs non-parametric skin detection on input",
       "Miguel Casas-Sanchez <miguelecasassanchez@gmail.com>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
 
   basesrc_class->stop = gst_skin_detect_stop;
   gstopencvbasefilter_class->cv_set_caps = gst_skin_detect_set_caps;
@@ -341,7 +338,7 @@
 
     cvCvtColor (filter->cvSkinPixels1, filter->cvRGB, CV_GRAY2RGB);
   } else if (RGB == filter->method) {
-    cvCvtPixToPlane (filter->cvRGB, filter->cvR, filter->cvG, filter->cvB, 0);  /*  Extract the 3 color components. */
+    cvSplit (filter->cvRGB, filter->cvR, filter->cvG, filter->cvB, 0);  /*  Extract the 3 color components. */
     cvAdd (filter->cvR, filter->cvG, filter->cvAll, NULL);
     cvAdd (filter->cvB, filter->cvAll, filter->cvAll, NULL);    /*  All = R + G + B */
     cvDiv (filter->cvR, filter->cvAll, filter->cvRp, 1.0);      /*  R' = R / ( R + G + B) */
diff --git a/ext/opencv/gsttemplatematch.cpp b/ext/opencv/gsttemplatematch.cpp
index 1223066..f39208d 100644
--- a/ext/opencv/gsttemplatematch.cpp
+++ b/ext/opencv/gsttemplatematch.cpp
@@ -147,10 +147,8 @@
       "Performs template matching on videos and images, providing detected positions via bus messages.",
       "Noam Lewis <jones.noamle@gmail.com>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
 }
 
 /* initialize the new element
diff --git a/ext/opencv/gsttextoverlay.cpp b/ext/opencv/gsttextoverlay.cpp
index 7025b36..e3dc518 100644
--- a/ext/opencv/gsttextoverlay.cpp
+++ b/ext/opencv/gsttextoverlay.cpp
@@ -211,10 +211,8 @@
       "Filter/Effect/Video",
       "Write text on the top of video", "sreerenj<bsreerenj@gmail.com>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
 
 }
 
diff --git a/ext/opencv/gsttextoverlay.h b/ext/opencv/gsttextoverlay.h
index 65a7d75..13d09fa 100644
--- a/ext/opencv/gsttextoverlay.h
+++ b/ext/opencv/gsttextoverlay.h
@@ -48,6 +48,9 @@
 
 #include <gstopencvvideofilter.h>
 #include <opencv2/core/core_c.h>
+#if (CV_MAJOR_VERSION >= 3)
+#include <opencv2/imgproc/imgproc_c.h>
+#endif
 G_BEGIN_DECLS
 
 /* #defines don't like whitespacey bits */
diff --git a/ext/openexr/Makefile.in b/ext/openexr/Makefile.in
index e215e01..8ac7422 100644
--- a/ext/openexr/Makefile.in
+++ b/ext/openexr/Makefile.in
@@ -322,6 +322,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -343,6 +345,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -392,6 +396,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -537,6 +543,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -663,8 +671,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -707,8 +713,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/openexr/gstopenexrdec.cpp b/ext/openexr/gstopenexrdec.cpp
index a334b0a..8ee4598 100644
--- a/ext/openexr/gstopenexrdec.cpp
+++ b/ext/openexr/gstopenexrdec.cpp
@@ -122,10 +122,8 @@
   element_class = (GstElementClass *) klass;
   video_decoder_class = (GstVideoDecoderClass *) klass;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_openexr_dec_src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_openexr_dec_sink_template));
+  gst_element_class_add_static_pad_template (element_class, &gst_openexr_dec_src_template);
+  gst_element_class_add_static_pad_template (element_class, &gst_openexr_dec_sink_template);
 
   gst_element_class_set_static_metadata (element_class,
       "OpenEXR decoder",
diff --git a/ext/openh264/Makefile.in b/ext/openh264/Makefile.in
index 6d37604..c1d96e5 100644
--- a/ext/openh264/Makefile.in
+++ b/ext/openh264/Makefile.in
@@ -322,6 +322,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -343,6 +345,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -392,6 +396,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -537,6 +543,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -663,8 +671,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -707,8 +713,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/openh264/gstopenh264dec.cpp b/ext/openh264/gstopenh264dec.cpp
index a10e38e..8fad292 100644
--- a/ext/openh264/gstopenh264dec.cpp
+++ b/ext/openh264/gstopenh264dec.cpp
@@ -27,32 +27,16 @@
 #include "config.h"
 #endif
 
-#include <wels/codec_api.h>
-#include <wels/codec_app_def.h>
-#include <wels/codec_def.h>
-
 #include "gstopenh264dec.h"
 #include <gst/gst.h>
 #include <gst/video/video.h>
 #include <gst/video/gstvideodecoder.h>
 #include <string.h>             /* for memcpy */
 
-
-#define GST_OPENH264DEC_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ( \
-                                     (obj), GST_TYPE_OPENH264DEC, \
-                                     GstOpenh264DecPrivate))
-
 GST_DEBUG_CATEGORY_STATIC (gst_openh264dec_debug_category);
 #define GST_CAT_DEFAULT gst_openh264dec_debug_category
 
 /* prototypes */
-
-
-static void gst_openh264dec_set_property (GObject * object,
-    guint property_id, const GValue * value, GParamSpec * pspec);
-static void gst_openh264dec_get_property (GObject * object, guint property_id,
-    GValue * value, GParamSpec * pspec);
-
 static gboolean gst_openh264dec_start (GstVideoDecoder * decoder);
 static gboolean gst_openh264dec_stop (GstVideoDecoder * decoder);
 
@@ -66,19 +50,6 @@
 static gboolean gst_openh264dec_decide_allocation (GstVideoDecoder * decoder,
     GstQuery * query);
 
-enum
-{
-  PROP_0,
-  N_PROPERTIES
-};
-
-struct _GstOpenh264DecPrivate
-{
-  ISVCDecoder *decoder;
-  GstVideoCodecState *input_state;
-  guint width, height;
-};
-
 /* pad templates */
 
 static GstStaticPadTemplate gst_openh264dec_sink_template =
@@ -86,7 +57,8 @@
     GST_PAD_SINK,
     GST_PAD_ALWAYS,
     GST_STATIC_CAPS
-    ("video/x-h264, stream-format=(string)byte-stream, alignment=(string)au,profile=(string){constrained-baseline,baseline}"));
+    ("video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, "
+        "profile=(string){ constrained-baseline, baseline}"));
 
 static GstStaticPadTemplate gst_openh264dec_src_template =
 GST_STATIC_PAD_TEMPLATE ("src",
@@ -104,23 +76,16 @@
 static void
 gst_openh264dec_class_init (GstOpenh264DecClass * klass)
 {
-  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
   GstVideoDecoderClass *video_decoder_class = GST_VIDEO_DECODER_CLASS (klass);
 
-  g_type_class_add_private (klass, sizeof (GstOpenh264DecPrivate));
-
-  /* Setting up pads and setting metadata should be moved to
-     base_class_init if you intend to subclass this class. */
-  gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
-      gst_static_pad_template_get (&gst_openh264dec_sink_template));
-  gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
-      gst_static_pad_template_get (&gst_openh264dec_src_template));
+  gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+      &gst_openh264dec_sink_template);
+  gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+      &gst_openh264dec_src_template);
 
   gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass),
       "OpenH264 video decoder", "Decoder/Video", "OpenH264 video decoder",
       "Ericsson AB, http://www.ericsson.com");
-  gobject_class->set_property = gst_openh264dec_set_property;
-  gobject_class->get_property = gst_openh264dec_get_property;
 
   video_decoder_class->start = GST_DEBUG_FUNCPTR (gst_openh264dec_start);
   video_decoder_class->stop = GST_DEBUG_FUNCPTR (gst_openh264dec_stop);
@@ -138,43 +103,12 @@
 static void
 gst_openh264dec_init (GstOpenh264Dec * openh264dec)
 {
-  openh264dec->priv = GST_OPENH264DEC_GET_PRIVATE (openh264dec);
-  openh264dec->priv->decoder = NULL;
+  openh264dec->decoder = NULL;
 
   gst_video_decoder_set_packetized (GST_VIDEO_DECODER (openh264dec), TRUE);
   gst_video_decoder_set_needs_format (GST_VIDEO_DECODER (openh264dec), TRUE);
 }
 
-void
-gst_openh264dec_set_property (GObject * object, guint property_id,
-    const GValue * value, GParamSpec * pspec)
-{
-  GstOpenh264Dec *openh264dec = GST_OPENH264DEC (object);
-
-  GST_DEBUG_OBJECT (openh264dec, "set_property");
-
-  switch (property_id) {
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-      break;
-  }
-}
-
-void
-gst_openh264dec_get_property (GObject * object, guint property_id,
-    GValue * value, GParamSpec * pspec)
-{
-  GstOpenh264Dec *openh264dec = GST_OPENH264DEC (object);
-
-  GST_DEBUG_OBJECT (openh264dec, "get_property");
-
-  switch (property_id) {
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-      break;
-  }
-}
-
 static gboolean
 gst_openh264dec_start (GstVideoDecoder * decoder)
 {
@@ -182,12 +116,12 @@
   gint ret;
   SDecodingParam dec_param = { 0 };
 
-  if (openh264dec->priv->decoder != NULL) {
-    openh264dec->priv->decoder->Uninitialize ();
-    WelsDestroyDecoder (openh264dec->priv->decoder);
-    openh264dec->priv->decoder = NULL;
+  if (openh264dec->decoder != NULL) {
+    openh264dec->decoder->Uninitialize ();
+    WelsDestroyDecoder (openh264dec->decoder);
+    openh264dec->decoder = NULL;
   }
-  WelsCreateDecoder (&(openh264dec->priv->decoder));
+  WelsCreateDecoder (&(openh264dec->decoder));
 
   dec_param.uiTargetDqLayer = 255;
   dec_param.eEcActiveIdc = ERROR_CON_FRAME_COPY;
@@ -196,7 +130,7 @@
 #endif
   dec_param.sVideoProperty.eVideoBsType = VIDEO_BITSTREAM_AVC;
 
-  ret = openh264dec->priv->decoder->Initialize (&dec_param);
+  ret = openh264dec->decoder->Initialize (&dec_param);
 
   GST_DEBUG_OBJECT (openh264dec,
       "openh264_dec_start called, openh264dec %sinitialized OK!",
@@ -210,17 +144,17 @@
 {
   GstOpenh264Dec *openh264dec = GST_OPENH264DEC (decoder);
 
-  if (openh264dec->priv->decoder) {
-    openh264dec->priv->decoder->Uninitialize ();
-    WelsDestroyDecoder (openh264dec->priv->decoder);
-    openh264dec->priv->decoder = NULL;
+  if (openh264dec->decoder) {
+    openh264dec->decoder->Uninitialize ();
+    WelsDestroyDecoder (openh264dec->decoder);
+    openh264dec->decoder = NULL;
   }
 
-  if (openh264dec->priv->input_state) {
-    gst_video_codec_state_unref (openh264dec->priv->input_state);
-    openh264dec->priv->input_state = NULL;
+  if (openh264dec->input_state) {
+    gst_video_codec_state_unref (openh264dec->input_state);
+    openh264dec->input_state = NULL;
   }
-  openh264dec->priv->width = openh264dec->priv->height = 0;
+  openh264dec->width = openh264dec->height = 0;
 
   return TRUE;
 }
@@ -231,14 +165,13 @@
 {
   GstOpenh264Dec *openh264dec = GST_OPENH264DEC (decoder);
 
-  GST_DEBUG_OBJECT (openh264dec,
-      "openh264_dec_set_format called, caps: %" GST_PTR_FORMAT, state->caps);
+  GST_DEBUG_OBJECT (openh264dec, "input caps: %" GST_PTR_FORMAT, state->caps);
 
-  if (openh264dec->priv->input_state) {
-    gst_video_codec_state_unref (openh264dec->priv->input_state);
-    openh264dec->priv->input_state = NULL;
+  if (openh264dec->input_state) {
+    gst_video_codec_state_unref (openh264dec->input_state);
+    openh264dec->input_state = NULL;
   }
-  openh264dec->priv->input_state = gst_video_codec_state_ref (state);
+  openh264dec->input_state = gst_video_codec_state_ref (state);
 
   return TRUE;
 }
@@ -282,7 +215,7 @@
 
     memset (&dst_buf_info, 0, sizeof (SBufferInfo));
     ret =
-        openh264dec->priv->decoder->DecodeFrame2 (map_info.data, map_info.size,
+        openh264dec->decoder->DecodeFrame2 (map_info.data, map_info.size,
         yuvdata, &dst_buf_info);
 
     if (ret == dsNoParamSets) {
@@ -305,9 +238,7 @@
     frame = NULL;
   } else {
     memset (&dst_buf_info, 0, sizeof (SBufferInfo));
-    ret =
-        openh264dec->priv->decoder->DecodeFrame2 (NULL, 0, yuvdata,
-        &dst_buf_info);
+    ret = openh264dec->decoder->DecodeFrame2 (NULL, 0, yuvdata, &dst_buf_info);
     if (ret != dsErrorFree) {
       gst_video_codec_frame_unref (frame);
       return GST_FLOW_EOS;
@@ -334,13 +265,13 @@
   actual_height = dst_buf_info.UsrData.sSystemBuffer.iHeight;
 
   if (!gst_pad_has_current_caps (GST_VIDEO_DECODER_SRC_PAD (openh264dec))
-      || actual_width != openh264dec->priv->width
-      || actual_height != openh264dec->priv->height) {
+      || actual_width != openh264dec->width
+      || actual_height != openh264dec->height) {
     state =
         gst_video_decoder_set_output_state (decoder, GST_VIDEO_FORMAT_I420,
-        actual_width, actual_height, openh264dec->priv->input_state);
-    openh264dec->priv->width = actual_width;
-    openh264dec->priv->height = actual_height;
+        actual_width, actual_height, openh264dec->input_state);
+    openh264dec->width = actual_width;
+    openh264dec->height = actual_height;
 
     if (!gst_video_decoder_negotiate (decoder)) {
       GST_ERROR_OBJECT (openh264dec,
@@ -397,7 +328,7 @@
   GST_DEBUG_OBJECT (openh264dec, "finish");
 
   /* Decoder not negotiated yet */
-  if (openh264dec->priv->width == 0)
+  if (openh264dec->width == 0)
     return GST_FLOW_OK;
 
   /* Drain all pending frames */
diff --git a/ext/openh264/gstopenh264dec.h b/ext/openh264/gstopenh264dec.h
index 3d56ab4..7d045b8 100644
--- a/ext/openh264/gstopenh264dec.h
+++ b/ext/openh264/gstopenh264dec.h
@@ -33,7 +33,12 @@
 #include <gst/video/video.h>
 #include <gst/video/gstvideodecoder.h>
 
+#include <wels/codec_api.h>
+#include <wels/codec_app_def.h>
+#include <wels/codec_def.h>
+
 G_BEGIN_DECLS
+
 #define GST_TYPE_OPENH264DEC          (gst_openh264dec_get_type())
 #define GST_OPENH264DEC(obj)          (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_OPENH264DEC,GstOpenh264Dec))
 #define GST_OPENH264DEC_CLASS(klass)  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_OPENH264DEC,GstOpenh264DecClass))
@@ -42,14 +47,15 @@
 
 typedef struct _GstOpenh264Dec GstOpenh264Dec;
 typedef struct _GstOpenh264DecClass GstOpenh264DecClass;
-typedef struct _GstOpenh264DecPrivate GstOpenh264DecPrivate;
 
 struct _GstOpenh264Dec
 {
-    GstVideoDecoder base_openh264dec;
+  GstVideoDecoder base_openh264dec;
 
-    /*< private >*/
-    GstOpenh264DecPrivate *priv;
+  /*< private >*/
+  ISVCDecoder *decoder;
+  GstVideoCodecState *input_state;
+  guint width, height;
 };
 
 struct _GstOpenh264DecClass
diff --git a/ext/openh264/gstopenh264enc.cpp b/ext/openh264/gstopenh264enc.cpp
index 8411e37..a5e488f 100644
--- a/ext/openh264/gstopenh264enc.cpp
+++ b/ext/openh264/gstopenh264enc.cpp
@@ -35,14 +35,6 @@
 #include <gst/video/gstvideoencoder.h>
 #include <string.h>
 
-#include <wels/codec_api.h>
-#include <wels/codec_app_def.h>
-#include <wels/codec_def.h>
-#include <wels/codec_ver.h>
-
-#define GST_OPENH264ENC_GET_PRIVATE(obj) \
-    (G_TYPE_INSTANCE_GET_PRIVATE((obj), GST_TYPE_OPENH264ENC, GstOpenh264EncPrivate))
-
 GST_DEBUG_CATEGORY_STATIC (gst_openh264enc_debug_category);
 #define GST_CAT_DEFAULT gst_openh264enc_debug_category
 
@@ -77,7 +69,8 @@
     static const GEnumValue rc_modes_types[] = {
       {RC_QUALITY_MODE, "Quality mode", "quality"},
       {RC_BITRATE_MODE, "Bitrate mode", "bitrate"},
-      {RC_BUFFERBASED_MODE, "No bitrate control, just using buffer status", "buffer"},
+      {RC_BUFFERBASED_MODE, "No bitrate control, just using buffer status",
+          "buffer"},
       {RC_OFF_MODE, "Rate control off mode", "off"},
       {0, NULL, NULL},
     };
@@ -88,13 +81,6 @@
   return rc_modes_type;
 }
 
-typedef enum _GstOpenh264encDeblockingMode
-{
-  GST_OPENH264_DEBLOCKING_ON = 0,
-  GST_OPENH264_DEBLOCKING_OFF = 1,
-  GST_OPENH264_DEBLOCKING_NOT_SLICE_BOUNDARIES = 2
-} GstOpenh264encDeblockingMode;
-
 #define GST_TYPE_OPENH264ENC_DEBLOCKING_MODE (gst_openh264enc_deblocking_mode_get_type ())
 static GType
 gst_openh264enc_deblocking_mode_get_type (void)
@@ -108,9 +94,9 @@
   };
   static gsize id = 0;
 
-  if (g_once_init_enter (& id)) {
+  if (g_once_init_enter (&id)) {
     GType _id = g_enum_register_static ("GstOpenh264encDeblockingModes", types);
-    g_once_init_leave (& id, _id);
+    g_once_init_leave (&id, _id);
   }
 
   return (GType) id;
@@ -128,7 +114,7 @@
   static gsize id = 0;
 
   if (g_once_init_enter (&id)) {
-    GType _id = g_enum_register_static ("GstOpenh264EncSliceMode", types);
+    GType _id = g_enum_register_static ("GstOpenh264EncSliceModes", types);
     g_once_init_leave (&id, _id);
   }
 
@@ -147,9 +133,9 @@
   };
   static gsize id = 0;
 
-  if (g_once_init_enter (& id)) {
+  if (g_once_init_enter (&id)) {
     GType _id = g_enum_register_static ("GstOpenh264encComplexity", types);
-    g_once_init_leave (& id, _id);
+    g_once_init_leave (&id, _id);
   }
 
   return (GType) id;
@@ -178,9 +164,9 @@
 
 
 #define DEFAULT_BITRATE            (128000)
+#define DEFAULT_MAX_BITRATE        (UNSPECIFIED_BIT_RATE)
 #define DEFAULT_GOP_SIZE           (90)
 #define DEFAULT_MAX_SLICE_SIZE     (1500000)
-#define DROP_BITRATE               20000
 #define START_FRAMERATE            30
 #define DEFAULT_USAGE_TYPE         CAMERA_VIDEO_REAL_TIME
 #define DEFAULT_RATE_CONTROL       RC_QUALITY_MODE
@@ -200,6 +186,7 @@
   PROP_0,
   PROP_USAGE_TYPE,
   PROP_BITRATE,
+  PROP_MAX_BITRATE,
   PROP_GOP_SIZE,
   PROP_MAX_SLICE_SIZE,
   PROP_RATE_CONTROL,
@@ -216,32 +203,6 @@
   N_PROPERTIES
 };
 
-struct _GstOpenh264EncPrivate
-{
-  ISVCEncoder *encoder;
-  EUsageType usage_type;
-  guint gop_size;
-  RC_MODES rate_control;
-  guint max_slice_size;
-  guint bitrate;
-  guint framerate;
-  guint multi_thread;
-  gboolean enable_denoise;
-  gboolean enable_frame_skip;
-  GstVideoCodecState *input_state;
-  guint32 drop_bitrate;
-  guint64 time_per_frame;
-  guint64 frame_count;
-  guint64 previous_timestamp;
-  GstOpenh264encDeblockingMode deblocking_mode;
-  gboolean background_detection;
-  gboolean adaptive_quantization;
-  gboolean scene_change_detection;
-  GstOpenh264EncSliceMode slice_mode;
-  guint num_slices;
-  ECOMPLEXITY_MODE complexity;
-};
-
 /* pad templates */
 
 static GstStaticPadTemplate gst_openh264enc_sink_template =
@@ -273,14 +234,12 @@
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
   GstVideoEncoderClass *video_encoder_class = GST_VIDEO_ENCODER_CLASS (klass);
 
-  g_type_class_add_private (klass, sizeof (GstOpenh264EncPrivate));
-
   /* Setting up pads and setting metadata should be moved to
      base_class_init if you intend to subclass this class. */
-  gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
-      gst_static_pad_template_get (&gst_openh264enc_src_template));
-  gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
-      gst_static_pad_template_get (&gst_openh264enc_sink_template));
+  gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+      &gst_openh264enc_src_template);
+  gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+      &gst_openh264enc_sink_template);
 
   gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass),
       "OpenH264 video encoder", "Encoder/Video", "OpenH264 video encoder",
@@ -334,6 +293,12 @@
           0, G_MAXUINT, DEFAULT_BITRATE,
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
 
+  g_object_class_install_property (gobject_class, PROP_MAX_BITRATE,
+      g_param_spec_uint ("max-bitrate", "Max Bitrate",
+          "Maximum Bitrate (in bits per second)",
+          0, G_MAXUINT, DEFAULT_MAX_BITRATE,
+          (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
+
   g_object_class_install_property (gobject_class, PROP_GOP_SIZE,
       g_param_spec_uint ("gop-size", "GOP size",
           "Number of frames between intra frames",
@@ -380,37 +345,36 @@
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
 
   g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_COMPLEXITY,
-      g_param_spec_enum ("complexity", "Complexity / quality / speed tradeoff", "Complexity",
-          GST_TYPE_OPENH264ENC_COMPLEXITY, DEFAULT_COMPLEXITY,
+      g_param_spec_enum ("complexity", "Complexity / quality / speed tradeoff",
+          "Complexity", GST_TYPE_OPENH264ENC_COMPLEXITY, DEFAULT_COMPLEXITY,
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
 }
 
 static void
 gst_openh264enc_init (GstOpenh264Enc * openh264enc)
 {
-  openh264enc->priv = GST_OPENH264ENC_GET_PRIVATE (openh264enc);
-  openh264enc->priv->gop_size = DEFAULT_GOP_SIZE;
-  openh264enc->priv->usage_type = DEFAULT_USAGE_TYPE;
-  openh264enc->priv->rate_control = DEFAULT_RATE_CONTROL;
-  openh264enc->priv->multi_thread = DEFAULT_MULTI_THREAD;
-  openh264enc->priv->max_slice_size = DEFAULT_MAX_SLICE_SIZE;
-  openh264enc->priv->bitrate = DEFAULT_BITRATE;
-  openh264enc->priv->framerate = START_FRAMERATE;
-  openh264enc->priv->input_state = NULL;
-  openh264enc->priv->time_per_frame = GST_SECOND / openh264enc->priv->framerate;
-  openh264enc->priv->frame_count = 0;
-  openh264enc->priv->previous_timestamp = 0;
-  openh264enc->priv->drop_bitrate = DROP_BITRATE;
-  openh264enc->priv->enable_denoise = DEFAULT_ENABLE_DENOISE;
-  openh264enc->priv->enable_frame_skip = DEFAULT_ENABLE_FRAME_SKIP;
-  openh264enc->priv->deblocking_mode = DEFAULT_DEBLOCKING_MODE;
-  openh264enc->priv->background_detection = DEFAULT_BACKGROUND_DETECTION;
-  openh264enc->priv->adaptive_quantization = DEFAULT_ADAPTIVE_QUANTIZATION;
-  openh264enc->priv->scene_change_detection = DEFAULT_SCENE_CHANGE_DETECTION;
-  openh264enc->priv->slice_mode = DEFAULT_SLICE_MODE;
-  openh264enc->priv->num_slices = DEFAULT_NUM_SLICES;
-  openh264enc->priv->encoder = NULL;
-  openh264enc->priv->complexity = DEFAULT_COMPLEXITY;
+  openh264enc->gop_size = DEFAULT_GOP_SIZE;
+  openh264enc->usage_type = DEFAULT_USAGE_TYPE;
+  openh264enc->rate_control = DEFAULT_RATE_CONTROL;
+  openh264enc->multi_thread = DEFAULT_MULTI_THREAD;
+  openh264enc->max_slice_size = DEFAULT_MAX_SLICE_SIZE;
+  openh264enc->bitrate = DEFAULT_BITRATE;
+  openh264enc->max_bitrate = DEFAULT_MAX_BITRATE;
+  openh264enc->framerate = START_FRAMERATE;
+  openh264enc->input_state = NULL;
+  openh264enc->time_per_frame = GST_SECOND / openh264enc->framerate;
+  openh264enc->frame_count = 0;
+  openh264enc->previous_timestamp = 0;
+  openh264enc->enable_denoise = DEFAULT_ENABLE_DENOISE;
+  openh264enc->enable_frame_skip = DEFAULT_ENABLE_FRAME_SKIP;
+  openh264enc->deblocking_mode = DEFAULT_DEBLOCKING_MODE;
+  openh264enc->background_detection = DEFAULT_BACKGROUND_DETECTION;
+  openh264enc->adaptive_quantization = DEFAULT_ADAPTIVE_QUANTIZATION;
+  openh264enc->scene_change_detection = DEFAULT_SCENE_CHANGE_DETECTION;
+  openh264enc->slice_mode = DEFAULT_SLICE_MODE;
+  openh264enc->num_slices = DEFAULT_NUM_SLICES;
+  openh264enc->encoder = NULL;
+  openh264enc->complexity = DEFAULT_COMPLEXITY;
   gst_openh264enc_set_usage_type (openh264enc, CAMERA_VIDEO_REAL_TIME);
   gst_openh264enc_set_rate_control (openh264enc, RC_QUALITY_MODE);
 }
@@ -420,10 +384,10 @@
 {
   switch (usage_type) {
     case CAMERA_VIDEO_REAL_TIME:
-      openh264enc->priv->usage_type = CAMERA_VIDEO_REAL_TIME;
+      openh264enc->usage_type = CAMERA_VIDEO_REAL_TIME;
       break;
     case SCREEN_CONTENT_REAL_TIME:
-      openh264enc->priv->usage_type = SCREEN_CONTENT_REAL_TIME;
+      openh264enc->usage_type = SCREEN_CONTENT_REAL_TIME;
       break;
     default:
       g_assert_not_reached ();
@@ -435,16 +399,16 @@
 {
   switch (rc_mode) {
     case RC_QUALITY_MODE:
-      openh264enc->priv->rate_control = RC_QUALITY_MODE;
+      openh264enc->rate_control = RC_QUALITY_MODE;
       break;
     case RC_BITRATE_MODE:
-      openh264enc->priv->rate_control = RC_BITRATE_MODE;
+      openh264enc->rate_control = RC_BITRATE_MODE;
       break;
     case RC_BUFFERBASED_MODE:
-      openh264enc->priv->rate_control = RC_BUFFERBASED_MODE;
+      openh264enc->rate_control = RC_BUFFERBASED_MODE;
       break;
     case RC_OFF_MODE:
-      openh264enc->priv->rate_control = RC_OFF_MODE;
+      openh264enc->rate_control = RC_OFF_MODE;
       break;
     default:
       g_assert_not_reached ();
@@ -461,11 +425,15 @@
 
   switch (property_id) {
     case PROP_BITRATE:
-      openh264enc->priv->bitrate = g_value_get_uint (value);
+      openh264enc->bitrate = g_value_get_uint (value);
+      break;
+
+    case PROP_MAX_BITRATE:
+      openh264enc->max_bitrate = g_value_get_uint (value);
       break;
 
     case PROP_MULTI_THREAD:
-      openh264enc->priv->multi_thread = g_value_get_uint (value);
+      openh264enc->multi_thread = g_value_get_uint (value);
       break;
 
     case PROP_USAGE_TYPE:
@@ -473,11 +441,11 @@
       break;
 
     case PROP_ENABLE_DENOISE:
-      openh264enc->priv->enable_denoise = g_value_get_boolean (value);
+      openh264enc->enable_denoise = g_value_get_boolean (value);
       break;
 
     case PROP_ENABLE_FRAME_SKIP:
-      openh264enc->priv->enable_frame_skip = g_value_get_boolean (value);
+      openh264enc->enable_frame_skip = g_value_get_boolean (value);
       break;
 
     case PROP_RATE_CONTROL:
@@ -485,40 +453,40 @@
       break;
 
     case PROP_GOP_SIZE:
-      openh264enc->priv->gop_size = g_value_get_uint (value);
+      openh264enc->gop_size = g_value_get_uint (value);
       break;
 
     case PROP_MAX_SLICE_SIZE:
-      openh264enc->priv->max_slice_size = g_value_get_uint (value);
+      openh264enc->max_slice_size = g_value_get_uint (value);
       break;
 
     case PROP_DEBLOCKING_MODE:
-      openh264enc->priv->deblocking_mode =
+      openh264enc->deblocking_mode =
           (GstOpenh264encDeblockingMode) g_value_get_enum (value);
       break;
 
     case PROP_BACKGROUND_DETECTION:
-      openh264enc->priv->background_detection = g_value_get_boolean (value);
+      openh264enc->background_detection = g_value_get_boolean (value);
       break;
 
     case PROP_ADAPTIVE_QUANTIZATION:
-      openh264enc->priv->adaptive_quantization = g_value_get_boolean (value);
+      openh264enc->adaptive_quantization = g_value_get_boolean (value);
       break;
 
     case PROP_SCENE_CHANGE_DETECTION:
-      openh264enc->priv->scene_change_detection = g_value_get_boolean (value);
+      openh264enc->scene_change_detection = g_value_get_boolean (value);
       break;
 
     case PROP_SLICE_MODE:
-      openh264enc->priv->slice_mode = (GstOpenh264EncSliceMode) g_value_get_enum (value);
+      openh264enc->slice_mode = (GstOpenh264EncSliceMode) g_value_get_enum (value);
       break;
 
     case PROP_NUM_SLICES:
-      openh264enc->priv->num_slices = g_value_get_uint (value);
+      openh264enc->num_slices = g_value_get_uint (value);
       break;
 
     case PROP_COMPLEXITY:
-      openh264enc->priv->complexity = (ECOMPLEXITY_MODE) g_value_get_enum (value);
+      openh264enc->complexity = (ECOMPLEXITY_MODE) g_value_get_enum (value);
       break;
 
     default:
@@ -537,63 +505,67 @@
 
   switch (property_id) {
     case PROP_USAGE_TYPE:
-      g_value_set_enum (value, openh264enc->priv->usage_type);
+      g_value_set_enum (value, openh264enc->usage_type);
       break;
 
     case PROP_RATE_CONTROL:
-      g_value_set_enum (value, openh264enc->priv->rate_control);
+      g_value_set_enum (value, openh264enc->rate_control);
       break;
 
     case PROP_BITRATE:
-      g_value_set_uint (value, openh264enc->priv->bitrate);
+      g_value_set_uint (value, openh264enc->bitrate);
+      break;
+
+    case PROP_MAX_BITRATE:
+      g_value_set_uint (value, openh264enc->max_bitrate);
       break;
 
     case PROP_ENABLE_DENOISE:
-      g_value_set_boolean (value, openh264enc->priv->enable_denoise);
+      g_value_set_boolean (value, openh264enc->enable_denoise);
       break;
 
     case PROP_ENABLE_FRAME_SKIP:
-      g_value_set_boolean (value, openh264enc->priv->enable_frame_skip);
+      g_value_set_boolean (value, openh264enc->enable_frame_skip);
       break;
 
     case PROP_MULTI_THREAD:
-      g_value_set_uint (value, openh264enc->priv->multi_thread);
+      g_value_set_uint (value, openh264enc->multi_thread);
       break;
 
     case PROP_GOP_SIZE:
-      g_value_set_uint (value, openh264enc->priv->gop_size);
+      g_value_set_uint (value, openh264enc->gop_size);
       break;
 
     case PROP_MAX_SLICE_SIZE:
-      g_value_set_uint (value, openh264enc->priv->max_slice_size);
+      g_value_set_uint (value, openh264enc->max_slice_size);
       break;
 
     case PROP_DEBLOCKING_MODE:
-      g_value_set_enum (value, openh264enc->priv->deblocking_mode);
+      g_value_set_enum (value, openh264enc->deblocking_mode);
       break;
 
     case PROP_BACKGROUND_DETECTION:
-      g_value_set_boolean (value, openh264enc->priv->background_detection);
+      g_value_set_boolean (value, openh264enc->background_detection);
       break;
 
     case PROP_ADAPTIVE_QUANTIZATION:
-      g_value_set_boolean (value, openh264enc->priv->adaptive_quantization);
+      g_value_set_boolean (value, openh264enc->adaptive_quantization);
       break;
 
     case PROP_SCENE_CHANGE_DETECTION:
-      g_value_set_boolean (value, openh264enc->priv->scene_change_detection);
+      g_value_set_boolean (value, openh264enc->scene_change_detection);
       break;
 
     case PROP_SLICE_MODE:
-      g_value_set_enum (value, openh264enc->priv->slice_mode);
+      g_value_set_enum (value, openh264enc->slice_mode);
       break;
 
     case PROP_NUM_SLICES:
-      g_value_set_uint (value, openh264enc->priv->num_slices);
+      g_value_set_uint (value, openh264enc->num_slices);
       break;
 
     case PROP_COMPLEXITY:
-      g_value_set_enum (value, openh264enc->priv->complexity);
+      g_value_set_enum (value, openh264enc->complexity);
       break;
 
     default:
@@ -611,10 +583,10 @@
 
   /* clean up object here */
 
-  if (openh264enc->priv->input_state) {
-    gst_video_codec_state_unref (openh264enc->priv->input_state);
+  if (openh264enc->input_state) {
+    gst_video_codec_state_unref (openh264enc->input_state);
   }
-  openh264enc->priv->input_state = NULL;
+  openh264enc->input_state = NULL;
 
   G_OBJECT_CLASS (gst_openh264enc_parent_class)->finalize (object);
 }
@@ -635,17 +607,17 @@
 
   openh264enc = GST_OPENH264ENC (encoder);
 
-  if (openh264enc->priv->encoder != NULL) {
-    openh264enc->priv->encoder->Uninitialize ();
-    WelsDestroySVCEncoder (openh264enc->priv->encoder);
-    openh264enc->priv->encoder = NULL;
+  if (openh264enc->encoder != NULL) {
+    openh264enc->encoder->Uninitialize ();
+    WelsDestroySVCEncoder (openh264enc->encoder);
+    openh264enc->encoder = NULL;
   }
-  openh264enc->priv->encoder = NULL;
+  openh264enc->encoder = NULL;
 
-  if (openh264enc->priv->input_state) {
-    gst_video_codec_state_unref (openh264enc->priv->input_state);
+  if (openh264enc->input_state) {
+    gst_video_codec_state_unref (openh264enc->input_state);
   }
-  openh264enc->priv->input_state = NULL;
+  openh264enc->input_state = NULL;
 
   GST_DEBUG_OBJECT (openh264enc, "openh264_enc_stop called");
 
@@ -658,7 +630,6 @@
     GstVideoCodecState * state)
 {
   GstOpenh264Enc *openh264enc = GST_OPENH264ENC (encoder);
-  GstOpenh264EncPrivate *priv = openh264enc->priv;
   gchar *debug_caps;
   guint width, height, fps_n, fps_d;
   SEncParamExt enc_params;
@@ -667,7 +638,7 @@
   gint ret;
   GstCaps *outcaps;
   GstVideoCodecState *output_state;
-  openh264enc->priv->frame_count = 0;
+  openh264enc->frame_count = 0;
   int video_format = videoFormatI420;
 
   debug_caps = gst_caps_to_string (state->caps);
@@ -677,45 +648,44 @@
 
   gst_openh264enc_stop (encoder);
 
-  if (priv->input_state) {
-    gst_video_codec_state_unref (priv->input_state);
+  if (openh264enc->input_state) {
+    gst_video_codec_state_unref (openh264enc->input_state);
   }
-  priv->input_state = gst_video_codec_state_ref (state);
+  openh264enc->input_state = gst_video_codec_state_ref (state);
 
   width = GST_VIDEO_INFO_WIDTH (&state->info);
   height = GST_VIDEO_INFO_HEIGHT (&state->info);
   fps_n = GST_VIDEO_INFO_FPS_N (&state->info);
   fps_d = GST_VIDEO_INFO_FPS_D (&state->info);
 
-  if (priv->encoder != NULL) {
-    priv->encoder->Uninitialize ();
-    WelsDestroySVCEncoder (priv->encoder);
-    priv->encoder = NULL;
+  if (openh264enc->encoder != NULL) {
+    openh264enc->encoder->Uninitialize ();
+    WelsDestroySVCEncoder (openh264enc->encoder);
+    openh264enc->encoder = NULL;
   }
-  WelsCreateSVCEncoder (&(priv->encoder));
+  WelsCreateSVCEncoder (&openh264enc->encoder);
   unsigned int uiTraceLevel = WELS_LOG_ERROR;
-  priv->encoder->SetOption(ENCODER_OPTION_TRACE_LEVEL, &uiTraceLevel);
+  openh264enc->encoder->SetOption (ENCODER_OPTION_TRACE_LEVEL, &uiTraceLevel);
 
-  priv->encoder->GetDefaultParams (&enc_params);
+  openh264enc->encoder->GetDefaultParams (&enc_params);
 
-  enc_params.iUsageType = openh264enc->priv->usage_type;
+  enc_params.iUsageType = openh264enc->usage_type;
   enc_params.iPicWidth = width;
   enc_params.iPicHeight = height;
-  enc_params.iTargetBitrate = openh264enc->priv->bitrate;
-  enc_params.iRCMode = RC_QUALITY_MODE;
+  enc_params.iTargetBitrate = openh264enc->bitrate;
+  enc_params.iMaxBitrate = openh264enc->max_bitrate;
+  enc_params.iRCMode = openh264enc->rate_control;
   enc_params.iTemporalLayerNum = 1;
   enc_params.iSpatialLayerNum = 1;
   enc_params.iLtrMarkPeriod = 30;
-  enc_params.iMultipleThreadIdc = openh264enc->priv->multi_thread;
-  enc_params.bEnableDenoise = openh264enc->priv->enable_denoise;
-  enc_params.iComplexityMode = priv->complexity;
-  enc_params.uiIntraPeriod = priv->gop_size;
-  enc_params.bEnableBackgroundDetection =
-      openh264enc->priv->background_detection;
-  enc_params.bEnableAdaptiveQuant = openh264enc->priv->adaptive_quantization;
-  enc_params.bEnableSceneChangeDetect =
-      openh264enc->priv->scene_change_detection;
-  enc_params.bEnableFrameSkip = openh264enc->priv->enable_frame_skip;
+  enc_params.iMultipleThreadIdc = openh264enc->multi_thread;
+  enc_params.bEnableDenoise = openh264enc->enable_denoise;
+  enc_params.iComplexityMode = openh264enc->complexity;
+  enc_params.uiIntraPeriod = openh264enc->gop_size;
+  enc_params.bEnableBackgroundDetection = openh264enc->background_detection;
+  enc_params.bEnableAdaptiveQuant = openh264enc->adaptive_quantization;
+  enc_params.bEnableSceneChangeDetect = openh264enc->scene_change_detection;
+  enc_params.bEnableFrameSkip = openh264enc->enable_frame_skip;
   enc_params.bEnableLongTermReference = 0;
 #if OPENH264_MINOR >= 4
   enc_params.eSpsPpsIdStrategy = CONSTANT_ID;
@@ -724,20 +694,21 @@
 #endif
   enc_params.bPrefixNalAddingCtrl = 0;
   enc_params.fMaxFrameRate = fps_n * 1.0 / fps_d;
-  enc_params.iLoopFilterDisableIdc = openh264enc->priv->deblocking_mode;
+  enc_params.iLoopFilterDisableIdc = openh264enc->deblocking_mode;
   enc_params.sSpatialLayers[0].uiProfileIdc = PRO_BASELINE;
-  enc_params.sSpatialLayers[0].iVideoWidth = width;
-  enc_params.sSpatialLayers[0].iVideoHeight = height;
+  enc_params.sSpatialLayers[0].iVideoWidth = enc_params.iPicWidth;
+  enc_params.sSpatialLayers[0].iVideoHeight = enc_params.iPicHeight;
   enc_params.sSpatialLayers[0].fFrameRate = fps_n * 1.0 / fps_d;
-  enc_params.sSpatialLayers[0].iSpatialBitrate = openh264enc->priv->bitrate;
+  enc_params.sSpatialLayers[0].iSpatialBitrate = enc_params.iTargetBitrate;
+  enc_params.sSpatialLayers[0].iMaxSpatialBitrate = enc_params.iMaxBitrate;
 
-  if (priv->slice_mode == GST_OPENH264_SLICE_MODE_N_SLICES) {
-    if (priv->num_slices == 1)
+  if (openh264enc->slice_mode == GST_OPENH264_SLICE_MODE_N_SLICES) {
+    if (openh264enc->num_slices == 1)
       slice_mode = SM_SINGLE_SLICE;
     else
       slice_mode = SM_FIXEDSLCNUM_SLICE;
-     n_slices = priv->num_slices;
-  } else if (priv->slice_mode == GST_OPENH264_SLICE_MODE_AUTO) {
+     n_slices = openh264enc->num_slices;
+  } else if (openh264enc->slice_mode == GST_OPENH264_SLICE_MODE_AUTO) {
 #if OPENH264_MAJOR == 1 && OPENH264_MINOR < 6
     slice_mode = SM_AUTO_SLICE;
 #else
@@ -745,7 +716,8 @@
     n_slices = 0;
 #endif
   } else {
-    GST_ERROR_OBJECT (openh264enc, "unexpected slice mode %d", priv->slice_mode);
+    GST_ERROR_OBJECT (openh264enc, "unexpected slice mode %d",
+        openh264enc->slice_mode);
     slice_mode = SM_SINGLE_SLICE;
   }
 
@@ -757,16 +729,16 @@
   enc_params.sSpatialLayers[0].sSliceArgument.uiSliceNum = n_slices;
 #endif
 
-  priv->framerate = (1 + fps_n / fps_d);
+  openh264enc->framerate = (1 + fps_n / fps_d);
 
-  ret = priv->encoder->InitializeExt (&enc_params);
+  ret = openh264enc->encoder->InitializeExt (&enc_params);
 
   if (ret != cmResultSuccess) {
     GST_ERROR_OBJECT (openh264enc, "failed to initialize encoder");
     return FALSE;
   }
 
-  priv->encoder->SetOption(ENCODER_OPTION_DATAFORMAT, &video_format);
+  openh264enc->encoder->SetOption (ENCODER_OPTION_DATAFORMAT, &video_format);
 
   outcaps =
       gst_caps_copy (gst_static_pad_template_get_caps
@@ -813,38 +785,28 @@
     }
     //fill default src_pic
     src_pic->iColorFormat = videoFormatI420;
-    src_pic->uiTimeStamp = 0;
+    src_pic->uiTimeStamp = frame->pts / GST_MSECOND;
   }
 
-  openh264enc->priv->frame_count++;
+  openh264enc->frame_count++;
   if (frame) {
-    if (G_UNLIKELY (openh264enc->priv->frame_count == 1)) {
-      openh264enc->priv->time_per_frame =
-          (GST_SECOND / openh264enc->priv->framerate);
-      openh264enc->priv->previous_timestamp = frame->pts;
+    if (G_UNLIKELY (openh264enc->frame_count == 1)) {
+      openh264enc->time_per_frame = (GST_SECOND / openh264enc->framerate);
+      openh264enc->previous_timestamp = frame->pts;
     } else {
-      openh264enc->priv->time_per_frame =
-          openh264enc->priv->time_per_frame * 0.8 + (frame->pts -
-          openh264enc->priv->previous_timestamp) * 0.2;
-      openh264enc->priv->previous_timestamp = frame->pts;
-      if (openh264enc->priv->frame_count % 10 == 0) {
-        fps = GST_SECOND / (gdouble) openh264enc->priv->time_per_frame;
-        openh264enc->priv->encoder->SetOption (ENCODER_OPTION_FRAME_RATE, &fps);
+      openh264enc->time_per_frame =
+          openh264enc->time_per_frame * 0.8 + (frame->pts -
+          openh264enc->previous_timestamp) * 0.2;
+      openh264enc->previous_timestamp = frame->pts;
+      if (openh264enc->frame_count % 10 == 0) {
+        fps = GST_SECOND / (gdouble) openh264enc->time_per_frame;
+        openh264enc->encoder->SetOption (ENCODER_OPTION_FRAME_RATE, &fps);
       }
     }
   }
 
-  if (openh264enc->priv->bitrate <= openh264enc->priv->drop_bitrate) {
-    GST_LOG_OBJECT (openh264enc, "Dropped frame due to too low bitrate");
-    if (frame) {
-      gst_video_encoder_finish_frame (encoder, frame);
-      delete src_pic;
-    }
-    return GST_FLOW_OK;
-  }
-
   if (frame) {
-    gst_video_frame_map (&video_frame, &openh264enc->priv->input_state->info,
+    gst_video_frame_map (&video_frame, &openh264enc->input_state->info,
         frame->input_buffer, GST_MAP_READ);
     src_pic->iPicWidth = GST_VIDEO_FRAME_WIDTH (&video_frame);
     src_pic->iPicHeight = GST_VIDEO_FRAME_HEIGHT (&video_frame);
@@ -857,14 +819,14 @@
 
     force_keyframe = GST_VIDEO_CODEC_FRAME_IS_FORCE_KEYFRAME (frame);
     if (force_keyframe) {
-      openh264enc->priv->encoder->ForceIntraFrame (true);
+      openh264enc->encoder->ForceIntraFrame (true);
       GST_DEBUG_OBJECT (openh264enc,
           "Got force key unit event, next frame coded as intra picture");
     }
   }
 
   memset (&frame_info, 0, sizeof (SFrameBSInfo));
-  ret = openh264enc->priv->encoder->EncodeFrame (src_pic, &frame_info);
+  ret = openh264enc->encoder->EncodeFrame (src_pic, &frame_info);
   if (ret != cmResultSuccess) {
     if (frame) {
       gst_video_frame_unmap (&video_frame);
@@ -946,7 +908,7 @@
 {
   GstOpenh264Enc *openh264enc = GST_OPENH264ENC (encoder);
 
-  if (openh264enc->priv->frame_count == 0)
+  if (openh264enc->frame_count == 0)
     return GST_FLOW_OK;
 
   /* Drain encoder */
diff --git a/ext/openh264/gstopenh264enc.h b/ext/openh264/gstopenh264enc.h
index 613c488..f684191 100644
--- a/ext/openh264/gstopenh264enc.h
+++ b/ext/openh264/gstopenh264enc.h
@@ -33,8 +33,20 @@
 #include <gst/video/video.h>
 #include <gst/video/gstvideoencoder.h>
 
+#include <wels/codec_api.h>
+#include <wels/codec_app_def.h>
+#include <wels/codec_def.h>
+#include <wels/codec_ver.h>
+
 G_BEGIN_DECLS
 
+typedef enum _GstOpenh264encDeblockingMode
+{
+  GST_OPENH264_DEBLOCKING_ON = 0,
+  GST_OPENH264_DEBLOCKING_OFF = 1,
+  GST_OPENH264_DEBLOCKING_NOT_SLICE_BOUNDARIES = 2
+} GstOpenh264encDeblockingMode;
+
 typedef enum
 {
   GST_OPENH264_SLICE_MODE_N_SLICES = 1,  /* SM_FIXEDSLCNUM_SLICE */
@@ -49,14 +61,34 @@
 
 typedef struct _GstOpenh264Enc GstOpenh264Enc;
 typedef struct _GstOpenh264EncClass GstOpenh264EncClass;
-typedef struct _GstOpenh264EncPrivate GstOpenh264EncPrivate;
 
 struct _GstOpenh264Enc
 {
-    GstVideoEncoder base_openh264enc;
+  GstVideoEncoder base_openh264enc;
 
-    /*< private >*/
-    GstOpenh264EncPrivate *priv;
+  /*< private >*/
+  ISVCEncoder *encoder;
+  EUsageType usage_type;
+  guint gop_size;
+  RC_MODES rate_control;
+  guint max_slice_size;
+  guint bitrate;
+  guint max_bitrate;
+  guint framerate;
+  guint multi_thread;
+  gboolean enable_denoise;
+  gboolean enable_frame_skip;
+  GstVideoCodecState *input_state;
+  guint64 time_per_frame;
+  guint64 frame_count;
+  guint64 previous_timestamp;
+  GstOpenh264encDeblockingMode deblocking_mode;
+  gboolean background_detection;
+  gboolean adaptive_quantization;
+  gboolean scene_change_detection;
+  GstOpenh264EncSliceMode slice_mode;
+  guint num_slices;
+  ECOMPLEXITY_MODE complexity;
 };
 
 struct _GstOpenh264EncClass
diff --git a/ext/openjpeg/Makefile.am b/ext/openjpeg/Makefile.am
index c3376f1..eb684d3 100644
--- a/ext/openjpeg/Makefile.am
+++ b/ext/openjpeg/Makefile.am
@@ -1,9 +1,10 @@
 plugin_LTLIBRARIES = libgstopenjpeg.la
 
 libgstopenjpeg_la_SOURCES = gstopenjpegdec.c gstopenjpegenc.c gstopenjpeg.c
-libgstopenjpeg_la_CFLAGS = \
+libgstopenjpeg_la_CFLAGS = $(GST_PLUGINS_BAD_CFLAGS) \
 	$(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(OPENJPEG_CFLAGS)
 libgstopenjpeg_la_LIBADD = \
+	$(top_builddir)/gst-libs/gst/codecparsers/libgstcodecparsers-$(GST_API_VERSION).la \
 	$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
 	$(GST_LIBS) $(OPENJPEG_LIBS)
 libgstopenjpeg_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
diff --git a/ext/openjpeg/Makefile.in b/ext/openjpeg/Makefile.in
index 70e93f1..9cb847d 100644
--- a/ext/openjpeg/Makefile.in
+++ b/ext/openjpeg/Makefile.in
@@ -163,8 +163,9 @@
 am__installdirs = "$(DESTDIR)$(plugindir)"
 LTLIBRARIES = $(plugin_LTLIBRARIES)
 am__DEPENDENCIES_1 =
-libgstopenjpeg_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+libgstopenjpeg_la_DEPENDENCIES = $(top_builddir)/gst-libs/gst/codecparsers/libgstcodecparsers-$(GST_API_VERSION).la \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1)
 am_libgstopenjpeg_la_OBJECTS = libgstopenjpeg_la-gstopenjpegdec.lo \
 	libgstopenjpeg_la-gstopenjpegenc.lo \
 	libgstopenjpeg_la-gstopenjpeg.lo
@@ -304,6 +305,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +328,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +379,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +526,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +654,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +696,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -781,10 +793,11 @@
 wayland_scanner = @wayland_scanner@
 plugin_LTLIBRARIES = libgstopenjpeg.la
 libgstopenjpeg_la_SOURCES = gstopenjpegdec.c gstopenjpegenc.c gstopenjpeg.c
-libgstopenjpeg_la_CFLAGS = \
+libgstopenjpeg_la_CFLAGS = $(GST_PLUGINS_BAD_CFLAGS) \
 	$(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(OPENJPEG_CFLAGS)
 
 libgstopenjpeg_la_LIBADD = \
+	$(top_builddir)/gst-libs/gst/codecparsers/libgstcodecparsers-$(GST_API_VERSION).la \
 	$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
 	$(GST_LIBS) $(OPENJPEG_LIBS)
 
diff --git a/ext/openjpeg/gstopenjpegdec.c b/ext/openjpeg/gstopenjpegdec.c
index 5c6a228..60b9543 100644
--- a/ext/openjpeg/gstopenjpegdec.c
+++ b/ext/openjpeg/gstopenjpegdec.c
@@ -26,6 +26,7 @@
 
 #include "gstopenjpegdec.h"
 
+
 #include <string.h>
 
 GST_DEBUG_CATEGORY_STATIC (gst_openjpeg_dec_debug);
@@ -53,9 +54,8 @@
     GST_PAD_SINK,
     GST_PAD_ALWAYS,
     GST_STATIC_CAPS ("image/x-j2c, "
-        "colorspace = (string) { sRGB, sYUV, GRAY }; "
-        "image/x-jpc, "
-        "colorspace = (string) { sRGB, sYUV, GRAY }; " "image/jp2")
+        GST_JPEG2000_SAMPLING_LIST "; "
+        "image/x-jpc, " GST_JPEG2000_SAMPLING_LIST "; " "image/jp2")
     );
 
 static GstStaticPadTemplate gst_openjpeg_dec_src_template =
@@ -79,10 +79,10 @@
   element_class = (GstElementClass *) klass;
   video_decoder_class = (GstVideoDecoderClass *) klass;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_openjpeg_dec_src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_openjpeg_dec_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_openjpeg_dec_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_openjpeg_dec_sink_template);
 
   gst_element_class_set_static_metadata (element_class,
       "OpenJPEG JPEG2000 decoder",
@@ -116,6 +116,7 @@
 #ifdef HAVE_OPENJPEG_1
   self->params.cp_limit_decoding = NO_LIMITATION;
 #endif
+  self->sampling = GST_JPEG2000_SAMPLING_NONE;
 }
 
 static gboolean
@@ -156,7 +157,6 @@
 {
   GstOpenJPEGDec *self = GST_OPENJPEG_DEC (decoder);
   GstStructure *s;
-  const gchar *color_space;
 
   GST_DEBUG_OBJECT (self, "Setting format: %" GST_PTR_FORMAT, state->caps);
 
@@ -177,14 +177,16 @@
     g_return_val_if_reached (FALSE);
   }
 
-  if ((color_space = gst_structure_get_string (s, "colorspace"))) {
-    if (g_str_equal (color_space, "sRGB"))
-      self->color_space = OPJ_CLRSPC_SRGB;
-    else if (g_str_equal (color_space, "GRAY"))
-      self->color_space = OPJ_CLRSPC_GRAY;
-    else if (g_str_equal (color_space, "sYUV"))
-      self->color_space = OPJ_CLRSPC_SYCC;
-  }
+
+  self->sampling =
+      gst_jpeg2000_sampling_from_string (gst_structure_get_string (s,
+          "sampling"));
+  if (gst_jpeg2000_sampling_is_rgb (self->sampling))
+    self->color_space = OPJ_CLRSPC_SRGB;
+  else if (gst_jpeg2000_sampling_is_mono (self->sampling))
+    self->color_space = OPJ_CLRSPC_GRAY;
+  else if (gst_jpeg2000_sampling_is_yuv (self->sampling))
+    self->color_space = OPJ_CLRSPC_SYCC;
 
   self->ncomps = 0;
   gst_structure_get_int (s, "num-components", &self->ncomps);
@@ -196,32 +198,40 @@
   return TRUE;
 }
 
+static gboolean
+reverse_rgb_channels (GstJPEG2000Sampling sampling)
+{
+  return sampling == GST_JPEG2000_SAMPLING_BGR
+      || sampling == GST_JPEG2000_SAMPLING_BGRA;
+}
+
 static void
 fill_frame_packed8_4 (GstVideoFrame * frame, opj_image_t * image)
 {
-  gint x, y, w, h;
+  gint x, y, w, h, c;
   guint8 *data_out, *tmp;
   const gint *data_in[4];
   gint dstride;
+  gint off[4];
 
   w = GST_VIDEO_FRAME_WIDTH (frame);
   h = GST_VIDEO_FRAME_HEIGHT (frame);
   data_out = GST_VIDEO_FRAME_PLANE_DATA (frame, 0);
   dstride = GST_VIDEO_FRAME_PLANE_STRIDE (frame, 0);
 
-  data_in[0] = image->comps[0].data;
-  data_in[1] = image->comps[1].data;
-  data_in[2] = image->comps[2].data;
-  data_in[3] = image->comps[3].data;
+  for (c = 0; c < 4; c++) {
+    data_in[c] = image->comps[c].data;
+    off[c] = 0x80 * image->comps[c].sgnd;
+  }
 
   for (y = 0; y < h; y++) {
     tmp = data_out;
 
     for (x = 0; x < w; x++) {
-      tmp[0] = *data_in[3];
-      tmp[1] = *data_in[0];
-      tmp[2] = *data_in[1];
-      tmp[3] = *data_in[2];
+      tmp[0] = off[3] + *data_in[3];
+      tmp[1] = off[0] + *data_in[0];
+      tmp[2] = off[1] + *data_in[1];
+      tmp[3] = off[2] + *data_in[2];
 
       tmp += 4;
       data_in[0]++;
@@ -236,35 +246,33 @@
 static void
 fill_frame_packed16_4 (GstVideoFrame * frame, opj_image_t * image)
 {
-  gint x, y, w, h;
+  gint x, y, w, h, c;
   guint16 *data_out, *tmp;
   const gint *data_in[4];
   gint dstride;
-  gint shift[4];
+  gint shift[4], off[4];
 
   w = GST_VIDEO_FRAME_WIDTH (frame);
   h = GST_VIDEO_FRAME_HEIGHT (frame);
   data_out = GST_VIDEO_FRAME_PLANE_DATA (frame, 0);
   dstride = GST_VIDEO_FRAME_PLANE_STRIDE (frame, 0) / 2;
 
-  data_in[0] = image->comps[0].data;
-  data_in[1] = image->comps[1].data;
-  data_in[2] = image->comps[2].data;
-  data_in[3] = image->comps[3].data;
-
-  shift[0] = 16 - image->comps[0].prec;
-  shift[1] = 16 - image->comps[1].prec;
-  shift[2] = 16 - image->comps[2].prec;
-  shift[3] = 16 - image->comps[3].prec;
+  for (c = 0; c < 4; c++) {
+    data_in[c] = image->comps[c].data;
+    off[c] = (1 << (image->comps[c].prec - 1)) * image->comps[c].sgnd;
+    shift[c] =
+        MAX (MIN (GST_VIDEO_FRAME_COMP_DEPTH (frame, c) - image->comps[c].prec,
+            8), 0);
+  }
 
   for (y = 0; y < h; y++) {
     tmp = data_out;
 
     for (x = 0; x < w; x++) {
-      tmp[0] = *data_in[3] << shift[3];
-      tmp[1] = *data_in[0] << shift[0];
-      tmp[2] = *data_in[1] << shift[1];
-      tmp[3] = *data_in[2] << shift[2];
+      tmp[0] = off[3] + (*data_in[3] << shift[3]);
+      tmp[1] = off[0] + (*data_in[0] << shift[0]);
+      tmp[2] = off[1] + (*data_in[1] << shift[1]);
+      tmp[3] = off[2] + (*data_in[2] << shift[2]);
 
       tmp += 4;
       data_in[0]++;
@@ -279,27 +287,29 @@
 static void
 fill_frame_packed8_3 (GstVideoFrame * frame, opj_image_t * image)
 {
-  gint x, y, w, h;
+  gint x, y, w, h, c;
   guint8 *data_out, *tmp;
   const gint *data_in[3];
   gint dstride;
+  gint off[3];
 
   w = GST_VIDEO_FRAME_WIDTH (frame);
   h = GST_VIDEO_FRAME_HEIGHT (frame);
   data_out = GST_VIDEO_FRAME_PLANE_DATA (frame, 0);
   dstride = GST_VIDEO_FRAME_PLANE_STRIDE (frame, 0);
 
-  data_in[0] = image->comps[0].data;
-  data_in[1] = image->comps[1].data;
-  data_in[2] = image->comps[2].data;
+  for (c = 0; c < 3; c++) {
+    data_in[c] = image->comps[c].data;
+    off[c] = 0x80 * image->comps[c].sgnd;
+  };
 
   for (y = 0; y < h; y++) {
     tmp = data_out;
 
     for (x = 0; x < w; x++) {
-      tmp[1] = *data_in[0];
-      tmp[2] = *data_in[1];
-      tmp[3] = *data_in[2];
+      tmp[1] = off[0] + *data_in[0];
+      tmp[2] = off[1] + *data_in[1];
+      tmp[3] = off[2] + *data_in[2];
 
       tmp += 4;
       data_in[0]++;
@@ -313,32 +323,32 @@
 static void
 fill_frame_packed16_3 (GstVideoFrame * frame, opj_image_t * image)
 {
-  gint x, y, w, h;
+  gint x, y, w, h, c;
   guint16 *data_out, *tmp;
   const gint *data_in[3];
   gint dstride;
-  gint shift[3];
+  gint shift[3], off[3];
 
   w = GST_VIDEO_FRAME_WIDTH (frame);
   h = GST_VIDEO_FRAME_HEIGHT (frame);
   data_out = GST_VIDEO_FRAME_PLANE_DATA (frame, 0);
   dstride = GST_VIDEO_FRAME_PLANE_STRIDE (frame, 0) / 2;
 
-  data_in[0] = image->comps[0].data;
-  data_in[1] = image->comps[1].data;
-  data_in[2] = image->comps[2].data;
-
-  shift[0] = 16 - image->comps[0].prec;
-  shift[1] = 16 - image->comps[1].prec;
-  shift[2] = 16 - image->comps[2].prec;
+  for (c = 0; c < 3; c++) {
+    data_in[c] = image->comps[c].data;
+    off[c] = (1 << (image->comps[c].prec - 1)) * image->comps[c].sgnd;
+    shift[c] =
+        MAX (MIN (GST_VIDEO_FRAME_COMP_DEPTH (frame, c) - image->comps[c].prec,
+            8), 0);
+  }
 
   for (y = 0; y < h; y++) {
     tmp = data_out;
 
     for (x = 0; x < w; x++) {
-      tmp[1] = *data_in[0] << shift[0];
-      tmp[2] = *data_in[1] << shift[1];
-      tmp[3] = *data_in[2] << shift[2];
+      tmp[1] = off[0] + (*data_in[0] << shift[0]);
+      tmp[2] = off[1] + (*data_in[1] << shift[1]);
+      tmp[3] = off[2] + (*data_in[2] << shift[2]);
 
       tmp += 4;
       data_in[0]++;
@@ -356,6 +366,7 @@
   guint8 *data_out, *tmp;
   const gint *data_in;
   gint dstride;
+  gint off;
 
   w = GST_VIDEO_FRAME_WIDTH (frame);
   h = GST_VIDEO_FRAME_HEIGHT (frame);
@@ -363,12 +374,13 @@
   dstride = GST_VIDEO_FRAME_PLANE_STRIDE (frame, 0);
 
   data_in = image->comps[0].data;
+  off = 0x80 * image->comps[0].sgnd;
 
   for (y = 0; y < h; y++) {
     tmp = data_out;
 
     for (x = 0; x < w; x++) {
-      *tmp = *data_in;
+      *tmp = off + *data_in;
 
       tmp++;
       data_in++;
@@ -384,7 +396,7 @@
   guint16 *data_out, *tmp;
   const gint *data_in;
   gint dstride;
-  gint shift;
+  gint shift, off;
 
   w = GST_VIDEO_FRAME_WIDTH (frame);
   h = GST_VIDEO_FRAME_HEIGHT (frame);
@@ -393,13 +405,16 @@
 
   data_in = image->comps[0].data;
 
-  shift = 16 - image->comps[0].prec;
+  off = (1 << (image->comps[0].prec - 1)) * image->comps[0].sgnd;
+  shift =
+      MAX (MIN (GST_VIDEO_FRAME_COMP_DEPTH (frame, 0) - image->comps[0].prec,
+          8), 0);
 
   for (y = 0; y < h; y++) {
     tmp = data_out;
 
     for (x = 0; x < w; x++) {
-      *tmp = *data_in << shift;
+      *tmp = off + (*data_in << shift);
 
       tmp++;
       data_in++;
@@ -414,7 +429,7 @@
   gint c, x, y, w, h;
   guint8 *data_out, *tmp;
   const gint *data_in;
-  gint dstride;
+  gint dstride, off;
 
   for (c = 0; c < 3; c++) {
     w = GST_VIDEO_FRAME_COMP_WIDTH (frame, c);
@@ -422,12 +437,13 @@
     dstride = GST_VIDEO_FRAME_COMP_STRIDE (frame, c);
     data_out = GST_VIDEO_FRAME_COMP_DATA (frame, c);
     data_in = image->comps[c].data;
+    off = 0x80 * image->comps[c].sgnd;
 
     for (y = 0; y < h; y++) {
       tmp = data_out;
 
       for (x = 0; x < w; x++) {
-        *tmp = *data_in;
+        *tmp = off + *data_in;
         tmp++;
         data_in++;
       }
@@ -443,7 +459,7 @@
   guint16 *data_out, *tmp;
   const gint *data_in;
   gint dstride;
-  gint shift;
+  gint shift, off;
 
   for (c = 0; c < 3; c++) {
     w = GST_VIDEO_FRAME_COMP_WIDTH (frame, c);
@@ -451,13 +467,16 @@
     dstride = GST_VIDEO_FRAME_COMP_STRIDE (frame, c) / 2;
     data_out = (guint16 *) GST_VIDEO_FRAME_COMP_DATA (frame, c);
     data_in = image->comps[c].data;
-    shift = 16 - image->comps[c].prec;
+    off = (1 << (image->comps[c].prec - 1)) * image->comps[c].sgnd;
+    shift =
+        MAX (MIN (GST_VIDEO_FRAME_COMP_DEPTH (frame, c) - image->comps[c].prec,
+            8), 0);
 
     for (y = 0; y < h; y++) {
       tmp = data_out;
 
       for (x = 0; x < w; x++) {
-        *tmp = *data_in << shift;
+        *tmp = off + (*data_in << shift);
         tmp++;
         data_in++;
       }
@@ -469,37 +488,32 @@
 static void
 fill_frame_planar8_3_generic (GstVideoFrame * frame, opj_image_t * image)
 {
-  gint x, y, w, h;
+  gint x, y, w, h, c;
   guint8 *data_out, *tmp;
   const gint *data_in[3];
   gint dstride;
-  gint dx[3], dy[3];
+  gint dx[3], dy[3], off[3];
 
   w = GST_VIDEO_FRAME_WIDTH (frame);
   h = GST_VIDEO_FRAME_HEIGHT (frame);
   data_out = GST_VIDEO_FRAME_PLANE_DATA (frame, 0);
   dstride = GST_VIDEO_FRAME_PLANE_STRIDE (frame, 0);
 
-  data_in[0] = image->comps[0].data;
-  data_in[1] = image->comps[1].data;
-  data_in[2] = image->comps[2].data;
-
-  dx[0] = image->comps[0].dx;
-  dx[1] = image->comps[1].dx;
-  dx[2] = image->comps[2].dx;
-
-  dy[0] = image->comps[0].dy;
-  dy[1] = image->comps[1].dy;
-  dy[2] = image->comps[2].dy;
+  for (c = 0; c < 3; c++) {
+    data_in[c] = image->comps[c].data;
+    dx[c] = image->comps[c].dx;
+    dy[c] = image->comps[c].dy;
+    off[c] = 0x80 * image->comps[c].sgnd;
+  }
 
   for (y = 0; y < h; y++) {
     tmp = data_out;
 
     for (x = 0; x < w; x++) {
       tmp[0] = 0xff;
-      tmp[1] = data_in[0][((y / dy[0]) * w + x) / dx[0]];
-      tmp[2] = data_in[1][((y / dy[1]) * w + x) / dx[1]];
-      tmp[3] = data_in[2][((y / dy[2]) * w + x) / dx[2]];
+      tmp[1] = off[0] + data_in[0][((y / dy[0]) * w + x) / dx[0]];
+      tmp[2] = off[1] + data_in[1][((y / dy[1]) * w + x) / dx[1]];
+      tmp[3] = off[2] + data_in[2][((y / dy[2]) * w + x) / dx[2]];
       tmp += 4;
     }
     data_out += dstride;
@@ -509,40 +523,32 @@
 static void
 fill_frame_planar8_4_generic (GstVideoFrame * frame, opj_image_t * image)
 {
-  gint x, y, w, h;
+  gint x, y, w, h, c;
   guint8 *data_out, *tmp;
   const gint *data_in[4];
   gint dstride;
-  gint dx[4], dy[4];
+  gint dx[4], dy[4], off[4];
 
   w = GST_VIDEO_FRAME_WIDTH (frame);
   h = GST_VIDEO_FRAME_HEIGHT (frame);
   data_out = GST_VIDEO_FRAME_PLANE_DATA (frame, 0);
   dstride = GST_VIDEO_FRAME_PLANE_STRIDE (frame, 0);
 
-  data_in[0] = image->comps[0].data;
-  data_in[1] = image->comps[1].data;
-  data_in[2] = image->comps[2].data;
-  data_in[3] = image->comps[3].data;
-
-  dx[0] = image->comps[0].dx;
-  dx[1] = image->comps[1].dx;
-  dx[2] = image->comps[2].dx;
-  dx[3] = image->comps[3].dx;
-
-  dy[0] = image->comps[0].dy;
-  dy[1] = image->comps[1].dy;
-  dy[2] = image->comps[2].dy;
-  dy[3] = image->comps[3].dy;
+  for (c = 0; c < 4; c++) {
+    data_in[c] = image->comps[c].data;
+    dx[c] = image->comps[c].dx;
+    dy[c] = image->comps[c].dy;
+    off[c] = 0x80 * image->comps[c].sgnd;
+  }
 
   for (y = 0; y < h; y++) {
     tmp = data_out;
 
     for (x = 0; x < w; x++) {
-      tmp[0] = data_in[3][((y / dy[3]) * w + x) / dx[3]];
-      tmp[1] = data_in[0][((y / dy[0]) * w + x) / dx[0]];
-      tmp[2] = data_in[1][((y / dy[1]) * w + x) / dx[1]];
-      tmp[3] = data_in[2][((y / dy[2]) * w + x) / dx[2]];
+      tmp[0] = off[3] + data_in[3][((y / dy[3]) * w + x) / dx[3]];
+      tmp[1] = off[0] + data_in[0][((y / dy[0]) * w + x) / dx[0]];
+      tmp[2] = off[1] + data_in[1][((y / dy[1]) * w + x) / dx[1]];
+      tmp[3] = off[2] + data_in[2][((y / dy[2]) * w + x) / dx[2]];
       tmp += 4;
     }
     data_out += dstride;
@@ -552,41 +558,35 @@
 static void
 fill_frame_planar16_3_generic (GstVideoFrame * frame, opj_image_t * image)
 {
-  gint x, y, w, h;
+  gint x, y, w, h, c;
   guint16 *data_out, *tmp;
   const gint *data_in[3];
   gint dstride;
-  gint dx[3], dy[3], shift[3];
+  gint dx[3], dy[3], shift[3], off[3];
 
   w = GST_VIDEO_FRAME_WIDTH (frame);
   h = GST_VIDEO_FRAME_HEIGHT (frame);
   data_out = (guint16 *) GST_VIDEO_FRAME_PLANE_DATA (frame, 0);
   dstride = GST_VIDEO_FRAME_PLANE_STRIDE (frame, 0) / 2;
 
-  data_in[0] = image->comps[0].data;
-  data_in[1] = image->comps[1].data;
-  data_in[2] = image->comps[2].data;
-
-  dx[0] = image->comps[0].dx;
-  dx[1] = image->comps[1].dx;
-  dx[2] = image->comps[2].dx;
-
-  dy[0] = image->comps[0].dy;
-  dy[1] = image->comps[1].dy;
-  dy[2] = image->comps[2].dy;
-
-  shift[0] = 16 - image->comps[0].prec;
-  shift[1] = 16 - image->comps[1].prec;
-  shift[2] = 16 - image->comps[2].prec;
+  for (c = 0; c < 3; c++) {
+    dx[c] = image->comps[c].dx;
+    dy[c] = image->comps[c].dy;
+    data_in[c] = image->comps[c].data;
+    off[c] = (1 << (image->comps[c].prec - 1)) * image->comps[c].sgnd;
+    shift[c] =
+        MAX (MIN (GST_VIDEO_FRAME_COMP_DEPTH (frame, c) - image->comps[c].prec,
+            8), 0);
+  }
 
   for (y = 0; y < h; y++) {
     tmp = data_out;
 
     for (x = 0; x < w; x++) {
       tmp[0] = 0xff;
-      tmp[1] = data_in[0][((y / dy[0]) * w + x) / dx[0]] << shift[0];
-      tmp[2] = data_in[1][((y / dy[1]) * w + x) / dx[1]] << shift[1];
-      tmp[3] = data_in[2][((y / dy[2]) * w + x) / dx[2]] << shift[2];
+      tmp[1] = off[0] + (data_in[0][((y / dy[0]) * w + x) / dx[0]] << shift[0]);
+      tmp[2] = off[1] + (data_in[1][((y / dy[1]) * w + x) / dx[1]] << shift[1]);
+      tmp[3] = off[2] + (data_in[2][((y / dy[2]) * w + x) / dx[2]] << shift[2]);
       tmp += 4;
     }
     data_out += dstride;
@@ -596,45 +596,35 @@
 static void
 fill_frame_planar16_4_generic (GstVideoFrame * frame, opj_image_t * image)
 {
-  gint x, y, w, h;
+  gint x, y, w, h, c;
   guint16 *data_out, *tmp;
   const gint *data_in[4];
   gint dstride;
-  gint dx[4], dy[4], shift[4];
+  gint dx[4], dy[4], shift[4], off[4];
 
   w = GST_VIDEO_FRAME_WIDTH (frame);
   h = GST_VIDEO_FRAME_HEIGHT (frame);
   data_out = (guint16 *) GST_VIDEO_FRAME_PLANE_DATA (frame, 0);
   dstride = GST_VIDEO_FRAME_PLANE_STRIDE (frame, 0) / 2;
 
-  data_in[0] = image->comps[0].data;
-  data_in[1] = image->comps[1].data;
-  data_in[2] = image->comps[2].data;
-  data_in[3] = image->comps[3].data;
-
-  dx[0] = image->comps[0].dx;
-  dx[1] = image->comps[1].dx;
-  dx[2] = image->comps[2].dx;
-  dx[3] = image->comps[3].dx;
-
-  dy[0] = image->comps[0].dy;
-  dy[1] = image->comps[1].dy;
-  dy[2] = image->comps[2].dy;
-  dy[3] = image->comps[3].dy;
-
-  shift[0] = 16 - image->comps[0].prec;
-  shift[1] = 16 - image->comps[1].prec;
-  shift[2] = 16 - image->comps[2].prec;
-  shift[3] = 16 - image->comps[3].prec;
+  for (c = 0; c < 4; c++) {
+    dx[c] = image->comps[c].dx;
+    dy[c] = image->comps[c].dy;
+    data_in[c] = image->comps[c].data;
+    off[c] = (1 << (image->comps[c].prec - 1)) * image->comps[c].sgnd;
+    shift[c] =
+        MAX (MIN (GST_VIDEO_FRAME_COMP_DEPTH (frame, c) - image->comps[c].prec,
+            8), 0);
+  }
 
   for (y = 0; y < h; y++) {
     tmp = data_out;
 
     for (x = 0; x < w; x++) {
-      tmp[0] = data_in[3][((y / dy[3]) * w + x) / dx[3]] << shift[3];
-      tmp[1] = data_in[0][((y / dy[0]) * w + x) / dx[0]] << shift[0];
-      tmp[2] = data_in[1][((y / dy[1]) * w + x) / dx[1]] << shift[1];
-      tmp[3] = data_in[2][((y / dy[2]) * w + x) / dx[2]] << shift[2];
+      tmp[0] = off[3] + (data_in[3][((y / dy[3]) * w + x) / dx[3]] << shift[3]);
+      tmp[1] = off[0] + (data_in[0][((y / dy[0]) * w + x) / dx[0]] << shift[0]);
+      tmp[2] = off[1] + (data_in[1][((y / dy[1]) * w + x) / dx[1]] << shift[1]);
+      tmp[3] = off[2] + (data_in[2][((y / dy[2]) * w + x) / dx[2]] << shift[2]);
       tmp += 4;
     }
     data_out += dstride;
@@ -675,7 +665,10 @@
 
         if (get_highest_prec (image) == 8) {
           self->fill_frame = fill_frame_packed8_4;
-          format = GST_VIDEO_FORMAT_ARGB;
+          format =
+              reverse_rgb_channels (self->sampling) ? GST_VIDEO_FORMAT_BGRA :
+              GST_VIDEO_FORMAT_RGBA;
+
         } else if (get_highest_prec (image) <= 16) {
           self->fill_frame = fill_frame_packed16_4;
           format = GST_VIDEO_FORMAT_ARGB64;
@@ -693,7 +686,9 @@
 
         if (get_highest_prec (image) == 8) {
           self->fill_frame = fill_frame_packed8_3;
-          format = GST_VIDEO_FORMAT_ARGB;
+          format =
+              reverse_rgb_channels (self->sampling) ? GST_VIDEO_FORMAT_BGR :
+              GST_VIDEO_FORMAT_RGB;
         } else if (get_highest_prec (image) <= 16) {
           self->fill_frame = fill_frame_packed16_3;
           format = GST_VIDEO_FORMAT_ARGB64;
diff --git a/ext/openjpeg/gstopenjpegdec.h b/ext/openjpeg/gstopenjpegdec.h
index 0e6e6af..4b4c6cf 100644
--- a/ext/openjpeg/gstopenjpegdec.h
+++ b/ext/openjpeg/gstopenjpegdec.h
@@ -24,6 +24,7 @@
 
 #include <gst/gst.h>
 #include <gst/video/video.h>
+#include <gst/codecparsers/gstjpeg2000sampling.h>
 
 #include "gstopenjpeg.h"
 
@@ -54,6 +55,7 @@
   OPJ_CODEC_FORMAT codec_format;
   gboolean is_jp2c;
   OPJ_COLOR_SPACE color_space;
+  GstJPEG2000Sampling sampling;
   gint ncomps;
 
   void (*fill_frame) (GstVideoFrame *frame, opj_image_t * image);
diff --git a/ext/openjpeg/gstopenjpegenc.c b/ext/openjpeg/gstopenjpegenc.c
index 27f3ee5..7514a35 100644
--- a/ext/openjpeg/gstopenjpegenc.c
+++ b/ext/openjpeg/gstopenjpegenc.c
@@ -25,6 +25,7 @@
 #endif
 
 #include "gstopenjpegenc.h"
+#include <gst/codecparsers/gstjpeg2000sampling.h>
 
 #include <string.h>
 
@@ -115,12 +116,14 @@
         "width = (int) [1, MAX], "
         "height = (int) [1, MAX], "
         "num-components = (int) [1, 4], "
-        "colorspace = (string) { sRGB, sYUV, GRAY }; "
+        GST_JPEG2000_SAMPLING_LIST ","
+        GST_JPEG2000_COLORSPACE_LIST "; "
         "image/x-jpc, "
         "width = (int) [1, MAX], "
         "height = (int) [1, MAX], "
         "num-components = (int) [1, 4], "
-        "colorspace = (string) { sRGB, sYUV, GRAY }; "
+        GST_JPEG2000_SAMPLING_LIST ","
+        GST_JPEG2000_COLORSPACE_LIST "; "
         "image/jp2, " "width = (int) [1, MAX], " "height = (int) [1, MAX]")
     );
 
@@ -177,10 +180,10 @@
           "Tile Height", 0, G_MAXINT, DEFAULT_TILE_HEIGHT,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_openjpeg_enc_src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_openjpeg_enc_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_openjpeg_enc_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_openjpeg_enc_sink_template);
 
   gst_element_class_set_static_metadata (element_class,
       "OpenJPEG JPEG2000 encoder",
@@ -557,7 +560,8 @@
   GstOpenJPEGEnc *self = GST_OPENJPEG_ENC (encoder);
   GstCaps *allowed_caps, *caps;
   GstStructure *s;
-  const gchar *colorspace;
+  const gchar *colorspace = NULL;
+  GstJPEG2000Sampling sampling = GST_JPEG2000_SAMPLING_NONE;
   gint ncomps;
 
   GST_DEBUG_OBJECT (self, "Setting format: %" GST_PTR_FORMAT, state->caps);
@@ -588,6 +592,7 @@
       ncomps = 4;
       break;
     case GST_VIDEO_FORMAT_ARGB:
+    case GST_VIDEO_FORMAT_AYUV:
       self->fill_image = fill_image_packed8_4;
       ncomps = 4;
       break;
@@ -608,10 +613,6 @@
       self->fill_image = fill_image_planar16_3;
       ncomps = 3;
       break;
-    case GST_VIDEO_FORMAT_AYUV:
-      self->fill_image = fill_image_packed8_3;
-      ncomps = 3;
-      break;
     case GST_VIDEO_FORMAT_Y444:
     case GST_VIDEO_FORMAT_Y42B:
     case GST_VIDEO_FORMAT_I420:
@@ -633,18 +634,71 @@
       g_assert_not_reached ();
   }
 
-  if ((state->info.finfo->flags & GST_VIDEO_FORMAT_FLAG_YUV))
+
+  /* sampling */
+  /* note: encoder re-orders channels so that alpha channel is encoded as the last channel */
+  switch (state->info.finfo->format) {
+    case GST_VIDEO_FORMAT_ARGB64:
+    case GST_VIDEO_FORMAT_ARGB:
+      sampling = GST_JPEG2000_SAMPLING_RGBA;
+      break;
+    case GST_VIDEO_FORMAT_AYUV64:
+    case GST_VIDEO_FORMAT_AYUV:
+      sampling = GST_JPEG2000_SAMPLING_YBRA4444_EXT;
+      break;
+    case GST_VIDEO_FORMAT_xRGB:
+      sampling = GST_JPEG2000_SAMPLING_RGB;
+      break;
+    case GST_VIDEO_FORMAT_Y444_10LE:
+    case GST_VIDEO_FORMAT_Y444_10BE:
+    case GST_VIDEO_FORMAT_Y444:
+      sampling = GST_JPEG2000_SAMPLING_YBR444;
+      break;
+
+    case GST_VIDEO_FORMAT_I422_10LE:
+    case GST_VIDEO_FORMAT_I422_10BE:
+    case GST_VIDEO_FORMAT_Y42B:
+      sampling = GST_JPEG2000_SAMPLING_YBR422;
+      break;
+    case GST_VIDEO_FORMAT_YUV9:
+      sampling = GST_JPEG2000_SAMPLING_YBR410;
+      break;
+    case GST_VIDEO_FORMAT_I420_10LE:
+    case GST_VIDEO_FORMAT_I420_10BE:
+    case GST_VIDEO_FORMAT_I420:
+      sampling = GST_JPEG2000_SAMPLING_YBR420;
+      break;
+    case GST_VIDEO_FORMAT_GRAY8:
+    case GST_VIDEO_FORMAT_GRAY16_LE:
+    case GST_VIDEO_FORMAT_GRAY16_BE:
+      sampling = GST_JPEG2000_SAMPLING_GRAYSCALE;
+      break;
+    default:
+      break;
+  }
+
+
+
+  if ((state->info.finfo->flags & GST_VIDEO_FORMAT_FLAG_YUV)) {
     colorspace = "sYUV";
-  else if ((state->info.finfo->flags & GST_VIDEO_FORMAT_FLAG_RGB))
+  } else if ((state->info.finfo->flags & GST_VIDEO_FORMAT_FLAG_RGB)) {
     colorspace = "sRGB";
-  else if ((state->info.finfo->flags & GST_VIDEO_FORMAT_FLAG_GRAY))
+  } else if ((state->info.finfo->flags & GST_VIDEO_FORMAT_FLAG_GRAY)) {
     colorspace = "GRAY";
-  else
+  } else
     g_return_val_if_reached (FALSE);
 
-  caps = gst_caps_new_simple (gst_structure_get_name (s),
-      "colorspace", G_TYPE_STRING, colorspace,
-      "num-components", G_TYPE_INT, ncomps, NULL);
+  if (sampling != GST_JPEG2000_SAMPLING_NONE) {
+    caps = gst_caps_new_simple (gst_structure_get_name (s),
+        "colorspace", G_TYPE_STRING, colorspace,
+        "sampling", G_TYPE_STRING, gst_jpeg2000_sampling_to_string (sampling),
+        "num-components", G_TYPE_INT, ncomps, NULL);
+  } else {
+    caps = gst_caps_new_simple (gst_structure_get_name (s),
+        "colorspace", G_TYPE_STRING, colorspace,
+        "num-components", G_TYPE_INT, ncomps, NULL);
+
+  }
   gst_caps_unref (allowed_caps);
 
   if (self->output_state)
diff --git a/ext/openni2/Makefile.in b/ext/openni2/Makefile.in
index f4b7f9c..0b0e08a 100644
--- a/ext/openni2/Makefile.in
+++ b/ext/openni2/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/openni2/gstopenni2src.cpp b/ext/openni2/gstopenni2src.cpp
index f12e0b7..88e6a16 100644
--- a/ext/openni2/gstopenni2src.cpp
+++ b/ext/openni2/gstopenni2src.cpp
@@ -153,8 +153,7 @@
   basesrc_class->decide_allocation =
       GST_DEBUG_FUNCPTR (gst_openni2src_decide_allocation);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&srctemplate));
+  gst_element_class_add_static_pad_template (element_class, &srctemplate);
 
   gst_element_class_set_static_metadata (element_class, "Openni2 client source",
       "Source/Video",
diff --git a/ext/opus/Makefile.in b/ext/opus/Makefile.in
index 3dc6aa4..d3da9e5 100644
--- a/ext/opus/Makefile.in
+++ b/ext/opus/Makefile.in
@@ -305,6 +305,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -326,6 +328,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -375,6 +379,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -520,6 +526,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -646,8 +654,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,8 +696,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/opus/gstopusparse.c b/ext/opus/gstopusparse.c
index ea3252e..56e8bb8 100644
--- a/ext/opus/gstopusparse.c
+++ b/ext/opus/gstopusparse.c
@@ -87,13 +87,12 @@
   bpclass->stop = GST_DEBUG_FUNCPTR (gst_opus_parse_stop);
   bpclass->handle_frame = GST_DEBUG_FUNCPTR (gst_opus_parse_handle_frame);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&opus_parse_src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&opus_parse_sink_factory));
+  gst_element_class_add_static_pad_template (element_class,
+      &opus_parse_src_factory);
+  gst_element_class_add_static_pad_template (element_class,
+      &opus_parse_sink_factory);
   gst_element_class_set_static_metadata (element_class, "Opus audio parser",
-      "Codec/Parser/Audio",
-      "parses opus audio streams",
+      "Codec/Parser/Audio", "parses opus audio streams",
       "Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>");
 
   GST_DEBUG_CATEGORY_INIT (opusparse_debug, "opusparse", 0,
diff --git a/ext/qt/Makefile.am b/ext/qt/Makefile.am
index ae091e4..b8bd5d4 100644
--- a/ext/qt/Makefile.am
+++ b/ext/qt/Makefile.am
@@ -26,6 +26,8 @@
 	qtwindow.cc \
 	gstqtsink.cc \
 	gstqtsink.h \
+	gstqtsrc.cc \
+	gstqtsrc.h \
 	gstqtgl.h \
 	gstplugin.cc
 
diff --git a/ext/qt/Makefile.in b/ext/qt/Makefile.in
index 2b3af9e..5b648c4 100644
--- a/ext/qt/Makefile.in
+++ b/ext/qt/Makefile.in
@@ -169,7 +169,7 @@
 am_libgstqmlgl_la_OBJECTS = libgstqmlgl_la-gstqsgtexture.lo \
 	libgstqmlgl_la-gstqtglutility.lo libgstqmlgl_la-qtitem.lo \
 	libgstqmlgl_la-qtwindow.lo libgstqmlgl_la-gstqtsink.lo \
-	libgstqmlgl_la-gstplugin.lo
+	libgstqmlgl_la-gstqtsrc.lo libgstqmlgl_la-gstplugin.lo
 am__objects_1 = libgstqmlgl_la-moc_qtitem.lo \
 	libgstqmlgl_la-moc_qtwindow.lo \
 	libgstqmlgl_la-moc_gstqsgtexture.lo
@@ -330,6 +330,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -351,6 +353,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -400,6 +404,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -545,6 +551,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -671,8 +679,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -715,8 +721,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -831,6 +842,8 @@
 	qtwindow.cc \
 	gstqtsink.cc \
 	gstqtsink.h \
+	gstqtsrc.cc \
+	gstqtsrc.h \
 	gstqtgl.h \
 	gstplugin.cc
 
@@ -935,6 +948,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstqmlgl_la-gstqsgtexture.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstqmlgl_la-gstqtglutility.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstqmlgl_la-gstqtsink.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstqmlgl_la-gstqtsrc.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstqmlgl_la-moc_gstqsgtexture.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstqmlgl_la-moc_qtitem.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstqmlgl_la-moc_qtwindow.Plo@am__quote@
@@ -1000,6 +1014,13 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(libgstqmlgl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstqmlgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libgstqmlgl_la-gstqtsink.lo `test -f 'gstqtsink.cc' || echo '$(srcdir)/'`gstqtsink.cc
 
+libgstqmlgl_la-gstqtsrc.lo: gstqtsrc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(libgstqmlgl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstqmlgl_la_CXXFLAGS) $(CXXFLAGS) -MT libgstqmlgl_la-gstqtsrc.lo -MD -MP -MF $(DEPDIR)/libgstqmlgl_la-gstqtsrc.Tpo -c -o libgstqmlgl_la-gstqtsrc.lo `test -f 'gstqtsrc.cc' || echo '$(srcdir)/'`gstqtsrc.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstqmlgl_la-gstqtsrc.Tpo $(DEPDIR)/libgstqmlgl_la-gstqtsrc.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gstqtsrc.cc' object='libgstqmlgl_la-gstqtsrc.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(libgstqmlgl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstqmlgl_la_CXXFLAGS) $(CXXFLAGS) -c -o libgstqmlgl_la-gstqtsrc.lo `test -f 'gstqtsrc.cc' || echo '$(srcdir)/'`gstqtsrc.cc
+
 libgstqmlgl_la-gstplugin.lo: gstplugin.cc
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(libgstqmlgl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstqmlgl_la_CXXFLAGS) $(CXXFLAGS) -MT libgstqmlgl_la-gstplugin.lo -MD -MP -MF $(DEPDIR)/libgstqmlgl_la-gstplugin.Tpo -c -o libgstqmlgl_la-gstplugin.lo `test -f 'gstplugin.cc' || echo '$(srcdir)/'`gstplugin.cc
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstqmlgl_la-gstplugin.Tpo $(DEPDIR)/libgstqmlgl_la-gstplugin.Plo
diff --git a/ext/qt/gstplugin.cc b/ext/qt/gstplugin.cc
index 27a1f14..01ca275 100644
--- a/ext/qt/gstplugin.cc
+++ b/ext/qt/gstplugin.cc
@@ -23,6 +23,7 @@
 #endif
 
 #include "gstqtsink.h"
+#include "gstqtsrc.h"
 #include <QtQml/QQmlApplicationEngine>
 
 static gboolean
@@ -32,7 +33,11 @@
           GST_RANK_NONE, GST_TYPE_QT_SINK)) {
     return FALSE;
   }
-
+  
+  if (!gst_element_register (plugin, "qmlglsrc",
+          GST_RANK_NONE, GST_TYPE_QT_SRC)) {
+    return FALSE;
+  }
   /* this means the plugin must be loaded before the qml engine is loaded */
   qmlRegisterType<QtGLVideoItem> ("org.freedesktop.gstreamer.GLVideoItem", 1, 0, "GstGLVideoItem");
 
diff --git a/ext/qt/gstqsgtexture.cc b/ext/qt/gstqsgtexture.cc
index 13208c0..85747f2 100644
--- a/ext/qt/gstqsgtexture.cc
+++ b/ext/qt/gstqsgtexture.cc
@@ -45,6 +45,7 @@
 
   gst_video_info_init (&this->v_info);
   this->buffer_ = NULL;
+  this->qt_context_ = NULL;
   this->sync_buffer_ = gst_buffer_new ();
 }
 
@@ -87,6 +88,9 @@
   GstMemory *mem;
   guint tex_id;
 
+  if (!this->qt_context_)
+    return;
+
   gst_gl_context_activate (this->qt_context_, TRUE);
 
   if (!this->buffer_)
diff --git a/ext/qt/gstqtsrc.cc b/ext/qt/gstqtsrc.cc
new file mode 100644
index 0000000..3cfc709
--- /dev/null
+++ b/ext/qt/gstqtsrc.cc
@@ -0,0 +1,606 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Freescale Semiconductor, Inc. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/**
+ * SECTION:qmlglsrc
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gstqtsrc.h"
+#include <QtGui/QGuiApplication>
+
+#define GST_CAT_DEFAULT gst_debug_qt_gl_src
+GST_DEBUG_CATEGORY (GST_CAT_DEFAULT);
+
+#define DEFAULT_IS_LIVE TRUE
+
+static void gst_qt_src_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_qt_src_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+
+static void gst_qt_src_finalize (GObject * object);
+
+static gboolean gst_qt_src_setcaps (GstBaseSrc * bsrc, GstCaps * caps);
+static GstCaps *gst_qt_src_get_caps (GstBaseSrc * bsrc, GstCaps * filter);
+static gboolean gst_qt_src_query (GstBaseSrc * bsrc, GstQuery * query);
+
+static gboolean gst_qt_src_decide_allocation (GstBaseSrc * bsrc,
+    GstQuery * query);
+static GstFlowReturn gst_qt_src_fill (GstPushSrc * psrc, GstBuffer * buffer);
+static GstStateChangeReturn gst_qt_src_change_state (GstElement * element,
+    GstStateChange transition);
+static gboolean gst_qt_src_start (GstBaseSrc * basesrc);
+static gboolean gst_qt_src_stop (GstBaseSrc * basesrc);
+
+static GstStaticPadTemplate gst_qt_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("video/x-raw(" GST_CAPS_FEATURE_MEMORY_GL_MEMORY "), "
+        "format = (string) RGBA, "
+        "width = " GST_VIDEO_SIZE_RANGE ", "
+        "height = " GST_VIDEO_SIZE_RANGE ", "
+        "framerate = " GST_VIDEO_FPS_RANGE ", "
+        "texture-target = (string) 2D"));
+
+enum
+{
+  ARG_0,
+  PROP_WINDOW,
+  PROP_DEFAULT_FBO
+};
+
+#define gst_qt_src_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstQtSrc, gst_qt_src,
+    GST_TYPE_PUSH_SRC, GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT,
+        "qtsrc", 0, "Qt Video Src"));
+
+static const gfloat vertical_flip_matrix[] = {
+  1.0f, 0.0f, 0.0f, 0.0f,
+  0.0f, -1.0f, 0.0f, 1.0f,
+  0.0f, 0.0f, 1.0f, 0.0f,
+  0.0f, 0.0f, 0.0f, 1.0f,
+};
+
+static void
+gst_qt_src_class_init (GstQtSrcClass * klass)
+{
+  GObjectClass *gobject_class = (GObjectClass *) klass;
+  GstElementClass *gstelement_class = (GstElementClass *) klass;
+  GstBaseSrcClass *gstbasesrc_class = (GstBaseSrcClass *) klass;
+  GstPushSrcClass *gstpushsrc_class = (GstPushSrcClass *) klass;
+
+  gobject_class->set_property = gst_qt_src_set_property;
+  gobject_class->get_property = gst_qt_src_get_property;
+  gobject_class->finalize = gst_qt_src_finalize;
+
+  gst_element_class_set_metadata (gstelement_class, "Qt Video Source",
+      "Source/Video", "A video src the grab window from a qml view",
+      "Multimedia Team <shmmmw@freescale.com>");
+
+  g_object_class_install_property (gobject_class, PROP_WINDOW,
+      g_param_spec_pointer ("window", "QQuickWindow",
+          "The QQuickWindow to place in the object heirachy",
+          (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
+
+  g_object_class_install_property (gobject_class, PROP_DEFAULT_FBO,
+      g_param_spec_boolean ("use-default-fbo",
+          "If use default fbo",
+          "When set TRUE, it will not create new fbo for qml render thread",
+          FALSE, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
+
+  gst_element_class_add_pad_template (gstelement_class,
+      gst_static_pad_template_get (&gst_qt_src_template));
+
+  gstelement_class->change_state = gst_qt_src_change_state;
+  gstbasesrc_class->set_caps = gst_qt_src_setcaps;
+  gstbasesrc_class->get_caps = gst_qt_src_get_caps;
+  gstbasesrc_class->query = gst_qt_src_query;
+  gstbasesrc_class->start = gst_qt_src_start;
+  gstbasesrc_class->stop = gst_qt_src_stop;
+  gstbasesrc_class->decide_allocation = gst_qt_src_decide_allocation;
+
+  gstpushsrc_class->fill = gst_qt_src_fill;
+}
+
+static void
+gst_qt_src_init (GstQtSrc * src)
+{
+  gst_base_src_set_format (GST_BASE_SRC (src), GST_FORMAT_TIME);
+  gst_base_src_set_live (GST_BASE_SRC (src), DEFAULT_IS_LIVE);
+  src->default_fbo = FALSE;
+  src->pending_image_orientation = TRUE;
+}
+
+static void
+gst_qt_src_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstQtSrc *qt_src = GST_QT_SRC (object);
+
+  switch (prop_id) {
+    case PROP_WINDOW:{
+      qt_src->qwindow =
+          static_cast < QQuickWindow * >(g_value_get_pointer (value));
+
+      if (qt_src->window)
+        delete qt_src->window;
+      if (qt_src->qwindow)
+        qt_src->window = new QtGLWindow (NULL, qt_src->qwindow);
+
+      break;
+    }
+    case PROP_DEFAULT_FBO:
+      qt_src->default_fbo = g_value_get_boolean (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_qt_src_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstQtSrc *qt_src = GST_QT_SRC (object);
+
+  switch (prop_id) {
+    case PROP_WINDOW:
+      g_value_set_pointer (value, qt_src->qwindow);
+      break;
+    case PROP_DEFAULT_FBO:
+      g_value_set_boolean (value, qt_src->default_fbo);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_qt_src_finalize (GObject * object)
+{
+  GstQtSrc *qt_src = GST_QT_SRC (object);
+
+  GST_DEBUG ("qmlglsrc finalize");
+  if (qt_src->context)
+    gst_object_unref (qt_src->context);
+  qt_src->context = NULL;
+
+  if (qt_src->qt_context)
+    gst_object_unref (qt_src->qt_context);
+  qt_src->qt_context = NULL;
+
+  if (qt_src->display)
+    gst_object_unref (qt_src->display);
+  qt_src->display = NULL;
+
+  if (qt_src->window)
+    delete qt_src->window;
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static gboolean
+gst_qt_src_setcaps (GstBaseSrc * bsrc, GstCaps * caps)
+{
+  GstQtSrc *qt_src = GST_QT_SRC (bsrc);
+
+  GST_DEBUG ("set caps with %" GST_PTR_FORMAT, caps);
+
+  if (!gst_video_info_from_caps (&qt_src->v_info, caps))
+    return FALSE;
+
+  if (!qt_window_set_caps (qt_src->window, caps))
+    return FALSE;
+
+  return TRUE;
+}
+
+static GstCaps *
+gst_qt_src_get_caps (GstBaseSrc * bsrc, GstCaps * filter)
+{
+  GstCaps *caps = NULL, *temp = NULL;
+  GstPadTemplate *pad_template;
+  GstBaseSrcClass *bclass = GST_BASE_SRC_GET_CLASS (bsrc);
+  GstQtSrc *qt_src = GST_QT_SRC (bsrc);
+  guint i;
+  gint width, height;
+
+  if (qt_src->window) {
+    qt_src->window->getGeometry (&width, &height);
+  }
+
+  pad_template =
+      gst_element_class_get_pad_template (GST_ELEMENT_CLASS (bclass), "src");
+  if (pad_template != NULL)
+    caps = gst_pad_template_get_caps (pad_template);
+
+  if (qt_src->window) {
+    temp = gst_caps_copy (caps);
+    guint n_caps = gst_caps_get_size (caps);
+
+    for (i = 0; i < n_caps; i++) {
+      GstStructure *s = gst_caps_get_structure (temp, i);
+      gst_structure_set (s, "width", G_TYPE_INT, width, NULL);
+      gst_structure_set (s, "height", G_TYPE_INT, height, NULL);
+      /* because the framerate is unknown */
+      gst_structure_set (s, "framerate", GST_TYPE_FRACTION, 0, 1, NULL);
+      gst_structure_set (s, "pixel-aspect-ratio",
+          GST_TYPE_FRACTION, 1, 1, NULL);
+    }
+
+    gst_caps_unref (caps);
+    caps = temp;
+  }
+
+  if (filter) {
+    GstCaps *intersection;
+
+    intersection =
+        gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST);
+    gst_caps_unref (caps);
+    caps = intersection;
+  }
+
+  return caps;
+}
+
+static gboolean
+gst_qt_src_query (GstBaseSrc * bsrc, GstQuery * query)
+{
+  GstQtSrc *qt_src = GST_QT_SRC (bsrc);
+  gboolean res = FALSE;
+
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_CONTEXT:
+    {
+      const gchar *context_type;
+      GstContext *context, *old_context;
+      gboolean ret;
+
+      if (!qt_window_is_scenegraph_initialized (qt_src->window))
+        return FALSE;
+
+      if (!qt_src->display && !qt_src->qt_context) {
+        qt_src->display = qt_window_get_display (qt_src->window);
+        qt_src->qt_context = qt_window_get_qt_context (qt_src->window);
+      }
+
+      ret = gst_gl_handle_context_query ((GstElement *) qt_src, query,
+          &qt_src->display, &qt_src->qt_context);
+
+      if (qt_src->display)
+        gst_gl_display_filter_gl_api (qt_src->display,
+            gst_gl_context_get_gl_api (qt_src->qt_context));
+
+      gst_query_parse_context_type (query, &context_type);
+
+      if (g_strcmp0 (context_type, "gst.gl.app_context") == 0) {
+        GstStructure *s;
+
+        gst_query_parse_context (query, &old_context);
+
+        if (old_context)
+          context = gst_context_copy (old_context);
+        else
+          context = gst_context_new ("gst.gl.app_context", FALSE);
+
+        s = gst_context_writable_structure (context);
+        gst_structure_set (s, "context", GST_GL_TYPE_CONTEXT,
+            qt_src->qt_context, NULL);
+        gst_query_set_context (query, context);
+        gst_context_unref (context);
+
+        ret = qt_src->qt_context != NULL;
+      }
+      GST_LOG_OBJECT (qt_src, "context query of type %s %i", context_type, ret);
+
+      if (ret)
+        return ret;
+
+      /* fallthrough */
+    }
+    default:
+      res = GST_BASE_SRC_CLASS (parent_class)->query (bsrc, query);
+      break;
+  }
+
+  return res;
+}
+
+static gboolean
+_find_local_gl_context (GstQtSrc * qt_src)
+{
+  GstQuery *query;
+  GstContext *context;
+  const GstStructure *s;
+
+  if (qt_src->context)
+    return TRUE;
+
+  query = gst_query_new_context ("gst.gl.local_context");
+  if (!qt_src->context
+      && gst_gl_run_query (GST_ELEMENT (qt_src), query, GST_PAD_SRC)) {
+    gst_query_parse_context (query, &context);
+    if (context) {
+      s = gst_context_get_structure (context);
+      gst_structure_get (s, "context", GST_GL_TYPE_CONTEXT, &qt_src->context,
+          NULL);
+    }
+  }
+
+  GST_DEBUG_OBJECT (qt_src, "found local context %p", qt_src->context);
+
+  gst_query_unref (query);
+
+  if (qt_src->context)
+    return TRUE;
+
+  return FALSE;
+}
+
+static gboolean
+gst_qt_src_decide_allocation (GstBaseSrc * bsrc, GstQuery * query)
+{
+  GstBufferPool *pool = NULL;
+  GstStructure *config;
+  GstCaps *caps;
+  guint min, max, size, n, i;
+  gboolean update_pool, update_allocator;
+  GstAllocator *allocator;
+  GstAllocationParams params;
+  GstGLVideoAllocationParams *glparams;
+  GstVideoInfo vinfo;
+  GstQtSrc *qt_src = GST_QT_SRC (bsrc);
+
+  if (gst_query_find_allocation_meta (query,
+          GST_VIDEO_AFFINE_TRANSFORMATION_META_API_TYPE, NULL)) {
+    qt_src->downstream_supports_affine_meta = TRUE;
+  } else {
+    qt_src->downstream_supports_affine_meta = FALSE;
+  }
+
+  gst_query_parse_allocation (query, &caps, NULL);
+  if (!caps)
+    return FALSE;
+
+  gst_video_info_from_caps (&vinfo, caps);
+
+  n = gst_query_get_n_allocation_pools (query);
+  if (n > 0) {
+    update_pool = TRUE;
+    for (i = 0; i < n; i++) {
+      gst_query_parse_nth_allocation_pool (query, i, &pool, &size, &min, &max);
+
+      if (!pool || !GST_IS_GL_BUFFER_POOL (pool)) {
+        if (pool)
+          gst_object_unref (pool);
+        pool = NULL;
+      }
+    }
+  }
+
+  if (!pool) {
+    size = vinfo.size;
+    min = max = 0;
+    update_pool = FALSE;
+  }
+
+  if (!qt_src->context && !_find_local_gl_context (qt_src))
+    return FALSE;
+
+  if (!pool) {
+    if (!qt_src->context || !GST_IS_GL_CONTEXT (qt_src->context))
+      return FALSE;
+
+    pool = gst_gl_buffer_pool_new (qt_src->context);
+    GST_INFO_OBJECT (qt_src, "No pool, create one ourself %p", pool);
+  }
+
+  config = gst_buffer_pool_get_config (pool);
+
+  gst_buffer_pool_config_set_params (config, caps, size, min, max);
+  gst_buffer_pool_config_add_option (config, GST_BUFFER_POOL_OPTION_VIDEO_META);
+  if (gst_query_find_allocation_meta (query, GST_GL_SYNC_META_API_TYPE, NULL))
+    gst_buffer_pool_config_add_option (config,
+        GST_BUFFER_POOL_OPTION_GL_SYNC_META);
+
+  if (gst_query_get_n_allocation_params (query) > 0) {
+    gst_query_parse_nth_allocation_param (query, 0, &allocator, &params);
+    gst_buffer_pool_config_set_allocator (config, allocator, &params);
+    GST_INFO_OBJECT (qt_src, "got allocator %p", allocator);
+    update_allocator = TRUE;
+  } else {
+    allocator = NULL;
+    gst_allocation_params_init (&params);
+    update_allocator = FALSE;
+  }
+
+  glparams =
+      gst_gl_video_allocation_params_new (qt_src->context, &params, &vinfo, 0,
+      NULL, GST_GL_TEXTURE_TARGET_2D, GST_VIDEO_GL_TEXTURE_TYPE_RGBA);
+  gst_buffer_pool_config_set_gl_allocation_params (config,
+      (GstGLAllocationParams *) glparams);
+  gst_gl_allocation_params_free ((GstGLAllocationParams *) glparams);
+
+  if (!gst_buffer_pool_set_config (pool, config))
+    GST_WARNING_OBJECT (qt_src, "Failed to set buffer pool config");
+
+  if (update_allocator)
+    gst_query_set_nth_allocation_param (query, 0, allocator, &params);
+  else
+    gst_query_add_allocation_param (query, allocator, &params);
+  if (allocator)
+    gst_object_unref (allocator);
+
+  if (update_pool)
+    gst_query_set_nth_allocation_pool (query, 0, pool, size, min, max);
+  else
+    gst_query_add_allocation_pool (query, pool, size, min, max);
+  gst_object_unref (pool);
+
+  GST_INFO_OBJECT (qt_src, "successfully decide_allocation");
+  return TRUE;
+}
+
+static GstFlowReturn
+gst_qt_src_fill (GstPushSrc * psrc, GstBuffer * buffer)
+{
+  GstQtSrc *qt_src = GST_QT_SRC (psrc);
+
+  GST_DEBUG_OBJECT (qt_src, "setting buffer %p", buffer);
+
+  if (!qt_window_set_buffer (qt_src->window, buffer)) {
+    GST_ERROR_OBJECT (qt_src, "failed to fill buffer %p", buffer);
+    return GST_FLOW_ERROR;
+  }
+
+  if (!qt_src->downstream_supports_affine_meta) {
+    if (qt_src->pending_image_orientation) {
+      /* let downstream know the image orientation is vertical filp */
+      GstTagList *image_orientation_tag =
+          gst_tag_list_new (GST_TAG_IMAGE_ORIENTATION, "flip-rotate-180", NULL);
+
+      gst_pad_push_event (GST_BASE_SRC_PAD (psrc),
+          gst_event_new_tag (image_orientation_tag));
+
+      qt_src->pending_image_orientation = FALSE;
+    }
+  } else {
+    GstVideoAffineTransformationMeta *trans_meta;
+    trans_meta = gst_buffer_add_video_affine_transformation_meta (buffer);
+    gst_video_affine_transformation_meta_apply_matrix (trans_meta,
+        vertical_flip_matrix);
+  }
+
+  GST_DEBUG_OBJECT (qt_src, "buffer fill done %p", buffer);
+
+  return GST_FLOW_OK;
+}
+
+static GstStateChangeReturn
+gst_qt_src_change_state (GstElement * element, GstStateChange transition)
+{
+  GstQtSrc *qt_src = GST_QT_SRC (element);
+  GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
+  QGuiApplication *app;
+  guint64 frames_rendered = 0;
+
+  GST_DEBUG ("changing state: %s => %s",
+      gst_element_state_get_name (GST_STATE_TRANSITION_CURRENT (transition)),
+      gst_element_state_get_name (GST_STATE_TRANSITION_NEXT (transition)));
+
+  switch (transition) {
+    case GST_STATE_CHANGE_NULL_TO_READY:
+      app = static_cast < QGuiApplication * >(QCoreApplication::instance ());
+      if (!app) {
+        GST_ELEMENT_ERROR (element, RESOURCE, NOT_FOUND,
+            ("%s", "Failed to connect to Qt"),
+            ("%s", "Could not retrieve QGuiApplication instance"));
+        return GST_STATE_CHANGE_FAILURE;
+      }
+
+      if (!qt_src->window) {
+        GST_ELEMENT_ERROR (element, RESOURCE, NOT_FOUND,
+            ("%s", "Required property \'window\' not set"), (NULL));
+        return GST_STATE_CHANGE_FAILURE;
+      }
+
+      if (!qt_window_is_scenegraph_initialized (qt_src->window)) {
+        GST_ELEMENT_ERROR (element, RESOURCE, NOT_FOUND,
+            ("%s", "Could not initialize window system"), (NULL));
+        return GST_STATE_CHANGE_FAILURE;
+      }
+
+      qt_window_use_default_fbo (qt_src->window, qt_src->default_fbo);
+
+      break;
+    case GST_STATE_CHANGE_READY_TO_PAUSED:
+      break;
+    case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
+      break;
+    default:
+      break;
+  }
+
+  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+  if (ret == GST_STATE_CHANGE_FAILURE)
+    return ret;
+
+  switch (transition) {
+    case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
+      qt_src->run_time = gst_element_get_start_time (GST_ELEMENT (qt_src));
+      break;
+    case GST_STATE_CHANGE_PAUSED_TO_READY:
+      break;
+    case GST_STATE_CHANGE_READY_TO_NULL:
+      qt_window_get_total_frames (qt_src->window, &frames_rendered);
+      if (qt_src->run_time > 0) {
+        GST_DEBUG ("qmlglsrc Total refresh frames (%ld), playing for (%"
+            GST_TIME_FORMAT "), fps (%.3f).\n", frames_rendered,
+            GST_TIME_ARGS (qt_src->run_time),
+            (gfloat) GST_SECOND * frames_rendered / qt_src->run_time);
+      }
+      break;
+    default:
+      break;
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_qt_src_start (GstBaseSrc * basesrc)
+{
+  GstQtSrc *qt_src = GST_QT_SRC (basesrc);
+
+  /* already has get OpenGL configuration from qt */
+  if (qt_src->display && qt_src->qt_context)
+    return TRUE;
+
+  if (!qt_window_is_scenegraph_initialized (qt_src->window))
+    return FALSE;
+
+  qt_src->display = qt_window_get_display (qt_src->window);
+  qt_src->qt_context = qt_window_get_qt_context (qt_src->window);
+
+  if (!qt_src->display || !qt_src->qt_context) {
+    GST_ERROR_OBJECT (qt_src,
+        "Could not retrieve window system OpenGL configuration");
+    return FALSE;
+  }
+
+  GST_DEBUG_OBJECT (qt_src, "Got qt display %p and qt gl context %p",
+      qt_src->display, qt_src->qt_context);
+  return TRUE;
+}
+
+static gboolean
+gst_qt_src_stop (GstBaseSrc * basesrc)
+{
+  return TRUE;
+}
diff --git a/ext/resindvd/Makefile.in b/ext/resindvd/Makefile.in
index e8a9acd..56251dd 100644
--- a/ext/resindvd/Makefile.in
+++ b/ext/resindvd/Makefile.in
@@ -312,6 +312,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -333,6 +335,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -382,6 +386,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -527,6 +533,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -653,8 +661,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -697,8 +703,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/resindvd/resindvdbin.c b/ext/resindvd/resindvdbin.c
index 107f9d6..ce2bd1c 100644
--- a/ext/resindvd/resindvdbin.c
+++ b/ext/resindvd/resindvdbin.c
@@ -117,12 +117,12 @@
       g_param_spec_string ("device", "Device", "DVD device location",
           NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&video_src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&audio_src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&subpicture_src_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &video_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &audio_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &subpicture_src_template);
 
   element_class->change_state = GST_DEBUG_FUNCPTR (rsn_dvdbin_change_state);
 
diff --git a/ext/resindvd/resindvdsrc.c b/ext/resindvd/resindvdsrc.c
index 505302b..ab89be7 100644
--- a/ext/resindvd/resindvdsrc.c
+++ b/ext/resindvd/resindvdsrc.c
@@ -231,8 +231,7 @@
           "Skip straight to the DVD menu on start", DEFAULT_FASTSTART,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
   gst_element_class_set_static_metadata (gstelement_class, "Resin DVD Src",
       "Source/DVD", "DVD source element", "Jan Schmidt <thaytan@noraisin.net>");
 }
diff --git a/ext/resindvd/resindvdsrc.h b/ext/resindvd/resindvdsrc.h
index cc2bb04..b5d8e36 100644
--- a/ext/resindvd/resindvdsrc.h
+++ b/ext/resindvd/resindvdsrc.h
@@ -23,7 +23,9 @@
 
 #include <gst/base/gstbasesrc.h>
 
-#include "_stdint.h"
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
 
 #include <dvdnav/dvdnav.h>
 #include <dvdread/ifo_read.h>
diff --git a/ext/resindvd/rsndec.c b/ext/resindvd/rsndec.c
index 3403d9a..02d3eb6 100644
--- a/ext/resindvd/rsndec.c
+++ b/ext/resindvd/rsndec.c
@@ -405,10 +405,10 @@
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
   RsnDecClass *dec_class = RSN_DEC_CLASS (klass);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&audio_src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&audio_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &audio_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &audio_sink_template);
 
   gst_element_class_set_static_metadata (element_class, "RsnAudioDec",
       "Audio/Decoder",
@@ -455,10 +455,10 @@
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
   RsnDecClass *dec_class = RSN_DEC_CLASS (klass);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&video_src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&video_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &video_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &video_sink_template);
 
   gst_element_class_set_static_metadata (element_class, "RsnVideoDec",
       "Video/Decoder",
diff --git a/ext/resindvd/rsninputselector.c b/ext/resindvd/rsninputselector.c
index 75d8724..3849baf 100644
--- a/ext/resindvd/rsninputselector.c
+++ b/ext/resindvd/rsninputselector.c
@@ -1236,10 +1236,10 @@
       "Julien Moutte <julien@moutte.net>, "
       "Jan Schmidt <thaytan@mad.scientist.com>, "
       "Wim Taymans <wim.taymans@gmail.com>");
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_input_selector_sink_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_input_selector_src_factory));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_input_selector_sink_factory);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_input_selector_src_factory);
 
   gstelement_class->request_new_pad = gst_input_selector_request_new_pad;
   gstelement_class->release_pad = gst_input_selector_release_pad;
diff --git a/ext/resindvd/rsnparsetter.c b/ext/resindvd/rsnparsetter.c
index a714658..294e513 100644
--- a/ext/resindvd/rsnparsetter.c
+++ b/ext/resindvd/rsnparsetter.c
@@ -55,10 +55,8 @@
 
   gobject_class->finalize = rsn_parsetter_finalize;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
 
   gst_element_class_set_static_metadata (element_class,
       "Resin Aspect Ratio Setter", "Filter/Video",
diff --git a/ext/rsvg/Makefile.in b/ext/rsvg/Makefile.in
index 6224b10..87a5781 100644
--- a/ext/rsvg/Makefile.in
+++ b/ext/rsvg/Makefile.in
@@ -304,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/rsvg/gstrsvgdec.c b/ext/rsvg/gstrsvgdec.c
index d87c6ca..5d5fc8e 100644
--- a/ext/rsvg/gstrsvgdec.c
+++ b/ext/rsvg/gstrsvgdec.c
@@ -86,10 +86,8 @@
       "Uses librsvg to decode SVG images",
       "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
 
   gobject_class->finalize = gst_rsvg_dec_finalize;
   video_decoder_class->stop = GST_DEBUG_FUNCPTR (gst_rsvg_dec_stop);
diff --git a/ext/rsvg/gstrsvgoverlay.c b/ext/rsvg/gstrsvgoverlay.c
index 69f99ad..b467dc8 100644
--- a/ext/rsvg/gstrsvgoverlay.c
+++ b/ext/rsvg/gstrsvgoverlay.c
@@ -451,12 +451,11 @@
   GstVideoFilterClass *videofilter_class = GST_VIDEO_FILTER_CLASS (klass);
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&video_sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&data_sink_template));
+  gst_element_class_add_static_pad_template (element_class, &src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &video_sink_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &data_sink_template);
 
   gst_element_class_set_static_metadata (element_class, "RSVG overlay",
       "Filter/Editor/Video",
diff --git a/ext/rtmp/Makefile.in b/ext/rtmp/Makefile.in
index 2061823..b737006 100644
--- a/ext/rtmp/Makefile.in
+++ b/ext/rtmp/Makefile.in
@@ -304,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/rtmp/gstrtmpsink.c b/ext/rtmp/gstrtmpsink.c
index 781f3bf..1815d9c 100644
--- a/ext/rtmp/gstrtmpsink.c
+++ b/ext/rtmp/gstrtmpsink.c
@@ -109,8 +109,7 @@
       "Sink/Network", "Sends FLV content to a server via RTMP",
       "Jan Schmidt <thaytan@noraisin.net>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_template);
 
   gstbasesink_class->start = GST_DEBUG_FUNCPTR (gst_rtmp_sink_start);
   gstbasesink_class->stop = GST_DEBUG_FUNCPTR (gst_rtmp_sink_stop);
diff --git a/ext/rtmp/gstrtmpsrc.c b/ext/rtmp/gstrtmpsrc.c
index 02cbec1..db620cc 100644
--- a/ext/rtmp/gstrtmpsrc.c
+++ b/ext/rtmp/gstrtmpsrc.c
@@ -68,7 +68,8 @@
 enum
 {
   PROP_0,
-  PROP_LOCATION
+  PROP_LOCATION,
+  PROP_TIMEOUT
 #if 0
       PROP_SWF_URL,
   PROP_PAGE_URL
@@ -76,6 +77,7 @@
 };
 
 #define DEFAULT_LOCATION NULL
+#define DEFAULT_TIMEOUT 120
 
 static void gst_rtmp_src_uri_handler_init (gpointer g_iface,
     gpointer iface_data);
@@ -125,8 +127,13 @@
           "Location of the RTMP url to read",
           DEFAULT_LOCATION, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&srctemplate));
+  g_object_class_install_property (gobject_class, PROP_TIMEOUT,
+      g_param_spec_int ("timeout", "RTMP Timeout",
+          "Time without receiving any data from the server to wait before to timeout the session",
+          0, G_MAXINT,
+          DEFAULT_TIMEOUT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  gst_element_class_add_static_pad_template (gstelement_class, &srctemplate);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "RTMP Source",
@@ -161,6 +168,7 @@
 
   rtmpsrc->cur_offset = 0;
   rtmpsrc->last_timestamp = 0;
+  rtmpsrc->timeout = DEFAULT_TIMEOUT;
 
   gst_base_src_set_format (GST_BASE_SRC (rtmpsrc), GST_FORMAT_TIME);
 }
@@ -272,6 +280,10 @@
           g_value_get_string (value), NULL);
       break;
     }
+    case PROP_TIMEOUT:{
+      src->timeout = g_value_get_int (value);
+      break;
+    }
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -290,6 +302,9 @@
     case PROP_LOCATION:
       g_value_set_string (value, src->uri);
       break;
+    case PROP_TIMEOUT:
+      g_value_set_int (value, src->timeout);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -309,7 +324,6 @@
   guint8 *data;
   guint todo;
   gsize bsize;
-  int read;
   int size;
 
   src = GST_RTMP_SRC (pushsrc);
@@ -327,20 +341,19 @@
     return GST_FLOW_ERROR;
   }
 
-  bsize = todo = size;
+  todo = size;
   gst_buffer_map (buf, &map, GST_MAP_WRITE);
   data = map.data;
-  read = bsize = 0;
+  bsize = 0;
 
   while (todo > 0) {
-    read = RTMP_Read (src->rtmp, (char *) data, todo);
+    int read = RTMP_Read (src->rtmp, (char *) data, todo);
 
-    if (G_UNLIKELY (read == 0 && todo == size)) {
+    if (G_UNLIKELY (read == 0 && todo == size))
       goto eos;
-    } else if (G_UNLIKELY (read == 0)) {
-      todo = 0;
+
+    if (G_UNLIKELY (read == 0))
       break;
-    }
 
     if (G_UNLIKELY (read < 0))
       goto read_failed;
@@ -575,13 +588,13 @@
   src->discont = TRUE;
 
   src->rtmp = RTMP_Alloc ();
-
   if (!src->rtmp) {
     GST_ERROR_OBJECT (src, "Could not allocate librtmp's RTMP context");
     goto error;
   }
 
   RTMP_Init (src->rtmp);
+  src->rtmp->Link.timeout = src->timeout;
   if (!RTMP_SetupURL (src->rtmp, src->uri)) {
     GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, (NULL),
         ("Failed to setup URL '%s'", src->uri));
diff --git a/ext/rtmp/gstrtmpsrc.h b/ext/rtmp/gstrtmpsrc.h
index fa6da17..60ebcb2 100644
--- a/ext/rtmp/gstrtmpsrc.h
+++ b/ext/rtmp/gstrtmpsrc.h
@@ -63,7 +63,7 @@
   gchar *page_url;
 
   RTMP *rtmp;
-
+  int timeout;
   gint64 cur_offset;
   GstClockTime last_timestamp;
   gboolean seekable;
diff --git a/ext/sbc/Makefile.in b/ext/sbc/Makefile.in
index c840ea4..87a37fa 100644
--- a/ext/sbc/Makefile.in
+++ b/ext/sbc/Makefile.in
@@ -304,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/sbc/gstsbcdec.c b/ext/sbc/gstsbcdec.c
index 086fe1f..5019e83 100644
--- a/ext/sbc/gstsbcdec.c
+++ b/ext/sbc/gstsbcdec.c
@@ -165,7 +165,8 @@
   } else if (strcmp (channel_mode, "stereo") == 0) {
     dec->frame_len = 4 + (subbands * 2) / 2 + ((blocks * bitpool) + 7) / 8;
   } else if (strcmp (channel_mode, "joint") == 0) {
-    dec->frame_len = 4 + (subbands * 2) / 2 + ((subbands + blocks * bitpool) + 7) / 8;
+    dec->frame_len =
+        4 + (subbands * 2) / 2 + ((subbands + blocks * bitpool) + 7) / 8;
   } else {
     return FALSE;
   }
@@ -219,11 +220,10 @@
   audio_decoder_class->handle_frame =
       GST_DEBUG_FUNCPTR (gst_sbc_dec_handle_frame);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sbc_dec_sink_factory));
-
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sbc_dec_src_factory));
+  gst_element_class_add_static_pad_template (element_class,
+      &sbc_dec_sink_factory);
+  gst_element_class_add_static_pad_template (element_class,
+      &sbc_dec_src_factory);
 
   gst_element_class_set_static_metadata (element_class,
       "Bluetooth SBC audio decoder", "Codec/Decoder/Audio",
diff --git a/ext/sbc/gstsbcenc.c b/ext/sbc/gstsbcenc.c
index 02ca1be..71aca07 100644
--- a/ext/sbc/gstsbcenc.c
+++ b/ext/sbc/gstsbcenc.c
@@ -346,11 +346,10 @@
   encoder_class->set_format = GST_DEBUG_FUNCPTR (gst_sbc_enc_set_format);
   encoder_class->handle_frame = GST_DEBUG_FUNCPTR (gst_sbc_enc_handle_frame);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sbc_enc_sink_factory));
-
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sbc_enc_src_factory));
+  gst_element_class_add_static_pad_template (element_class,
+      &sbc_enc_sink_factory);
+  gst_element_class_add_static_pad_template (element_class,
+      &sbc_enc_src_factory);
 
   gst_element_class_set_static_metadata (element_class,
       "Bluetooth SBC audio encoder", "Codec/Encoder/Audio",
diff --git a/ext/schroedinger/Makefile.in b/ext/schroedinger/Makefile.in
index 5b3f0a6..f2800c3 100644
--- a/ext/schroedinger/Makefile.in
+++ b/ext/schroedinger/Makefile.in
@@ -305,6 +305,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -326,6 +328,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -375,6 +379,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -520,6 +526,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -646,8 +654,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,8 +696,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/schroedinger/gstschrodec.c b/ext/schroedinger/gstschrodec.c
index 6ac6ae9..359a594 100644
--- a/ext/schroedinger/gstschrodec.c
+++ b/ext/schroedinger/gstschrodec.c
@@ -128,10 +128,10 @@
 
   gobject_class->finalize = gst_schro_dec_finalize;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_schro_dec_src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_schro_dec_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_schro_dec_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_schro_dec_sink_template);
 
   gst_element_class_set_static_metadata (element_class, "Dirac Decoder",
       "Codec/Decoder/Video",
diff --git a/ext/schroedinger/gstschroenc.c b/ext/schroedinger/gstschroenc.c
index 6cd761f..22ccc5e 100644
--- a/ext/schroedinger/gstschroenc.c
+++ b/ext/schroedinger/gstschroenc.c
@@ -214,10 +214,10 @@
     }
   }
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_schro_enc_src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_schro_enc_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_schro_enc_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_schro_enc_sink_template);
 
   gst_element_class_set_static_metadata (element_class, "Dirac Encoder",
       "Codec/Encoder/Video",
diff --git a/ext/sdl/Makefile.in b/ext/sdl/Makefile.in
index 3c5ffda..d5548f8 100644
--- a/ext/sdl/Makefile.in
+++ b/ext/sdl/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/sdl/sdlaudiosink.c b/ext/sdl/sdlaudiosink.c
index 87dd730..ff03782 100644
--- a/ext/sdl/sdlaudiosink.c
+++ b/ext/sdl/sdlaudiosink.c
@@ -151,8 +151,8 @@
       "Output to a sound card via SDLAUDIO",
       "Edgard Lima <edgard.lima@indt.org.br>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sdlaudiosink_sink_factory));
+  gst_element_class_add_static_pad_template (element_class,
+      &sdlaudiosink_sink_factory);
 }
 
 static void
diff --git a/ext/smoothstreaming/Makefile.in b/ext/smoothstreaming/Makefile.in
index 5e2ebef..a7146a7 100644
--- a/ext/smoothstreaming/Makefile.in
+++ b/ext/smoothstreaming/Makefile.in
@@ -308,6 +308,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -329,6 +331,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -378,6 +382,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -523,6 +529,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -649,8 +657,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -693,8 +699,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/smoothstreaming/gstmssdemux.c b/ext/smoothstreaming/gstmssdemux.c
index c975e17..9d0aece 100644
--- a/ext/smoothstreaming/gstmssdemux.c
+++ b/ext/smoothstreaming/gstmssdemux.c
@@ -150,12 +150,12 @@
   gstelement_class = (GstElementClass *) klass;
   gstadaptivedemux_class = (GstAdaptiveDemuxClass *) klass;
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_mss_demux_sink_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_mss_demux_videosrc_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_mss_demux_audiosrc_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_mss_demux_sink_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_mss_demux_videosrc_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_mss_demux_audiosrc_template);
   gst_element_class_set_static_metadata (gstelement_class,
       "Smooth Streaming demuxer", "Codec/Demuxer/Adaptive",
       "Parse and demultiplex a Smooth Streaming manifest into audio and video "
@@ -543,7 +543,8 @@
   GST_DEBUG_OBJECT (stream->pad,
       "Using stream download bitrate %" G_GUINT64_FORMAT, bitrate);
 
-  if (gst_mss_stream_select_bitrate (mssstream->manifest_stream, bitrate)) {
+  if (gst_mss_stream_select_bitrate (mssstream->manifest_stream,
+          bitrate / MAX (1.0, ABS (stream->demux->segment.rate)))) {
     GstCaps *caps;
     GstCaps *msscaps;
     GstMssDemux *mssdemux = GST_MSS_DEMUX_CAST (stream->demux);
diff --git a/ext/smoothstreaming/gstmssmanifest.c b/ext/smoothstreaming/gstmssmanifest.c
index 02e559c..1b72e8d 100644
--- a/ext/smoothstreaming/gstmssmanifest.c
+++ b/ext/smoothstreaming/gstmssmanifest.c
@@ -569,8 +569,13 @@
 
   parseres = gst_h264_parse_sps (&nalu, &sps_struct, TRUE);
   if (parseres == GST_H264_PARSER_OK) {
+    gint fps_num, fps_den;
+
+    /* MSS apparently only supports non-interlaced/progressive H.264 content */
+    gst_h264_video_calculate_framerate (&sps_struct, 0, 0, &fps_num, &fps_den);
+
     gst_caps_set_simple (caps, "framerate", GST_TYPE_FRACTION,
-        sps_struct.fps_num, sps_struct.fps_den, NULL);
+        fps_num, fps_den, NULL);
   }
 
   buffer = _make_h264_codec_data (sps, pps);
diff --git a/ext/sndfile/Makefile.in b/ext/sndfile/Makefile.in
index a6706d2..302d860 100644
--- a/ext/sndfile/Makefile.in
+++ b/ext/sndfile/Makefile.in
@@ -304,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/sndfile/gstsfdec.c b/ext/sndfile/gstsfdec.c
index d854dba..24a0e2d 100644
--- a/ext/sndfile/gstsfdec.c
+++ b/ext/sndfile/gstsfdec.c
@@ -157,8 +157,8 @@
       "Read audio streams using libsndfile",
       "Stefan Sauer <ensonic@user.sf.net>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sf_dec_src_factory));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &sf_dec_src_factory);
 
   gst_element_class_add_pad_template (gstelement_class,
       gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS,
diff --git a/ext/sndio/Makefile.in b/ext/sndio/Makefile.in
index f161778..9f4b22d 100644
--- a/ext/sndio/Makefile.in
+++ b/ext/sndio/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/sndio/sndiosink.c b/ext/sndio/sndiosink.c
index 1eab800..c9d0f71 100644
--- a/ext/sndio/sndiosink.c
+++ b/ext/sndio/sndiosink.c
@@ -95,8 +95,8 @@
       "Sink/Audio",
       "Plays audio through sndio", "Jacob Meuser <jakemsr@sdf.lonestar.org>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sndio_sink_factory));
+  gst_element_class_add_static_pad_template (element_class,
+      &sndio_sink_factory);
 }
 
 static void
diff --git a/ext/sndio/sndiosrc.c b/ext/sndio/sndiosrc.c
index 6800c7d..5721f42 100644
--- a/ext/sndio/sndiosrc.c
+++ b/ext/sndio/sndiosrc.c
@@ -93,8 +93,7 @@
       "Source/Audio",
       "Records audio through sndio", "Jacob Meuser <jakemsr@sdf.lonestar.org>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sndio_src_factory));
+  gst_element_class_add_static_pad_template (element_class, &sndio_src_factory);
 }
 
 static void
diff --git a/ext/soundtouch/Makefile.in b/ext/soundtouch/Makefile.in
index 59b8e07..c216413 100644
--- a/ext/soundtouch/Makefile.in
+++ b/ext/soundtouch/Makefile.in
@@ -323,6 +323,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -344,6 +346,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -393,6 +397,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -538,6 +544,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -664,8 +672,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -708,8 +714,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/soundtouch/gstpitch.cc b/ext/soundtouch/gstpitch.cc
index 2f33adf..b41e665 100644
--- a/ext/soundtouch/gstpitch.cc
+++ b/ext/soundtouch/gstpitch.cc
@@ -163,10 +163,8 @@
 
   element_class->change_state = GST_DEBUG_FUNCPTR (gst_pitch_change_state);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_pitch_src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_pitch_sink_template));
+  gst_element_class_add_static_pad_template (element_class, &gst_pitch_src_template);
+  gst_element_class_add_static_pad_template (element_class, &gst_pitch_sink_template);
 
   gst_element_class_set_static_metadata (element_class, "Pitch controller",
       "Filter/Effect/Audio", "Control the pitch of an audio stream",
diff --git a/ext/spandsp/Makefile.in b/ext/spandsp/Makefile.in
index 22460b9..f9a21c1 100644
--- a/ext/spandsp/Makefile.in
+++ b/ext/spandsp/Makefile.in
@@ -306,6 +306,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -327,6 +329,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -376,6 +380,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -521,6 +527,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -647,8 +655,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,8 +697,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/spandsp/gstdtmfdetect.c b/ext/spandsp/gstdtmfdetect.c
index 41966e4..362edb4 100644
--- a/ext/spandsp/gstdtmfdetect.c
+++ b/ext/spandsp/gstdtmfdetect.c
@@ -124,10 +124,8 @@
 
   gobject_class->finalize = gst_dtmf_detect_finalize;
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&srctemplate));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sinktemplate));
+  gst_element_class_add_static_pad_template (gstelement_class, &srctemplate);
+  gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "DTMF detector element", "Filter/Analyzer/Audio",
diff --git a/ext/spandsp/gstspanplc.c b/ext/spandsp/gstspanplc.c
index d3ff53f..06e1090 100644
--- a/ext/spandsp/gstspanplc.c
+++ b/ext/spandsp/gstspanplc.c
@@ -73,10 +73,8 @@
   GObjectClass *gobject_class = (GObjectClass *) klass;
   GstElementClass *gstelement_class = (GstElementClass *) klass;
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
 
   gst_element_class_set_static_metadata (gstelement_class, "SpanDSP PLC",
       "Filter/Effect/Audio",
diff --git a/ext/spandsp/gsttonegeneratesrc.c b/ext/spandsp/gsttonegeneratesrc.c
index 2b0cae7..c806799 100644
--- a/ext/spandsp/gsttonegeneratesrc.c
+++ b/ext/spandsp/gsttonegeneratesrc.c
@@ -142,8 +142,8 @@
           "Whether to repeat specified tone indefinitly", DEFAULT_REPEAT,
           G_PARAM_READWRITE));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_tone_generate_src_src_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_tone_generate_src_src_template);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "Telephony Tone  Generator source", "Source/Audio",
diff --git a/ext/spc/Makefile.in b/ext/spc/Makefile.in
index 288fc6e..efd1e38 100644
--- a/ext/spc/Makefile.in
+++ b/ext/spc/Makefile.in
@@ -302,6 +302,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -323,6 +325,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -372,6 +376,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -517,6 +523,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -643,8 +651,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,8 +693,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/spc/gstspc.c b/ext/spc/gstspc.c
index d975185..d0f0393 100644
--- a/ext/spc/gstspc.c
+++ b/ext/spc/gstspc.c
@@ -81,10 +81,8 @@
       "Uses OpenSPC to emulate an SPC processor",
       "Chris Lee <clee@kde.org>, Brian Koropoff <bkoropoff@gmail.com>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
 
   element_class->change_state = GST_DEBUG_FUNCPTR (gst_spc_dec_change_state);
   gobject_class->dispose = gst_spc_dec_dispose;
diff --git a/ext/srtp/Makefile.in b/ext/srtp/Makefile.in
index fd26fe2..1895c1b 100644
--- a/ext/srtp/Makefile.in
+++ b/ext/srtp/Makefile.in
@@ -312,6 +312,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -333,6 +335,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -382,6 +386,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -527,6 +533,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -653,8 +661,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -697,8 +703,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/srtp/gstsrtpdec.c b/ext/srtp/gstsrtpdec.c
index 0120d92..b97094a 100644
--- a/ext/srtp/gstsrtpdec.c
+++ b/ext/srtp/gstsrtpdec.c
@@ -248,14 +248,14 @@
   gobject_class->set_property = gst_srtp_dec_set_property;
   gobject_class->get_property = gst_srtp_dec_get_property;
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&rtp_src_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&rtp_sink_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&rtcp_src_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&rtcp_sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &rtp_src_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &rtp_sink_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &rtcp_src_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &rtcp_sink_template);
 
   gst_element_class_set_static_metadata (gstelement_class, "SRTP decoder",
       "Filter/Network/SRTP",
diff --git a/ext/srtp/gstsrtpenc.c b/ext/srtp/gstsrtpenc.c
index eb00886..c9ae980 100644
--- a/ext/srtp/gstsrtpenc.c
+++ b/ext/srtp/gstsrtpenc.c
@@ -159,7 +159,8 @@
   PROP_RTCP_AUTH,
   PROP_RANDOM_KEY,
   PROP_REPLAY_WINDOW_SIZE,
-  PROP_ALLOW_REPEAT_TX
+  PROP_ALLOW_REPEAT_TX,
+  PROP_STATS
 };
 
 typedef struct ProcessBufferItData
@@ -246,27 +247,6 @@
 static void gst_srtp_enc_release_pad (GstElement * element, GstPad * pad);
 
 
-static guint32
-gst_srtp_enc_get_rollover_counter (GstSrtpEnc * filter, guint32 ssrc)
-{
-  guint32 roc = 0;
-  srtp_stream_t stream;
-
-  GST_OBJECT_LOCK (filter);
-
-  GST_DEBUG_OBJECT (filter, "retrieving SRTP Rollover Counter, ssrc: %u", ssrc);
-
-  if (filter->session) {
-    stream = srtp_get_stream (filter->session, htonl (ssrc));
-    if (stream)
-      roc = stream->rtp_rdbx.index >> 16;
-  }
-
-  GST_OBJECT_UNLOCK (filter);
-
-  return roc;
-}
-
 /* initialize the srtpenc's class
  */
 static void
@@ -278,14 +258,14 @@
   gobject_class = (GObjectClass *) klass;
   gstelement_class = (GstElementClass *) klass;
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&rtp_src_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&rtp_sink_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&rtcp_src_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&rtcp_sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &rtp_src_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &rtp_sink_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &rtcp_src_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &rtcp_sink_template);
 
   gst_element_class_set_static_metadata (gstelement_class, "SRTP encoder",
       "Filter/Network/SRTP",
@@ -342,6 +322,9 @@
           "(Note that such repeated transmissions must have the same RTP payload, "
           "or a severe security weakness is introduced!)",
           DEFAULT_ALLOW_REPEAT_TX, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_STATS,
+      g_param_spec_boxed ("stats", "Statistics", "Various statistics",
+          GST_TYPE_STRUCTURE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
 
   /**
    * GstSrtpEnc::soft-limit:
@@ -354,22 +337,6 @@
   gst_srtp_enc_signals[SIGNAL_SOFT_LIMIT] =
       g_signal_new ("soft-limit", G_TYPE_FROM_CLASS (klass),
       G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0);
-
-  /**
-   * GstSrtpEnc::get-rollover-counter:
-   * @gstsrtpenc: the element on which the signal is emitted
-   * @ssrc: The unique SSRC of the stream
-   *
-   * Request the SRTP rollover counter for the stream with @ssrc.
-   */
-  gst_srtp_enc_signals[SIGNAL_GET_ROLLOVER_COUNTER] =
-      g_signal_new ("get-rollover-counter", G_TYPE_FROM_CLASS (klass),
-      G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET (GstSrtpEncClass,
-          get_rollover_counter), NULL, NULL, g_cclosure_marshal_generic,
-      G_TYPE_UINT, 1, G_TYPE_UINT);
-
-  klass->get_rollover_counter =
-      GST_DEBUG_FUNCPTR (gst_srtp_enc_get_rollover_counter);
 }
 
 
@@ -419,9 +386,11 @@
     gsize keysize;
 
     if (filter->key == NULL) {
+      GST_OBJECT_UNLOCK (filter);
       GST_ELEMENT_ERROR (filter, LIBRARY, SETTINGS,
           ("Cipher is not NULL, key must be set"),
           ("Cipher is not NULL, key must be set"));
+      GST_OBJECT_LOCK (filter);
       return err_status_fail;
     }
 
@@ -429,10 +398,12 @@
     keysize = gst_buffer_get_size (filter->key);
 
     if (expected != keysize) {
+      GST_OBJECT_UNLOCK (filter);
       GST_ELEMENT_ERROR (filter, LIBRARY, SETTINGS,
           ("Master key size is wrong"),
           ("Expected master key of %d bytes, but received %" G_GSIZE_FORMAT
               " bytes", expected, keysize));
+      GST_OBJECT_LOCK (filter);
       return err_status_fail;
     }
   }
@@ -633,6 +604,41 @@
   G_OBJECT_CLASS (gst_srtp_enc_parent_class)->dispose (object);
 }
 
+static GstStructure *
+gst_srtp_enc_create_stats (GstSrtpEnc * filter)
+{
+  GstStructure *s;
+  GValue va = G_VALUE_INIT;
+  GValue v = G_VALUE_INIT;
+
+  s = gst_structure_new_empty ("application/x-srtp-encoder-stats");
+
+  g_value_init (&va, GST_TYPE_ARRAY);
+  g_value_init (&v, GST_TYPE_STRUCTURE);
+
+  if (filter->session) {
+    srtp_stream_t stream = filter->session->stream_list;
+    while (stream) {
+      GstStructure *ss;
+      guint32 ssrc = GUINT32_FROM_BE (stream->ssrc);
+      guint32 roc = stream->rtp_rdbx.index >> 16;
+
+      ss = gst_structure_new ("application/x-srtp-stream",
+          "ssrc", G_TYPE_UINT, ssrc, "roc", G_TYPE_UINT, roc, NULL);
+
+      g_value_take_boxed (&v, ss);
+      gst_value_array_append_value (&va, &v);
+
+      stream = stream->next;
+    }
+  }
+
+  gst_structure_take_value (s, "streams", &va);
+  g_value_unset (&v);
+
+  return s;
+}
+
 static void
 gst_srtp_enc_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec)
@@ -724,6 +730,9 @@
     case PROP_ALLOW_REPEAT_TX:
       g_value_set_boolean (value, filter->allow_repeat_tx);
       break;
+    case PROP_STATS:
+      g_value_take_boxed (value, gst_srtp_enc_create_stats (filter));
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
diff --git a/ext/srtp/gstsrtpenc.h b/ext/srtp/gstsrtpenc.h
index 843af18..842c56f 100644
--- a/ext/srtp/gstsrtpenc.h
+++ b/ext/srtp/gstsrtpenc.h
@@ -89,9 +89,6 @@
 struct _GstSrtpEncClass
 {
   GstElementClass parent_class;
-
-  /* action signals */
-  guint32 (*get_rollover_counter) (GstSrtpEnc *encoder, guint32 ssrc);
 };
 
 GType gst_srtp_enc_get_type (void);
diff --git a/ext/teletextdec/Makefile.in b/ext/teletextdec/Makefile.in
index 8de3342..f73d19c 100644
--- a/ext/teletextdec/Makefile.in
+++ b/ext/teletextdec/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/teletextdec/gstteletextdec.c b/ext/teletextdec/gstteletextdec.c
index 91b73c2..7f8a8a6 100644
--- a/ext/teletextdec/gstteletextdec.c
+++ b/ext/teletextdec/gstteletextdec.c
@@ -231,10 +231,8 @@
       "Sebastian Pölsterl <sebp@k-d-w.org>, "
       "Andoni Morales Alastruey <ylatuya@gmail.com>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_template);
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_template);
 }
 
 /* initialize the new element
@@ -659,12 +657,13 @@
 gst_teletextdec_negotiate_caps (GstTeletextDec * teletext, guint width,
     guint height)
 {
-  guint i, caps_size;
   gboolean rv = FALSE;
-
   /* get the peer's caps filtered by our own ones. */
   GstCaps *ourcaps = gst_pad_query_caps (teletext->srcpad, NULL);
   GstCaps *peercaps = gst_pad_peer_query_caps (teletext->srcpad, ourcaps);
+  GstStructure *caps_struct;
+  const gchar *caps_name, *caps_fmt;
+
   gst_caps_unref (ourcaps);
 
   if (gst_caps_is_empty (peercaps)) {
@@ -673,33 +672,26 @@
 
   /* make them writable in case we need to fixate them (video/x-raw). */
   peercaps = gst_caps_make_writable (peercaps);
-  caps_size = gst_caps_get_size (peercaps);
+  caps_struct = gst_caps_get_structure (peercaps, 0);
+  caps_name = gst_structure_get_name (caps_struct);
+  caps_fmt = gst_structure_get_string (caps_struct, "format");
 
-  for (i = 0; i < caps_size; i++) {
-    GstStructure *caps_struct = gst_caps_get_structure (peercaps, i);
-    const gchar *caps_name = gst_structure_get_name (caps_struct);
-    const gchar *caps_fmt = gst_structure_get_string (caps_struct, "format");
-
-    if (g_strcmp0 (caps_name, "video/x-raw") == 0) {
-      teletext->width = width;
-      teletext->height = height;
-      teletext->export_func = gst_teletextdec_export_rgba_page;
-      gst_structure_set (caps_struct,
-          "width", G_TYPE_INT, width,
-          "height", G_TYPE_INT, height,
-          "framerate", GST_TYPE_FRACTION, 0, 1, NULL);
-      break;
-    } else if ((g_strcmp0 (caps_name, "text/x-raw") == 0) &&
-        (g_strcmp0 (caps_fmt, "utf-8") == 0)) {
-      teletext->export_func = gst_teletextdec_export_text_page;
-      break;
-    } else if ((g_strcmp0 (caps_name, "text/x-raw") == 0) &&
-        (g_strcmp0 (caps_fmt, "pango-markup") == 0)) {
-      teletext->export_func = gst_teletextdec_export_pango_page;
-      break;
-    } else {
-      goto beach;
-    }
+  if (!g_strcmp0 (caps_name, "video/x-raw")) {
+    teletext->width = width;
+    teletext->height = height;
+    teletext->export_func = gst_teletextdec_export_rgba_page;
+    gst_structure_set (caps_struct,
+        "width", G_TYPE_INT, width,
+        "height", G_TYPE_INT, height,
+        "framerate", GST_TYPE_FRACTION, 0, 1, NULL);
+  } else if (!g_strcmp0 (caps_name, "text/x-raw") &&
+      !g_strcmp0 (caps_fmt, "utf-8")) {
+    teletext->export_func = gst_teletextdec_export_text_page;
+  } else if (!g_strcmp0 (caps_name, "text/x-raw") &&
+      !g_strcmp0 (caps_fmt, "pango-markup")) {
+    teletext->export_func = gst_teletextdec_export_pango_page;
+  } else {
+    goto beach;
   }
 
   if (!gst_pad_push_event (teletext->srcpad, gst_event_new_caps (peercaps))) {
@@ -751,9 +743,7 @@
   {
     if (ret != GST_FLOW_OK && ret != GST_FLOW_NOT_LINKED
         && ret != GST_FLOW_FLUSHING) {
-      GST_ELEMENT_ERROR (teletext, STREAM, FAILED,
-          ("Internal data stream error."), ("stream stopped, reason %s",
-              gst_flow_get_name (ret)));
+      GST_ELEMENT_FLOW_ERROR (teletext, ret);
       return GST_FLOW_ERROR;
     }
     return ret;
diff --git a/ext/timidity/Makefile.in b/ext/timidity/Makefile.in
index 2f94f9f..0cfebaf 100644
--- a/ext/timidity/Makefile.in
+++ b/ext/timidity/Makefile.in
@@ -321,6 +321,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -342,6 +344,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -391,6 +395,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -536,6 +542,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -662,8 +670,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -706,8 +712,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/timidity/gsttimidity.c b/ext/timidity/gsttimidity.c
index 418a5fe..2078694 100644
--- a/ext/timidity/gsttimidity.c
+++ b/ext/timidity/gsttimidity.c
@@ -95,10 +95,8 @@
 {
   GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
   gst_element_class_set_static_metadata (element_class, "Timidity",
       "Codec/Decoder/Audio",
       "Midi Synthesizer Element", "Wouter Paesen <wouter@blue-gate.be>");
@@ -745,9 +743,7 @@
   }
 error:
   {
-    GST_ELEMENT_ERROR (timidity, STREAM, FAILED,
-        ("Internal data stream error"),
-        ("Streaming stopped, reason %s", gst_flow_get_name (ret)));
+    GST_ELEMENT_FLOW_ERROR (timidity, ret);
     gst_pad_push_event (timidity->srcpad, gst_event_new_eos ());
     goto paused;
   }
diff --git a/ext/timidity/gstwildmidi.c b/ext/timidity/gstwildmidi.c
index 42b40d4..7f380d6 100644
--- a/ext/timidity/gstwildmidi.c
+++ b/ext/timidity/gstwildmidi.c
@@ -239,10 +239,8 @@
           "High Quality", DEFAULT_HIGH_QUALITY,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
   gst_element_class_set_static_metadata (gstelement_class, "WildMidi",
       "Codec/Decoder/Audio",
       "Midi Synthesizer Element", "Wouter Paesen <wouter@blue-gate.be>");
@@ -674,7 +672,7 @@
   gst_buffer_map (buffer, &info, GST_MAP_READWRITE);
 
   GST_OBJECT_LOCK (wildmidi);
-  size = WildMidi_GetOutput (wildmidi->song, (char *) info.data,
+  size = WildMidi_GetOutput (wildmidi->song, (gpointer) info.data,
       (unsigned long int) info.size);
   GST_OBJECT_UNLOCK (wildmidi);
 
@@ -900,9 +898,7 @@
       event = gst_event_new_eos ();
       /* for fatal errors we post an error message, post the error
        * first so the app knows about the error first. */
-      GST_ELEMENT_ERROR (wildmidi, STREAM, FAILED,
-          ("Internal data flow error."),
-          ("streaming task paused, reason %s (%d)", reason, ret));
+      GST_ELEMENT_FLOW_ERROR (wildmidi, ret);
       gst_pad_push_event (wildmidi->srcpad, event);
     }
   }
diff --git a/ext/voaacenc/Makefile.in b/ext/voaacenc/Makefile.in
index 8638438..8cabe02 100644
--- a/ext/voaacenc/Makefile.in
+++ b/ext/voaacenc/Makefile.in
@@ -304,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/voaacenc/gstvoaacenc.c b/ext/voaacenc/gstvoaacenc.c
index 315f373..674c481 100644
--- a/ext/voaacenc/gstvoaacenc.c
+++ b/ext/voaacenc/gstvoaacenc.c
@@ -163,10 +163,8 @@
           0, G_MAXINT, VOAAC_ENC_DEFAULT_BITRATE,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
+  gst_element_class_add_static_pad_template (element_class, &src_template);
 
   gst_element_class_set_static_metadata (element_class, "AAC audio encoder",
       "Codec/Encoder/Audio", "AAC audio encoder", "Kan Hu <kan.hu@linaro.org>");
diff --git a/ext/voamrwbenc/Makefile.in b/ext/voamrwbenc/Makefile.in
index 30b2dd2..7c719d9 100644
--- a/ext/voamrwbenc/Makefile.in
+++ b/ext/voamrwbenc/Makefile.in
@@ -305,6 +305,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -326,6 +328,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -375,6 +379,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -520,6 +526,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -646,8 +654,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,8 +696,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/voamrwbenc/gstvoamrwbenc.c b/ext/voamrwbenc/gstvoamrwbenc.c
index ae09f06..f744958 100644
--- a/ext/voamrwbenc/gstvoamrwbenc.c
+++ b/ext/voamrwbenc/gstvoamrwbenc.c
@@ -162,10 +162,8 @@
   object_class->set_property = gst_voamrwbenc_set_property;
   object_class->get_property = gst_voamrwbenc_get_property;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
+  gst_element_class_add_static_pad_template (element_class, &src_template);
 
   gst_element_class_set_static_metadata (element_class, "AMR-WB audio encoder",
       "Codec/Encoder/Audio",
diff --git a/ext/vulkan/Makefile.am b/ext/vulkan/Makefile.am
index ac3ac08..1b19e19 100644
--- a/ext/vulkan/Makefile.am
+++ b/ext/vulkan/Makefile.am
@@ -1,7 +1,7 @@
 plugin_LTLIBRARIES = libgstvulkan.la
 
 SUBDIRS =
-DIST_SUBDIRS = xcb
+DIST_SUBDIRS = xcb wayland
 DISTCLEANFILES = vkconfig.h
 
 libgstvulkan_la_SOURCES = \
@@ -63,6 +63,11 @@
 libgstvulkan_la_LIBADD += xcb/libgstvulkan-xcb.la
 endif
 
+if USE_WAYLAND
+SUBDIRS += wayland
+libgstvulkan_la_LIBADD += wayland/libgstvulkan-wayland.la
+endif
+
 libgstvulkan_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
 libgstvulkan_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
 
diff --git a/ext/vulkan/Makefile.in b/ext/vulkan/Makefile.in
index 010c758..c4dd3d5 100644
--- a/ext/vulkan/Makefile.in
+++ b/ext/vulkan/Makefile.in
@@ -92,6 +92,8 @@
 target_triplet = @target@
 @USE_XCB_TRUE@am__append_1 = xcb
 @USE_XCB_TRUE@am__append_2 = xcb/libgstvulkan-xcb.la
+@USE_WAYLAND_TRUE@am__append_3 = wayland
+@USE_WAYLAND_TRUE@am__append_4 = wayland/libgstvulkan-wayland.la
 subdir = ext/vulkan
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
@@ -166,7 +168,8 @@
 LTLIBRARIES = $(plugin_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 libgstvulkan_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) $(am__append_2)
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) $(am__append_2) \
+	$(am__append_4)
 am_libgstvulkan_la_OBJECTS = libgstvulkan_la-gstvulkan.lo \
 	libgstvulkan_la-vkdevice.lo libgstvulkan_la-vkdisplay.lo \
 	libgstvulkan_la-vkerror.lo libgstvulkan_la-vkbuffermemory.lo \
@@ -353,6 +356,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -374,6 +379,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -423,6 +430,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -568,6 +577,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -694,8 +705,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -738,8 +747,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -829,8 +843,8 @@
 top_srcdir = @top_srcdir@
 wayland_scanner = @wayland_scanner@
 plugin_LTLIBRARIES = libgstvulkan.la
-SUBDIRS = $(am__append_1)
-DIST_SUBDIRS = xcb
+SUBDIRS = $(am__append_1) $(am__append_3)
+DIST_SUBDIRS = xcb wayland
 DISTCLEANFILES = vkconfig.h
 libgstvulkan_la_SOURCES = \
 	gstvulkan.c \
@@ -881,7 +895,8 @@
 	$(VULKAN_CFLAGS)
 
 libgstvulkan_la_LIBADD = $(GST_BASE_LIBS) $(GST_PLUGINS_BASE_LIBS) \
-	-lgstvideo-$(GST_API_VERSION) $(VULKAN_LIBS) $(am__append_2)
+	-lgstvideo-$(GST_API_VERSION) $(VULKAN_LIBS) $(am__append_2) \
+	$(am__append_4)
 libgstvulkan_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
 libgstvulkan_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
 all: all-recursive
diff --git a/ext/vulkan/vkapi.h b/ext/vulkan/vkapi.h
index 525a6c0..e9c23aa 100644
--- a/ext/vulkan/vkapi.h
+++ b/ext/vulkan/vkapi.h
@@ -34,6 +34,12 @@
 #endif
 #endif
 
+#if GST_VULKAN_HAVE_WINDOW_WAYLAND
+#ifndef VK_USE_PLATFORM_WAYLAND_KHR
+#define VK_USE_PLATFORM_WAYLAND_KHR
+#endif
+#endif
+
 #include <vulkan/vulkan.h>
 
 #endif /* _VK_H_ */
diff --git a/ext/vulkan/vkconfig.h b/ext/vulkan/vkconfig.h
index 4ae6df9..f381cdd 100644
--- a/ext/vulkan/vkconfig.h
+++ b/ext/vulkan/vkconfig.h
@@ -11,7 +11,8 @@
 G_BEGIN_DECLS
 
 
-  #define GST_VULKAN_HAVE_WINDOW_XCB 1
+#define GST_VULKAN_HAVE_WINDOW_XCB 1
+#define GST_VULKAN_HAVE_WINDOW_WAYLAND 1
 
 G_END_DECLS
 
diff --git a/ext/vulkan/vkdevice.c b/ext/vulkan/vkdevice.c
index 5825391..5c2b279 100644
--- a/ext/vulkan/vkdevice.c
+++ b/ext/vulkan/vkdevice.c
@@ -143,10 +143,14 @@
 
   vkGetPhysicalDeviceProperties (gpu, &props);
 
-  GST_INFO_OBJECT (device, "device name %s type %s api version %u, "
-      "driver version %u vendor ID 0x%x, device ID 0x%x", props.deviceName,
-      _device_type_to_string (props.deviceType), props.apiVersion,
-      props.driverVersion, props.vendorID, props.deviceID);
+  GST_INFO_OBJECT (device, "device name %s type %s api version %u.%u.%u, "
+      "driver version %u.%u.%u vendor ID 0x%x, device ID 0x%x",
+      props.deviceName, _device_type_to_string (props.deviceType),
+      VK_VERSION_MAJOR (props.apiVersion), VK_VERSION_MINOR (props.apiVersion),
+      VK_VERSION_PATCH (props.apiVersion),
+      VK_VERSION_MAJOR (props.driverVersion),
+      VK_VERSION_MINOR (props.driverVersion),
+      VK_VERSION_PATCH (props.driverVersion), props.vendorID, props.deviceID);
 
   return TRUE;
 }
@@ -289,8 +293,13 @@
     device_info.pNext = NULL;
     device_info.queueCreateInfoCount = 1;
     device_info.pQueueCreateInfos = &queue_info;
+#if 0
     device_info.enabledLayerCount = enabled_layer_count;
     device_info.ppEnabledLayerNames = (const char *const *) enabled_layers;
+#else
+    device_info.enabledLayerCount = 0;
+    device_info.ppEnabledLayerNames = NULL;
+#endif
     device_info.enabledExtensionCount = enabled_extension_count;
     device_info.ppEnabledExtensionNames = (const char *const *) extension_names;
     device_info.pEnabledFeatures = NULL;
diff --git a/ext/vulkan/vkdisplay.c b/ext/vulkan/vkdisplay.c
index a066821..096f251 100644
--- a/ext/vulkan/vkdisplay.c
+++ b/ext/vulkan/vkdisplay.c
@@ -33,6 +33,9 @@
 #if GST_VULKAN_HAVE_WINDOW_XCB
 #include "xcb/vkdisplay_xcb.h"
 #endif
+#if GST_VULKAN_HAVE_WINDOW_WAYLAND
+#include "wayland/vkdisplay_wayland.h"
+#endif
 
 GST_DEBUG_CATEGORY_STATIC (GST_CAT_CONTEXT);
 #define GST_CAT_DEFAULT gst_vulkan_display_debug
@@ -142,11 +145,6 @@
   GstVulkanDisplay *display = GST_VULKAN_DISPLAY (object);
 
   g_mutex_lock (&display->priv->thread_lock);
-  if (display->main_context && display->event_source) {
-    g_source_destroy (display->event_source);
-    g_source_unref (display->event_source);
-  }
-  display->event_source = NULL;
 
   if (display->main_loop)
     g_main_loop_quit (display->main_loop);
@@ -159,6 +157,12 @@
   display->priv->event_thread = NULL;
   g_mutex_unlock (&display->priv->thread_lock);
 
+  if (display->main_context && display->event_source) {
+    g_source_destroy (display->event_source);
+    g_source_unref (display->event_source);
+  }
+  display->event_source = NULL;
+
   if (display->instance) {
     gst_object_unref (display->instance);
   }
@@ -179,6 +183,11 @@
     display = GST_VULKAN_DISPLAY (gst_vulkan_display_xcb_new (NULL));
   }
 #endif
+#if GST_VULKAN_HAVE_WINDOW_WAYLAND
+  if (!display && type & GST_VULKAN_DISPLAY_TYPE_WAYLAND) {
+    display = GST_VULKAN_DISPLAY (gst_vulkan_display_wayland_new (NULL));
+  }
+#endif
 
   if (display)
     display->instance = gst_object_ref (instance);
@@ -387,6 +396,9 @@
 #if GST_VULKAN_HAVE_WINDOW_XCB
   CHOOSE_WINSYS (xcb, XCB);
 #endif
+#if GST_VULKAN_HAVE_WINDOW_WAYLAND
+  CHOOSE_WINSYS (wayland, WAYLAND);
+#endif
 
 #undef CHOOSE_WINSYS
 
@@ -408,6 +420,9 @@
   if (type & GST_VULKAN_DISPLAY_TYPE_XCB)
     return VK_KHR_XCB_SURFACE_EXTENSION_NAME;
 
+  if (type & GST_VULKAN_DISPLAY_TYPE_WAYLAND)
+    return VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME;
+
   return NULL;
 }
 
diff --git a/ext/vulkan/vkinstance.c b/ext/vulkan/vkinstance.c
index 0e48a17..d61458e 100644
--- a/ext/vulkan/vkinstance.c
+++ b/ext/vulkan/vkinstance.c
@@ -299,8 +299,13 @@
     inst_info.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
     inst_info.pNext = NULL;
     inst_info.pApplicationInfo = &app;
+#if 0
     inst_info.enabledLayerCount = enabled_layer_count;
     inst_info.ppEnabledLayerNames = (const char *const *) enabled_layers;
+#else
+    inst_info.enabledLayerCount = 0;
+    inst_info.ppEnabledLayerNames = NULL;
+#endif
     inst_info.enabledExtensionCount = enabled_extension_count;
     inst_info.ppEnabledExtensionNames = (const char *const *) extension_names;
 
diff --git a/ext/vulkan/vksink.c b/ext/vulkan/vksink.c
index cb8530d..586d286 100644
--- a/ext/vulkan/vksink.c
+++ b/ext/vulkan/vksink.c
@@ -125,8 +125,8 @@
       "Sink/Video", "A videosink based on OpenGL",
       "Matthew Waters <matthew@centricular.com>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_vulkan_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_vulkan_sink_template);
 
   gobject_class->finalize = gst_vulkan_sink_finalize;
 
diff --git a/ext/vulkan/vkswapper.c b/ext/vulkan/vkswapper.c
index 3ad50cd..d528f0b 100644
--- a/ext/vulkan/vkswapper.c
+++ b/ext/vulkan/vkswapper.c
@@ -93,12 +93,16 @@
   switch (format) {
       /* double check endianess */
     case VK_FORMAT_R8G8B8A8_UNORM:
+    case VK_FORMAT_R8G8B8A8_SRGB:
       return GST_VIDEO_FORMAT_RGBA;
     case VK_FORMAT_R8G8B8_UNORM:
+    case VK_FORMAT_R8G8B8_SRGB:
       return GST_VIDEO_FORMAT_RGB;
     case VK_FORMAT_B8G8R8A8_UNORM:
+    case VK_FORMAT_B8G8R8A8_SRGB:
       return GST_VIDEO_FORMAT_BGRA;
     case VK_FORMAT_B8G8R8_UNORM:
+    case VK_FORMAT_B8G8R8_SRGB:
       return GST_VIDEO_FORMAT_BGR;
     default:
       return GST_VIDEO_FORMAT_UNKNOWN;
@@ -106,17 +110,33 @@
 }
 
 static VkFormat
-_vk_format_from_video_format (GstVideoFormat v_format)
+_vk_format_from_video_info (GstVideoInfo * v_info)
 {
-  switch (v_format) {
+  switch (GST_VIDEO_INFO_FORMAT (v_info)) {
     case GST_VIDEO_FORMAT_RGBA:
-      return VK_FORMAT_R8G8B8A8_UNORM;
+      if (GST_VIDEO_INFO_COLORIMETRY (v_info).transfer ==
+          GST_VIDEO_TRANSFER_SRGB)
+        return VK_FORMAT_R8G8B8A8_SRGB;
+      else
+        return VK_FORMAT_R8G8B8A8_UNORM;
     case GST_VIDEO_FORMAT_RGB:
-      return VK_FORMAT_R8G8B8_UNORM;
+      if (GST_VIDEO_INFO_COLORIMETRY (v_info).transfer ==
+          GST_VIDEO_TRANSFER_SRGB)
+        return VK_FORMAT_R8G8B8_SRGB;
+      else
+        return VK_FORMAT_R8G8B8_UNORM;
     case GST_VIDEO_FORMAT_BGRA:
-      return VK_FORMAT_B8G8R8A8_UNORM;
+      if (GST_VIDEO_INFO_COLORIMETRY (v_info).transfer ==
+          GST_VIDEO_TRANSFER_SRGB)
+        return VK_FORMAT_B8G8R8A8_SRGB;
+      else
+        return VK_FORMAT_B8G8R8A8_UNORM;
     case GST_VIDEO_FORMAT_BGR:
-      return VK_FORMAT_B8G8R8_UNORM;
+      if (GST_VIDEO_INFO_COLORIMETRY (v_info).transfer ==
+          GST_VIDEO_TRANSFER_SRGB)
+        return VK_FORMAT_B8G8R8_SRGB;
+      else
+        return VK_FORMAT_B8G8R8_UNORM;
     default:
       return VK_FORMAT_UNDEFINED;
   }
@@ -434,6 +454,7 @@
     gst_structure_set_value (s, "format", &list);
     g_value_unset (&list);
   }
+
   {
     guint32 max_dim = swapper->device->gpu_props.limits.maxImageDimension2D;
 
@@ -531,11 +552,13 @@
 
   {
     VkSubmitInfo submit_info = { 0, };
+    VkPipelineStageFlags stages = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT;
 
     submit_info.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
     submit_info.pNext = NULL;
     submit_info.waitSemaphoreCount = 0;
     submit_info.pWaitSemaphores = NULL;
+    submit_info.pWaitDstStageMask = &stages;
     submit_info.commandBufferCount = 1;
     submit_info.pCommandBuffers = &cmd;
     submit_info.signalSemaphoreCount = 0;
@@ -629,8 +652,7 @@
     preTransform = swapper->surf_props.currentTransform;
   }
 
-  format =
-      _vk_format_from_video_format (GST_VIDEO_INFO_FORMAT (&swapper->v_info));
+  format = _vk_format_from_video_info (&swapper->v_info);
   color_space = _vk_color_space_from_video_info (&swapper->v_info);
 
   if ((swapper->surf_props.supportedCompositeAlpha &
@@ -777,7 +799,6 @@
 struct cmd_data
 {
   VkCommandBuffer cmd;
-  VkFence fence;
   GDestroyNotify notify;
   gpointer data;
 };
@@ -867,10 +888,6 @@
   cmd_data->cmd = cmd;
   cmd_data->notify = NULL;
 
-  if (!_new_fence (swapper->device, &cmd_data->fence, error)) {
-    return FALSE;
-  }
-
   return TRUE;
 }
 
@@ -878,7 +895,8 @@
 _render_buffer_unlocked (GstVulkanSwapper * swapper,
     GstBuffer * buffer, GError ** error)
 {
-  VkSemaphore semaphore = { 0, };
+  VkSemaphore acquire_semaphore = { 0, };
+  VkSemaphore present_semaphore = { 0, };
   VkSemaphoreCreateInfo semaphore_info = { 0, };
   VkPresentInfoKHR present;
   struct cmd_data cmd_data = { 0, };
@@ -905,18 +923,18 @@
 
 reacquire:
   err = vkCreateSemaphore (swapper->device->device, &semaphore_info,
-      NULL, &semaphore);
+      NULL, &acquire_semaphore);
   if (gst_vulkan_error_to_g_error (err, error, "vkCreateSemaphore") < 0)
     goto error;
 
   err =
       swapper->AcquireNextImageKHR (swapper->device->device,
-      swapper->swap_chain, -1, semaphore, VK_NULL_HANDLE, &swap_idx);
+      swapper->swap_chain, -1, acquire_semaphore, VK_NULL_HANDLE, &swap_idx);
   /* TODO: Deal with the VK_SUBOPTIMAL_KHR and VK_ERROR_OUT_OF_DATE_KHR */
   if (err == VK_ERROR_OUT_OF_DATE_KHR) {
     GST_DEBUG_OBJECT (swapper, "out of date frame acquired");
 
-    vkDestroySemaphore (swapper->device->device, semaphore, NULL);
+    vkDestroySemaphore (swapper->device->device, acquire_semaphore, NULL);
     if (!_swapchain_resize (swapper, error))
       goto error;
     goto reacquire;
@@ -928,36 +946,45 @@
   if (!_build_render_buffer_cmd (swapper, swap_idx, buffer, &cmd_data, error))
     goto error;
 
+  err = vkCreateSemaphore (swapper->device->device, &semaphore_info,
+      NULL, &present_semaphore);
+  if (gst_vulkan_error_to_g_error (err, error, "vkCreateSemaphore") < 0)
+    goto error;
+
   {
     VkSubmitInfo submit_info = { 0, };
+    VkPipelineStageFlags stages = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT;
 
     submit_info.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
     submit_info.pNext = NULL;
     submit_info.waitSemaphoreCount = 1;
-    submit_info.pWaitSemaphores = &semaphore;
+    submit_info.pWaitSemaphores = &acquire_semaphore;
+    submit_info.pWaitDstStageMask = &stages;
     submit_info.commandBufferCount = 1;
     submit_info.pCommandBuffers = &cmd_data.cmd;
-    submit_info.signalSemaphoreCount = 0;
-    submit_info.pSignalSemaphores = NULL;
+    submit_info.signalSemaphoreCount = 1;
+    submit_info.pSignalSemaphores = &present_semaphore;
 
-    err =
-        vkQueueSubmit (swapper->queue->queue, 1, &submit_info, cmd_data.fence);
+    err = vkQueueSubmit (swapper->queue->queue, 1, &submit_info, NULL);
     if (gst_vulkan_error_to_g_error (err, error, "vkQueueSubmit") < 0) {
-      return FALSE;
+      goto error;
     }
   }
 
   present.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR;
   present.pNext = NULL;
-  present.waitSemaphoreCount = 0;
-  present.pWaitSemaphores = NULL;
+  present.waitSemaphoreCount = 1;
+  present.pWaitSemaphores = &present_semaphore;
   present.swapchainCount = 1;
   present.pSwapchains = &swapper->swap_chain;
   present.pImageIndices = &swap_idx;
   present.pResults = &present_err;
 
   err = swapper->QueuePresentKHR (swapper->queue->queue, &present);
-  if (err == VK_ERROR_OUT_OF_DATE_KHR) {
+  if (gst_vulkan_error_to_g_error (err, error, "vkQueuePresentKHR") < 0)
+    goto error;
+
+  if (present_err == VK_ERROR_OUT_OF_DATE_KHR) {
     GST_DEBUG_OBJECT (swapper, "out of date frame submitted");
 
     if (!_swapchain_resize (swapper, error))
@@ -965,30 +992,30 @@
   } else if (gst_vulkan_error_to_g_error (err, error, "vkQueuePresentKHR") < 0)
     goto error;
 
-  err = vkWaitForFences (swapper->device->device, 1, &cmd_data.fence, TRUE, -1);
-  if (gst_vulkan_error_to_g_error (err, error, "vkWaitForFences") < 0)
+  err = vkDeviceWaitIdle (swapper->device->device);
+  if (gst_vulkan_error_to_g_error (err, error, "vkDeviceWaitIdle") < 0)
     goto error;
 
-  if (semaphore)
-    vkDestroySemaphore (swapper->device->device, semaphore, NULL);
+  if (acquire_semaphore)
+    vkDestroySemaphore (swapper->device->device, acquire_semaphore, NULL);
+  if (present_semaphore)
+    vkDestroySemaphore (swapper->device->device, present_semaphore, NULL);
   if (cmd_data.cmd)
     vkFreeCommandBuffers (swapper->device->device, swapper->device->cmd_pool,
         1, &cmd_data.cmd);
-  if (cmd_data.fence)
-    vkDestroyFence (swapper->device->device, cmd_data.fence, NULL);
   if (cmd_data.notify)
     cmd_data.notify (cmd_data.data);
   return TRUE;
 
 error:
   {
-    if (semaphore)
-      vkDestroySemaphore (swapper->device->device, semaphore, NULL);
+    if (acquire_semaphore)
+      vkDestroySemaphore (swapper->device->device, acquire_semaphore, NULL);
+    if (present_semaphore)
+      vkDestroySemaphore (swapper->device->device, present_semaphore, NULL);
     if (cmd_data.cmd)
       vkFreeCommandBuffers (swapper->device->device, swapper->device->cmd_pool,
           1, &cmd_data.cmd);
-    if (cmd_data.fence)
-      vkDestroyFence (swapper->device->device, cmd_data.fence, NULL);
     if (cmd_data.notify)
       cmd_data.notify (cmd_data.data);
     return FALSE;
diff --git a/ext/vulkan/vkupload.c b/ext/vulkan/vkupload.c
index 95c36cf..4988c64 100644
--- a/ext/vulkan/vkupload.c
+++ b/ext/vulkan/vkupload.c
@@ -161,7 +161,8 @@
 }
 
 static GstStaticCaps _buffer_in_templ =
-GST_STATIC_CAPS ("video/x-raw(" GST_CAPS_FEATURE_MEMORY_VULKAN_BUFFER ")");
+    GST_STATIC_CAPS ("video/x-raw(" GST_CAPS_FEATURE_MEMORY_VULKAN_BUFFER ") ;"
+    "video/x-raw");
 static GstStaticCaps _buffer_out_templ =
 GST_STATIC_CAPS ("video/x-raw(" GST_CAPS_FEATURE_MEMORY_VULKAN_BUFFER ")");
 
@@ -787,6 +788,7 @@
 gst_vulkan_upload_prepare_output_buffer (GstBaseTransform * bt,
     GstBuffer * inbuf, GstBuffer ** outbuf)
 {
+  GstBaseTransformClass *bclass = GST_BASE_TRANSFORM_GET_CLASS (bt);
   GstVulkanUpload *vk_upload = GST_VULKAN_UPLOAD (bt);
   GstFlowReturn ret;
 
@@ -818,6 +820,12 @@
     }
   } while (FALSE);
 
+  if (ret == GST_FLOW_OK) {
+    /* basetransform doesn't unref if they're the same */
+    if (inbuf != *outbuf)
+      bclass->copy_metadata (bt, inbuf, *outbuf);
+  }
+
   return ret;
 }
 
diff --git a/ext/vulkan/vkutils.c b/ext/vulkan/vkutils.c
index 4b54755..1c25cb8 100644
--- a/ext/vulkan/vkutils.c
+++ b/ext/vulkan/vkutils.c
@@ -36,6 +36,7 @@
 
   if (check_count <= 0 || layer_count <= 0) {
     GST_WARNING ("no layers requested or supported");
+    *supported_layers = NULL;
     return FALSE;
   }
 
@@ -55,6 +56,7 @@
       GST_WARNING ("Cannot find layer: %s", check_names[i]);
   }
 
+  (*supported_layers)[k] = NULL;
   *supported_layers_count = g_strv_length (*supported_layers);
 
   return TRUE;
diff --git a/ext/vulkan/vkwindow.c b/ext/vulkan/vkwindow.c
index caa3c47..56b3e60 100644
--- a/ext/vulkan/vkwindow.c
+++ b/ext/vulkan/vkwindow.c
@@ -43,6 +43,9 @@
 #if GST_VULKAN_HAVE_WINDOW_XCB
 #include "xcb/vkwindow_xcb.h"
 #endif
+#if GST_VULKAN_HAVE_WINDOW_WAYLAND
+#include "wayland/vkwindow_wayland.h"
+#endif
 
 #define GST_CAT_DEFAULT gst_vulkan_window_debug
 GST_DEBUG_CATEGORY (GST_CAT_DEFAULT);
@@ -183,6 +186,10 @@
   if (!window && (!user_choice || g_strstr_len (user_choice, 3, "xcb")))
     window = GST_VULKAN_WINDOW (gst_vulkan_window_xcb_new (display));
 #endif
+#if GST_VULKAN_HAVE_WINDOW_WAYLAND
+  if (!window && (!user_choice || g_strstr_len (user_choice, 7, "wayland")))
+    window = GST_VULKAN_WINDOW (gst_vulkan_window_wayland_new (display));
+#endif
   if (!window) {
     /* subclass returned a NULL window */
     GST_WARNING ("Could not create window. user specified %s, creating dummy"
diff --git a/ext/vulkan/wayland/Makefile.am b/ext/vulkan/wayland/Makefile.am
new file mode 100644
index 0000000..f92d85e
--- /dev/null
+++ b/ext/vulkan/wayland/Makefile.am
@@ -0,0 +1,29 @@
+## Process this file with automake to produce Makefile.in
+
+noinst_LTLIBRARIES = libgstvulkan-wayland.la
+
+libgstvulkan_wayland_la_SOURCES = \
+	vkdisplay_wayland.c \
+	vkwindow_wayland.c \
+	wayland_event_source.c
+
+noinst_HEADERS = \
+	vkdisplay_wayland.h \
+	vkwindow_wayland.h \
+	wayland_event_source.h
+
+libgstvulkan_wayland_la_CFLAGS = \
+	-I$(top_srcdir)/gst-libs \
+	-I$(top_srcdir)/ext/vulkan \
+	-I$(top_builddir)/gst-libs \
+	$(GST_PLUGINS_BASE_CFLAGS) \
+	$(GST_BASE_CFLAGS) \
+	$(GST_CFLAGS) \
+	$(WAYLAND_CFLAGS)
+
+libgstvulkan_wayland_la_LIBADD = \
+	$(WAYLAND_LIBS)
+
+libgstvulkan_wayland_la_LDFLAGS = \
+	$(GST_LIB_LDFLAGS) \
+	$(GST_ALL_LDFLAGS)
diff --git a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.in b/ext/vulkan/wayland/Makefile.in
similarity index 75%
copy from tests/examples/gl/gtk/gtkvideooverlay/Makefile.in
copy to ext/vulkan/wayland/Makefile.in
index aef9ed4..44513f9 100644
--- a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.in
+++ b/ext/vulkan/wayland/Makefile.in
@@ -14,6 +14,7 @@
 
 @SET_MAKE@
 
+
 VPATH = @srcdir@
 am__is_gnu_make = { \
   if test -z '$(MAKELEVEL)'; then \
@@ -89,8 +90,7 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-noinst_PROGRAMS = gtkvideooverlay$(EXEEXT)
-subdir = tests/examples/gl/gtk/gtkvideooverlay
+subdir = ext/vulkan/wayland
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -127,27 +127,29 @@
 	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
+	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-am_gtkvideooverlay_OBJECTS = gtkvideooverlay-main.$(OBJEXT)
-gtkvideooverlay_OBJECTS = $(am_gtkvideooverlay_OBJECTS)
+LTLIBRARIES = $(noinst_LTLIBRARIES)
 am__DEPENDENCIES_1 =
-gtkvideooverlay_DEPENDENCIES = ../libgstgtkhelper.la \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1)
+libgstvulkan_wayland_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_libgstvulkan_wayland_la_OBJECTS =  \
+	libgstvulkan_wayland_la-vkdisplay_wayland.lo \
+	libgstvulkan_wayland_la-vkwindow_wayland.lo \
+	libgstvulkan_wayland_la-wayland_event_source.lo
+libgstvulkan_wayland_la_OBJECTS =  \
+	$(am_libgstvulkan_wayland_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 am__v_lt_1 = 
-gtkvideooverlay_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
-	$(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+libgstvulkan_wayland_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(libgstvulkan_wayland_la_CFLAGS) $(CFLAGS) \
+	$(libgstvulkan_wayland_la_LDFLAGS) $(LDFLAGS) -o $@
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -164,31 +166,32 @@
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
 am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_@AM_V@)
-am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
-am__v_CXX_0 = @echo "  CXX     " $@;
-am__v_CXX_1 = 
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo "  CXXLD   " $@;
-am__v_CXXLD_1 = 
-SOURCES = $(gtkvideooverlay_SOURCES)
-DIST_SOURCES = $(gtkvideooverlay_SOURCES)
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(libgstvulkan_wayland_la_SOURCES)
+DIST_SOURCES = $(libgstvulkan_wayland_la_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+HEADERS = $(noinst_HEADERS)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 # Read a list of newline-separated strings from the standard input,
 # and print each of them once, without duplicates.  Input order is
@@ -274,6 +277,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -295,6 +300,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -344,6 +351,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -489,6 +498,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -615,8 +626,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -659,8 +668,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -749,19 +763,37 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 wayland_scanner = @wayland_scanner@
-gtkvideooverlay_SOURCES = main.cpp
-gtkvideooverlay_CXXFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
-	$(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
-	$(GL_CFLAGS) $(GTK3_CFLAGS)  $(X11_CFLAGS)
+noinst_LTLIBRARIES = libgstvulkan-wayland.la
+libgstvulkan_wayland_la_SOURCES = \
+	vkdisplay_wayland.c \
+	vkwindow_wayland.c \
+	wayland_event_source.c
 
-gtkvideooverlay_LDADD = ../libgstgtkhelper.la \
-	$(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
-	$(GL_LIBS) -lgstvideo-$(GST_API_VERSION) $(X11_LIBS)
+noinst_HEADERS = \
+	vkdisplay_wayland.h \
+	vkwindow_wayland.h \
+	wayland_event_source.h
+
+libgstvulkan_wayland_la_CFLAGS = \
+	-I$(top_srcdir)/gst-libs \
+	-I$(top_srcdir)/ext/vulkan \
+	-I$(top_builddir)/gst-libs \
+	$(GST_PLUGINS_BASE_CFLAGS) \
+	$(GST_BASE_CFLAGS) \
+	$(GST_CFLAGS) \
+	$(WAYLAND_CFLAGS)
+
+libgstvulkan_wayland_la_LIBADD = \
+	$(WAYLAND_LIBS)
+
+libgstvulkan_wayland_la_LDFLAGS = \
+	$(GST_LIB_LDFLAGS) \
+	$(GST_ALL_LDFLAGS)
 
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .cpp .lo .o .obj
+.SUFFIXES: .c .lo .o .obj
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -771,9 +803,9 @@
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/gl/gtk/gtkvideooverlay/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ext/vulkan/wayland/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu tests/examples/gl/gtk/gtkvideooverlay/Makefile
+	  $(AUTOMAKE) --gnu ext/vulkan/wayland/Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -792,18 +824,19 @@
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 
-clean-noinstPROGRAMS:
-	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
 
-gtkvideooverlay$(EXEEXT): $(gtkvideooverlay_OBJECTS) $(gtkvideooverlay_DEPENDENCIES) $(EXTRA_gtkvideooverlay_DEPENDENCIES) 
-	@rm -f gtkvideooverlay$(EXEEXT)
-	$(AM_V_CXXLD)$(gtkvideooverlay_LINK) $(gtkvideooverlay_OBJECTS) $(gtkvideooverlay_LDADD) $(LIBS)
+libgstvulkan-wayland.la: $(libgstvulkan_wayland_la_OBJECTS) $(libgstvulkan_wayland_la_DEPENDENCIES) $(EXTRA_libgstvulkan_wayland_la_DEPENDENCIES) 
+	$(AM_V_CCLD)$(libgstvulkan_wayland_la_LINK)  $(libgstvulkan_wayland_la_OBJECTS) $(libgstvulkan_wayland_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -811,45 +844,54 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkvideooverlay-main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvulkan_wayland_la-vkdisplay_wayland.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvulkan_wayland_la-vkwindow_wayland.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvulkan_wayland_la-wayland_event_source.Plo@am__quote@
 
-.cpp.o:
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+.c.o:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
 
-.cpp.obj:
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+.c.obj:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
-.cpp.lo:
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+.c.lo:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
-gtkvideooverlay-main.o: main.cpp
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -MT gtkvideooverlay-main.o -MD -MP -MF $(DEPDIR)/gtkvideooverlay-main.Tpo -c -o gtkvideooverlay-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/gtkvideooverlay-main.Tpo $(DEPDIR)/gtkvideooverlay-main.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='main.cpp' object='gtkvideooverlay-main.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -c -o gtkvideooverlay-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
+libgstvulkan_wayland_la-vkdisplay_wayland.lo: vkdisplay_wayland.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_wayland_la_CFLAGS) $(CFLAGS) -MT libgstvulkan_wayland_la-vkdisplay_wayland.lo -MD -MP -MF $(DEPDIR)/libgstvulkan_wayland_la-vkdisplay_wayland.Tpo -c -o libgstvulkan_wayland_la-vkdisplay_wayland.lo `test -f 'vkdisplay_wayland.c' || echo '$(srcdir)/'`vkdisplay_wayland.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvulkan_wayland_la-vkdisplay_wayland.Tpo $(DEPDIR)/libgstvulkan_wayland_la-vkdisplay_wayland.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vkdisplay_wayland.c' object='libgstvulkan_wayland_la-vkdisplay_wayland.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_wayland_la_CFLAGS) $(CFLAGS) -c -o libgstvulkan_wayland_la-vkdisplay_wayland.lo `test -f 'vkdisplay_wayland.c' || echo '$(srcdir)/'`vkdisplay_wayland.c
 
-gtkvideooverlay-main.obj: main.cpp
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -MT gtkvideooverlay-main.obj -MD -MP -MF $(DEPDIR)/gtkvideooverlay-main.Tpo -c -o gtkvideooverlay-main.obj `if test -f 'main.cpp'; then $(CYGPATH_W) 'main.cpp'; else $(CYGPATH_W) '$(srcdir)/main.cpp'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/gtkvideooverlay-main.Tpo $(DEPDIR)/gtkvideooverlay-main.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='main.cpp' object='gtkvideooverlay-main.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -c -o gtkvideooverlay-main.obj `if test -f 'main.cpp'; then $(CYGPATH_W) 'main.cpp'; else $(CYGPATH_W) '$(srcdir)/main.cpp'; fi`
+libgstvulkan_wayland_la-vkwindow_wayland.lo: vkwindow_wayland.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_wayland_la_CFLAGS) $(CFLAGS) -MT libgstvulkan_wayland_la-vkwindow_wayland.lo -MD -MP -MF $(DEPDIR)/libgstvulkan_wayland_la-vkwindow_wayland.Tpo -c -o libgstvulkan_wayland_la-vkwindow_wayland.lo `test -f 'vkwindow_wayland.c' || echo '$(srcdir)/'`vkwindow_wayland.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvulkan_wayland_la-vkwindow_wayland.Tpo $(DEPDIR)/libgstvulkan_wayland_la-vkwindow_wayland.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vkwindow_wayland.c' object='libgstvulkan_wayland_la-vkwindow_wayland.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_wayland_la_CFLAGS) $(CFLAGS) -c -o libgstvulkan_wayland_la-vkwindow_wayland.lo `test -f 'vkwindow_wayland.c' || echo '$(srcdir)/'`vkwindow_wayland.c
+
+libgstvulkan_wayland_la-wayland_event_source.lo: wayland_event_source.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_wayland_la_CFLAGS) $(CFLAGS) -MT libgstvulkan_wayland_la-wayland_event_source.lo -MD -MP -MF $(DEPDIR)/libgstvulkan_wayland_la-wayland_event_source.Tpo -c -o libgstvulkan_wayland_la-wayland_event_source.lo `test -f 'wayland_event_source.c' || echo '$(srcdir)/'`wayland_event_source.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvulkan_wayland_la-wayland_event_source.Tpo $(DEPDIR)/libgstvulkan_wayland_la-wayland_event_source.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='wayland_event_source.c' object='libgstvulkan_wayland_la-wayland_event_source.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_wayland_la_CFLAGS) $(CFLAGS) -c -o libgstvulkan_wayland_la-wayland_event_source.lo `test -f 'wayland_event_source.c' || echo '$(srcdir)/'`wayland_event_source.c
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -941,7 +983,7 @@
 	done
 check-am: all-am
 check: check-am
-all-am: Makefile $(PROGRAMS)
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
 installdirs:
 install: install-am
 install-exec: install-exec-am
@@ -975,7 +1017,7 @@
 	@echo "it deletes files that may require special tools to rebuild."
 clean: clean-am
 
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
 	mostlyclean-am
 
 distclean: distclean-am
@@ -1047,7 +1089,7 @@
 .MAKE: install-am install-strip
 
 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
+	clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
 	ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
diff --git a/ext/vulkan/wayland/vkdisplay_wayland.c b/ext/vulkan/wayland/vkdisplay_wayland.c
new file mode 100644
index 0000000..686d671
--- /dev/null
+++ b/ext/vulkan/wayland/vkdisplay_wayland.c
@@ -0,0 +1,189 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "wayland/vkdisplay_wayland.h"
+#include "wayland_event_source.h"
+
+GST_DEBUG_CATEGORY_STATIC (gst_vulkan_display_wayland_debug);
+#define GST_CAT_DEFAULT gst_vulkan_display_wayland_debug
+
+G_DEFINE_TYPE_WITH_CODE (GstVulkanDisplayWayland, gst_vulkan_display_wayland,
+    GST_TYPE_VULKAN_DISPLAY, GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT,
+        "vulkandisplaywayland", 0, "Vulkan Wayland Display");
+    );
+
+static void gst_vulkan_display_wayland_finalize (GObject * object);
+static gpointer gst_vulkan_display_wayland_get_handle (GstVulkanDisplay *
+    display);
+
+static void
+registry_handle_global (void *data, struct wl_registry *registry,
+    uint32_t name, const char *interface, uint32_t version)
+{
+  GstVulkanDisplayWayland *display = data;
+
+  GST_TRACE_OBJECT (display, "registry_handle_global with registry %p, "
+      "interface %s, version %u", registry, interface, version);
+
+  if (g_strcmp0 (interface, "wl_compositor") == 0) {
+    display->compositor =
+        wl_registry_bind (registry, name, &wl_compositor_interface, 1);
+  } else if (g_strcmp0 (interface, "wl_subcompositor") == 0) {
+    display->subcompositor =
+        wl_registry_bind (registry, name, &wl_subcompositor_interface, 1);
+  } else if (g_strcmp0 (interface, "wl_shell") == 0) {
+    display->shell = wl_registry_bind (registry, name, &wl_shell_interface, 1);
+  }
+}
+
+static const struct wl_registry_listener registry_listener = {
+  registry_handle_global
+};
+
+static void
+_connect_listeners (GstVulkanDisplayWayland * display)
+{
+  display->registry = wl_display_get_registry (display->display);
+  wl_registry_add_listener (display->registry, &registry_listener, display);
+
+  wl_display_roundtrip (display->display);
+}
+
+static void
+gst_vulkan_display_wayland_class_init (GstVulkanDisplayWaylandClass * klass)
+{
+  GST_VULKAN_DISPLAY_CLASS (klass)->get_handle =
+      GST_DEBUG_FUNCPTR (gst_vulkan_display_wayland_get_handle);
+
+  G_OBJECT_CLASS (klass)->finalize = gst_vulkan_display_wayland_finalize;
+}
+
+static void
+gst_vulkan_display_wayland_init (GstVulkanDisplayWayland * display_wayland)
+{
+  GstVulkanDisplay *display = (GstVulkanDisplay *) display_wayland;
+
+  display->type = GST_VULKAN_DISPLAY_TYPE_WAYLAND;
+  display_wayland->foreign_display = FALSE;
+}
+
+static void
+gst_vulkan_display_wayland_finalize (GObject * object)
+{
+  GstVulkanDisplayWayland *display_wayland =
+      GST_VULKAN_DISPLAY_WAYLAND (object);
+
+  if (!display_wayland->foreign_display && display_wayland->display) {
+    wl_display_flush (display_wayland->display);
+    wl_display_disconnect (display_wayland->display);
+  }
+
+  G_OBJECT_CLASS (gst_vulkan_display_wayland_parent_class)->finalize (object);
+}
+
+/**
+ * gst_vulkan_display_wayland_new:
+ * @name: (allow-none): a display name
+ *
+ * Create a new #GstVulkanDisplayWayland from the wayland display name.  See wl_display_connect()
+ * for details on what is a valid name.
+ *
+ * Returns: (transfer full): a new #GstVulkanDisplayWayland or %NULL
+ */
+GstVulkanDisplayWayland *
+gst_vulkan_display_wayland_new (const gchar * name)
+{
+  GstVulkanDisplayWayland *ret;
+
+  ret = g_object_new (GST_TYPE_VULKAN_DISPLAY_WAYLAND, NULL);
+  ret->display = wl_display_connect (name);
+
+  if (!ret->display) {
+    GST_ERROR ("Failed to open Wayland display connection with name, \'%s\'",
+        name);
+    return NULL;
+  }
+
+  /* connecting the listeners after attaching the event source will race with
+   * the source and the source may eat an event that we're waiting for and
+   * deadlock */
+  _connect_listeners (ret);
+
+  GST_VULKAN_DISPLAY (ret)->event_source =
+      wayland_event_source_new (ret->display, NULL);
+  g_source_attach (GST_VULKAN_DISPLAY (ret)->event_source,
+      GST_VULKAN_DISPLAY (ret)->main_context);
+
+  return ret;
+}
+
+/**
+ * gst_vulkan_display_wayland_new_with_display:
+ * @display: an existing, wayland display
+ *
+ * Creates a new display connection from a wl_display Display.
+ *
+ * Returns: (transfer full): a new #GstVulkanDisplayWayland
+ */
+GstVulkanDisplayWayland *
+gst_vulkan_display_wayland_new_with_display (struct wl_display * display)
+{
+  GstVulkanDisplayWayland *ret;
+
+  g_return_val_if_fail (display != NULL, NULL);
+
+  ret = g_object_new (GST_TYPE_VULKAN_DISPLAY_WAYLAND, NULL);
+
+  ret->display = display;
+  ret->foreign_display = TRUE;
+
+  _connect_listeners (ret);
+
+  return ret;
+}
+
+static gpointer
+gst_vulkan_display_wayland_get_handle (GstVulkanDisplay * display)
+{
+  return GST_VULKAN_DISPLAY_WAYLAND (display)->display;
+}
+
+static gboolean
+_roundtrip_async (gpointer data)
+{
+  GstVulkanDisplayWayland *display = data;
+
+  wl_display_roundtrip (display->display);
+
+  return G_SOURCE_REMOVE;
+}
+
+void
+gst_vulkan_display_wayland_roundtrip_async (GstVulkanDisplayWayland * display)
+{
+  g_return_if_fail (GST_IS_VULKAN_DISPLAY_WAYLAND (display));
+
+  g_main_context_invoke (GST_VULKAN_DISPLAY (display)->main_context,
+      (GSourceFunc) _roundtrip_async, display);
+}
diff --git a/ext/vulkan/wayland/vkdisplay_wayland.h b/ext/vulkan/wayland/vkdisplay_wayland.h
new file mode 100644
index 0000000..44c1340
--- /dev/null
+++ b/ext/vulkan/wayland/vkdisplay_wayland.h
@@ -0,0 +1,78 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_VK_DISPLAY_WAYLAND_H__
+#define __GST_VK_DISPLAY_WAYLAND_H__
+
+#include <gst/gst.h>
+
+#include <wayland-client.h>
+
+#include <vk.h>
+
+G_BEGIN_DECLS
+
+GType gst_vulkan_display_wayland_get_type (void);
+
+#define GST_TYPE_VULKAN_DISPLAY_WAYLAND             (gst_vulkan_display_wayland_get_type())
+#define GST_VULKAN_DISPLAY_WAYLAND(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_VULKAN_DISPLAY_WAYLAND,GstVulkanDisplayWayland))
+#define GST_VULKAN_DISPLAY_WAYLAND_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_VULKAN_DISPLAY_WAYLAND,GstVulkanDisplayWaylandClass))
+#define GST_IS_VULKAN_DISPLAY_WAYLAND(obj)          (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_VULKAN_DISPLAY_WAYLAND))
+#define GST_IS_VULKAN_DISPLAY_WAYLAND_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_VULKAN_DISPLAY_WAYLAND))
+#define GST_VULKAN_DISPLAY_WAYLAND_CAST(obj)        ((GstVulkanDisplayWayland*)(obj))
+
+typedef struct _GstVulkanDisplayWayland GstVulkanDisplayWayland;
+typedef struct _GstVulkanDisplayWaylandClass GstVulkanDisplayWaylandClass;
+
+/**
+ * GstVulkanDisplayWayland:
+ *
+ * the contents of a #GstVulkanDisplayWayland are private and should only be accessed
+ * through the provided API
+ */
+struct _GstVulkanDisplayWayland
+{
+  GstVulkanDisplay            parent;
+
+  struct wl_display       *display;
+  struct wl_registry      *registry;
+  struct wl_compositor    *compositor;
+  struct wl_subcompositor *subcompositor;
+  struct wl_shell         *shell;
+
+  /* <private> */
+  gboolean foreign_display;
+};
+
+struct _GstVulkanDisplayWaylandClass
+{
+  GstVulkanDisplayClass object_class;
+};
+
+#define GST_VULKAN_DISPLAY_WAYLAND_DISPLAY(display_) (GST_VULKAN_DISPLAY_WAYLAND (display_)->display)
+
+GstVulkanDisplayWayland *gst_vulkan_display_wayland_new (const gchar * name);
+GstVulkanDisplayWayland *gst_vulkan_display_wayland_new_with_display (struct wl_display *display);
+
+void gst_vulkan_display_wayland_roundtrip_async (GstVulkanDisplayWayland * display);
+
+G_END_DECLS
+
+#endif /* __GST_VULKAN_DISPLAY_WAYLAND_H__ */
diff --git a/ext/vulkan/wayland/vkwindow_wayland.c b/ext/vulkan/wayland/vkwindow_wayland.c
new file mode 100644
index 0000000..dc99027
--- /dev/null
+++ b/ext/vulkan/wayland/vkwindow_wayland.c
@@ -0,0 +1,285 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#define GLIB_DISABLE_DEPRECATION_WARNINGS
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <linux/input.h>
+
+#include "wayland_event_source.h"
+
+#include "vkdisplay_wayland.h"
+#include "vkwindow_wayland.h"
+
+#define GST_CAT_DEFAULT gst_vulkan_window_wayland_debug
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
+
+#define gst_vulkan_window_wayland_parent_class parent_class
+G_DEFINE_TYPE (GstVulkanWindowWayland, gst_vulkan_window_wayland,
+    GST_TYPE_VULKAN_WINDOW)
+
+     static void gst_vulkan_window_wayland_close (GstVulkanWindow * window);
+     static gboolean gst_vulkan_window_wayland_open (GstVulkanWindow * window,
+    GError ** error);
+     static VkSurfaceKHR gst_vulkan_window_wayland_get_surface (GstVulkanWindow
+    * window, GError ** error);
+     static gboolean
+         gst_vulkan_window_wayland_get_presentation_support (GstVulkanWindow *
+    window, GstVulkanDevice * device, guint32 queue_family_idx);
+
+     static void
+         handle_ping (void *data, struct wl_shell_surface *shell_surface,
+    uint32_t serial)
+{
+  GstVulkanWindowWayland *window_wl = data;
+
+  GST_TRACE_OBJECT (window_wl, "ping received serial %u", serial);
+
+  wl_shell_surface_pong (shell_surface, serial);
+}
+
+/*
+static void window_resize (GstVulkanWindowWayland * window_wl, guint width,
+    guint height);*/
+
+static void
+handle_configure (void *data, struct wl_shell_surface *shell_surface,
+    uint32_t edges, int32_t width, int32_t height)
+{
+  GstVulkanWindowWayland *window_wl = data;
+
+  GST_DEBUG_OBJECT (window_wl, "configure event on surface %p, %ix%i",
+      shell_surface, width, height);
+
+  /*window_resize (window_wl, width, height); */
+}
+
+static void
+handle_popup_done (void *data, struct wl_shell_surface *shell_surface)
+{
+}
+
+static const struct wl_shell_surface_listener shell_surface_listener = {
+  handle_ping,
+  handle_configure,
+  handle_popup_done
+};
+
+static void
+destroy_surfaces (GstVulkanWindowWayland * window_wl)
+{
+  GST_DEBUG_OBJECT (window_wl, "destroying created surfaces");
+
+  if (window_wl->shell_surface) {
+    wl_shell_surface_destroy (window_wl->shell_surface);
+    window_wl->shell_surface = NULL;
+  }
+  if (window_wl->surface) {
+    wl_surface_destroy (window_wl->surface);
+    window_wl->surface = NULL;
+  }
+}
+
+static void
+create_surfaces (GstVulkanWindowWayland * window_wl)
+{
+  GstVulkanDisplayWayland *display =
+      GST_VULKAN_DISPLAY_WAYLAND (GST_VULKAN_WINDOW (window_wl)->display);
+  gint width, height;
+
+  if (!window_wl->surface) {
+    window_wl->surface = wl_compositor_create_surface (display->compositor);
+    if (window_wl->queue)
+      wl_proxy_set_queue ((struct wl_proxy *) window_wl->surface,
+          window_wl->queue);
+  }
+
+  if (!window_wl->shell_surface) {
+    window_wl->shell_surface =
+        wl_shell_get_shell_surface (display->shell, window_wl->surface);
+    if (window_wl->queue)
+      wl_proxy_set_queue ((struct wl_proxy *) window_wl->shell_surface,
+          window_wl->queue);
+
+    wl_shell_surface_add_listener (window_wl->shell_surface,
+        &shell_surface_listener, window_wl);
+
+    wl_shell_surface_set_title (window_wl->shell_surface, "Vulkan Renderer");
+    wl_shell_surface_set_toplevel (window_wl->shell_surface);
+    GST_DEBUG_OBJECT (window_wl, "Successfully created shell surface %p",
+        window_wl->shell_surface);
+  }
+
+  if (window_wl->window_width > 0)
+    width = window_wl->window_width;
+  else
+    width = 320;
+  window_wl->window_width = width;
+
+  if (window_wl->window_height > 0)
+    height = window_wl->window_height;
+  else
+    height = 240;
+  window_wl->window_height = height;
+}
+
+static void
+gst_vulkan_window_wayland_class_init (GstVulkanWindowWaylandClass * klass)
+{
+  GstVulkanWindowClass *window_class = (GstVulkanWindowClass *) klass;
+
+  window_class->close = GST_DEBUG_FUNCPTR (gst_vulkan_window_wayland_close);
+  window_class->open = GST_DEBUG_FUNCPTR (gst_vulkan_window_wayland_open);
+  window_class->get_surface =
+      GST_DEBUG_FUNCPTR (gst_vulkan_window_wayland_get_surface);
+  window_class->get_presentation_support =
+      GST_DEBUG_FUNCPTR (gst_vulkan_window_wayland_get_presentation_support);
+}
+
+static void
+gst_vulkan_window_wayland_init (GstVulkanWindowWayland * window)
+{
+}
+
+GstVulkanWindowWayland *
+gst_vulkan_window_wayland_new (GstVulkanDisplay * display)
+{
+  if ((gst_vulkan_display_get_handle_type (display) &
+          GST_VULKAN_DISPLAY_TYPE_WAYLAND)
+      == 0)
+    /* we require a wayland display to create wayland surfaces */
+    return NULL;
+
+  GST_DEBUG ("creating Wayland window");
+
+  return g_object_new (GST_TYPE_VULKAN_WINDOW_WAYLAND, NULL);
+}
+
+static void
+gst_vulkan_window_wayland_close (GstVulkanWindow * window)
+{
+  GstVulkanWindowWayland *window_wl;
+
+  window_wl = GST_VULKAN_WINDOW_WAYLAND (window);
+
+  destroy_surfaces (window_wl);
+
+  g_source_destroy (window_wl->wl_source);
+  g_source_unref (window_wl->wl_source);
+  window_wl->wl_source = NULL;
+
+  GST_VULKAN_WINDOW_CLASS (parent_class)->close (window);
+}
+
+static gboolean
+gst_vulkan_window_wayland_open (GstVulkanWindow * window, GError ** error)
+{
+  GstVulkanDisplayWayland *display;
+  GstVulkanWindowWayland *window_wl = GST_VULKAN_WINDOW_WAYLAND (window);
+
+  if (!GST_IS_VULKAN_DISPLAY_WAYLAND (window->display)) {
+    g_set_error (error, GST_VULKAN_WINDOW_ERROR,
+        GST_VULKAN_WINDOW_ERROR_RESOURCE_UNAVAILABLE,
+        "Failed to retrieve Wayland display (wrong type?)");
+    return FALSE;
+  }
+  display = GST_VULKAN_DISPLAY_WAYLAND (window->display);
+
+  if (!display->display) {
+    g_set_error (error, GST_VULKAN_WINDOW_ERROR,
+        GST_VULKAN_WINDOW_ERROR_RESOURCE_UNAVAILABLE,
+        "Failed to retrieve Wayland display");
+    return FALSE;
+  }
+
+  window_wl->queue = NULL;
+
+  if (!GST_VULKAN_WINDOW_CLASS (parent_class)->open (window, error))
+    return FALSE;
+
+  create_surfaces (window_wl);
+
+  gst_vulkan_display_wayland_roundtrip_async (display);
+
+  return TRUE;
+}
+
+static VkSurfaceKHR
+gst_vulkan_window_wayland_get_surface (GstVulkanWindow * window,
+    GError ** error)
+{
+  GstVulkanWindowWayland *window_wl = GST_VULKAN_WINDOW_WAYLAND (window);
+  VkWaylandSurfaceCreateInfoKHR info = { 0, };
+  VkSurfaceKHR ret;
+  VkResult err;
+
+  info.sType = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR;
+  info.pNext = NULL;
+  info.flags = 0;
+  info.display = GST_VULKAN_DISPLAY_WAYLAND_DISPLAY (window->display);
+  info.surface = window_wl->surface;
+
+  if (!window_wl->CreateWaylandSurface)
+    window_wl->CreateWaylandSurface =
+        gst_vulkan_instance_get_proc_address (window->display->instance,
+        "vkCreateWaylandSurfaceKHR");
+  if (!window_wl->CreateWaylandSurface) {
+    g_set_error_literal (error, GST_VULKAN_ERROR, VK_ERROR_FEATURE_NOT_PRESENT,
+        "Could not retrieve \"vkCreateWaylandSurfaceKHR\" function pointer");
+    return NULL;
+  }
+
+  err =
+      window_wl->CreateWaylandSurface (window->display->instance->instance,
+      &info, NULL, &ret);
+  if (gst_vulkan_error_to_g_error (err, error, "vkCreateWaylandSurfaceKHR") < 0)
+    return NULL;
+
+  return ret;
+}
+
+static gboolean
+gst_vulkan_window_wayland_get_presentation_support (GstVulkanWindow * window,
+    GstVulkanDevice * device, guint32 queue_family_idx)
+{
+  GstVulkanWindowWayland *window_wl = GST_VULKAN_WINDOW_WAYLAND (window);
+  VkPhysicalDevice gpu;
+
+  if (!window_wl->GetPhysicalDeviceWaylandPresentationSupport)
+    window_wl->GetPhysicalDeviceWaylandPresentationSupport =
+        gst_vulkan_instance_get_proc_address (window->display->instance,
+        "vkGetPhysicalDeviceWaylandPresentationSupportKHR");
+  if (!window_wl->GetPhysicalDeviceWaylandPresentationSupport) {
+    GST_WARNING_OBJECT (window, "Could not retrieve "
+        "\"vkGetPhysicalDeviceWaylandPresentationSupportKHR\" "
+        "function pointer");
+    return FALSE;
+  }
+
+  gpu = gst_vulkan_device_get_physical_device (device);
+  if (window_wl->GetPhysicalDeviceWaylandPresentationSupport (gpu,
+          queue_family_idx,
+          GST_VULKAN_DISPLAY_WAYLAND_DISPLAY (window->display)))
+    return TRUE;
+  return FALSE;
+}
diff --git a/ext/vulkan/wayland/vkwindow_wayland.h b/ext/vulkan/wayland/vkwindow_wayland.h
new file mode 100644
index 0000000..3d181f8
--- /dev/null
+++ b/ext/vulkan/wayland/vkwindow_wayland.h
@@ -0,0 +1,74 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_VK_WINDOW_WAYLAND_H__
+#define __GST_VK_WINDOW_WAYLAND_H__
+
+#include <wayland-client.h>
+#include <wayland-cursor.h>
+
+#include <vk.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_VULKAN_WINDOW_WAYLAND         (gst_vulkan_window_wayland_get_type())
+#define GST_VULKAN_WINDOW_WAYLAND(o)           (G_TYPE_CHECK_INSTANCE_CAST((o), GST_TYPE_VULKAN_WINDOW_WAYLAND, GstVulkanWindowWayland))
+#define GST_VULKAN_WINDOW_WAYLAND_CLASS(k)     (G_TYPE_CHECK_CLASS((k), GST_TYPE_VULKAN_WINDOW_WAYLAND, GstVulkanWindowWaylandClass))
+#define GST_IS_VULKAN_WINDOW_WAYLAND(o)        (G_TYPE_CHECK_INSTANCE_TYPE((o), GST_TYPE_VULKAN_WINDOW_WAYLAND))
+#define GST_IS_VULKAN_WINDOW_WAYLAND_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE((k), GST_TYPE_VULKAN_WINDOW_WAYLAND))
+#define GST_VULKAN_WINDOW_WAYLAND_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS((o), GST_TYPE_VULKAN_WINDOW_WAYLAND, GstVulkanWindowWaylandClass))
+
+typedef struct _GstVulkanWindowWayland        GstVulkanWindowWayland;
+typedef struct _GstVulkanWindowWaylandClass   GstVulkanWindowWaylandClass;
+
+struct _GstVulkanWindowWayland {
+  /*< private >*/
+  GstVulkanWindow parent;
+
+  PFN_vkCreateWaylandSurfaceKHR CreateWaylandSurface;
+  PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR GetPhysicalDeviceWaylandPresentationSupport;
+
+  struct wl_event_queue     *queue;
+  struct wl_surface         *surface;
+  struct wl_shell_surface   *shell_surface;
+  struct wl_callback        *callback;
+
+  int window_width, window_height;
+
+  GSource *wl_source;
+
+  gpointer _reserved[GST_PADDING];
+};
+
+struct _GstVulkanWindowWaylandClass {
+  /*< private >*/
+  GstVulkanWindowClass parent_class;
+
+  /*< private >*/
+  gpointer _reserved[GST_PADDING];
+};
+
+GType gst_vulkan_window_wayland_get_type     (void);
+
+GstVulkanWindowWayland * gst_vulkan_window_wayland_new  (GstVulkanDisplay * display);
+
+G_END_DECLS
+
+#endif /* __GST_GL_WINDOW_X11_H__ */
diff --git a/ext/vulkan/wayland/wayland_event_source.c b/ext/vulkan/wayland/wayland_event_source.c
new file mode 100644
index 0000000..e1ae1ef
--- /dev/null
+++ b/ext/vulkan/wayland/wayland_event_source.c
@@ -0,0 +1,205 @@
+/*
+ * GStreamer
+ * Copyright (C) 2010  Intel Corporation.
+ * Copyright (C) 2012 Matthew Waters <ystreet00@gmail.com>
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * Authors:
+ *  Matthew Allum
+ *  Robert Bragg
+ *  Kristian Høgsberg
+ */
+
+/* code originally from clutter's wayland backend found here
+ * http://git.gnome.org/browse/clutter/tree/clutter/wayland/clutter-event-wayland.c
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdint.h>
+#include <stdlib.h>
+#include <wayland-client.h>
+
+#include "wayland_event_source.h"
+
+static void
+sync_callback (void *data, struct wl_callback *callback, uint32_t serial)
+{
+  gboolean *done = data;
+
+  *done = TRUE;
+  wl_callback_destroy (callback);
+}
+
+static const struct wl_callback_listener sync_listener = {
+  sync_callback
+};
+
+/* only thread safe iff called on the same thread @queue is being dispatched on */
+gint
+gst_vulkan_wl_display_roundtrip_queue (struct wl_display *display,
+    struct wl_event_queue *queue)
+{
+  struct wl_callback *callback;
+  gboolean done = FALSE;
+  gint ret = 0;
+
+  if (queue) {
+    /* creating a wl_proxy and setting the queue is racy with the dispatching
+     * of the default queue */
+    while (wl_display_prepare_read_queue (display, queue) != 0) {
+      if ((ret = wl_display_dispatch_queue_pending (display, queue)) < 0)
+        return ret;
+    }
+  }
+  if (!(callback = wl_display_sync (display))) {
+    return -1;
+  }
+  wl_callback_add_listener (callback, &sync_listener, &done);
+  if (queue) {
+    wl_proxy_set_queue ((struct wl_proxy *) callback, queue);
+    wl_display_cancel_read (display);
+    while (!done && ret >= 0)
+      ret = wl_display_dispatch_queue (display, queue);
+  } else {
+    while (!done && ret >= 0)
+      ret = wl_display_dispatch (display);
+  }
+
+  if (ret == -1 && !done)
+    wl_callback_destroy (callback);
+
+  return ret;
+}
+
+typedef struct _WaylandEventSource
+{
+  GSource source;
+  GPollFD pfd;
+  uint32_t mask;
+  struct wl_display *display;
+  struct wl_event_queue *queue;
+  gboolean reading;
+} WaylandEventSource;
+
+static gboolean
+wayland_event_source_prepare (GSource * base, gint * timeout)
+{
+  WaylandEventSource *source = (WaylandEventSource *) base;
+
+  *timeout = -1;
+
+  /* we may be called multiple times for prepare */
+  if (source->reading)
+    wl_display_cancel_read (source->display);
+
+  if (source->queue) {
+    while (wl_display_prepare_read_queue (source->display, source->queue) != 0) {
+      if (wl_display_dispatch_queue_pending (source->display,
+              source->queue) < 0) {
+        g_critical ("Failed to dispatch pending events\n");
+      }
+    }
+  } else {
+    while (wl_display_prepare_read (source->display) != 0) {
+      if (wl_display_dispatch_pending (source->display) < 0) {
+        g_critical ("Failed to dispatch pending events\n");
+      }
+    }
+  }
+  source->reading = TRUE;
+
+  /* FIXME: this may return EAGAIN if the fd is full */
+  if (wl_display_flush (source->display) < 0)
+    g_critical ("Failed to flush Wayland connection\n");
+
+  return FALSE;
+}
+
+static gboolean
+wayland_event_source_check (GSource * base)
+{
+  WaylandEventSource *source = (WaylandEventSource *) base;
+  gboolean retval;
+
+  retval = source->pfd.revents;
+
+  if (source->pfd.revents & G_IO_IN) {
+    wl_display_read_events (source->display);
+  } else {
+    wl_display_cancel_read (source->display);
+  }
+  source->reading = FALSE;
+
+  return retval;
+}
+
+static gboolean
+wayland_event_source_dispatch (GSource * base,
+    GSourceFunc callback, gpointer data)
+{
+  WaylandEventSource *source = (WaylandEventSource *) base;
+
+  if (source->queue)
+    wl_display_dispatch_queue_pending (source->display, source->queue);
+  else
+    wl_display_dispatch_pending (source->display);
+  source->pfd.revents = 0;
+
+  if (callback)
+    callback (data);
+
+  return TRUE;
+}
+
+static void
+wayland_event_source_finalize (GSource * base)
+{
+  WaylandEventSource *source = (WaylandEventSource *) base;
+
+  if (source->reading) {
+    wl_display_cancel_read (source->display);
+  }
+  source->reading = FALSE;
+}
+
+static GSourceFuncs wayland_event_source_funcs = {
+  wayland_event_source_prepare,
+  wayland_event_source_check,
+  wayland_event_source_dispatch,
+  wayland_event_source_finalize
+};
+
+GSource *
+wayland_event_source_new (struct wl_display *display,
+    struct wl_event_queue *queue)
+{
+  WaylandEventSource *source;
+
+  source = (WaylandEventSource *)
+      g_source_new (&wayland_event_source_funcs, sizeof (WaylandEventSource));
+  source->display = display;
+  source->queue = queue;
+  source->pfd.fd = wl_display_get_fd (display);
+  source->pfd.events = G_IO_IN | G_IO_ERR;
+  g_source_add_poll (&source->source, &source->pfd);
+
+  return &source->source;
+}
diff --git a/ext/vulkan/wayland/wayland_event_source.h b/ext/vulkan/wayland/wayland_event_source.h
new file mode 100644
index 0000000..25ffe7b
--- /dev/null
+++ b/ext/vulkan/wayland/wayland_event_source.h
@@ -0,0 +1,34 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __WAYLAND_EVENT_SOURCE_H__
+#define __WAYLAND_EVENT_SOURCE_H__
+
+#include <glib-object.h>
+
+#include <wayland-client.h>
+
+GSource * wayland_event_source_new (struct wl_display *display,
+                                    struct wl_event_queue *queue);
+
+G_GNUC_INTERNAL gint      gst_vulkan_wl_display_roundtrip_queue (struct wl_display *display,
+                                             struct wl_event_queue *queue);
+
+#endif /* __WAYLAND_EVENT_SOURCE_H__ */
diff --git a/ext/vulkan/xcb/Makefile.in b/ext/vulkan/xcb/Makefile.in
index 672fed9..562e2ec 100644
--- a/ext/vulkan/xcb/Makefile.in
+++ b/ext/vulkan/xcb/Makefile.in
@@ -275,6 +275,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -296,6 +298,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -345,6 +349,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -490,6 +496,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -616,8 +624,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -660,8 +666,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/vulkan/xcb/vkwindow_xcb.c b/ext/vulkan/xcb/vkwindow_xcb.c
index 6369a1d..d08c0bf 100644
--- a/ext/vulkan/xcb/vkwindow_xcb.c
+++ b/ext/vulkan/xcb/vkwindow_xcb.c
@@ -206,6 +206,7 @@
 static VkSurfaceKHR
 gst_vulkan_window_xcb_get_surface (GstVulkanWindow * window, GError ** error)
 {
+  GstVulkanWindowXCB *window_xcb = GST_VULKAN_WINDOW_XCB (window);
   VkXcbSurfaceCreateInfoKHR info = { 0, };
   VkSurfaceKHR ret;
   VkResult err;
@@ -216,9 +217,19 @@
   info.connection = GST_VULKAN_DISPLAY_XCB_CONNECTION (window->display);
   info.window = GST_VULKAN_WINDOW_XCB (window)->win_id;
 
+  if (!window_xcb->CreateXcbSurface)
+    window_xcb->CreateXcbSurface =
+        gst_vulkan_instance_get_proc_address (window->display->instance,
+        "vkCreateXcbSurfaceKHR");
+  if (!window_xcb->CreateXcbSurface) {
+    g_set_error_literal (error, GST_VULKAN_ERROR, VK_ERROR_FEATURE_NOT_PRESENT,
+        "Could not retrieve \"vkCreateXcbSurfaceKHR\" function pointer");
+    return NULL;
+  }
+
   err =
-      vkCreateXcbSurfaceKHR (window->display->instance->instance, &info, NULL,
-      &ret);
+      window_xcb->CreateXcbSurface (window->display->instance->instance, &info,
+      NULL, &ret);
   if (gst_vulkan_error_to_g_error (err, error, "vkCreateXcbSurfaceKHR") < 0)
     return NULL;
 
@@ -229,14 +240,25 @@
 gst_vulkan_window_xcb_get_presentation_support (GstVulkanWindow * window,
     GstVulkanDevice * device, guint32 queue_family_idx)
 {
+  GstVulkanWindowXCB *window_xcb = GST_VULKAN_WINDOW_XCB (window);
   VkPhysicalDevice gpu;
   xcb_screen_t *screen;
 
   screen = GST_VULKAN_DISPLAY_XCB_SCREEN (window->display);
 
+  if (!window_xcb->GetPhysicalDeviceXcbPresentationSupport)
+    window_xcb->GetPhysicalDeviceXcbPresentationSupport =
+        gst_vulkan_instance_get_proc_address (window->display->instance,
+        "vkGetPhysicalDeviceXcbPresentationSupportKHR");
+  if (!window_xcb->GetPhysicalDeviceXcbPresentationSupport) {
+    GST_WARNING_OBJECT (window, "Could not retrieve "
+        "\"vkGetPhysicalDeviceXcbPresentationSupportKHR\" " "function pointer");
+    return FALSE;
+  }
+
   gpu = gst_vulkan_device_get_physical_device (device);
-  if (vkGetPhysicalDeviceXcbPresentationSupportKHR (gpu, queue_family_idx,
-          GST_VULKAN_DISPLAY_XCB_CONNECTION (window->display),
+  if (window_xcb->GetPhysicalDeviceXcbPresentationSupport (gpu,
+          queue_family_idx, GST_VULKAN_DISPLAY_XCB_CONNECTION (window->display),
           screen->root_visual))
     return TRUE;
   return FALSE;
diff --git a/ext/vulkan/xcb/vkwindow_xcb.h b/ext/vulkan/xcb/vkwindow_xcb.h
index 517a488..db012bb 100644
--- a/ext/vulkan/xcb/vkwindow_xcb.h
+++ b/ext/vulkan/xcb/vkwindow_xcb.h
@@ -53,6 +53,9 @@
 
   gint          visible :1;
 
+  PFN_vkCreateXcbSurfaceKHR CreateXcbSurface;
+  PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR GetPhysicalDeviceXcbPresentationSupport;
+
   /*< private >*/
   GstVulkanWindowXCBPrivate *priv;
   
diff --git a/ext/wayland/Makefile.am b/ext/wayland/Makefile.am
index c742bfc..a23d44d 100644
--- a/ext/wayland/Makefile.am
+++ b/ext/wayland/Makefile.am
@@ -1,13 +1,16 @@
 plugin_LTLIBRARIES = libgstwaylandsink.la
 
+BUILT_SOURCES = viewporter-protocol.c viewporter-client-protocol.h
+
 libgstwaylandsink_la_SOURCES =  \
 	gstwaylandsink.c \
 	wlshmallocator.c \
 	wlbuffer.c \
 	wldisplay.c \
 	wlwindow.c \
-	wlvideoformat.c \
-	scaler-protocol.c
+	wlvideoformat.c
+
+nodist_libgstwaylandsink_la_SOURCES = viewporter-protocol.c
 
 libgstwaylandsink_la_CFLAGS = $(GST_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
                                $(WAYLAND_CFLAGS) $(GST_PLUGINS_BAD_CFLAGS)
@@ -26,24 +29,22 @@
 	wlbuffer.h \
 	wldisplay.h \
 	wlwindow.h \
-	wlvideoformat.h \
-	scaler-client-protocol.h
+	wlvideoformat.h
 
-EXTRA_DIST = scaler.xml
-CLEANFILES = scaler-protocol.c scaler-client-protocol.h
+CLEANFILES = $(BUILT_SOURCES)
 
-%-protocol.c : %.xml
-	$(wayland_scanner) code < $< > $@
+.SECONDEXPANSION:
 
-%-client-protocol.h : %.xml
-	$(wayland_scanner) client-header < $< > $@
+define protostability
+$(if $(findstring unstable,$1),unstable,stable)
+endef
 
-gstwaylandsink.c: scaler-client-protocol.h
+define protoname
+$(shell echo $1 | sed 's/\([a-z\-]\+\)-[a-z]\+-v[0-9]\+/\1/')
+endef
 
-wlshmallocator.c: scaler-client-protocol.h
+%-protocol.c : $(WAYLAND_PROTOCOLS_DATADIR)/$$(call protostability,$$*)/$$(call protoname,$$*)/$$*.xml
+	$(AM_V_GEN)$(wayland_scanner) code < $< > $@
 
-wlbuffer.c: scaler-client-protocol.h
-
-wldisplay.c: scaler-client-protocol.h
-
-wlwindow.c: scaler-client-protocol.h
+%-client-protocol.h : $(WAYLAND_PROTOCOLS_DATADIR)/$$(call protostability,$$*)/$$(call protoname,$$*)/$$*.xml
+	$(AM_V_GEN)$(wayland_scanner) client-header < $< > $@
diff --git a/ext/wayland/Makefile.in b/ext/wayland/Makefile.in
index d5b31b9..0f61a1c 100644
--- a/ext/wayland/Makefile.in
+++ b/ext/wayland/Makefile.in
@@ -172,9 +172,11 @@
 	libgstwaylandsink_la-wlbuffer.lo \
 	libgstwaylandsink_la-wldisplay.lo \
 	libgstwaylandsink_la-wlwindow.lo \
-	libgstwaylandsink_la-wlvideoformat.lo \
-	libgstwaylandsink_la-scaler-protocol.lo
-libgstwaylandsink_la_OBJECTS = $(am_libgstwaylandsink_la_OBJECTS)
+	libgstwaylandsink_la-wlvideoformat.lo
+nodist_libgstwaylandsink_la_OBJECTS =  \
+	libgstwaylandsink_la-viewporter-protocol.lo
+libgstwaylandsink_la_OBJECTS = $(am_libgstwaylandsink_la_OBJECTS) \
+	$(nodist_libgstwaylandsink_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
@@ -217,7 +219,8 @@
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = $(libgstwaylandsink_la_SOURCES)
+SOURCES = $(libgstwaylandsink_la_SOURCES) \
+	$(nodist_libgstwaylandsink_la_SOURCES)
 DIST_SOURCES = $(libgstwaylandsink_la_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
@@ -310,6 +313,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -331,6 +336,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -380,6 +387,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -525,6 +534,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -651,8 +662,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -695,8 +704,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -786,15 +800,16 @@
 top_srcdir = @top_srcdir@
 wayland_scanner = @wayland_scanner@
 plugin_LTLIBRARIES = libgstwaylandsink.la
+BUILT_SOURCES = viewporter-protocol.c viewporter-client-protocol.h
 libgstwaylandsink_la_SOURCES = \
 	gstwaylandsink.c \
 	wlshmallocator.c \
 	wlbuffer.c \
 	wldisplay.c \
 	wlwindow.c \
-	wlvideoformat.c \
-	scaler-protocol.c
+	wlvideoformat.c
 
+nodist_libgstwaylandsink_la_SOURCES = viewporter-protocol.c
 libgstwaylandsink_la_CFLAGS = $(GST_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
                                $(WAYLAND_CFLAGS) $(GST_PLUGINS_BAD_CFLAGS)
 
@@ -813,12 +828,11 @@
 	wlbuffer.h \
 	wldisplay.h \
 	wlwindow.h \
-	wlvideoformat.h \
-	scaler-client-protocol.h
+	wlvideoformat.h
 
-EXTRA_DIST = scaler.xml
-CLEANFILES = scaler-protocol.c scaler-client-protocol.h
-all: all-am
+CLEANFILES = $(BUILT_SOURCES)
+all: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) all-am
 
 .SUFFIXES:
 .SUFFIXES: .c .lo .o .obj
@@ -897,7 +911,7 @@
 	-rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstwaylandsink_la-gstwaylandsink.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstwaylandsink_la-scaler-protocol.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstwaylandsink_la-viewporter-protocol.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstwaylandsink_la-wlbuffer.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstwaylandsink_la-wldisplay.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstwaylandsink_la-wlshmallocator.Plo@am__quote@
@@ -970,12 +984,12 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstwaylandsink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstwaylandsink_la_CFLAGS) $(CFLAGS) -c -o libgstwaylandsink_la-wlvideoformat.lo `test -f 'wlvideoformat.c' || echo '$(srcdir)/'`wlvideoformat.c
 
-libgstwaylandsink_la-scaler-protocol.lo: scaler-protocol.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstwaylandsink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstwaylandsink_la_CFLAGS) $(CFLAGS) -MT libgstwaylandsink_la-scaler-protocol.lo -MD -MP -MF $(DEPDIR)/libgstwaylandsink_la-scaler-protocol.Tpo -c -o libgstwaylandsink_la-scaler-protocol.lo `test -f 'scaler-protocol.c' || echo '$(srcdir)/'`scaler-protocol.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstwaylandsink_la-scaler-protocol.Tpo $(DEPDIR)/libgstwaylandsink_la-scaler-protocol.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='scaler-protocol.c' object='libgstwaylandsink_la-scaler-protocol.lo' libtool=yes @AMDEPBACKSLASH@
+libgstwaylandsink_la-viewporter-protocol.lo: viewporter-protocol.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstwaylandsink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstwaylandsink_la_CFLAGS) $(CFLAGS) -MT libgstwaylandsink_la-viewporter-protocol.lo -MD -MP -MF $(DEPDIR)/libgstwaylandsink_la-viewporter-protocol.Tpo -c -o libgstwaylandsink_la-viewporter-protocol.lo `test -f 'viewporter-protocol.c' || echo '$(srcdir)/'`viewporter-protocol.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstwaylandsink_la-viewporter-protocol.Tpo $(DEPDIR)/libgstwaylandsink_la-viewporter-protocol.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='viewporter-protocol.c' object='libgstwaylandsink_la-viewporter-protocol.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstwaylandsink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstwaylandsink_la_CFLAGS) $(CFLAGS) -c -o libgstwaylandsink_la-scaler-protocol.lo `test -f 'scaler-protocol.c' || echo '$(srcdir)/'`scaler-protocol.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstwaylandsink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstwaylandsink_la_CFLAGS) $(CFLAGS) -c -o libgstwaylandsink_la-viewporter-protocol.lo `test -f 'viewporter-protocol.c' || echo '$(srcdir)/'`viewporter-protocol.c
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -1066,13 +1080,15 @@
 	  fi; \
 	done
 check-am: all-am
-check: check-am
+check: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) check-am
 all-am: Makefile $(LTLIBRARIES) $(HEADERS)
 installdirs:
 	for dir in "$(DESTDIR)$(plugindir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
-install: install-am
+install: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) install-am
 install-exec: install-exec-am
 install-data: install-data-am
 uninstall: uninstall-am
@@ -1103,6 +1119,7 @@
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
 	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
 clean: clean-am
 
 clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
@@ -1174,7 +1191,7 @@
 
 uninstall-am: uninstall-pluginLTLIBRARIES
 
-.MAKE: install-am install-strip
+.MAKE: all check install install-am install-strip
 
 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
 	clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \
@@ -1194,21 +1211,21 @@
 .PRECIOUS: Makefile
 
 
-%-protocol.c : %.xml
-	$(wayland_scanner) code < $< > $@
+.SECONDEXPANSION:
 
-%-client-protocol.h : %.xml
-	$(wayland_scanner) client-header < $< > $@
+define protostability
+$(if $(findstring unstable,$1),unstable,stable)
+endef
 
-gstwaylandsink.c: scaler-client-protocol.h
+define protoname
+$(shell echo $1 | sed 's/\([a-z\-]\+\)-[a-z]\+-v[0-9]\+/\1/')
+endef
 
-wlshmallocator.c: scaler-client-protocol.h
+%-protocol.c : $(WAYLAND_PROTOCOLS_DATADIR)/$$(call protostability,$$*)/$$(call protoname,$$*)/$$*.xml
+	$(AM_V_GEN)$(wayland_scanner) code < $< > $@
 
-wlbuffer.c: scaler-client-protocol.h
-
-wldisplay.c: scaler-client-protocol.h
-
-wlwindow.c: scaler-client-protocol.h
+%-client-protocol.h : $(WAYLAND_PROTOCOLS_DATADIR)/$$(call protostability,$$*)/$$(call protoname,$$*)/$$*.xml
+	$(AM_V_GEN)$(wayland_scanner) client-header < $< > $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/ext/wayland/gstwaylandsink.c b/ext/wayland/gstwaylandsink.c
index f4f34a8..6e7510b 100644
--- a/ext/wayland/gstwaylandsink.c
+++ b/ext/wayland/gstwaylandsink.c
@@ -89,11 +89,9 @@
 static GstCaps *gst_wayland_sink_get_caps (GstBaseSink * bsink,
     GstCaps * filter);
 static gboolean gst_wayland_sink_set_caps (GstBaseSink * bsink, GstCaps * caps);
-static gboolean gst_wayland_sink_preroll (GstBaseSink * bsink,
-    GstBuffer * buffer);
 static gboolean
 gst_wayland_sink_propose_allocation (GstBaseSink * bsink, GstQuery * query);
-static gboolean gst_wayland_sink_render (GstBaseSink * bsink,
+static gboolean gst_wayland_sink_show_frame (GstVideoSink * bsink,
     GstBuffer * buffer);
 
 /* VideoOverlay interface */
@@ -124,17 +122,18 @@
   GObjectClass *gobject_class;
   GstElementClass *gstelement_class;
   GstBaseSinkClass *gstbasesink_class;
+  GstVideoSinkClass *gstvideosink_class;
 
   gobject_class = (GObjectClass *) klass;
   gstelement_class = (GstElementClass *) klass;
   gstbasesink_class = (GstBaseSinkClass *) klass;
+  gstvideosink_class = (GstVideoSinkClass *) klass;
 
   gobject_class->set_property = gst_wayland_sink_set_property;
   gobject_class->get_property = gst_wayland_sink_get_property;
   gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_wayland_sink_finalize);
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_template);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "wayland video sink", "Sink/Video",
@@ -149,10 +148,11 @@
 
   gstbasesink_class->get_caps = GST_DEBUG_FUNCPTR (gst_wayland_sink_get_caps);
   gstbasesink_class->set_caps = GST_DEBUG_FUNCPTR (gst_wayland_sink_set_caps);
-  gstbasesink_class->preroll = GST_DEBUG_FUNCPTR (gst_wayland_sink_preroll);
   gstbasesink_class->propose_allocation =
       GST_DEBUG_FUNCPTR (gst_wayland_sink_propose_allocation);
-  gstbasesink_class->render = GST_DEBUG_FUNCPTR (gst_wayland_sink_render);
+
+  gstvideosink_class->show_frame =
+      GST_DEBUG_FUNCPTR (gst_wayland_sink_show_frame);
 
   g_object_class_install_property (gobject_class, PROP_DISPLAY,
       g_param_spec_string ("display", "Wayland Display name", "Wayland "
@@ -397,17 +397,18 @@
     enum wl_shm_format fmt;
 
     g_value_init (&list, GST_TYPE_LIST);
-    g_value_init (&value, G_TYPE_STRING);
 
     formats = sink->display->shm_formats;
     for (i = 0; i < formats->len; i++) {
+      g_value_init (&value, G_TYPE_STRING);
       fmt = g_array_index (formats, uint32_t, i);
-      g_value_set_string (&value, gst_wl_shm_format_to_string (fmt));
-      gst_value_list_append_value (&list, &value);
+      g_value_set_static_string (&value, gst_wl_shm_format_to_string (fmt));
+      gst_value_list_append_and_take_value (&list, &value);
     }
 
     caps = gst_caps_make_writable (caps);
-    gst_structure_set_value (gst_caps_get_structure (caps, 0), "format", &list);
+    gst_structure_take_value (gst_caps_get_structure (caps, 0), "format",
+        &list);
 
     GST_DEBUG_OBJECT (sink, "display caps: %" GST_PTR_FORMAT, caps);
   }
@@ -426,6 +427,28 @@
   return caps;
 }
 
+static GstBufferPool *
+gst_wayland_create_pool (GstWaylandSink * sink, GstCaps * caps)
+{
+  GstBufferPool *pool = NULL;
+  GstStructure *structure;
+  gsize size = sink->video_info.size;
+
+  pool = gst_video_buffer_pool_new ();
+
+  structure = gst_buffer_pool_get_config (pool);
+  gst_buffer_pool_config_set_params (structure, caps, size, 2, 0);
+  gst_buffer_pool_config_set_allocator (structure, gst_wl_shm_allocator_get (),
+      NULL);
+
+  if (!gst_buffer_pool_set_config (pool, structure)) {
+    g_object_unref (pool);
+    pool = NULL;
+  }
+
+  return pool;
+}
+
 static gboolean
 gst_wayland_sink_set_caps (GstBaseSink * bsink, GstCaps * caps)
 {
@@ -435,7 +458,6 @@
   enum wl_shm_format format;
   GArray *formats;
   gint i;
-  GstStructure *structure;
 
   sink = GST_WAYLAND_SINK (bsink);
 
@@ -459,22 +481,16 @@
   if (i >= formats->len)
     goto unsupported_format;
 
-  /* create a new pool for the new configuration */
-  newpool = gst_video_buffer_pool_new ();
-  if (!newpool)
-    goto pool_failed;
-
-  structure = gst_buffer_pool_get_config (newpool);
-  gst_buffer_pool_config_set_params (structure, caps, info.size, 2, 0);
-  gst_buffer_pool_config_set_allocator (structure, gst_wl_shm_allocator_get (),
-      NULL);
-  if (!gst_buffer_pool_set_config (newpool, structure))
-    goto config_failed;
-
   /* store the video info */
   sink->video_info = info;
   sink->video_info_changed = TRUE;
 
+  /* create a new pool for the new configuration */
+  newpool = gst_wayland_create_pool (sink, caps);
+  if (!newpool)
+    goto pool_failed;
+
+
   gst_object_replace ((GstObject **) & sink->pool, (GstObject *) newpool);
   gst_object_unref (newpool);
 
@@ -482,25 +498,19 @@
 
 invalid_format:
   {
-    GST_DEBUG_OBJECT (sink,
+    GST_ERROR_OBJECT (sink,
         "Could not locate image format from caps %" GST_PTR_FORMAT, caps);
     return FALSE;
   }
 unsupported_format:
   {
-    GST_DEBUG_OBJECT (sink, "Format %s is not available on the display",
+    GST_ERROR_OBJECT (sink, "Format %s is not available on the display",
         gst_wl_shm_format_to_string (format));
     return FALSE;
   }
 pool_failed:
   {
-    GST_DEBUG_OBJECT (sink, "Failed to create new pool");
-    return FALSE;
-  }
-config_failed:
-  {
-    GST_DEBUG_OBJECT (bsink, "failed setting config");
-    gst_object_unref (newpool);
+    GST_ERROR_OBJECT (sink, "Failed to create new pool");
     return FALSE;
   }
 }
@@ -509,29 +519,26 @@
 gst_wayland_sink_propose_allocation (GstBaseSink * bsink, GstQuery * query)
 {
   GstWaylandSink *sink = GST_WAYLAND_SINK (bsink);
-  GstStructure *config;
-  guint size, min_bufs, max_bufs;
+  GstCaps *caps;
+  GstBufferPool *pool = NULL;
+  gboolean need_pool;
 
-  config = gst_buffer_pool_get_config (sink->pool);
-  gst_buffer_pool_config_get_params (config, NULL, &size, &min_bufs, &max_bufs);
+  gst_query_parse_allocation (query, &caps, &need_pool);
 
-  /* we do have a pool for sure (created in set_caps),
-   * so let's propose it anyway, but also propose the allocator on its own */
-  gst_query_add_allocation_pool (query, sink->pool, size, min_bufs, max_bufs);
+  if (need_pool)
+    pool = gst_wayland_create_pool (sink, caps);
+
+  if (pool) {
+    gst_query_add_allocation_pool (query, pool, sink->video_info.size, 2, 0);
+    g_object_unref (pool);
+  }
+
   gst_query_add_allocation_param (query, gst_wl_shm_allocator_get (), NULL);
-
-  gst_structure_free (config);
+  gst_query_add_allocation_meta (query, GST_VIDEO_META_API_TYPE, NULL);
 
   return TRUE;
 }
 
-static GstFlowReturn
-gst_wayland_sink_preroll (GstBaseSink * bsink, GstBuffer * buffer)
-{
-  GST_DEBUG_OBJECT (bsink, "preroll buffer %p", buffer);
-  return gst_wayland_sink_render (bsink, buffer);
-}
-
 static void
 frame_redraw_callback (void *data, struct wl_callback *callback, uint32_t time)
 {
@@ -539,7 +546,10 @@
 
   GST_LOG ("frame_redraw_cb");
 
-  g_atomic_int_set (&sink->redraw_pending, FALSE);
+  g_mutex_lock (&sink->render_lock);
+  sink->redraw_pending = FALSE;
+  g_mutex_unlock (&sink->render_lock);
+
   wl_callback_destroy (callback);
 }
 
@@ -559,7 +569,7 @@
   wlbuffer = gst_buffer_get_wl_buffer (sink->last_buffer);
   surface = gst_wl_window_get_wl_surface (sink->window);
 
-  g_atomic_int_set (&sink->redraw_pending, TRUE);
+  sink->redraw_pending = TRUE;
   callback = wl_surface_frame (surface);
   wl_callback_add_listener (callback, &frame_callback_listener, sink);
 
@@ -571,9 +581,9 @@
 }
 
 static GstFlowReturn
-gst_wayland_sink_render (GstBaseSink * bsink, GstBuffer * buffer)
+gst_wayland_sink_show_frame (GstVideoSink * vsink, GstBuffer * buffer)
 {
-  GstWaylandSink *sink = GST_WAYLAND_SINK (bsink);
+  GstWaylandSink *sink = GST_WAYLAND_SINK (vsink);
   GstBuffer *to_render;
   GstWlBuffer *wlbuffer;
   GstFlowReturn ret = GST_FLOW_OK;
@@ -591,13 +601,13 @@
 
     if (!sink->window) {
       /* if we were not provided a window, create one ourselves */
-      sink->window =
-          gst_wl_window_new_toplevel (sink->display, &sink->video_info);
+      sink->window = gst_wl_window_new_toplevel (sink->display,
+          &sink->video_info, &sink->render_lock);
     }
   }
 
   /* drop buffers until we get a frame callback */
-  if (g_atomic_int_get (&sink->redraw_pending) == TRUE)
+  if (sink->redraw_pending)
     goto done;
 
   /* make sure that the application has called set_render_rectangle() */
@@ -611,12 +621,25 @@
         "writing directly", buffer);
     to_render = buffer;
   } else {
+    GstVideoMeta *vmeta;
     GstMemory *mem;
     struct wl_buffer *wbuf = NULL;
 
+    /* update video info from video meta */
+    vmeta = gst_buffer_get_video_meta (buffer);
+    if (vmeta) {
+      gint i;
+
+      for (i = 0; i < vmeta->n_planes; i++) {
+        sink->video_info.offset[i] = vmeta->offset[i];
+        sink->video_info.stride[i] = vmeta->stride[i];
+      }
+    }
+
     GST_LOG_OBJECT (sink, "buffer %p does not have a wl_buffer from our "
         "display, creating it", buffer);
 
+    /* FIXME check all memory when introducing DMA-Buf */
     mem = gst_buffer_peek_memory (buffer, 0);
 
     if (gst_is_wl_shm_memory (mem)) {
@@ -628,7 +651,9 @@
       gst_buffer_add_wl_buffer (buffer, wbuf, sink->display);
       to_render = buffer;
     } else {
-      GstMapInfo src;
+      GstVideoFrame src, dst;
+      GstVideoInfo src_info = sink->video_info;
+
       /* we don't know how to create a wl_buffer directly from the provided
        * memory, so we have to copy the data to a memory that we know how
        * to handle... */
@@ -638,9 +663,20 @@
 
       /* sink->pool always exists (created in set_caps), but it may not
        * be active if upstream is not using it */
-      if (!gst_buffer_pool_is_active (sink->pool) &&
-          !gst_buffer_pool_set_active (sink->pool, TRUE))
-        goto activate_failed;
+      if (!gst_buffer_pool_is_active (sink->pool)) {
+        GstStructure *config;
+        GstCaps *caps;
+        guint size = sink->video_info.size;
+
+        config = gst_buffer_pool_get_config (sink->pool);
+        gst_buffer_pool_config_get_params (config, &caps, &size, NULL, NULL);
+        gst_buffer_pool_config_set_params (config, caps, size, 0, 0);
+
+        /* This is a video pool, it should not fail with basic setings */
+        if (!gst_buffer_pool_set_config (sink->pool, config) ||
+            !gst_buffer_pool_set_active (sink->pool, TRUE))
+          goto activate_failed;
+      }
 
       ret = gst_buffer_pool_acquire_buffer (sink->pool, &to_render, NULL);
       if (ret != GST_FLOW_OK)
@@ -659,9 +695,19 @@
         gst_buffer_add_wl_buffer (to_render, wbuf, sink->display);
       }
 
-      gst_buffer_map (buffer, &src, GST_MAP_READ);
-      gst_buffer_fill (to_render, 0, src.data, src.size);
-      gst_buffer_unmap (buffer, &src);
+      if (!gst_video_frame_map (&dst, &sink->video_info, to_render,
+              GST_MAP_WRITE))
+        goto dst_map_failed;
+
+      if (!gst_video_frame_map (&src, &src_info, buffer, GST_MAP_READ)) {
+        gst_video_frame_unmap (&dst);
+        goto src_map_failed;
+      }
+
+      gst_video_frame_copy (&dst, &src);
+
+      gst_video_frame_unmap (&src);
+      gst_video_frame_unmap (&dst);
     }
   }
 
@@ -703,6 +749,20 @@
     ret = GST_FLOW_ERROR;
     goto done;
   }
+src_map_failed:
+  {
+    GST_ELEMENT_ERROR (sink, RESOURCE, READ,
+        ("Video memory can not be read from userspace."), (NULL));
+    ret = GST_FLOW_ERROR;
+    goto done;
+  }
+dst_map_failed:
+  {
+    GST_ELEMENT_ERROR (sink, RESOURCE, WRITE,
+        ("Video memory can not be written from userspace."), (NULL));
+    ret = GST_FLOW_ERROR;
+    goto done;
+  }
 done:
   {
     g_mutex_unlock (&sink->render_lock);
@@ -748,7 +808,8 @@
                 "an externally-supplied display handle. Consider providing a "
                 "display handle from your application with GstContext"));
       } else {
-        sink->window = gst_wl_window_new_in_surface (sink->display, surface);
+        sink->window = gst_wl_window_new_in_surface (sink->display, surface,
+            &sink->render_lock);
       }
     } else {
       GST_ERROR_OBJECT (sink, "Failed to find display handle, "
@@ -792,7 +853,7 @@
   GST_DEBUG_OBJECT (sink, "expose");
 
   g_mutex_lock (&sink->render_lock);
-  if (sink->last_buffer && g_atomic_int_get (&sink->redraw_pending) == FALSE) {
+  if (sink->last_buffer && !sink->redraw_pending) {
     GST_DEBUG_OBJECT (sink, "redrawing last buffer");
     render_last_buffer (sink);
   }
diff --git a/ext/wayland/scaler-client-protocol.h b/ext/wayland/scaler-client-protocol.h
deleted file mode 100644
index 5c11b0f..0000000
--- a/ext/wayland/scaler-client-protocol.h
+++ /dev/null
@@ -1,420 +0,0 @@
-/* Generated by wayland-scanner 1.11.0 */
-
-#ifndef SCALER_CLIENT_PROTOCOL_H
-#define SCALER_CLIENT_PROTOCOL_H
-
-#include <stdint.h>
-#include <stddef.h>
-#include "wayland-client.h"
-
-#ifdef  __cplusplus
-extern "C" {
-#endif
-
-/**
- * @page page_scaler The scaler protocol
- * @section page_ifaces_scaler Interfaces
- * - @subpage page_iface_wl_scaler - surface cropping and scaling
- * - @subpage page_iface_wl_viewport - crop and scale interface to a wl_surface
- * @section page_copyright_scaler Copyright
- * <pre>
- *
- * Copyright © 2013-2014 Collabora, Ltd.
- *
- * Permission to use, copy, modify, distribute, and sell this
- * software and its documentation for any purpose is hereby granted
- * without fee, provided that the above copyright notice appear in
- * all copies and that both that copyright notice and this permission
- * notice appear in supporting documentation, and that the name of
- * the copyright holders not be used in advertising or publicity
- * pertaining to distribution of the software without specific,
- * written prior permission.  The copyright holders make no
- * representations about the suitability of this software for any
- * purpose.  It is provided "as is" without express or implied
- * warranty.
- *
- * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
- * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
- * THIS SOFTWARE.
- * </pre>
- */
-struct wl_scaler;
-struct wl_surface;
-struct wl_viewport;
-
-/**
- * @page page_iface_wl_scaler wl_scaler
- * @section page_iface_wl_scaler_desc Description
- *
- * The global interface exposing surface cropping and scaling
- * capabilities is used to instantiate an interface extension for a
- * wl_surface object. This extended interface will then allow
- * cropping and scaling the surface contents, effectively
- * disconnecting the direct relationship between the buffer and the
- * surface size.
- * @section page_iface_wl_scaler_api API
- * See @ref iface_wl_scaler.
- */
-/**
- * @defgroup iface_wl_scaler The wl_scaler interface
- *
- * The global interface exposing surface cropping and scaling
- * capabilities is used to instantiate an interface extension for a
- * wl_surface object. This extended interface will then allow
- * cropping and scaling the surface contents, effectively
- * disconnecting the direct relationship between the buffer and the
- * surface size.
- */
-extern const struct wl_interface wl_scaler_interface;
-/**
- * @page page_iface_wl_viewport wl_viewport
- * @section page_iface_wl_viewport_desc Description
- *
- * An additional interface to a wl_surface object, which allows the
- * client to specify the cropping and scaling of the surface
- * contents.
- *
- * This interface allows to define the source rectangle (src_x,
- * src_y, src_width, src_height) from where to take the wl_buffer
- * contents, and scale that to destination size (dst_width,
- * dst_height). This state is double-buffered, and is applied on the
- * next wl_surface.commit.
- *
- * The two parts of crop and scale state are independent: the source
- * rectangle, and the destination size. Initially both are unset, that
- * is, no scaling is applied. The whole of the current wl_buffer is
- * used as the source, and the surface size is as defined in
- * wl_surface.attach.
- *
- * If the destination size is set, it causes the surface size to become
- * dst_width, dst_height. The source (rectangle) is scaled to exactly
- * this size. This overrides whatever the attached wl_buffer size is,
- * unless the wl_buffer is NULL. If the wl_buffer is NULL, the surface
- * has no content and therefore no size. Otherwise, the size is always
- * at least 1x1 in surface coordinates.
- *
- * If the source rectangle is set, it defines what area of the
- * wl_buffer is taken as the source. If the source rectangle is set and
- * the destination size is not set, the surface size becomes the source
- * rectangle size rounded up to the nearest integer. If the source size
- * is already exactly integers, this results in cropping without scaling.
- *
- * The coordinate transformations from buffer pixel coordinates up to
- * the surface-local coordinates happen in the following order:
- * 1. buffer_transform (wl_surface.set_buffer_transform)
- * 2. buffer_scale (wl_surface.set_buffer_scale)
- * 3. crop and scale (wl_viewport.set*)
- * This means, that the source rectangle coordinates of crop and scale
- * are given in the coordinates after the buffer transform and scale,
- * i.e. in the coordinates that would be the surface-local coordinates
- * if the crop and scale was not applied.
- *
- * If the source rectangle is partially or completely outside of the
- * wl_buffer, then the surface contents are undefined (not void), and
- * the surface size is still dst_width, dst_height.
- *
- * The x, y arguments of wl_surface.attach are applied as normal to
- * the surface. They indicate how many pixels to remove from the
- * surface size from the left and the top. In other words, they are
- * still in the surface-local coordinate system, just like dst_width
- * and dst_height are.
- *
- * If the wl_surface associated with the wl_viewport is destroyed,
- * the wl_viewport object becomes inert.
- *
- * If the wl_viewport object is destroyed, the crop and scale
- * state is removed from the wl_surface. The change will be applied
- * on the next wl_surface.commit.
- * @section page_iface_wl_viewport_api API
- * See @ref iface_wl_viewport.
- */
-/**
- * @defgroup iface_wl_viewport The wl_viewport interface
- *
- * An additional interface to a wl_surface object, which allows the
- * client to specify the cropping and scaling of the surface
- * contents.
- *
- * This interface allows to define the source rectangle (src_x,
- * src_y, src_width, src_height) from where to take the wl_buffer
- * contents, and scale that to destination size (dst_width,
- * dst_height). This state is double-buffered, and is applied on the
- * next wl_surface.commit.
- *
- * The two parts of crop and scale state are independent: the source
- * rectangle, and the destination size. Initially both are unset, that
- * is, no scaling is applied. The whole of the current wl_buffer is
- * used as the source, and the surface size is as defined in
- * wl_surface.attach.
- *
- * If the destination size is set, it causes the surface size to become
- * dst_width, dst_height. The source (rectangle) is scaled to exactly
- * this size. This overrides whatever the attached wl_buffer size is,
- * unless the wl_buffer is NULL. If the wl_buffer is NULL, the surface
- * has no content and therefore no size. Otherwise, the size is always
- * at least 1x1 in surface coordinates.
- *
- * If the source rectangle is set, it defines what area of the
- * wl_buffer is taken as the source. If the source rectangle is set and
- * the destination size is not set, the surface size becomes the source
- * rectangle size rounded up to the nearest integer. If the source size
- * is already exactly integers, this results in cropping without scaling.
- *
- * The coordinate transformations from buffer pixel coordinates up to
- * the surface-local coordinates happen in the following order:
- * 1. buffer_transform (wl_surface.set_buffer_transform)
- * 2. buffer_scale (wl_surface.set_buffer_scale)
- * 3. crop and scale (wl_viewport.set*)
- * This means, that the source rectangle coordinates of crop and scale
- * are given in the coordinates after the buffer transform and scale,
- * i.e. in the coordinates that would be the surface-local coordinates
- * if the crop and scale was not applied.
- *
- * If the source rectangle is partially or completely outside of the
- * wl_buffer, then the surface contents are undefined (not void), and
- * the surface size is still dst_width, dst_height.
- *
- * The x, y arguments of wl_surface.attach are applied as normal to
- * the surface. They indicate how many pixels to remove from the
- * surface size from the left and the top. In other words, they are
- * still in the surface-local coordinate system, just like dst_width
- * and dst_height are.
- *
- * If the wl_surface associated with the wl_viewport is destroyed,
- * the wl_viewport object becomes inert.
- *
- * If the wl_viewport object is destroyed, the crop and scale
- * state is removed from the wl_surface. The change will be applied
- * on the next wl_surface.commit.
- */
-extern const struct wl_interface wl_viewport_interface;
-
-#ifndef WL_SCALER_ERROR_ENUM
-#define WL_SCALER_ERROR_ENUM
-enum wl_scaler_error {
-	/**
-	 * the surface already has a viewport object associated
-	 */
-	WL_SCALER_ERROR_VIEWPORT_EXISTS = 0,
-};
-#endif /* WL_SCALER_ERROR_ENUM */
-
-#define WL_SCALER_DESTROY	0
-#define WL_SCALER_GET_VIEWPORT	1
-
-/**
- * @ingroup iface_wl_scaler
- */
-#define WL_SCALER_DESTROY_SINCE_VERSION	1
-/**
- * @ingroup iface_wl_scaler
- */
-#define WL_SCALER_GET_VIEWPORT_SINCE_VERSION	1
-
-/** @ingroup iface_wl_scaler */
-static inline void
-wl_scaler_set_user_data(struct wl_scaler *wl_scaler, void *user_data)
-{
-	wl_proxy_set_user_data((struct wl_proxy *) wl_scaler, user_data);
-}
-
-/** @ingroup iface_wl_scaler */
-static inline void *
-wl_scaler_get_user_data(struct wl_scaler *wl_scaler)
-{
-	return wl_proxy_get_user_data((struct wl_proxy *) wl_scaler);
-}
-
-static inline uint32_t
-wl_scaler_get_version(struct wl_scaler *wl_scaler)
-{
-	return wl_proxy_get_version((struct wl_proxy *) wl_scaler);
-}
-
-/**
- * @ingroup iface_wl_scaler
- *
- * Informs the server that the client will not be using this
- * protocol object anymore. This does not affect any other objects,
- * wl_viewport objects included.
- */
-static inline void
-wl_scaler_destroy(struct wl_scaler *wl_scaler)
-{
-	wl_proxy_marshal((struct wl_proxy *) wl_scaler,
-			 WL_SCALER_DESTROY);
-
-	wl_proxy_destroy((struct wl_proxy *) wl_scaler);
-}
-
-/**
- * @ingroup iface_wl_scaler
- *
- * Instantiate an interface extension for the given wl_surface to
- * crop and scale its content. If the given wl_surface already has
- * a wl_viewport object associated, the viewport_exists
- * protocol error is raised.
- */
-static inline struct wl_viewport *
-wl_scaler_get_viewport(struct wl_scaler *wl_scaler, struct wl_surface *surface)
-{
-	struct wl_proxy *id;
-
-	id = wl_proxy_marshal_constructor((struct wl_proxy *) wl_scaler,
-			 WL_SCALER_GET_VIEWPORT, &wl_viewport_interface, NULL, surface);
-
-	return (struct wl_viewport *) id;
-}
-
-#ifndef WL_VIEWPORT_ERROR_ENUM
-#define WL_VIEWPORT_ERROR_ENUM
-enum wl_viewport_error {
-	/**
-	 * negative or zero values in width or height
-	 */
-	WL_VIEWPORT_ERROR_BAD_VALUE = 0,
-};
-#endif /* WL_VIEWPORT_ERROR_ENUM */
-
-#define WL_VIEWPORT_DESTROY	0
-#define WL_VIEWPORT_SET	1
-#define WL_VIEWPORT_SET_SOURCE	2
-#define WL_VIEWPORT_SET_DESTINATION	3
-
-/**
- * @ingroup iface_wl_viewport
- */
-#define WL_VIEWPORT_DESTROY_SINCE_VERSION	1
-/**
- * @ingroup iface_wl_viewport
- */
-#define WL_VIEWPORT_SET_SINCE_VERSION	1
-/**
- * @ingroup iface_wl_viewport
- */
-#define WL_VIEWPORT_SET_SOURCE_SINCE_VERSION	2
-/**
- * @ingroup iface_wl_viewport
- */
-#define WL_VIEWPORT_SET_DESTINATION_SINCE_VERSION	2
-
-/** @ingroup iface_wl_viewport */
-static inline void
-wl_viewport_set_user_data(struct wl_viewport *wl_viewport, void *user_data)
-{
-	wl_proxy_set_user_data((struct wl_proxy *) wl_viewport, user_data);
-}
-
-/** @ingroup iface_wl_viewport */
-static inline void *
-wl_viewport_get_user_data(struct wl_viewport *wl_viewport)
-{
-	return wl_proxy_get_user_data((struct wl_proxy *) wl_viewport);
-}
-
-static inline uint32_t
-wl_viewport_get_version(struct wl_viewport *wl_viewport)
-{
-	return wl_proxy_get_version((struct wl_proxy *) wl_viewport);
-}
-
-/**
- * @ingroup iface_wl_viewport
- *
- * The associated wl_surface's crop and scale state is removed.
- * The change is applied on the next wl_surface.commit.
- */
-static inline void
-wl_viewport_destroy(struct wl_viewport *wl_viewport)
-{
-	wl_proxy_marshal((struct wl_proxy *) wl_viewport,
-			 WL_VIEWPORT_DESTROY);
-
-	wl_proxy_destroy((struct wl_proxy *) wl_viewport);
-}
-
-/**
- * @ingroup iface_wl_viewport
- *
- * Set both source rectangle and destination size of the associated
- * wl_surface. See wl_viewport for the description, and relation to
- * the wl_buffer size.
- *
- * The bad_value protocol error is raised if src_width or
- * src_height is negative, or if dst_width or dst_height is not
- * positive.
- *
- * The crop and scale state is double-buffered state, and will be
- * applied on the next wl_surface.commit.
- *
- * Arguments dst_x and dst_y do not exist here, use the x and y
- * arguments to wl_surface.attach. The x, y, dst_width, and dst_height
- * define the surface-local coordinate system irrespective of the
- * attached wl_buffer size.
- */
-static inline void
-wl_viewport_set(struct wl_viewport *wl_viewport, wl_fixed_t src_x, wl_fixed_t src_y, wl_fixed_t src_width, wl_fixed_t src_height, int32_t dst_width, int32_t dst_height)
-{
-	wl_proxy_marshal((struct wl_proxy *) wl_viewport,
-			 WL_VIEWPORT_SET, src_x, src_y, src_width, src_height, dst_width, dst_height);
-}
-
-/**
- * @ingroup iface_wl_viewport
- *
- * Set the source rectangle of the associated wl_surface. See
- * wl_viewport for the description, and relation to the wl_buffer
- * size.
- *
- * If width is -1.0 and height is -1.0, the destination size is unset
- * instead. Any other pair of values for width and height that
- * contains zero or negative values raises the bad_value protocol
- * error.
- *
- * The crop and scale state is double-buffered state, and will be
- * applied on the next wl_surface.commit.
- */
-static inline void
-wl_viewport_set_source(struct wl_viewport *wl_viewport, wl_fixed_t x, wl_fixed_t y, wl_fixed_t width, wl_fixed_t height)
-{
-	wl_proxy_marshal((struct wl_proxy *) wl_viewport,
-			 WL_VIEWPORT_SET_SOURCE, x, y, width, height);
-}
-
-/**
- * @ingroup iface_wl_viewport
- *
- * Set the destination size of the associated wl_surface. See
- * wl_viewport for the description, and relation to the wl_buffer
- * size.
- *
- * If width is -1 and height is -1, the destination size is unset
- * instead. Any other pair of values for width and height that
- * contains zero or negative values raises the bad_value protocol
- * error.
- *
- * The crop and scale state is double-buffered state, and will be
- * applied on the next wl_surface.commit.
- *
- * Arguments x and y do not exist here, use the x and y arguments to
- * wl_surface.attach. The x, y, width, and height define the
- * surface-local coordinate system irrespective of the attached
- * wl_buffer size.
- */
-static inline void
-wl_viewport_set_destination(struct wl_viewport *wl_viewport, int32_t width, int32_t height)
-{
-	wl_proxy_marshal((struct wl_proxy *) wl_viewport,
-			 WL_VIEWPORT_SET_DESTINATION, width, height);
-}
-
-#ifdef  __cplusplus
-}
-#endif
-
-#endif
diff --git a/ext/wayland/scaler-protocol.c b/ext/wayland/scaler-protocol.c
deleted file mode 100644
index 0e8e3d1..0000000
--- a/ext/wayland/scaler-protocol.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Generated by wayland-scanner 1.11.0 */
-
-/*
- * Copyright © 2013-2014 Collabora, Ltd.
- *
- * Permission to use, copy, modify, distribute, and sell this
- * software and its documentation for any purpose is hereby granted
- * without fee, provided that the above copyright notice appear in
- * all copies and that both that copyright notice and this permission
- * notice appear in supporting documentation, and that the name of
- * the copyright holders not be used in advertising or publicity
- * pertaining to distribution of the software without specific,
- * written prior permission.  The copyright holders make no
- * representations about the suitability of this software for any
- * purpose.  It is provided "as is" without express or implied
- * warranty.
- *
- * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
- * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
- * THIS SOFTWARE.
- */
-
-#include <stdlib.h>
-#include <stdint.h>
-#include "wayland-util.h"
-
-extern const struct wl_interface wl_surface_interface;
-extern const struct wl_interface wl_viewport_interface;
-
-static const struct wl_interface *types[] = {
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	NULL,
-	&wl_viewport_interface,
-	&wl_surface_interface,
-};
-
-static const struct wl_message wl_scaler_requests[] = {
-	{ "destroy", "", types + 0 },
-	{ "get_viewport", "no", types + 6 },
-};
-
-WL_EXPORT const struct wl_interface wl_scaler_interface = {
-	"wl_scaler", 2,
-	2, wl_scaler_requests,
-	0, NULL,
-};
-
-static const struct wl_message wl_viewport_requests[] = {
-	{ "destroy", "", types + 0 },
-	{ "set", "ffffii", types + 0 },
-	{ "set_source", "2ffff", types + 0 },
-	{ "set_destination", "2ii", types + 0 },
-};
-
-WL_EXPORT const struct wl_interface wl_viewport_interface = {
-	"wl_viewport", 2,
-	4, wl_viewport_requests,
-	0, NULL,
-};
-
diff --git a/ext/wayland/scaler.xml b/ext/wayland/scaler.xml
deleted file mode 100644
index e21ae5b..0000000
--- a/ext/wayland/scaler.xml
+++ /dev/null
@@ -1,210 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<protocol name="scaler">
-
-  <copyright>
-    Copyright © 2013-2014 Collabora, Ltd.
-
-    Permission to use, copy, modify, distribute, and sell this
-    software and its documentation for any purpose is hereby granted
-    without fee, provided that the above copyright notice appear in
-    all copies and that both that copyright notice and this permission
-    notice appear in supporting documentation, and that the name of
-    the copyright holders not be used in advertising or publicity
-    pertaining to distribution of the software without specific,
-    written prior permission.  The copyright holders make no
-    representations about the suitability of this software for any
-    purpose.  It is provided "as is" without express or implied
-    warranty.
-
-    THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
-    SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-    FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
-    SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
-    AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-    ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
-    THIS SOFTWARE.
-  </copyright>
-
-  <interface name="wl_scaler" version="2">
-    <description summary="surface cropping and scaling">
-      The global interface exposing surface cropping and scaling
-      capabilities is used to instantiate an interface extension for a
-      wl_surface object. This extended interface will then allow
-      cropping and scaling the surface contents, effectively
-      disconnecting the direct relationship between the buffer and the
-      surface size.
-    </description>
-
-    <request name="destroy" type="destructor">
-      <description summary="unbind from the cropping and scaling interface">
-	Informs the server that the client will not be using this
-	protocol object anymore. This does not affect any other objects,
-	wl_viewport objects included.
-      </description>
-    </request>
-
-    <enum name="error">
-      <entry name="viewport_exists" value="0"
-             summary="the surface already has a viewport object associated"/>
-    </enum>
-
-    <request name="get_viewport">
-      <description summary="extend surface interface for crop and scale">
-	Instantiate an interface extension for the given wl_surface to
-	crop and scale its content. If the given wl_surface already has
-	a wl_viewport object associated, the viewport_exists
-	protocol error is raised.
-      </description>
-
-      <arg name="id" type="new_id" interface="wl_viewport"
-           summary="the new viewport interface id"/>
-      <arg name="surface" type="object" interface="wl_surface"
-           summary="the surface"/>
-    </request>
-  </interface>
-
-  <interface name="wl_viewport" version="2">
-    <description summary="crop and scale interface to a wl_surface">
-      An additional interface to a wl_surface object, which allows the
-      client to specify the cropping and scaling of the surface
-      contents.
-
-      This interface allows to define the source rectangle (src_x,
-      src_y, src_width, src_height) from where to take the wl_buffer
-      contents, and scale that to destination size (dst_width,
-      dst_height). This state is double-buffered, and is applied on the
-      next wl_surface.commit.
-
-      The two parts of crop and scale state are independent: the source
-      rectangle, and the destination size. Initially both are unset, that
-      is, no scaling is applied. The whole of the current wl_buffer is
-      used as the source, and the surface size is as defined in
-      wl_surface.attach.
-
-      If the destination size is set, it causes the surface size to become
-      dst_width, dst_height. The source (rectangle) is scaled to exactly
-      this size. This overrides whatever the attached wl_buffer size is,
-      unless the wl_buffer is NULL. If the wl_buffer is NULL, the surface
-      has no content and therefore no size. Otherwise, the size is always
-      at least 1x1 in surface coordinates.
-
-      If the source rectangle is set, it defines what area of the
-      wl_buffer is taken as the source. If the source rectangle is set and
-      the destination size is not set, the surface size becomes the source
-      rectangle size rounded up to the nearest integer. If the source size
-      is already exactly integers, this results in cropping without scaling.
-
-      The coordinate transformations from buffer pixel coordinates up to
-      the surface-local coordinates happen in the following order:
-        1. buffer_transform (wl_surface.set_buffer_transform)
-        2. buffer_scale (wl_surface.set_buffer_scale)
-        3. crop and scale (wl_viewport.set*)
-      This means, that the source rectangle coordinates of crop and scale
-      are given in the coordinates after the buffer transform and scale,
-      i.e. in the coordinates that would be the surface-local coordinates
-      if the crop and scale was not applied.
-
-      If the source rectangle is partially or completely outside of the
-      wl_buffer, then the surface contents are undefined (not void), and
-      the surface size is still dst_width, dst_height.
-
-      The x, y arguments of wl_surface.attach are applied as normal to
-      the surface. They indicate how many pixels to remove from the
-      surface size from the left and the top. In other words, they are
-      still in the surface-local coordinate system, just like dst_width
-      and dst_height are.
-
-      If the wl_surface associated with the wl_viewport is destroyed,
-      the wl_viewport object becomes inert.
-
-      If the wl_viewport object is destroyed, the crop and scale
-      state is removed from the wl_surface. The change will be applied
-      on the next wl_surface.commit.
-    </description>
-
-    <request name="destroy" type="destructor">
-      <description summary="remove scaling and cropping from the surface">
-	The associated wl_surface's crop and scale state is removed.
-	The change is applied on the next wl_surface.commit.
-      </description>
-    </request>
-
-    <enum name="error">
-      <entry name="bad_value" value="0"
-             summary="negative or zero values in width or height"/>
-    </enum>
-
-    <request name="set">
-      <description summary="set the crop and scale state">
-	Set both source rectangle and destination size of the associated
-	wl_surface. See wl_viewport for the description, and relation to
-	the wl_buffer size.
-
-	The bad_value protocol error is raised if src_width or
-	src_height is negative, or if dst_width or dst_height is not
-	positive.
-
-	The crop and scale state is double-buffered state, and will be
-	applied on the next wl_surface.commit.
-
-	Arguments dst_x and dst_y do not exist here, use the x and y
-	arguments to wl_surface.attach. The x, y, dst_width, and dst_height
-	define the surface-local coordinate system irrespective of the
-	attached wl_buffer size.
-      </description>
-
-      <arg name="src_x" type="fixed" summary="source rectangle x"/>
-      <arg name="src_y" type="fixed" summary="source rectangle y"/>
-      <arg name="src_width" type="fixed" summary="source rectangle width"/>
-      <arg name="src_height" type="fixed" summary="source rectangle height"/>
-      <arg name="dst_width" type="int" summary="surface width"/>
-      <arg name="dst_height" type="int" summary="surface height"/>
-    </request>
-
-    <request name="set_source" since="2">
-      <description summary="set the source rectangle for cropping">
-	Set the source rectangle of the associated wl_surface. See
-	wl_viewport for the description, and relation to the wl_buffer
-	size.
-
-	If width is -1.0 and height is -1.0, the destination size is unset
-	instead. Any other pair of values for width and height that
-	contains zero or negative values raises the bad_value protocol
-	error.
-
-	The crop and scale state is double-buffered state, and will be
-	applied on the next wl_surface.commit.
-      </description>
-
-      <arg name="x" type="fixed" summary="source rectangle x"/>
-      <arg name="y" type="fixed" summary="source rectangle y"/>
-      <arg name="width" type="fixed" summary="source rectangle width"/>
-      <arg name="height" type="fixed" summary="source rectangle height"/>
-    </request>
-
-    <request name="set_destination" since="2">
-      <description summary="set the surface size for scaling">
-	Set the destination size of the associated wl_surface. See
-	wl_viewport for the description, and relation to the wl_buffer
-	size.
-
-	If width is -1 and height is -1, the destination size is unset
-	instead. Any other pair of values for width and height that
-	contains zero or negative values raises the bad_value protocol
-	error.
-
-	The crop and scale state is double-buffered state, and will be
-	applied on the next wl_surface.commit.
-
-	Arguments x and y do not exist here, use the x and y arguments to
-	wl_surface.attach. The x, y, width, and height define the
-	surface-local coordinate system irrespective of the attached
-	wl_buffer size.
-      </description>
-
-      <arg name="width" type="int" summary="surface width"/>
-      <arg name="height" type="int" summary="surface height"/>
-    </request>
-  </interface>
-</protocol>
diff --git a/ext/wayland/wldisplay.c b/ext/wayland/wldisplay.c
index 3318095..1011a04 100644
--- a/ext/wayland/wldisplay.c
+++ b/ext/wayland/wldisplay.c
@@ -75,6 +75,9 @@
   g_hash_table_unref (self->buffers);
   g_mutex_clear (&self->buffers_mutex);
 
+  if (self->viewporter)
+    wp_viewporter_destroy (self->viewporter);
+
   if (self->shm)
     wl_shm_destroy (self->shm);
 
@@ -161,8 +164,9 @@
   } else if (g_strcmp0 (interface, "wl_shm") == 0) {
     self->shm = wl_registry_bind (registry, id, &wl_shm_interface, 1);
     wl_shm_add_listener (self->shm, &shm_listener, self);
-  } else if (g_strcmp0 (interface, "wl_scaler") == 0) {
-    self->scaler = wl_registry_bind (registry, id, &wl_scaler_interface, 2);
+  } else if (g_strcmp0 (interface, "wp_viewporter") == 0) {
+    self->viewporter =
+        wl_registry_bind (registry, id, &wp_viewporter_interface, 1);
   }
 }
 
@@ -266,10 +270,17 @@
   VERIFY_INTERFACE_EXISTS (subcompositor, "wl_subcompositor");
   VERIFY_INTERFACE_EXISTS (shell, "wl_shell");
   VERIFY_INTERFACE_EXISTS (shm, "wl_shm");
-  VERIFY_INTERFACE_EXISTS (scaler, "wl_scaler");
 
 #undef VERIFY_INTERFACE_EXISTS
 
+  /* We make the viewporter optional even though it may cause bad display.
+   * This is so one can test wayland display on older compositor or on
+   * compositor that don't implement this extension. */
+  if (!self->viewporter) {
+    g_warning ("Wayland compositor is missing the ability to scale, video "
+        "display may not work properly.");
+  }
+
   self->thread = g_thread_try_new ("GstWlDisplay", gst_wl_display_thread_run,
       self, &err);
   if (err) {
diff --git a/ext/wayland/wldisplay.h b/ext/wayland/wldisplay.h
index e9df749..9cbb500 100644
--- a/ext/wayland/wldisplay.h
+++ b/ext/wayland/wldisplay.h
@@ -23,7 +23,7 @@
 
 #include <gst/gst.h>
 #include <wayland-client.h>
-#include "scaler-client-protocol.h"
+#include "viewporter-client-protocol.h"
 
 G_BEGIN_DECLS
 
@@ -51,7 +51,7 @@
   struct wl_subcompositor *subcompositor;
   struct wl_shell *shell;
   struct wl_shm *shm;
-  struct wl_scaler *scaler;
+  struct wp_viewporter *viewporter;
   GArray *shm_formats;
 
   /* private */
diff --git a/ext/wayland/wlwindow.c b/ext/wayland/wlwindow.c
index 79000ae..b60f351 100644
--- a/ext/wayland/wlwindow.c
+++ b/ext/wayland/wlwindow.c
@@ -46,11 +46,21 @@
 handle_configure (void *data, struct wl_shell_surface *shell_surface,
     uint32_t edges, int32_t width, int32_t height)
 {
+  GstWlWindow *window = data;
+
+  GST_DEBUG ("Windows configure: edges %x, width = %i, height %i", edges,
+      width, height);
+
+  if (width == 0 || height == 0)
+    return;
+
+  gst_wl_window_set_render_rectangle (window, 0, 0, width, height);
 }
 
 static void
 handle_popup_done (void *data, struct wl_shell_surface *shell_surface)
 {
+  GST_DEBUG ("Window popup done.");
 }
 
 static const struct wl_shell_surface_listener shell_surface_listener = {
@@ -76,18 +86,21 @@
 {
   GstWlWindow *self = GST_WL_WINDOW (gobject);
 
-  if (self->shell_surface) {
+  if (self->shell_surface)
     wl_shell_surface_destroy (self->shell_surface);
-  }
 
-  wl_viewport_destroy (self->video_viewport);
+  if (self->video_viewport)
+    wp_viewport_destroy (self->video_viewport);
+
   wl_subsurface_destroy (self->video_subsurface);
   wl_surface_destroy (self->video_surface);
 
-  if (self->area_subsurface) {
+  if (self->area_subsurface)
     wl_subsurface_destroy (self->area_subsurface);
-  }
-  wl_viewport_destroy (self->area_viewport);
+
+  if (self->area_viewport)
+    wp_viewport_destroy (self->area_viewport);
+
   wl_surface_destroy (self->area_surface);
 
   g_clear_object (&self->display);
@@ -96,18 +109,14 @@
 }
 
 static GstWlWindow *
-gst_wl_window_new_internal (GstWlDisplay * display)
+gst_wl_window_new_internal (GstWlDisplay * display, GMutex * render_lock)
 {
   GstWlWindow *window;
-  GstVideoInfo info;
-  GstBuffer *buf;
-  GstMapInfo mapinfo;
-  struct wl_buffer *wlbuf;
-  GstWlBuffer *gwlbuf;
   struct wl_region *region;
 
   window = g_object_new (GST_TYPE_WL_WINDOW, NULL);
   window->display = g_object_ref (display);
+  window->render_lock = render_lock;
 
   window->area_surface = wl_compositor_create_surface (display->compositor);
   window->video_surface = wl_compositor_create_surface (display->compositor);
@@ -122,34 +131,12 @@
       window->video_surface, window->area_surface);
   wl_subsurface_set_desync (window->video_subsurface);
 
-  window->area_viewport = wl_scaler_get_viewport (display->scaler,
-      window->area_surface);
-  window->video_viewport = wl_scaler_get_viewport (display->scaler,
-      window->video_surface);
-
-  /* draw the area_subsurface */
-  gst_video_info_set_format (&info,
-      /* we want WL_SHM_FORMAT_XRGB8888 */
-#if G_BYTE_ORDER == G_BIG_ENDIAN
-      GST_VIDEO_FORMAT_xRGB,
-#else
-      GST_VIDEO_FORMAT_BGRx,
-#endif
-      1, 1);
-
-  buf = gst_buffer_new_allocate (gst_wl_shm_allocator_get (), info.size, NULL);
-  gst_buffer_map (buf, &mapinfo, GST_MAP_WRITE);
-  *((guint32 *) mapinfo.data) = 0;      /* paint it black */
-  gst_buffer_unmap (buf, &mapinfo);
-  wlbuf =
-      gst_wl_shm_memory_construct_wl_buffer (gst_buffer_peek_memory (buf, 0),
-      display, &info);
-  gwlbuf = gst_buffer_add_wl_buffer (buf, wlbuf, display);
-  gst_wl_buffer_attach (gwlbuf, window->area_surface);
-
-  /* at this point, the GstWlBuffer keeps the buffer
-   * alive and will free it on wl_buffer::release */
-  gst_buffer_unref (buf);
+  if (display->viewporter) {
+    window->area_viewport = wp_viewporter_get_viewport (display->viewporter,
+        window->area_surface);
+    window->video_viewport = wp_viewporter_get_viewport (display->viewporter,
+        window->video_surface);
+  }
 
   /* do not accept input */
   region = wl_compositor_create_region (display->compositor);
@@ -164,12 +151,13 @@
 }
 
 GstWlWindow *
-gst_wl_window_new_toplevel (GstWlDisplay * display, const GstVideoInfo * info)
+gst_wl_window_new_toplevel (GstWlDisplay * display, const GstVideoInfo * info,
+    GMutex * render_lock)
 {
   GstWlWindow *window;
   gint width;
 
-  window = gst_wl_window_new_internal (display);
+  window = gst_wl_window_new_internal (display, render_lock);
 
   /* go toplevel */
   window->shell_surface = wl_shell_get_shell_surface (display->shell,
@@ -196,10 +184,10 @@
 
 GstWlWindow *
 gst_wl_window_new_in_surface (GstWlDisplay * display,
-    struct wl_surface * parent)
+    struct wl_surface * parent, GMutex * render_lock)
 {
   GstWlWindow *window;
-  window = gst_wl_window_new_internal (display);
+  window = gst_wl_window_new_internal (display, render_lock);
 
   /* embed in parent */
   window->area_subsurface =
@@ -246,10 +234,15 @@
   src.h = window->video_height;
   dst.w = window->render_rectangle.w;
   dst.h = window->render_rectangle.h;
-  gst_video_sink_center_rect (src, dst, &res, TRUE);
+
+  if (window->video_viewport) {
+    gst_video_sink_center_rect (src, dst, &res, TRUE);
+    wp_viewport_set_destination (window->video_viewport, res.w, res.h);
+  } else {
+    gst_video_sink_center_rect (src, dst, &res, FALSE);
+  }
 
   wl_subsurface_set_position (window->video_subsurface, res.x, res.y);
-  wl_viewport_set_destination (window->video_viewport, res.w, res.h);
 
   if (commit) {
     wl_surface_damage (window->video_surface, 0, 0, res.w, res.h);
@@ -267,8 +260,7 @@
   }
 
   /* this is saved for use in wl_surface_damage */
-  window->surface_width = res.w;
-  window->surface_height = res.h;
+  window->video_rectangle = res;
 }
 
 void
@@ -289,8 +281,8 @@
   else
     wl_surface_attach (window->video_surface, NULL, 0, 0);
 
-  wl_surface_damage (window->video_surface, 0, 0, window->surface_width,
-      window->surface_height);
+  wl_surface_damage (window->video_surface, 0, 0, window->video_rectangle.w,
+      window->video_rectangle.h);
   wl_surface_commit (window->video_surface);
 
   if (G_UNLIKELY (info)) {
@@ -305,6 +297,53 @@
   wl_display_flush (window->display->display);
 }
 
+/* Update the buffer used to draw black borders. When we have viewporter
+ * support, this is a scaled up 1x1 image, and without we need an black image
+ * the size of the rendering areay. */
+static void
+gst_wl_window_update_borders (GstWlWindow * window)
+{
+  GstVideoFormat format;
+  GstVideoInfo info;
+  gint width, height;
+  GstBuffer *buf;
+  struct wl_buffer *wlbuf;
+  GstWlBuffer *gwlbuf;
+
+  if (window->no_border_update)
+    return;
+
+  if (window->display->viewporter) {
+    width = height = 1;
+    window->no_border_update = TRUE;
+  } else {
+    width = window->render_rectangle.w;
+    height = window->render_rectangle.h;
+  }
+
+  /* we want WL_SHM_FORMAT_XRGB8888 */
+#if G_BYTE_ORDER == G_BIG_ENDIAN
+  format = GST_VIDEO_FORMAT_xRGB;
+#else
+  format = GST_VIDEO_FORMAT_BGRx;
+#endif
+
+  /* draw the area_subsurface */
+  gst_video_info_set_format (&info, format, width, height);
+
+  buf = gst_buffer_new_allocate (gst_wl_shm_allocator_get (), info.size, NULL);
+  gst_buffer_memset (buf, 0, 0, info.size);
+  wlbuf =
+      gst_wl_shm_memory_construct_wl_buffer (gst_buffer_peek_memory (buf, 0),
+      window->display, &info);
+  gwlbuf = gst_buffer_add_wl_buffer (buf, wlbuf, window->display);
+  gst_wl_buffer_attach (gwlbuf, window->area_surface);
+
+  /* at this point, the GstWlBuffer keeps the buffer
+   * alive and will free it on wl_buffer::release */
+  gst_buffer_unref (buf);
+}
+
 void
 gst_wl_window_set_render_rectangle (GstWlWindow * window, gint x, gint y,
     gint w, gint h)
@@ -321,7 +360,10 @@
     wl_subsurface_set_position (window->area_subsurface, x, y);
 
   /* change the size of the area */
-  wl_viewport_set_destination (window->area_viewport, w, h);
+  if (window->area_viewport)
+    wp_viewport_set_destination (window->area_viewport, w, h);
+
+  gst_wl_window_update_borders (window);
 
   if (window->video_width != 0) {
     wl_subsurface_set_sync (window->video_subsurface);
diff --git a/ext/wayland/wlwindow.h b/ext/wayland/wlwindow.h
index e22cb26..e247b4e 100644
--- a/ext/wayland/wlwindow.h
+++ b/ext/wayland/wlwindow.h
@@ -41,21 +41,30 @@
 {
   GObject parent_instance;
 
+  GMutex *render_lock;
+
   GstWlDisplay *display;
   struct wl_surface *area_surface;
   struct wl_subsurface *area_subsurface;
-  struct wl_viewport *area_viewport;
+  struct wp_viewport *area_viewport;
   struct wl_surface *video_surface;
   struct wl_subsurface *video_subsurface;
-  struct wl_viewport *video_viewport;
+  struct wp_viewport *video_viewport;
   struct wl_shell_surface *shell_surface;
 
   /* the size and position of the area_(sub)surface */
   GstVideoRectangle render_rectangle;
+
+  /* the size and position of the video_subsurface */
+  GstVideoRectangle video_rectangle;
+
   /* the size of the video in the buffers */
   gint video_width, video_height;
-  /* the size of the video_(sub)surface */
-  gint surface_width, surface_height;
+
+  /* this will be set when viewporter is available and black background has
+   * already been set on the area_subsurface */
+  gboolean no_border_update;
+
 };
 
 struct _GstWlWindowClass
@@ -66,9 +75,9 @@
 GType gst_wl_window_get_type (void);
 
 GstWlWindow *gst_wl_window_new_toplevel (GstWlDisplay * display,
-        const GstVideoInfo * info);
+        const GstVideoInfo * info, GMutex * render_lock);
 GstWlWindow *gst_wl_window_new_in_surface (GstWlDisplay * display,
-        struct wl_surface * parent);
+        struct wl_surface * parent, GMutex * render_lock);
 
 GstWlDisplay *gst_wl_window_get_display (GstWlWindow * window);
 struct wl_surface *gst_wl_window_get_wl_surface (GstWlWindow * window);
diff --git a/ext/webp/Makefile.in b/ext/webp/Makefile.in
index 9f1343b..8f69240 100644
--- a/ext/webp/Makefile.in
+++ b/ext/webp/Makefile.in
@@ -304,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/webp/gstwebpdec.c b/ext/webp/gstwebpdec.c
index f582cc8..85bb5bf 100644
--- a/ext/webp/gstwebpdec.c
+++ b/ext/webp/gstwebpdec.c
@@ -96,13 +96,12 @@
   gobject_class->set_property = gst_webp_dec_set_property;
   gobject_class->get_property = gst_webp_dec_get_property;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_webp_dec_src_pad_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_webp_dec_sink_pad_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_webp_dec_src_pad_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_webp_dec_sink_pad_template);
   gst_element_class_set_static_metadata (element_class, "WebP image decoder",
-      "Codec/Decoder/Image",
-      "Decode images from WebP format",
+      "Codec/Decoder/Image", "Decode images from WebP format",
       "Sreerenj Balachandran <sreerenj.balachandrn@intel.com>");
 
   g_object_class_install_property (gobject_class, PROP_BYPASS_FILTERING,
diff --git a/ext/webp/gstwebpenc.c b/ext/webp/gstwebpenc.c
index 75891ea..4d912a8 100644
--- a/ext/webp/gstwebpenc.c
+++ b/ext/webp/gstwebpenc.c
@@ -123,13 +123,12 @@
 
   gobject_class->set_property = gst_webp_enc_set_property;
   gobject_class->get_property = gst_webp_enc_get_property;
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&webp_enc_sink_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&webp_enc_src_factory));
+  gst_element_class_add_static_pad_template (element_class,
+      &webp_enc_sink_factory);
+  gst_element_class_add_static_pad_template (element_class,
+      &webp_enc_src_factory);
   gst_element_class_set_static_metadata (element_class, "WEBP image encoder",
-      "Codec/Encoder/Image",
-      "Encode images in WEBP format",
+      "Codec/Encoder/Image", "Encode images in WEBP format",
       "Sreerenj Balachandran <sreerenjb@gnome.org>");
 
   venc_class->start = gst_webp_enc_start;
diff --git a/ext/webrtcdsp/Makefile.am b/ext/webrtcdsp/Makefile.am
new file mode 100644
index 0000000..63ebb45
--- /dev/null
+++ b/ext/webrtcdsp/Makefile.am
@@ -0,0 +1,17 @@
+plugin_LTLIBRARIES = libgstwebrtcdsp.la
+
+libgstwebrtcdsp_la_SOURCES = gstwebrtcdsp.cpp gstwebrtcechoprobe.cpp
+libgstwebrtcdsp_la_CXXFLAGS = \
+	-std=c++11 \
+	$(GST_CXXFLAGS) \
+	$(GST_BASE_CFLAGS) \
+	$(GST_PLUGINS_BASE_CFLAGS) \
+	$(WEBRTCDSP_CFLAGS)
+libgstwebrtcdsp_la_LIBADD = \
+	-lgstaudio-$(GST_API_VERSION) \
+	$(GST_LIBS) $(GST_BASE_LIBS) \
+	$(GST_PLUGINS_BASE_LIBS) \
+	$(WEBRTCDSP_LIBS)
+libgstwebrtcdsp_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+
+noinst_HEADERS = gstwebrtcdsp.h gstwebrtcechoprobe.h
diff --git a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.in b/ext/webrtcdsp/Makefile.in
similarity index 79%
rename from tests/examples/gl/gtk/gtkvideooverlay/Makefile.in
rename to ext/webrtcdsp/Makefile.in
index aef9ed4..7b11d5f 100644
--- a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.in
+++ b/ext/webrtcdsp/Makefile.in
@@ -14,6 +14,7 @@
 
 @SET_MAKE@
 
+
 VPATH = @srcdir@
 am__is_gnu_make = { \
   if test -z '$(MAKELEVEL)'; then \
@@ -89,8 +90,7 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-noinst_PROGRAMS = gtkvideooverlay$(EXEEXT)
-subdir = tests/examples/gl/gtk/gtkvideooverlay
+subdir = ext/webrtcdsp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -127,27 +127,56 @@
 	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
+	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-am_gtkvideooverlay_OBJECTS = gtkvideooverlay-main.$(OBJEXT)
-gtkvideooverlay_OBJECTS = $(am_gtkvideooverlay_OBJECTS)
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
 am__DEPENDENCIES_1 =
-gtkvideooverlay_DEPENDENCIES = ../libgstgtkhelper.la \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+libgstwebrtcdsp_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1)
+am_libgstwebrtcdsp_la_OBJECTS = libgstwebrtcdsp_la-gstwebrtcdsp.lo \
+	libgstwebrtcdsp_la-gstwebrtcechoprobe.lo
+libgstwebrtcdsp_la_OBJECTS = $(am_libgstwebrtcdsp_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 am__v_lt_1 = 
-gtkvideooverlay_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+libgstwebrtcdsp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
-	$(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+	$(libgstwebrtcdsp_la_CXXFLAGS) $(CXXFLAGS) \
+	$(libgstwebrtcdsp_la_LDFLAGS) $(LDFLAGS) -o $@
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -182,13 +211,14 @@
 am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
 am__v_CXXLD_0 = @echo "  CXXLD   " $@;
 am__v_CXXLD_1 = 
-SOURCES = $(gtkvideooverlay_SOURCES)
-DIST_SOURCES = $(gtkvideooverlay_SOURCES)
+SOURCES = $(libgstwebrtcdsp_la_SOURCES)
+DIST_SOURCES = $(libgstwebrtcdsp_la_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+HEADERS = $(noinst_HEADERS)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 # Read a list of newline-separated strings from the standard input,
 # and print each of them once, without duplicates.  Input order is
@@ -274,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -295,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -344,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -489,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -615,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -659,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -749,15 +790,23 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 wayland_scanner = @wayland_scanner@
-gtkvideooverlay_SOURCES = main.cpp
-gtkvideooverlay_CXXFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
-	$(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
-	$(GL_CFLAGS) $(GTK3_CFLAGS)  $(X11_CFLAGS)
+plugin_LTLIBRARIES = libgstwebrtcdsp.la
+libgstwebrtcdsp_la_SOURCES = gstwebrtcdsp.cpp gstwebrtcechoprobe.cpp
+libgstwebrtcdsp_la_CXXFLAGS = \
+	-std=c++11 \
+	$(GST_CXXFLAGS) \
+	$(GST_BASE_CFLAGS) \
+	$(GST_PLUGINS_BASE_CFLAGS) \
+	$(WEBRTCDSP_CFLAGS)
 
-gtkvideooverlay_LDADD = ../libgstgtkhelper.la \
-	$(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
-	$(GL_LIBS) -lgstvideo-$(GST_API_VERSION) $(X11_LIBS)
+libgstwebrtcdsp_la_LIBADD = \
+	-lgstaudio-$(GST_API_VERSION) \
+	$(GST_LIBS) $(GST_BASE_LIBS) \
+	$(GST_PLUGINS_BASE_LIBS) \
+	$(WEBRTCDSP_LIBS)
 
+libgstwebrtcdsp_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+noinst_HEADERS = gstwebrtcdsp.h gstwebrtcechoprobe.h
 all: all-am
 
 .SUFFIXES:
@@ -771,9 +820,9 @@
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/gl/gtk/gtkvideooverlay/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ext/webrtcdsp/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu tests/examples/gl/gtk/gtkvideooverlay/Makefile
+	  $(AUTOMAKE) --gnu ext/webrtcdsp/Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -792,18 +841,43 @@
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 
-clean-noinstPROGRAMS:
-	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
+install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
+	}
 
-gtkvideooverlay$(EXEEXT): $(gtkvideooverlay_OBJECTS) $(gtkvideooverlay_DEPENDENCIES) $(EXTRA_gtkvideooverlay_DEPENDENCIES) 
-	@rm -f gtkvideooverlay$(EXEEXT)
-	$(AM_V_CXXLD)$(gtkvideooverlay_LINK) $(gtkvideooverlay_OBJECTS) $(gtkvideooverlay_LDADD) $(LIBS)
+uninstall-pluginLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
+	done
+
+clean-pluginLTLIBRARIES:
+	-test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
+	@list='$(plugin_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+libgstwebrtcdsp.la: $(libgstwebrtcdsp_la_OBJECTS) $(libgstwebrtcdsp_la_DEPENDENCIES) $(EXTRA_libgstwebrtcdsp_la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(libgstwebrtcdsp_la_LINK) -rpath $(plugindir) $(libgstwebrtcdsp_la_OBJECTS) $(libgstwebrtcdsp_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -811,7 +885,8 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkvideooverlay-main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstwebrtcdsp_la-gstwebrtcdsp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstwebrtcdsp_la-gstwebrtcechoprobe.Plo@am__quote@
 
 .cpp.o:
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -837,19 +912,19 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
 
-gtkvideooverlay-main.o: main.cpp
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -MT gtkvideooverlay-main.o -MD -MP -MF $(DEPDIR)/gtkvideooverlay-main.Tpo -c -o gtkvideooverlay-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/gtkvideooverlay-main.Tpo $(DEPDIR)/gtkvideooverlay-main.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='main.cpp' object='gtkvideooverlay-main.o' libtool=no @AMDEPBACKSLASH@
+libgstwebrtcdsp_la-gstwebrtcdsp.lo: gstwebrtcdsp.cpp
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstwebrtcdsp_la_CXXFLAGS) $(CXXFLAGS) -MT libgstwebrtcdsp_la-gstwebrtcdsp.lo -MD -MP -MF $(DEPDIR)/libgstwebrtcdsp_la-gstwebrtcdsp.Tpo -c -o libgstwebrtcdsp_la-gstwebrtcdsp.lo `test -f 'gstwebrtcdsp.cpp' || echo '$(srcdir)/'`gstwebrtcdsp.cpp
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstwebrtcdsp_la-gstwebrtcdsp.Tpo $(DEPDIR)/libgstwebrtcdsp_la-gstwebrtcdsp.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gstwebrtcdsp.cpp' object='libgstwebrtcdsp_la-gstwebrtcdsp.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -c -o gtkvideooverlay-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstwebrtcdsp_la_CXXFLAGS) $(CXXFLAGS) -c -o libgstwebrtcdsp_la-gstwebrtcdsp.lo `test -f 'gstwebrtcdsp.cpp' || echo '$(srcdir)/'`gstwebrtcdsp.cpp
 
-gtkvideooverlay-main.obj: main.cpp
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -MT gtkvideooverlay-main.obj -MD -MP -MF $(DEPDIR)/gtkvideooverlay-main.Tpo -c -o gtkvideooverlay-main.obj `if test -f 'main.cpp'; then $(CYGPATH_W) 'main.cpp'; else $(CYGPATH_W) '$(srcdir)/main.cpp'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/gtkvideooverlay-main.Tpo $(DEPDIR)/gtkvideooverlay-main.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='main.cpp' object='gtkvideooverlay-main.obj' libtool=no @AMDEPBACKSLASH@
+libgstwebrtcdsp_la-gstwebrtcechoprobe.lo: gstwebrtcechoprobe.cpp
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstwebrtcdsp_la_CXXFLAGS) $(CXXFLAGS) -MT libgstwebrtcdsp_la-gstwebrtcechoprobe.lo -MD -MP -MF $(DEPDIR)/libgstwebrtcdsp_la-gstwebrtcechoprobe.Tpo -c -o libgstwebrtcdsp_la-gstwebrtcechoprobe.lo `test -f 'gstwebrtcechoprobe.cpp' || echo '$(srcdir)/'`gstwebrtcechoprobe.cpp
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstwebrtcdsp_la-gstwebrtcechoprobe.Tpo $(DEPDIR)/libgstwebrtcdsp_la-gstwebrtcechoprobe.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='gstwebrtcechoprobe.cpp' object='libgstwebrtcdsp_la-gstwebrtcechoprobe.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -c -o gtkvideooverlay-main.obj `if test -f 'main.cpp'; then $(CYGPATH_W) 'main.cpp'; else $(CYGPATH_W) '$(srcdir)/main.cpp'; fi`
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstwebrtcdsp_la_CXXFLAGS) $(CXXFLAGS) -c -o libgstwebrtcdsp_la-gstwebrtcechoprobe.lo `test -f 'gstwebrtcechoprobe.cpp' || echo '$(srcdir)/'`gstwebrtcechoprobe.cpp
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -941,8 +1016,11 @@
 	done
 check-am: all-am
 check: check-am
-all-am: Makefile $(PROGRAMS)
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
 installdirs:
+	for dir in "$(DESTDIR)$(plugindir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
 install: install-am
 install-exec: install-exec-am
 install-data: install-data-am
@@ -975,7 +1053,7 @@
 	@echo "it deletes files that may require special tools to rebuild."
 clean: clean-am
 
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
 	mostlyclean-am
 
 distclean: distclean-am
@@ -996,7 +1074,7 @@
 
 info-am:
 
-install-data-am:
+install-data-am: install-pluginLTLIBRARIES
 
 install-dvi: install-dvi-am
 
@@ -1042,23 +1120,24 @@
 
 ps-am:
 
-uninstall-am:
+uninstall-am: uninstall-pluginLTLIBRARIES
 
 .MAKE: install-am install-strip
 
 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
+	clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \
 	ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
 	install-exec-am install-html install-html-am install-info \
 	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am
+	install-pluginLTLIBRARIES install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+	uninstall-pluginLTLIBRARIES
 
 .PRECIOUS: Makefile
 
diff --git a/ext/webrtcdsp/gstwebrtcdsp.cpp b/ext/webrtcdsp/gstwebrtcdsp.cpp
new file mode 100644
index 0000000..b6b8660
--- /dev/null
+++ b/ext/webrtcdsp/gstwebrtcdsp.cpp
@@ -0,0 +1,811 @@
+/*
+ * WebRTC Audio Processing Elements
+ *
+ *  Copyright 2016 Collabora Ltd
+ *    @author: Nicolas Dufresne <nicolas.dufresne@collabora.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
+ *
+ */
+
+/**
+ * SECTION:element-webrtcdsp
+ * @short_description: Audio Filter using WebRTC Audio Processing library
+ *
+ * A voice enhancement filter based on WebRTC Audio Processing library. This
+ * library provides a whide variety of enhancement algorithms. This element
+ * tries to enable as much as possible. The currently enabled enhancements are
+ * High Pass Filter, Echo Canceller, Noise Suppression, Automatic Gain Control,
+ * and some extended filters.
+ *
+ * While webrtcdsp element can be used alone, there is an exception for the
+ * echo canceller. The audio canceller need to be aware of the far end streams
+ * that are played to loud speakers. For this, you must place a webrtcechoprobe
+ * element at that far end. Note that the sample rate must match between
+ * webrtcdsp and the webrtechoprobe. Though, the number of channels can differ.
+ * The probe is found by the DSP element using it's object name. By default,
+ * webrtcdsp looks for webrtcechoprobe0, which means it just work if you have
+ * a single probe and DSP.
+ *
+ * The probe can only be used within the same top level GstPipeline.
+ * Additonally, to simplify the code, the probe element must be created
+ * before the DSP sink pad is activated. It does not need to be in any
+ * particular state and does not even need to be added to the pipeline yet.
+ *
+ * # Example launch line
+ *
+ * As a conveniance, the echo canceller can be tested using an echo loop. In
+ * this configuration, one would expect a single echo to be heard.
+ *
+ * |[
+ * gst-launch-1.0 pulsesrc ! webrtcdsp ! webrtcechoprobe ! pulsesink
+ * ]|
+ *
+ * In real environment, you'll place the probe before the playback, but only
+ * process the far end streams. The DSP should be placed as close as possible
+ * to the audio capture. The following pipeline is astracted and does not
+ * represent a real pipeline.
+ *
+ * |[
+ * gst-launch-1.0 far-end-src ! audio/x-raw,rate=48000 ! webrtcechoprobe ! pulsesink \
+ *                pulsesrc ! audio/x-raw,rate=48000 ! webrtcdsp ! far-end-sink
+ * ]|
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gstwebrtcdsp.h"
+#include "gstwebrtcechoprobe.h"
+
+#include <webrtc/modules/audio_processing/include/audio_processing.h>
+#include <webrtc/modules/interface/module_common_types.h>
+#include <webrtc/system_wrappers/include/trace.h>
+
+GST_DEBUG_CATEGORY (webrtc_dsp_debug);
+#define GST_CAT_DEFAULT (webrtc_dsp_debug)
+
+static GstStaticPadTemplate gst_webrtc_dsp_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/x-raw, "
+        "format = (string) " GST_AUDIO_NE (S16) ", "
+        "layout = (string) interleaved, "
+        "rate = (int) { 48000, 32000, 16000, 8000 }, "
+        "channels = (int) [1, MAX]")
+    );
+
+static GstStaticPadTemplate gst_webrtc_dsp_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/x-raw, "
+        "format = (string) " GST_AUDIO_NE (S16) ", "
+        "layout = (string) interleaved, "
+        "rate = (int) { 48000, 32000, 16000, 8000 }, "
+        "channels = (int) [1, MAX]")
+    );
+
+typedef webrtc::EchoCancellation::SuppressionLevel GstWebrtcEchoSuppressionLevel;
+#define GST_TYPE_WEBRTC_ECHO_SUPPRESSION_LEVEL \
+    (gst_webrtc_echo_suppression_level_get_type ())
+static GType
+gst_webrtc_echo_suppression_level_get_type (void)
+{
+  static GType suppression_level_type = 0;
+  static const GEnumValue level_types[] = {
+    {webrtc::EchoCancellation::kLowSuppression, "Low Suppression", "low"},
+    {webrtc::EchoCancellation::kModerateSuppression,
+      "Moderate Suppression", "moderate"},
+    {webrtc::EchoCancellation::kHighSuppression, "high Suppression", "high"},
+    {0, NULL, NULL}
+  };
+
+  if (!suppression_level_type) {
+    suppression_level_type =
+        g_enum_register_static ("GstWebrtcEchoSuppressionLevel", level_types);
+  }
+  return suppression_level_type;
+}
+
+typedef webrtc::NoiseSuppression::Level GstWebrtcNoiseSuppressionLevel;
+#define GST_TYPE_WEBRTC_NOISE_SUPPRESSION_LEVEL \
+    (gst_webrtc_noise_suppression_level_get_type ())
+static GType
+gst_webrtc_noise_suppression_level_get_type (void)
+{
+  static GType suppression_level_type = 0;
+  static const GEnumValue level_types[] = {
+    {webrtc::NoiseSuppression::kLow, "Low Suppression", "low"},
+    {webrtc::NoiseSuppression::kModerate, "Moderate Suppression", "moderate"},
+    {webrtc::NoiseSuppression::kHigh, "High Suppression", "high"},
+    {webrtc::NoiseSuppression::kVeryHigh, "Very High Suppression",
+      "very-high"},
+    {0, NULL, NULL}
+  };
+
+  if (!suppression_level_type) {
+    suppression_level_type =
+        g_enum_register_static ("GstWebrtcNoiseSuppressionLevel", level_types);
+  }
+  return suppression_level_type;
+}
+
+enum
+{
+  PROP_0,
+  PROP_PROBE,
+  PROP_HIGH_PASS_FILTER,
+  PROP_ECHO_CANCEL,
+  PROP_ECHO_SUPPRESSION_LEVEL,
+  PROP_NOISE_SUPPRESSION,
+  PROP_NOISE_SUPPRESSION_LEVEL,
+  PROP_GAIN_CONTROL,
+  PROP_EXPERIMENTAL_AGC,
+  PROP_EXTENDED_FILTER,
+  PROP_DELAY_AGNOSTIC
+};
+
+/**
+ * GstWebrtcDSP:
+ *
+ * The adder object structure.
+ */
+struct _GstWebrtcDsp
+{
+  GstAudioFilter element;
+
+  /* Protected by the object lock */
+  GstAudioInfo info;
+  guint period_size;
+
+  /* Protected by the stream lock */
+  GstAdapter *adapter;
+  webrtc::AudioProcessing * apm;
+
+  /* Protected by the object lock */
+  gchar *probe_name;
+  GstWebrtcEchoProbe *probe;
+
+  /* Properties */
+  gboolean high_pass_filter;
+  gboolean echo_cancel;
+  webrtc::EchoCancellation::SuppressionLevel echo_suppression_level;
+  gboolean noise_suppression;
+  webrtc::NoiseSuppression::Level noise_suppression_level;
+  gboolean gain_control;
+  gboolean experimental_agc;
+  gboolean extended_filter;
+  gboolean delay_agnostic;
+};
+
+G_DEFINE_TYPE (GstWebrtcDsp, gst_webrtc_dsp, GST_TYPE_AUDIO_FILTER);
+
+static const gchar *
+webrtc_error_to_string (gint err)
+{
+  const gchar *str = "unkown error";
+
+  switch (err) {
+    case webrtc::AudioProcessing::kNoError:
+      str = "success";
+      break;
+    case webrtc::AudioProcessing::kUnspecifiedError:
+      str = "unspecified error";
+      break;
+    case webrtc::AudioProcessing::kCreationFailedError:
+      str = "creating failed";
+      break;
+    case webrtc::AudioProcessing::kUnsupportedComponentError:
+      str = "unsupported component";
+      break;
+    case webrtc::AudioProcessing::kUnsupportedFunctionError:
+      str = "unsupported function";
+      break;
+    case webrtc::AudioProcessing::kNullPointerError:
+      str = "null pointer";
+      break;
+    case webrtc::AudioProcessing::kBadParameterError:
+      str = "bad parameter";
+      break;
+    case webrtc::AudioProcessing::kBadSampleRateError:
+      str = "bad sample rate";
+      break;
+    case webrtc::AudioProcessing::kBadDataLengthError:
+      str = "bad data length";
+      break;
+    case webrtc::AudioProcessing::kBadNumberChannelsError:
+      str = "bad number of channels";
+      break;
+    case webrtc::AudioProcessing::kFileError:
+      str = "file IO error";
+      break;
+    case webrtc::AudioProcessing::kStreamParameterNotSetError:
+      str = "stream parameter not set";
+      break;
+    case webrtc::AudioProcessing::kNotEnabledError:
+      str = "not enabled";
+      break;
+    default:
+      break;
+  }
+
+  return str;
+}
+
+static GstBuffer *
+gst_webrtc_dsp_take_buffer (GstWebrtcDsp * self)
+{
+  GstBuffer *buffer;
+  GstClockTime timestamp;
+  guint64 distance;
+
+  timestamp = gst_adapter_prev_pts (self->adapter, &distance);
+  timestamp += gst_util_uint64_scale_int (distance / self->info.bpf,
+      GST_SECOND, self->info.rate);
+
+  buffer = gst_adapter_take_buffer (self->adapter, self->period_size);
+
+  GST_BUFFER_PTS (buffer) = timestamp;
+  GST_BUFFER_DURATION (buffer) = 10 * GST_MSECOND;
+
+  if (gst_adapter_pts_at_discont (self->adapter) == timestamp && distance == 0) {
+    GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT);
+  } else
+    GST_BUFFER_FLAG_UNSET (buffer, GST_BUFFER_FLAG_DISCONT);
+
+  return buffer;
+}
+
+static GstFlowReturn
+gst_webrtc_dsp_analyze_reverse_stream (GstWebrtcDsp * self,
+    GstClockTime rec_time)
+{
+  GstWebrtcEchoProbe *probe = NULL;
+  webrtc::AudioProcessing * apm;
+  webrtc::AudioFrame frame;
+  GstFlowReturn ret = GST_FLOW_OK;
+  gint err, delay;
+
+  GST_OBJECT_LOCK (self);
+  if (self->echo_cancel)
+    probe = GST_WEBRTC_ECHO_PROBE (g_object_ref (self->probe));
+  GST_OBJECT_UNLOCK (self);
+
+  /* If echo cancellation is disabled */
+  if (!probe)
+    return GST_FLOW_OK;
+
+  apm = self->apm;
+
+  if (self->delay_agnostic)
+    rec_time = GST_CLOCK_TIME_NONE;
+
+again:
+  delay = gst_webrtc_echo_probe_read (probe, rec_time, (gpointer) &frame);
+  apm->set_stream_delay_ms (delay);
+
+  if (delay < 0)
+    goto done;
+
+  if (frame.sample_rate_hz_ != self->info.rate) {
+    GST_ELEMENT_ERROR (self, STREAM, FORMAT,
+        ("Echo Probe has rate %i , while the DSP is running at rate %i,"
+         " use a caps filter to ensure those are the same.",
+         frame.sample_rate_hz_, self->info.rate), (NULL));
+    ret = GST_FLOW_ERROR;
+    goto done;
+  }
+
+  if ((err = apm->AnalyzeReverseStream (&frame)) < 0)
+    GST_WARNING_OBJECT (self, "Reverse stream analyses failed: %s.",
+        webrtc_error_to_string (err));
+
+  if (self->delay_agnostic)
+      goto again;
+
+done:
+  gst_object_unref (probe);
+
+  return ret;
+}
+
+static GstFlowReturn
+gst_webrtc_dsp_process_stream (GstWebrtcDsp * self,
+    GstBuffer * buffer)
+{
+  GstMapInfo info;
+  webrtc::AudioProcessing * apm = self->apm;
+  webrtc::AudioFrame frame;
+  gint err;
+
+  frame.num_channels_ = self->info.channels;
+  frame.sample_rate_hz_ = self->info.rate;
+  frame.samples_per_channel_ = self->period_size / self->info.bpf;
+
+  if (!gst_buffer_map (buffer, &info, (GstMapFlags) GST_MAP_READWRITE)) {
+    gst_buffer_unref (buffer);
+    return GST_FLOW_ERROR;
+  }
+
+  memcpy (frame.data_, info.data, self->period_size);
+
+  if ((err = apm->ProcessStream (&frame)) < 0) {
+    GST_WARNING_OBJECT (self, "Failed to filter the audio: %s.",
+        webrtc_error_to_string (err));
+  } else {
+    memcpy (info.data, frame.data_, self->period_size);
+  }
+
+  gst_buffer_unmap (buffer, &info);
+
+  return GST_FLOW_OK;
+}
+
+static GstFlowReturn
+gst_webrtc_dsp_submit_input_buffer (GstBaseTransform * btrans,
+    gboolean is_discont, GstBuffer * buffer)
+{
+  GstWebrtcDsp *self = GST_WEBRTC_DSP (btrans);
+
+  buffer = gst_buffer_make_writable (buffer);
+  GST_BUFFER_PTS (buffer) = gst_segment_to_running_time (&btrans->segment,
+      GST_FORMAT_TIME, GST_BUFFER_PTS (buffer));
+
+  if (is_discont) {
+    GST_DEBUG_OBJECT (self,
+        "Received discont, clearing adapter.");
+    gst_adapter_clear (self->adapter);
+  }
+
+  gst_adapter_push (self->adapter, buffer);
+
+  return GST_FLOW_OK;
+}
+
+static GstFlowReturn
+gst_webrtc_dsp_generate_output (GstBaseTransform * btrans, GstBuffer ** outbuf)
+{
+  GstWebrtcDsp *self = GST_WEBRTC_DSP (btrans);
+  GstFlowReturn ret;
+
+  if (gst_adapter_available (self->adapter) < self->period_size) {
+    *outbuf = NULL;
+    return GST_FLOW_OK;
+  }
+
+  *outbuf = gst_webrtc_dsp_take_buffer (self);
+  ret = gst_webrtc_dsp_analyze_reverse_stream (self, GST_BUFFER_PTS (*outbuf));
+
+  if (ret == GST_FLOW_OK)
+    ret = gst_webrtc_dsp_process_stream (self, *outbuf);
+
+  return ret;
+}
+
+static gboolean
+gst_webrtc_dsp_start (GstBaseTransform * btrans)
+{
+  GstWebrtcDsp *self = GST_WEBRTC_DSP (btrans);
+  webrtc::Config config;
+
+  GST_OBJECT_LOCK (self);
+
+  config.Set < webrtc::ExtendedFilter >
+      (new webrtc::ExtendedFilter (self->extended_filter));
+  config.Set < webrtc::ExperimentalAgc >
+      (new webrtc::ExperimentalAgc (self->experimental_agc));
+  config.Set < webrtc::DelayAgnostic >
+      (new webrtc::DelayAgnostic (self->delay_agnostic));
+
+  /* TODO Intelligibility enhancer, Beamforming, etc. */
+
+  self->apm = webrtc::AudioProcessing::Create (config);
+
+  if (self->echo_cancel) {
+    self->probe = gst_webrtc_acquire_echo_probe (self->probe_name);
+
+    if (self->probe == NULL) {
+      GST_OBJECT_UNLOCK (self);
+      GST_ELEMENT_ERROR (self, RESOURCE, NOT_FOUND,
+          ("No echo probe with name %s found.", self->probe_name), (NULL));
+      return FALSE;
+    }
+  }
+
+  GST_OBJECT_UNLOCK (self);
+
+  return TRUE;
+}
+
+static gboolean
+gst_webrtc_dsp_setup (GstAudioFilter * filter, const GstAudioInfo * info)
+{
+  GstWebrtcDsp *self = GST_WEBRTC_DSP (filter);
+  webrtc::AudioProcessing * apm;
+  webrtc::ProcessingConfig pconfig;
+  GstAudioInfo probe_info = *info;
+  gint err = 0;
+
+  GST_LOG_OBJECT (self, "setting format to %s with %i Hz and %i channels",
+      info->finfo->description, info->rate, info->channels);
+
+  GST_OBJECT_LOCK (self);
+
+  gst_adapter_clear (self->adapter);
+  self->info = *info;
+  apm = self->apm;
+
+  /* WebRTC library works with 10ms buffers, compute once this size */
+  self->period_size = info->bpf * info->rate / 100;
+
+  if ((webrtc::AudioFrame::kMaxDataSizeSamples * 2) < self->period_size)
+    goto period_too_big;
+
+  if (self->probe) {
+    GST_WEBRTC_ECHO_PROBE_LOCK (self->probe);
+
+    if (self->probe->info.rate != 0) {
+      if (self->probe->info.rate != info->rate)
+        goto probe_has_wrong_rate;
+      probe_info = self->probe->info;
+    }
+
+    GST_WEBRTC_ECHO_PROBE_UNLOCK (self->probe);
+  }
+
+  /* input stream */
+  pconfig.streams[webrtc::ProcessingConfig::kInputStream] =
+      webrtc::StreamConfig (info->rate, info->channels, false);
+  /* output stream */
+  pconfig.streams[webrtc::ProcessingConfig::kOutputStream] =
+      webrtc::StreamConfig (info->rate, info->channels, false);
+  /* reverse input stream */
+  pconfig.streams[webrtc::ProcessingConfig::kReverseInputStream] =
+      webrtc::StreamConfig (probe_info.rate, probe_info.channels, false);
+  /* reverse output stream */
+  pconfig.streams[webrtc::ProcessingConfig::kReverseOutputStream] =
+      webrtc::StreamConfig (probe_info.rate, probe_info.channels, false);
+
+  if ((err = apm->Initialize (pconfig)) < 0)
+    goto initialize_failed;
+
+  /* Setup Filters */
+  if (self->high_pass_filter) {
+    GST_DEBUG_OBJECT (self, "Enabling High Pass filter");
+    apm->high_pass_filter ()->Enable (true);
+  }
+
+  if (self->echo_cancel) {
+    GST_DEBUG_OBJECT (self, "Enabling Echo Cancellation");
+    apm->echo_cancellation ()->enable_drift_compensation (false);
+    apm->echo_cancellation ()
+        ->set_suppression_level (self->echo_suppression_level);
+    apm->echo_cancellation ()->Enable (true);
+  }
+
+  if (self->noise_suppression) {
+    GST_DEBUG_OBJECT (self, "Enabling Noise Suppression");
+    apm->noise_suppression ()->set_level (self->noise_suppression_level);
+    apm->noise_suppression ()->Enable (true);
+  }
+
+  if (self->gain_control) {
+    GST_DEBUG_OBJECT (self, "Enabling Digital Gain Control");
+    apm->gain_control ()->set_mode (webrtc::GainControl::kAdaptiveDigital);
+    apm->gain_control ()->Enable (true);
+  }
+
+  GST_OBJECT_UNLOCK (self);
+
+  return TRUE;
+
+period_too_big:
+  GST_OBJECT_UNLOCK (self);
+  GST_WARNING_OBJECT (self, "webrtcdsp format produce too big period "
+      "(maximum is %" G_GSIZE_FORMAT " samples and we have %u samples), "
+      "reduce the number of channels or the rate.",
+      webrtc::AudioFrame::kMaxDataSizeSamples, self->period_size / 2);
+  return FALSE;
+
+probe_has_wrong_rate:
+  GST_WEBRTC_ECHO_PROBE_UNLOCK (self->probe);
+  GST_OBJECT_UNLOCK (self);
+  GST_ELEMENT_ERROR (self, STREAM, FORMAT,
+      ("Echo Probe has rate %i , while the DSP is running at rate %i,"
+          " use a caps filter to ensure those are the same.",
+          probe_info.rate, info->rate), (NULL));
+  return FALSE;
+
+initialize_failed:
+  GST_OBJECT_UNLOCK (self);
+  GST_ELEMENT_ERROR (self, LIBRARY, INIT,
+      ("Failed to initialize WebRTC Audio Processing library"),
+      ("webrtc::AudioProcessing::Initialize() failed: %s",
+          webrtc_error_to_string (err)));
+  return FALSE;
+}
+
+static gboolean
+gst_webrtc_dsp_stop (GstBaseTransform * btrans)
+{
+  GstWebrtcDsp *self = GST_WEBRTC_DSP (btrans);
+
+  GST_OBJECT_LOCK (self);
+
+  gst_adapter_clear (self->adapter);
+
+  if (self->probe) {
+    gst_webrtc_release_echo_probe (self->probe);
+    self->probe = NULL;
+  }
+
+  delete self->apm;
+  self->apm = NULL;
+
+  GST_OBJECT_UNLOCK (self);
+
+  return TRUE;
+}
+
+static void
+gst_webrtc_dsp_set_property (GObject * object,
+    guint prop_id, const GValue * value, GParamSpec * pspec)
+{
+  GstWebrtcDsp *self = GST_WEBRTC_DSP (object);
+
+  GST_OBJECT_LOCK (self);
+  switch (prop_id) {
+    case PROP_PROBE:
+      g_free (self->probe_name);
+      self->probe_name = g_value_dup_string (value);
+      break;
+    case PROP_HIGH_PASS_FILTER:
+      self->high_pass_filter = g_value_get_boolean (value);
+      break;
+    case PROP_ECHO_CANCEL:
+      self->echo_cancel = g_value_get_boolean (value);
+      break;
+    case PROP_ECHO_SUPPRESSION_LEVEL:
+      self->echo_suppression_level =
+          (GstWebrtcEchoSuppressionLevel) g_value_get_enum (value);
+      break;
+    case PROP_NOISE_SUPPRESSION:
+      self->noise_suppression = g_value_get_boolean (value);
+      break;
+    case PROP_NOISE_SUPPRESSION_LEVEL:
+      self->noise_suppression_level =
+          (GstWebrtcNoiseSuppressionLevel) g_value_get_enum (value);
+      break;
+    case PROP_GAIN_CONTROL:
+      self->gain_control = g_value_get_boolean (value);
+      break;
+    case PROP_EXPERIMENTAL_AGC:
+      self->experimental_agc = g_value_get_boolean (value);
+      break;
+    case PROP_EXTENDED_FILTER:
+      self->extended_filter = g_value_get_boolean (value);
+      break;
+    case PROP_DELAY_AGNOSTIC:
+      self->delay_agnostic = g_value_get_boolean (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+  GST_OBJECT_UNLOCK (self);
+}
+
+static void
+gst_webrtc_dsp_get_property (GObject * object,
+    guint prop_id, GValue * value, GParamSpec * pspec)
+{
+  GstWebrtcDsp *self = GST_WEBRTC_DSP (object);
+
+  GST_OBJECT_LOCK (self);
+  switch (prop_id) {
+    case PROP_PROBE:
+      g_value_set_string (value, self->probe_name);
+      break;
+    case PROP_HIGH_PASS_FILTER:
+      g_value_set_boolean (value, self->high_pass_filter);
+      break;
+    case PROP_ECHO_CANCEL:
+      g_value_set_boolean (value, self->echo_cancel);
+      break;
+    case PROP_ECHO_SUPPRESSION_LEVEL:
+      g_value_set_enum (value, self->echo_suppression_level);
+      break;
+    case PROP_NOISE_SUPPRESSION:
+      g_value_set_boolean (value, self->noise_suppression);
+      break;
+    case PROP_NOISE_SUPPRESSION_LEVEL:
+      g_value_set_enum (value, self->noise_suppression_level);
+      break;
+    case PROP_GAIN_CONTROL:
+      g_value_set_boolean (value, self->gain_control);
+      break;
+    case PROP_EXPERIMENTAL_AGC:
+      g_value_set_boolean (value, self->experimental_agc);
+      break;
+    case PROP_EXTENDED_FILTER:
+      g_value_set_boolean (value, self->extended_filter);
+      break;
+    case PROP_DELAY_AGNOSTIC:
+      g_value_set_boolean (value, self->delay_agnostic);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+  GST_OBJECT_UNLOCK (self);
+}
+
+
+static void
+gst_webrtc_dsp_finalize (GObject * object)
+{
+  GstWebrtcDsp *self = GST_WEBRTC_DSP (object);
+
+  gst_object_unref (self->adapter);
+  g_free (self->probe_name);
+
+  G_OBJECT_CLASS (gst_webrtc_dsp_parent_class)->finalize (object);
+}
+
+static void
+gst_webrtc_dsp_init (GstWebrtcDsp * self)
+{
+  self->adapter = gst_adapter_new ();
+  gst_audio_info_init (&self->info);
+}
+
+static void
+gst_webrtc_dsp_class_init (GstWebrtcDspClass * klass)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+  GstBaseTransformClass *btrans_class = GST_BASE_TRANSFORM_CLASS (klass);
+  GstAudioFilterClass *audiofilter_class = GST_AUDIO_FILTER_CLASS (klass);
+
+  gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_webrtc_dsp_finalize);
+  gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_webrtc_dsp_set_property);
+  gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_webrtc_dsp_get_property);
+
+  btrans_class->passthrough_on_same_caps = FALSE;
+  btrans_class->start = GST_DEBUG_FUNCPTR (gst_webrtc_dsp_start);
+  btrans_class->stop = GST_DEBUG_FUNCPTR (gst_webrtc_dsp_stop);
+  btrans_class->submit_input_buffer =
+      GST_DEBUG_FUNCPTR (gst_webrtc_dsp_submit_input_buffer);
+  btrans_class->generate_output =
+      GST_DEBUG_FUNCPTR (gst_webrtc_dsp_generate_output);
+
+  audiofilter_class->setup = GST_DEBUG_FUNCPTR (gst_webrtc_dsp_setup);
+
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_webrtc_dsp_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_webrtc_dsp_sink_template);
+  gst_element_class_set_static_metadata (element_class,
+      "Voice Processor (AGC, AEC, filters, etc.)",
+      "Generic/Audio",
+      "Pre-processes voice with WebRTC Audio Processing Library",
+      "Nicolas Dufresne <nicolas.dufresne@collabora.com>");
+
+  g_object_class_install_property (gobject_class,
+      PROP_PROBE,
+      g_param_spec_string ("probe", "Echo Probe",
+          "The name of the webrtcechoprobe element that record the audio being "
+          "played through loud speakers. Must be set before PAUSED state.",
+          "webrtcechoprobe0",
+          (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+              G_PARAM_CONSTRUCT)));
+
+  g_object_class_install_property (gobject_class,
+      PROP_HIGH_PASS_FILTER,
+      g_param_spec_boolean ("high-pass-filter", "High Pass Filter",
+          "Enable or disable high pass filtering", TRUE,
+          (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+              G_PARAM_CONSTRUCT)));
+
+  g_object_class_install_property (gobject_class,
+      PROP_ECHO_CANCEL,
+      g_param_spec_boolean ("echo-cancel", "Echo Cancel",
+          "Enable or disable echo canceller, note that it will be disabled if "
+          "no webrtcechoprobe has been found", TRUE,
+          (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+              G_PARAM_CONSTRUCT)));
+
+  g_object_class_install_property (gobject_class,
+      PROP_ECHO_SUPPRESSION_LEVEL,
+      g_param_spec_enum ("echo-suppression-level", "Echo Suppression Level",
+          "Controls the aggressiveness of the suppressor. A higher level "
+          "trades off double-talk performance for increased echo suppression.",
+          GST_TYPE_WEBRTC_ECHO_SUPPRESSION_LEVEL,
+          webrtc::EchoCancellation::kModerateSuppression,
+          (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+              G_PARAM_CONSTRUCT)));
+
+  g_object_class_install_property (gobject_class,
+      PROP_NOISE_SUPPRESSION,
+      g_param_spec_boolean ("noise-suppression", "Noise Suppression",
+          "Enable or disable noise suppression", TRUE,
+          (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+              G_PARAM_CONSTRUCT)));
+
+  g_object_class_install_property (gobject_class,
+      PROP_NOISE_SUPPRESSION_LEVEL,
+      g_param_spec_enum ("noise-suppression-level", "Noise Suppression Level",
+          "Controls the aggressiveness of the suppression. Increasing the "
+          "level will reduce the noise level at the expense of a higher "
+          "speech distortion.", GST_TYPE_WEBRTC_NOISE_SUPPRESSION_LEVEL,
+          webrtc::EchoCancellation::kModerateSuppression,
+          (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+              G_PARAM_CONSTRUCT)));
+
+  g_object_class_install_property (gobject_class,
+      PROP_GAIN_CONTROL,
+      g_param_spec_boolean ("gain-control", "Gain Control",
+          "Enable or disable automatic digital gain control",
+          TRUE, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+              G_PARAM_CONSTRUCT)));
+
+  g_object_class_install_property (gobject_class,
+      PROP_EXPERIMENTAL_AGC,
+      g_param_spec_boolean ("experimental-agc", "Experimental AGC",
+          "Enable or disable experimental automatic gain control.",
+          FALSE, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+              G_PARAM_CONSTRUCT)));
+
+  g_object_class_install_property (gobject_class,
+      PROP_EXTENDED_FILTER,
+      g_param_spec_boolean ("extended-filter", "Extended Filter",
+          "Enable or disable the extended filter.",
+          TRUE, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+              G_PARAM_CONSTRUCT)));
+
+  g_object_class_install_property (gobject_class,
+      PROP_DELAY_AGNOSTIC,
+      g_param_spec_boolean ("delay-agnostic", "Delay Agnostic",
+          "Enable or disable the delay agnostic mode.",
+          FALSE, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+              G_PARAM_CONSTRUCT)));
+}
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+  GST_DEBUG_CATEGORY_INIT
+      (webrtc_dsp_debug, "webrtcdsp", 0, "libwebrtcdsp wrapping elements");
+
+  if (!gst_element_register (plugin, "webrtcdsp", GST_RANK_NONE,
+          GST_TYPE_WEBRTC_DSP)) {
+    return FALSE;
+  }
+  if (!gst_element_register (plugin, "webrtcechoprobe", GST_RANK_NONE,
+          GST_TYPE_WEBRTC_ECHO_PROBE)) {
+    return FALSE;
+  }
+
+  return TRUE;
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    webrtcdsp,
+    "Voice pre-processing using WebRTC Audio Processing Library",
+    plugin_init, VERSION, "LGPL", "WebRTCDsp", "http://git.collabora.com")
diff --git a/ext/webrtcdsp/gstwebrtcdsp.h b/ext/webrtcdsp/gstwebrtcdsp.h
new file mode 100644
index 0000000..a2519df
--- /dev/null
+++ b/ext/webrtcdsp/gstwebrtcdsp.h
@@ -0,0 +1,52 @@
+/*
+ * WebRTC Audio Processing Elements
+ *
+ *  Copyright 2016 Collabora Ltd
+ *    @author: Nicolas Dufresne <nicolas.dufresne@collabora.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
+ *
+ */
+
+#ifndef __GST_WEBRTC_DSP_H__
+#define __GST_WEBRTC_DSP_H__
+
+#include <gst/gst.h>
+#include <gst/base/gstadapter.h>
+#include <gst/base/gstbasetransform.h>
+#include <gst/audio/audio.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_WEBRTC_DSP            (gst_webrtc_dsp_get_type())
+#define GST_WEBRTC_DSP(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_WEBRTC_DSP,GstWebrtcDsp))
+#define GST_IS_WEBRTC_DSP(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_WEBRTC_DSP))
+#define GST_WEBRTC_DSP_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass) ,GST_TYPE_WEBRTC_DSP,GstWebrtcDspClass))
+#define GST_IS_WEBRTC_DSP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass) ,GST_TYPE_WEBRTC_DSP))
+#define GST_WEBRTC_DSP_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj) ,GST_TYPE_WEBRTC_DSP,GstWebrtcDspClass))
+
+typedef struct _GstWebrtcDsp GstWebrtcDsp;
+typedef struct _GstWebrtcDspClass GstWebrtcDspClass;
+
+struct _GstWebrtcDspClass
+{
+  GstAudioFilterClass parent_class;
+};
+
+GType gst_webrtc_dsp_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_WEBRTC_DSP_H__ */
diff --git a/ext/webrtcdsp/gstwebrtcechoprobe.cpp b/ext/webrtcdsp/gstwebrtcechoprobe.cpp
new file mode 100644
index 0000000..5b811b6
--- /dev/null
+++ b/ext/webrtcdsp/gstwebrtcechoprobe.cpp
@@ -0,0 +1,351 @@
+/*
+ * WebRTC Audio Processing Elements
+ *
+ *  Copyright 2016 Collabora Ltd
+ *    @author: Nicolas Dufresne <nicolas.dufresne@collabora.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
+ *
+ */
+
+/**
+ * SECTION:element-webrtcechoprobe
+ *
+ * This echo probe is to be used with the webrtcdsp element. See #gst-plugins-bad-plugins-webrtcdsp
+ * documentation for more details.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gstwebrtcechoprobe.h"
+
+#include <webrtc/modules/interface/module_common_types.h>
+#include <gst/audio/audio.h>
+
+GST_DEBUG_CATEGORY_EXTERN (webrtc_dsp_debug);
+#define GST_CAT_DEFAULT (webrtc_dsp_debug)
+
+#define MAX_ADAPTER_SIZE (1*1024*1024)
+
+static GstStaticPadTemplate gst_webrtc_echo_probe_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/x-raw, "
+        "format = (string) " GST_AUDIO_NE (S16) ", "
+        "layout = (string) interleaved, "
+        "rate = (int) { 48000, 32000, 16000, 8000 }, "
+        "channels = (int) [1, MAX]")
+    );
+
+static GstStaticPadTemplate gst_webrtc_echo_probe_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/x-raw, "
+        "format = (string) " GST_AUDIO_NE (S16) ", "
+        "layout = (string) interleaved, "
+        "rate = (int) { 48000, 32000, 16000, 8000 }, "
+        "channels = (int) [1, MAX]")
+    );
+
+G_LOCK_DEFINE_STATIC (gst_aec_probes);
+static GList *gst_aec_probes = NULL;
+
+G_DEFINE_TYPE (GstWebrtcEchoProbe, gst_webrtc_echo_probe,
+    GST_TYPE_AUDIO_FILTER);
+
+static gboolean
+gst_webrtc_echo_probe_setup (GstAudioFilter * filter, const GstAudioInfo * info)
+{
+  GstWebrtcEchoProbe *self = GST_WEBRTC_ECHO_PROBE (filter);
+
+  GST_LOG_OBJECT (self, "setting format to %s with %i Hz and %i channels",
+      info->finfo->description, info->rate, info->channels);
+
+  GST_WEBRTC_ECHO_PROBE_LOCK (self);
+
+  self->info = *info;
+
+  /* WebRTC library works with 10ms buffers, compute once this size */
+  self->period_size = info->bpf * info->rate / 100;
+
+  if ((webrtc::AudioFrame::kMaxDataSizeSamples * 2) < self->period_size)
+    goto period_too_big;
+
+  GST_WEBRTC_ECHO_PROBE_UNLOCK (self);
+
+  return TRUE;
+
+period_too_big:
+  GST_WEBRTC_ECHO_PROBE_UNLOCK (self);
+  GST_WARNING_OBJECT (self, "webrtcdsp format produce too big period "
+      "(maximum is %" G_GSIZE_FORMAT " samples and we have %u samples), "
+      "reduce the number of channels or the rate.",
+      webrtc::AudioFrame::kMaxDataSizeSamples, self->period_size / 2);
+  return FALSE;
+}
+
+static gboolean
+gst_webrtc_echo_probe_stop (GstBaseTransform * btrans)
+{
+  GstWebrtcEchoProbe *self = GST_WEBRTC_ECHO_PROBE (btrans);
+
+  GST_WEBRTC_ECHO_PROBE_LOCK (self);
+  gst_adapter_clear (self->adapter);
+  GST_WEBRTC_ECHO_PROBE_UNLOCK (self);
+
+  return TRUE;
+}
+
+static gboolean
+gst_webrtc_echo_probe_src_event (GstBaseTransform * btrans, GstEvent * event)
+{
+  GstBaseTransformClass *klass;
+  GstWebrtcEchoProbe *self = GST_WEBRTC_ECHO_PROBE (btrans);
+  GstClockTime latency;
+  GstClockTime upstream_latency = 0;
+  GstQuery *query;
+
+  klass = GST_BASE_TRANSFORM_CLASS (gst_webrtc_echo_probe_parent_class);
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_LATENCY:
+      gst_event_parse_latency (event, &latency);
+      query = gst_query_new_latency ();
+
+      if (gst_pad_query (btrans->srcpad, query)) {
+        gst_query_parse_latency (query, NULL, &upstream_latency, NULL);
+
+        if (!GST_CLOCK_TIME_IS_VALID (upstream_latency))
+          upstream_latency = 0;
+      }
+
+      GST_WEBRTC_ECHO_PROBE_LOCK (self);
+      self->latency = latency;
+      self->delay = upstream_latency / GST_MSECOND;
+      GST_WEBRTC_ECHO_PROBE_UNLOCK (self);
+
+      GST_DEBUG_OBJECT (self, "We have a latency of %" GST_TIME_FORMAT
+          " and delay of %ims", GST_TIME_ARGS (latency),
+          (gint) (upstream_latency / GST_MSECOND));
+      break;
+    default:
+      break;
+  }
+
+  return klass->src_event (btrans, event);
+}
+
+static GstFlowReturn
+gst_webrtc_echo_probe_transform_ip (GstBaseTransform * btrans,
+    GstBuffer * buffer)
+{
+  GstWebrtcEchoProbe *self = GST_WEBRTC_ECHO_PROBE (btrans);
+  GstBuffer *newbuf = NULL;
+
+  GST_WEBRTC_ECHO_PROBE_LOCK (self);
+  newbuf = gst_buffer_copy (buffer);
+  /* Moves the buffer timestamp to be in Running time */
+  GST_BUFFER_PTS (newbuf) = gst_segment_to_running_time (&btrans->segment,
+      GST_FORMAT_TIME, GST_BUFFER_PTS (buffer));
+  gst_adapter_push (self->adapter, newbuf);
+
+  if (gst_adapter_available (self->adapter) > MAX_ADAPTER_SIZE)
+    gst_adapter_flush (self->adapter,
+        gst_adapter_available (self->adapter) - MAX_ADAPTER_SIZE);
+  GST_WEBRTC_ECHO_PROBE_UNLOCK (self);
+
+  return GST_FLOW_OK;
+}
+
+static void
+gst_webrtc_echo_probe_finalize (GObject * object)
+{
+  GstWebrtcEchoProbe *self = GST_WEBRTC_ECHO_PROBE (object);
+
+  G_LOCK (gst_aec_probes);
+  gst_aec_probes = g_list_remove (gst_aec_probes, self);
+  G_UNLOCK (gst_aec_probes);
+
+  gst_object_unref (self->adapter);
+  self->adapter = NULL;
+
+  G_OBJECT_CLASS (gst_webrtc_echo_probe_parent_class)->finalize (object);
+}
+
+static void
+gst_webrtc_echo_probe_init (GstWebrtcEchoProbe * self)
+{
+  self->adapter = gst_adapter_new ();
+  gst_audio_info_init (&self->info);
+  g_mutex_init (&self->lock);
+
+  self->latency = GST_CLOCK_TIME_NONE;
+
+  G_LOCK (gst_aec_probes);
+  gst_aec_probes = g_list_prepend (gst_aec_probes, self);
+  G_UNLOCK (gst_aec_probes);
+}
+
+static void
+gst_webrtc_echo_probe_class_init (GstWebrtcEchoProbeClass * klass)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+  GstBaseTransformClass *btrans_class = GST_BASE_TRANSFORM_CLASS (klass);
+  GstAudioFilterClass *audiofilter_class = GST_AUDIO_FILTER_CLASS (klass);
+
+  gobject_class->finalize = gst_webrtc_echo_probe_finalize;
+
+  btrans_class->passthrough_on_same_caps = TRUE;
+  btrans_class->src_event = GST_DEBUG_FUNCPTR (gst_webrtc_echo_probe_src_event);
+  btrans_class->transform_ip =
+      GST_DEBUG_FUNCPTR (gst_webrtc_echo_probe_transform_ip);
+  btrans_class->stop = GST_DEBUG_FUNCPTR (gst_webrtc_echo_probe_stop);
+
+  audiofilter_class->setup = GST_DEBUG_FUNCPTR (gst_webrtc_echo_probe_setup);
+
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_webrtc_echo_probe_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_webrtc_echo_probe_sink_template);
+
+  gst_element_class_set_static_metadata (element_class,
+      "Accoustic Echo Canceller probe",
+      "Generic/Audio",
+      "Gathers playback buffers for webrtcdsp",
+      "Nicolas Dufresne <nicolas.dufrsesne@collabora.com>");
+}
+
+
+GstWebrtcEchoProbe *
+gst_webrtc_acquire_echo_probe (const gchar * name)
+{
+  GstWebrtcEchoProbe *ret = NULL;
+  GList *l;
+
+  G_LOCK (gst_aec_probes);
+  for (l = gst_aec_probes; l; l = l->next) {
+    GstWebrtcEchoProbe *probe = GST_WEBRTC_ECHO_PROBE (l->data);
+
+    GST_WEBRTC_ECHO_PROBE_LOCK (probe);
+    if (!probe->acquired && g_strcmp0 (GST_OBJECT_NAME (probe), name) == 0) {
+      probe->acquired = TRUE;
+      ret = GST_WEBRTC_ECHO_PROBE (gst_object_ref (probe));
+      GST_WEBRTC_ECHO_PROBE_UNLOCK (probe);
+      break;
+    }
+    GST_WEBRTC_ECHO_PROBE_UNLOCK (probe);
+  }
+  G_UNLOCK (gst_aec_probes);
+
+  return ret;
+}
+
+void
+gst_webrtc_release_echo_probe (GstWebrtcEchoProbe * probe)
+{
+  GST_WEBRTC_ECHO_PROBE_LOCK (probe);
+  probe->acquired = FALSE;
+  GST_WEBRTC_ECHO_PROBE_UNLOCK (probe);
+  gst_object_unref (probe);
+}
+
+gint
+gst_webrtc_echo_probe_read (GstWebrtcEchoProbe * self, GstClockTime rec_time,
+    gpointer _frame)
+{
+  webrtc::AudioFrame * frame = (webrtc::AudioFrame *) _frame;
+  GstClockTimeDiff diff;
+  gsize avail, skip, offset, size;
+  gint delay = -1;
+
+  GST_WEBRTC_ECHO_PROBE_LOCK (self);
+
+  if (!GST_CLOCK_TIME_IS_VALID (self->latency))
+    goto done;
+
+  /* In delay agnostic mode, just return 10ms of data */
+  if (!GST_CLOCK_TIME_IS_VALID (rec_time)) {
+    avail = gst_adapter_available (self->adapter);
+
+    if (avail < self->period_size)
+      goto done;
+
+    size = self->period_size;
+    skip = 0;
+    offset = 0;
+
+    goto copy;
+  }
+
+  if (gst_adapter_available (self->adapter) == 0) {
+    diff = G_MAXINT64;
+  } else {
+    GstClockTime play_time;
+    guint64 distance;
+
+    play_time = gst_adapter_prev_pts (self->adapter, &distance);
+
+    if (GST_CLOCK_TIME_IS_VALID (play_time)) {
+      play_time += gst_util_uint64_scale_int (distance / self->info.bpf,
+          GST_SECOND, self->info.rate);
+      play_time += self->latency;
+
+      diff = GST_CLOCK_DIFF (rec_time, play_time) / GST_MSECOND;
+    } else {
+      /* We have no timestamp, assume perfect delay */
+      diff = self->delay;
+    }
+  }
+
+  avail = gst_adapter_available (self->adapter);
+
+  if (diff > self->delay) {
+    skip = (diff - self->delay) * self->info.rate / 1000 * self->info.bpf;
+    skip = MIN (self->period_size, skip);
+    offset = 0;
+  } else {
+    skip = 0;
+    offset = (self->delay - diff) * self->info.rate / 1000 * self->info.bpf;
+    offset = MIN (avail, offset);
+  }
+
+  size = MIN (avail - offset, self->period_size - skip);
+
+  if (size < self->period_size)
+    memset (frame->data_, 0, self->period_size);
+
+copy:
+  if (size) {
+    gst_adapter_copy (self->adapter, (guint8 *) frame->data_ + skip,
+        offset, size);
+    gst_adapter_flush (self->adapter, offset + size);
+  }
+
+  frame->num_channels_ = self->info.channels;
+  frame->sample_rate_hz_ = self->info.rate;
+  frame->samples_per_channel_ = self->period_size / self->info.bpf;
+
+  delay = self->delay;
+
+done:
+  GST_WEBRTC_ECHO_PROBE_UNLOCK (self);
+
+  return delay;
+}
diff --git a/ext/webrtcdsp/gstwebrtcechoprobe.h b/ext/webrtcdsp/gstwebrtcechoprobe.h
new file mode 100644
index 0000000..7c8a240
--- /dev/null
+++ b/ext/webrtcdsp/gstwebrtcechoprobe.h
@@ -0,0 +1,88 @@
+/*
+ * WebRTC Audio Processing Elements
+ *
+ *  Copyright 2016 Collabora Ltd
+ *    @author: Nicolas Dufresne <nicolas.dufresne@collabora.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
+ *
+ */
+
+#ifndef __GST_WEBRTC_ECHO_PROBE_H__
+#define __GST_WEBRTC_ECHO_PROBE_H__
+
+#include <gst/gst.h>
+#include <gst/base/gstadapter.h>
+#include <gst/base/gstbasetransform.h>
+#include <gst/audio/audio.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_WEBRTC_ECHO_PROBE            (gst_webrtc_echo_probe_get_type())
+#define GST_WEBRTC_ECHO_PROBE(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_WEBRTC_ECHO_PROBE,GstWebrtcEchoProbe))
+#define GST_IS_WEBRTC_ECHO_PROBE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_WEBRTC_ECHO_PROBE))
+#define GST_WEBRTC_ECHO_PROBE_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass) ,GST_TYPE_WEBRTC_ECHO_PROBE,GstWebrtcEchoProbeClass))
+#define GST_IS_WEBRTC_ECHO_PROBE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass) ,GST_TYPE_WEBRTC_ECHO_PROBE))
+#define GST_WEBRTC_ECHO_PROBE_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj) ,GST_TYPE_WEBRTC_ECHO_PROBE,GstWebrtcEchoProbeClass))
+
+#define GST_WEBRTC_ECHO_PROBE_LOCK(obj) g_mutex_lock (&GST_WEBRTC_ECHO_PROBE (obj)->lock)
+#define GST_WEBRTC_ECHO_PROBE_UNLOCK(obj) g_mutex_unlock (&GST_WEBRTC_ECHO_PROBE (obj)->lock)
+
+typedef struct _GstWebrtcEchoProbe GstWebrtcEchoProbe;
+typedef struct _GstWebrtcEchoProbeClass GstWebrtcEchoProbeClass;
+
+/**
+ * GstWebrtcEchoProbe:
+ *
+ * The adder object structure.
+ */
+struct _GstWebrtcEchoProbe
+{
+  GstAudioFilter parent;
+
+  /* This lock is required as the DSP may need to lock itself using it's
+   * object lock and also lock the probe. The natural order for the DSP is
+   * to lock the DSP and then the echo probe. If we where using the probe
+   * object lock, we'd be racing with GstBin which will lock sink to src,
+   * and may accidently reverse the order. */
+  GMutex lock;
+
+  /* Protected by the lock */
+  GstAudioInfo info;
+  guint period_size;
+  GstClockTime latency;
+  gint delay;
+
+  GstSegment segment;
+  GstAdapter *adapter;
+
+  /* Private */
+  gboolean acquired;
+};
+
+struct _GstWebrtcEchoProbeClass
+{
+  GstAudioFilterClass parent_class;
+};
+
+GType gst_webrtc_echo_probe_get_type (void);
+
+GstWebrtcEchoProbe *gst_webrtc_acquire_echo_probe (const gchar * name);
+void gst_webrtc_release_echo_probe (GstWebrtcEchoProbe * probe);
+gint gst_webrtc_echo_probe_read (GstWebrtcEchoProbe * self,
+    GstClockTime rec_time, gpointer frame);
+
+G_END_DECLS
+#endif /* __GST_WEBRTC_ECHO_PROBE_H__ */
diff --git a/ext/x265/Makefile.in b/ext/x265/Makefile.in
index a4a2314..f55e4fb 100644
--- a/ext/x265/Makefile.in
+++ b/ext/x265/Makefile.in
@@ -302,6 +302,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -323,6 +325,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -372,6 +376,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -517,6 +523,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -643,8 +651,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,8 +693,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/x265/gstx265enc.c b/ext/x265/gstx265enc.c
index 99fc522..a2baf56 100644
--- a/ext/x265/gstx265enc.c
+++ b/ext/x265/gstx265enc.c
@@ -403,10 +403,8 @@
       "x265enc", "Codec/Encoder/Video", "H265 Encoder",
       "Thijs Vermeir <thijs.vermeir@barco.com>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
 }
 
 /* initialize the new element
@@ -661,6 +659,7 @@
   encoder->x265param.sourceWidth = info->width;
   encoder->x265param.sourceHeight = info->height;
   if (info->par_d > 0) {
+    encoder->x265param.vui.aspectRatioIdc = X265_EXTENDED_SAR;
     encoder->x265param.vui.sarWidth = info->par_n;
     encoder->x265param.vui.sarHeight = info->par_d;
   }
diff --git a/ext/xvid/Makefile.in b/ext/xvid/Makefile.in
index 7c86a9f..ed514eb 100644
--- a/ext/xvid/Makefile.in
+++ b/ext/xvid/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/xvid/gstxviddec.c b/ext/xvid/gstxviddec.c
index 7e20ad5..b49cf2f 100644
--- a/ext/xvid/gstxviddec.c
+++ b/ext/xvid/gstxviddec.c
@@ -100,10 +100,8 @@
 {
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
+  gst_element_class_add_static_pad_template (element_class, &src_template);
 
   gst_element_class_set_static_metadata (element_class, "XviD video decoder",
       "Codec/Decoder/Video",
diff --git a/ext/xvid/gstxvidenc.c b/ext/xvid/gstxvidenc.c
index c2ecfb8..edf89b7 100644
--- a/ext/xvid/gstxvidenc.c
+++ b/ext/xvid/gstxvidenc.c
@@ -244,10 +244,8 @@
 {
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
+  gst_element_class_add_static_pad_template (element_class, &src_template);
   gst_element_class_set_static_metadata (element_class, "XviD video encoder",
       "Codec/Encoder/Video",
       "XviD encoder based on xvidcore",
diff --git a/ext/zbar/Makefile.in b/ext/zbar/Makefile.in
index 40f9758..33ee46e 100644
--- a/ext/zbar/Makefile.in
+++ b/ext/zbar/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/zbar/gstzbar.c b/ext/zbar/gstzbar.c
index 62fb106..e84f48c 100644
--- a/ext/zbar/gstzbar.c
+++ b/ext/zbar/gstzbar.c
@@ -192,10 +192,10 @@
       "Detect bar codes in the video streams",
       "Stefan Kost <ensonic@users.sf.net>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_zbar_sink_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_zbar_src_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_zbar_sink_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_zbar_src_template);
 
   trans_class->start = GST_DEBUG_FUNCPTR (gst_zbar_start);
   trans_class->stop = GST_DEBUG_FUNCPTR (gst_zbar_stop);
diff --git a/gst-libs/Makefile.in b/gst-libs/Makefile.in
index e6505b3..433c67f 100644
--- a/gst-libs/Makefile.in
+++ b/gst-libs/Makefile.in
@@ -276,6 +276,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -297,6 +299,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -346,6 +350,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -491,6 +497,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -617,8 +625,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -661,8 +667,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/Makefile.in b/gst-libs/gst/Makefile.in
index 77208a1..3fb0167 100644
--- a/gst-libs/gst/Makefile.in
+++ b/gst-libs/gst/Makefile.in
@@ -278,6 +278,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -299,6 +301,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -348,6 +352,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -493,6 +499,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -619,8 +627,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -663,8 +669,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/adaptivedemux/Makefile.in b/gst-libs/gst/adaptivedemux/Makefile.in
index 0777736..0a35ee3 100644
--- a/gst-libs/gst/adaptivedemux/Makefile.in
+++ b/gst-libs/gst/adaptivedemux/Makefile.in
@@ -306,6 +306,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -327,6 +329,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -376,6 +380,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -521,6 +527,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -647,8 +655,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,8 +697,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/adaptivedemux/gstadaptivedemux.c b/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
index 8e00079..715893c 100644
--- a/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
+++ b/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
@@ -165,10 +165,8 @@
   PROP_LAST
 };
 
-enum GstAdaptiveDemuxFlowReturn
-{
-  GST_ADAPTIVE_DEMUX_FLOW_SWITCH = GST_FLOW_CUSTOM_SUCCESS_2 + 1
-};
+/* Internal, so not using GST_FLOW_CUSTOM_SUCCESS_N */
+#define GST_ADAPTIVE_DEMUX_FLOW_SWITCH (GST_FLOW_CUSTOM_SUCCESS_2 + 1)
 
 struct _GstAdaptiveDemuxPrivate
 {
@@ -209,6 +207,15 @@
   GMutex segment_lock;
 };
 
+typedef struct _GstAdaptiveDemuxTimer
+{
+  volatile gint ref_count;
+  GCond *cond;
+  GMutex *mutex;
+  GstClockID clock_id;
+  gboolean fired;
+} GstAdaptiveDemuxTimer;
+
 static GstBinClass *parent_class = NULL;
 static void gst_adaptive_demux_class_init (GstAdaptiveDemuxClass * klass);
 static void gst_adaptive_demux_init (GstAdaptiveDemux * dec,
@@ -272,14 +279,18 @@
     stream, GstFlowReturn ret, GError * err);
 static GstFlowReturn
 gst_adaptive_demux_stream_data_received_default (GstAdaptiveDemux * demux,
-    GstAdaptiveDemuxStream * stream);
+    GstAdaptiveDemuxStream * stream, GstBuffer * buffer);
 static GstFlowReturn
 gst_adaptive_demux_stream_finish_fragment_default (GstAdaptiveDemux * demux,
     GstAdaptiveDemuxStream * stream);
 static GstFlowReturn
 gst_adaptive_demux_stream_advance_fragment_unlocked (GstAdaptiveDemux * demux,
     GstAdaptiveDemuxStream * stream, GstClockTime duration);
-
+static gboolean
+gst_adaptive_demux_wait_until (GstClock * clock, GCond * cond, GMutex * mutex,
+    GstClockTime end_time);
+static gboolean gst_adaptive_demux_clock_callback (GstClock * clock,
+    GstClockTime time, GstClockID id, gpointer user_data);
 
 /* we can't use G_DEFINE_ABSTRACT_TYPE because we need the klass in the _init
  * method to get to the padtemplates */
@@ -408,6 +419,8 @@
     GstAdaptiveDemuxClass * klass)
 {
   GstPadTemplate *pad_template;
+  GstClockType clock_type = GST_CLOCK_TYPE_OTHER;
+  GObjectClass *gobject_class;
 
   GST_DEBUG_OBJECT (demux, "gst_adaptive_demux_init");
 
@@ -421,6 +434,33 @@
 
   gst_segment_init (&demux->segment, GST_FORMAT_TIME);
 
+  gst_bin_set_suppressed_flags (GST_BIN_CAST (demux),
+      GST_ELEMENT_FLAG_SOURCE | GST_ELEMENT_FLAG_SINK);
+
+  demux->realtime_clock = gst_system_clock_obtain ();
+  g_assert (demux->realtime_clock != NULL);
+  gobject_class = G_OBJECT_GET_CLASS (demux->realtime_clock);
+  if (g_object_class_find_property (gobject_class, "clock-type")) {
+    g_object_get (demux->realtime_clock, "clock-type", &clock_type, NULL);
+  } else {
+    GST_WARNING_OBJECT (demux,
+        "System clock does not have clock-type property");
+  }
+  if (clock_type == GST_CLOCK_TYPE_REALTIME) {
+    demux->clock_offset = 0;
+  } else {
+    GDateTime *utc_now;
+    GstClockTime rtc_now;
+    GTimeVal gtv;
+
+    utc_now = g_date_time_new_now_utc ();
+    rtc_now = gst_clock_get_time (demux->realtime_clock);
+    g_date_time_to_timeval (utc_now, &gtv);
+    demux->clock_offset =
+        gtv.tv_sec * G_TIME_SPAN_SECOND + gtv.tv_usec -
+        GST_TIME_AS_USECONDS (rtc_now);
+    g_date_time_unref (utc_now);
+  }
   g_rec_mutex_init (&demux->priv->updates_lock);
   demux->priv->updates_task =
       gst_task_new ((GstTaskFunction) gst_adaptive_demux_updates_loop,
@@ -474,6 +514,10 @@
   g_rec_mutex_clear (&demux->priv->manifest_lock);
   g_mutex_clear (&demux->priv->api_lock);
   g_mutex_clear (&demux->priv->segment_lock);
+  if (demux->realtime_clock) {
+    gst_object_unref (demux->realtime_clock);
+    demux->realtime_clock = NULL;
+  }
 
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
@@ -496,6 +540,7 @@
       break;
     case GST_STATE_CHANGE_READY_TO_PAUSED:
       GST_MANIFEST_LOCK (demux);
+      gst_adaptive_demux_reset (demux);
       demux->running = TRUE;
       GST_MANIFEST_UNLOCK (demux);
       break;
@@ -637,6 +682,9 @@
               gst_adaptive_demux_is_live (demux));
           gst_adaptive_demux_start_tasks (demux);
           if (gst_adaptive_demux_is_live (demux)) {
+            g_mutex_lock (&demux->priv->updates_timed_lock);
+            demux->priv->stop_updates_task = FALSE;
+            g_mutex_unlock (&demux->priv->updates_timed_lock);
             /* Task to periodically update the manifest */
             gst_task_start (demux->priv->updates_task);
           }
@@ -752,6 +800,7 @@
       GError *err = NULL;
       gchar *debug = NULL;
       gchar *new_error = NULL;
+      const GstStructure *details = NULL;
 
       GST_MANIFEST_LOCK (demux);
 
@@ -772,6 +821,12 @@
             err->message = new_error;
           }
 
+          gst_message_parse_error_details (msg, &details);
+          if (details) {
+            gst_structure_get_uint (details, "http-status-code",
+                &stream->last_status_code);
+          }
+
           /* error, but ask to retry */
           gst_adaptive_demux_stream_fragment_download_finish (stream,
               GST_FLOW_CUSTOM_ERROR, err);
@@ -853,7 +908,7 @@
     stream->pending_caps = NULL;
   }
 
-  stream->discont = FALSE;
+  stream->discont = TRUE;
 
   gst_object_ref (pad);
 
@@ -1105,7 +1160,6 @@
   gst_segment_init (&stream->segment, GST_FORMAT_TIME);
   g_cond_init (&stream->fragment_download_cond);
   g_mutex_init (&stream->fragment_download_lock);
-  stream->adapter = gst_adapter_new ();
 
   demux->next_streams = g_list_append (demux->next_streams, stream);
 
@@ -1192,11 +1246,14 @@
   }
 
   if (stream->src) {
-    GST_MANIFEST_UNLOCK (demux);
-    gst_element_set_locked_state (stream->src, TRUE);
-    gst_element_set_state (stream->src, GST_STATE_NULL);
-    gst_bin_remove (GST_BIN_CAST (demux), stream->src);
+    GstElement *src = stream->src;
+
     stream->src = NULL;
+
+    GST_MANIFEST_UNLOCK (demux);
+    gst_element_set_locked_state (src, TRUE);
+    gst_element_set_state (src, GST_STATE_NULL);
+    gst_bin_remove (GST_BIN_CAST (demux), src);
     GST_MANIFEST_LOCK (demux);
   }
 
@@ -1213,8 +1270,6 @@
 
   g_clear_pointer (&stream->pending_tags, gst_tag_list_unref);
 
-  g_object_unref (stream->adapter);
-
   g_free (stream);
 }
 
@@ -1246,232 +1301,256 @@
   return klass->seek != NULL;
 }
 
-#define IS_SNAP_SEEK(f) (f & (GST_SEEK_FLAG_SNAP_BEFORE | \
-                              GST_SEEK_FLAG_SNAP_AFTER | \
-                              GST_SEEK_FLAG_SNAP_NEAREST))
+#define IS_SNAP_SEEK(f) (f & (GST_SEEK_FLAG_SNAP_BEFORE |	  \
+                              GST_SEEK_FLAG_SNAP_AFTER |	  \
+                              GST_SEEK_FLAG_SNAP_NEAREST |	  \
+			      GST_SEEK_FLAG_TRICKMODE_KEY_UNITS | \
+			      GST_SEEK_FLAG_KEY_UNIT))
 #define REMOVE_SNAP_FLAGS(f) (f & ~(GST_SEEK_FLAG_SNAP_BEFORE | \
                               GST_SEEK_FLAG_SNAP_AFTER | \
                               GST_SEEK_FLAG_SNAP_NEAREST))
 
 static gboolean
+gst_adaptive_demux_handle_seek_event (GstAdaptiveDemux * demux, GstPad * pad,
+    GstEvent * event)
+{
+  GstAdaptiveDemuxClass *demux_class = GST_ADAPTIVE_DEMUX_GET_CLASS (demux);
+  gdouble rate;
+  GstFormat format;
+  GstSeekFlags flags;
+  GstSeekType start_type, stop_type;
+  gint64 start, stop;
+  guint32 seqnum;
+  gboolean update;
+  gboolean ret;
+  GstSegment oldsegment;
+  GstAdaptiveDemuxStream *stream = NULL;
+
+  GST_INFO_OBJECT (demux, "Received seek event");
+
+  GST_API_LOCK (demux);
+  GST_MANIFEST_LOCK (demux);
+
+  if (!gst_adaptive_demux_can_seek (demux)) {
+    GST_MANIFEST_UNLOCK (demux);
+    GST_API_UNLOCK (demux);
+    gst_event_unref (event);
+    return FALSE;
+  }
+
+  gst_event_parse_seek (event, &rate, &format, &flags, &start_type, &start,
+      &stop_type, &stop);
+
+  if (format != GST_FORMAT_TIME) {
+    GST_MANIFEST_UNLOCK (demux);
+    GST_API_UNLOCK (demux);
+    gst_event_unref (event);
+    return FALSE;
+  }
+
+  if (gst_adaptive_demux_is_live (demux)) {
+    gint64 range_start, range_stop;
+    if (!gst_adaptive_demux_get_live_seek_range (demux, &range_start,
+            &range_stop)) {
+      GST_MANIFEST_UNLOCK (demux);
+      GST_API_UNLOCK (demux);
+      gst_event_unref (event);
+      return FALSE;
+    }
+
+    if (!(flags & GST_SEEK_FLAG_ACCURATE)) {
+      /* If the accurate flag is not set, we allow seeking before the start
+       * to map to the start for live cases, since those can return a "moving
+       * target" based on wall time.
+       */
+      if (start < range_start) {
+        guint64 dt = range_start - start;
+        GST_DEBUG_OBJECT (demux,
+            "Non accurate seek before live stream start, offsetting by %"
+            GST_TIME_FORMAT, GST_TIME_ARGS (dt));
+        start = range_start;
+        if (stop != GST_CLOCK_TIME_NONE)
+          stop += dt;
+      }
+    }
+
+    if (start < range_start || start >= range_stop) {
+      GST_MANIFEST_UNLOCK (demux);
+      GST_API_UNLOCK (demux);
+      GST_WARNING_OBJECT (demux, "Seek to invalid position");
+      gst_event_unref (event);
+      return FALSE;
+    }
+  }
+
+  seqnum = gst_event_get_seqnum (event);
+
+  GST_DEBUG_OBJECT (demux, "seek event, %" GST_PTR_FORMAT, event);
+
+  /* have a backup in case seek fails */
+  gst_segment_copy_into (&demux->segment, &oldsegment);
+
+  if (flags & GST_SEEK_FLAG_FLUSH) {
+    GstEvent *fevent;
+
+    GST_DEBUG_OBJECT (demux, "sending flush start");
+    fevent = gst_event_new_flush_start ();
+    gst_event_set_seqnum (fevent, seqnum);
+    gst_adaptive_demux_push_src_event (demux, fevent);
+
+    gst_adaptive_demux_stop_tasks (demux);
+  } else if ((rate > 0 && start_type != GST_SEEK_TYPE_NONE) ||
+      (rate < 0 && stop_type != GST_SEEK_TYPE_NONE)) {
+
+    gst_adaptive_demux_stop_tasks (demux);
+  }
+
+  GST_ADAPTIVE_DEMUX_SEGMENT_LOCK (demux);
+
+  /*
+   * Handle snap seeks as follows:
+   * 1) do the snap seeking on the stream that received
+   *    the event
+   * 2) use the final position on this stream to seek
+   *    on the other streams to the same position
+   *
+   * We can't snap at all streams at the same time as
+   * they might end in different positions, so just
+   * use the one that received the event as the 'leading'
+   * one to do the snap seek.
+   */
+  if (IS_SNAP_SEEK (flags) && demux_class->stream_seek && (stream =
+          gst_adaptive_demux_find_stream_for_pad (demux, pad))) {
+    GstClockTime ts;
+    GstSeekFlags stream_seek_flags = flags;
+
+    /* snap-seek on the stream that received the event and then
+     * use the resulting position to seek on all streams */
+
+    if (rate >= 0) {
+      if (start_type != GST_SEEK_TYPE_NONE)
+        ts = start;
+      else {
+        ts = stream->segment.position;
+        start_type = GST_SEEK_TYPE_SET;
+      }
+    } else {
+      if (stop_type != GST_SEEK_TYPE_NONE)
+        ts = stop;
+      else {
+        stop_type = GST_SEEK_TYPE_SET;
+        ts = stream->segment.position;
+      }
+    }
+
+    if (stream) {
+      demux_class->stream_seek (stream, rate >= 0, stream_seek_flags, ts, &ts);
+    }
+
+    /* replace event with a new one without snaping to seek on all streams */
+    gst_event_unref (event);
+    if (rate >= 0) {
+      start = ts;
+    } else {
+      stop = ts;
+    }
+    event =
+        gst_event_new_seek (rate, format, REMOVE_SNAP_FLAGS (flags),
+        start_type, start, stop_type, stop);
+    GST_DEBUG_OBJECT (demux, "Adapted snap seek to %" GST_PTR_FORMAT, event);
+  }
+  stream = NULL;
+
+  gst_segment_do_seek (&demux->segment, rate, format, flags, start_type,
+      start, stop_type, stop, &update);
+
+  /* FIXME - this seems unatural, do_seek() is updating base when we
+   * only want the start/stop position to change, maybe do_seek() needs
+   * some fixing? */
+  if (!(flags & GST_SEEK_FLAG_FLUSH) && ((rate > 0
+              && start_type == GST_SEEK_TYPE_NONE) || (rate < 0
+              && stop_type == GST_SEEK_TYPE_NONE))) {
+    demux->segment.base = oldsegment.base;
+  }
+
+  GST_DEBUG_OBJECT (demux, "Calling subclass seek: %" GST_PTR_FORMAT, event);
+
+  ret = demux_class->seek (demux, event);
+
+  if (!ret) {
+    /* Is there anything else we can do if it fails? */
+    gst_segment_copy_into (&oldsegment, &demux->segment);
+  } else {
+    demux->priv->segment_seqnum = seqnum;
+  }
+  GST_ADAPTIVE_DEMUX_SEGMENT_UNLOCK (demux);
+
+  if (flags & GST_SEEK_FLAG_FLUSH) {
+    GstEvent *fevent;
+
+    GST_DEBUG_OBJECT (demux, "Sending flush stop on all pad");
+    fevent = gst_event_new_flush_stop (TRUE);
+    gst_event_set_seqnum (fevent, seqnum);
+    gst_adaptive_demux_push_src_event (demux, fevent);
+  }
+
+  if (demux->next_streams) {
+    gst_adaptive_demux_expose_streams (demux, FALSE);
+  } else {
+    GList *iter;
+    GstClockTime period_start =
+        gst_adaptive_demux_get_period_start_time (demux);
+
+    GST_ADAPTIVE_DEMUX_SEGMENT_LOCK (demux);
+    for (iter = demux->streams; iter; iter = g_list_next (iter)) {
+      GstAdaptiveDemuxStream *stream = iter->data;
+      GstEvent *seg_evt;
+      GstClockTime offset;
+
+      /* See comments in gst_adaptive_demux_get_period_start_time() for
+       * an explanation of the segment modifications */
+      stream->segment = demux->segment;
+      offset =
+          gst_adaptive_demux_stream_get_presentation_offset (demux, stream);
+      stream->segment.start += offset - period_start;
+      if (demux->segment.rate > 0 && start_type != GST_SEEK_TYPE_NONE)
+        stream->segment.position = stream->segment.start;
+      else if (demux->segment.rate < 0 && stop_type != GST_SEEK_TYPE_NONE)
+        stream->segment.position = stream->segment.stop;
+      seg_evt = gst_event_new_segment (&stream->segment);
+      gst_event_set_seqnum (seg_evt, demux->priv->segment_seqnum);
+      gst_event_replace (&stream->pending_segment, seg_evt);
+      gst_event_unref (seg_evt);
+      /* Make sure the first buffer after a seek has the discont flag */
+      stream->discont = TRUE;
+    }
+
+    GST_ADAPTIVE_DEMUX_SEGMENT_UNLOCK (demux);
+  }
+
+  /* Restart the demux */
+  gst_adaptive_demux_start_tasks (demux);
+  GST_MANIFEST_UNLOCK (demux);
+  GST_API_UNLOCK (demux);
+  gst_event_unref (event);
+
+  return ret;
+}
+
+static gboolean
 gst_adaptive_demux_src_event (GstPad * pad, GstObject * parent,
     GstEvent * event)
 {
   GstAdaptiveDemux *demux;
-  GstAdaptiveDemuxClass *demux_class;
 
   demux = GST_ADAPTIVE_DEMUX_CAST (parent);
-  demux_class = GST_ADAPTIVE_DEMUX_GET_CLASS (demux);
 
   /* FIXME handle events received on pads that are to be removed */
 
   switch (event->type) {
     case GST_EVENT_SEEK:
     {
-      gdouble rate;
-      GstFormat format;
-      GstSeekFlags flags;
-      GstSeekType start_type, stop_type;
-      gint64 start, stop;
-      guint32 seqnum;
-      gboolean update;
-      gboolean ret;
-      GstSegment oldsegment;
-      GstAdaptiveDemuxStream *stream = NULL;
-
-      GST_INFO_OBJECT (demux, "Received seek event");
-
-      GST_API_LOCK (demux);
-      GST_MANIFEST_LOCK (demux);
-
-      if (!gst_adaptive_demux_can_seek (demux)) {
-        GST_MANIFEST_UNLOCK (demux);
-        GST_API_UNLOCK (demux);
-        gst_event_unref (event);
-        return FALSE;
-      }
-
-      gst_event_parse_seek (event, &rate, &format, &flags, &start_type, &start,
-          &stop_type, &stop);
-
-      if (format != GST_FORMAT_TIME) {
-        GST_MANIFEST_UNLOCK (demux);
-        GST_API_UNLOCK (demux);
-        gst_event_unref (event);
-        return FALSE;
-      }
-
-      if (gst_adaptive_demux_is_live (demux)) {
-        gint64 range_start, range_stop;
-        if (!gst_adaptive_demux_get_live_seek_range (demux, &range_start,
-                &range_stop)) {
-          GST_MANIFEST_UNLOCK (demux);
-          GST_API_UNLOCK (demux);
-          gst_event_unref (event);
-          return FALSE;
-        }
-        if (start < range_start || start >= range_stop) {
-          GST_MANIFEST_UNLOCK (demux);
-          GST_API_UNLOCK (demux);
-          GST_WARNING_OBJECT (demux, "Seek to invalid position");
-          gst_event_unref (event);
-          return FALSE;
-        }
-      }
-
-      seqnum = gst_event_get_seqnum (event);
-
-      GST_DEBUG_OBJECT (demux, "seek event, %" GST_PTR_FORMAT, event);
-
-      /* have a backup in case seek fails */
-      gst_segment_copy_into (&demux->segment, &oldsegment);
-
-      if (flags & GST_SEEK_FLAG_FLUSH) {
-        GstEvent *fevent;
-
-        GST_DEBUG_OBJECT (demux, "sending flush start");
-        fevent = gst_event_new_flush_start ();
-        gst_event_set_seqnum (fevent, seqnum);
-        gst_adaptive_demux_push_src_event (demux, fevent);
-
-        gst_adaptive_demux_stop_tasks (demux);
-      } else if ((rate > 0 && start_type != GST_SEEK_TYPE_NONE) ||
-          (rate < 0 && stop_type != GST_SEEK_TYPE_NONE)) {
-
-        gst_adaptive_demux_stop_tasks (demux);
-      }
-
-      GST_ADAPTIVE_DEMUX_SEGMENT_LOCK (demux);
-
-      /*
-       * Handle snap seeks as follows:
-       * 1) do the snap seeking on the stream that received
-       *    the event
-       * 2) use the final position on this stream to seek
-       *    on the other streams to the same position
-       *
-       * We can't snap at all streams at the same time as
-       * they might end in different positions, so just
-       * use the one that received the event as the 'leading'
-       * one to do the snap seek.
-       */
-      if (IS_SNAP_SEEK (flags) && demux_class->stream_seek && (stream =
-              gst_adaptive_demux_find_stream_for_pad (demux, pad))) {
-        GstClockTime ts;
-        GstSeekFlags stream_seek_flags = flags;
-
-        /* snap-seek on the stream that received the event and then
-         * use the resulting position to seek on all streams */
-
-        if (rate >= 0) {
-          if (start_type != GST_SEEK_TYPE_NONE)
-            ts = start;
-          else {
-            ts = stream->segment.position;
-            start_type = GST_SEEK_TYPE_SET;
-          }
-        } else {
-          if (stop_type != GST_SEEK_TYPE_NONE)
-            ts = stop;
-          else {
-            stop_type = GST_SEEK_TYPE_SET;
-            ts = stream->segment.position;
-          }
-        }
-
-        if (stream) {
-          demux_class->stream_seek (stream, rate >= 0, stream_seek_flags, ts,
-              &ts);
-        }
-
-        /* replace event with a new one without snaping to seek on all streams */
-        gst_event_unref (event);
-        if (rate >= 0) {
-          start = ts;
-        } else {
-          stop = ts;
-        }
-        event =
-            gst_event_new_seek (rate, format, REMOVE_SNAP_FLAGS (flags),
-            start_type, start, stop_type, stop);
-        GST_DEBUG_OBJECT (demux, "Adapted snap seek to %" GST_PTR_FORMAT,
-            event);
-      }
-      stream = NULL;
-
-      gst_segment_do_seek (&demux->segment, rate, format, flags, start_type,
-          start, stop_type, stop, &update);
-
-      /* FIXME - this seems unatural, do_seek() is updating base when we
-       * only want the start/stop position to change, maybe do_seek() needs
-       * some fixing? */
-      if (!(flags & GST_SEEK_FLAG_FLUSH) && ((rate > 0
-                  && start_type == GST_SEEK_TYPE_NONE) || (rate < 0
-                  && stop_type == GST_SEEK_TYPE_NONE))) {
-        demux->segment.base = oldsegment.base;
-      }
-
-      GST_DEBUG_OBJECT (demux, "Calling subclass seek: %" GST_PTR_FORMAT,
-          event);
-
-      ret = demux_class->seek (demux, event);
-
-      if (!ret) {
-        /* Is there anything else we can do if it fails? */
-        gst_segment_copy_into (&oldsegment, &demux->segment);
-      } else {
-        demux->priv->segment_seqnum = seqnum;
-      }
-      GST_ADAPTIVE_DEMUX_SEGMENT_UNLOCK (demux);
-
-      if (flags & GST_SEEK_FLAG_FLUSH) {
-        GstEvent *fevent;
-
-        GST_DEBUG_OBJECT (demux, "Sending flush stop on all pad");
-        fevent = gst_event_new_flush_stop (TRUE);
-        gst_event_set_seqnum (fevent, seqnum);
-        gst_adaptive_demux_push_src_event (demux, fevent);
-      }
-
-      if (demux->next_streams) {
-        gst_adaptive_demux_expose_streams (demux, FALSE);
-      } else {
-        GList *iter;
-        GstClockTime period_start =
-            gst_adaptive_demux_get_period_start_time (demux);
-
-        GST_ADAPTIVE_DEMUX_SEGMENT_LOCK (demux);
-        for (iter = demux->streams; iter; iter = g_list_next (iter)) {
-          GstAdaptiveDemuxStream *stream = iter->data;
-          GstEvent *seg_evt;
-          GstClockTime offset;
-
-          /* See comments in gst_adaptive_demux_get_period_start_time() for
-           * an explanation of the segment modifications */
-          stream->segment = demux->segment;
-          offset =
-              gst_adaptive_demux_stream_get_presentation_offset (demux, stream);
-          stream->segment.start += offset - period_start;
-          if (demux->segment.rate > 0 && start_type != GST_SEEK_TYPE_NONE)
-            stream->segment.position = stream->segment.start;
-          else if (demux->segment.rate < 0 && stop_type != GST_SEEK_TYPE_NONE)
-            stream->segment.position = stream->segment.stop;
-          seg_evt = gst_event_new_segment (&stream->segment);
-          gst_event_set_seqnum (seg_evt, demux->priv->segment_seqnum);
-          gst_event_replace (&stream->pending_segment, seg_evt);
-          gst_event_unref (seg_evt);
-        }
-
-        GST_ADAPTIVE_DEMUX_SEGMENT_UNLOCK (demux);
-      }
-
-      /* Restart the demux */
-      gst_adaptive_demux_start_tasks (demux);
-      GST_MANIFEST_UNLOCK (demux);
-      GST_API_UNLOCK (demux);
-      gst_event_unref (event);
-
-      return ret;
+      return gst_adaptive_demux_handle_seek_event (demux, pad, event);
     }
     case GST_EVENT_RECONFIGURE:{
       GstAdaptiveDemuxStream *stream;
@@ -1694,7 +1773,7 @@
     GST_MANIFEST_UNLOCK (demux);
 
     if (src) {
-      gst_element_set_locked_state (stream->src, TRUE);
+      gst_element_set_locked_state (src, TRUE);
       gst_element_set_state (src, GST_STATE_READY);
     }
 
@@ -1720,7 +1799,6 @@
 
     stream->download_error_count = 0;
     stream->need_header = TRUE;
-    gst_adapter_clear (stream->adapter);
   }
 }
 
@@ -1824,6 +1902,19 @@
   GST_DEBUG_OBJECT (demux, "Bitrate after bitrate limit (%0.2f): %"
       G_GUINT64_FORMAT, demux->bitrate_limit,
       stream->current_download_rate * 8);
+
+#if 0
+  /* Debugging code, modulate the bitrate every few fragments */
+  {
+    static guint ctr = 0;
+    if (ctr % 3 == 0) {
+      GST_INFO_OBJECT (demux, "Halving reported bitrate for debugging");
+      stream->current_download_rate /= 2;
+    }
+    ctr++;
+  }
+#endif
+
   return stream->current_download_rate;
 }
 
@@ -2018,12 +2109,8 @@
  */
 static GstFlowReturn
 gst_adaptive_demux_stream_data_received_default (GstAdaptiveDemux * demux,
-    GstAdaptiveDemuxStream * stream)
+    GstAdaptiveDemuxStream * stream, GstBuffer * buffer)
 {
-  GstBuffer *buffer;
-
-  buffer = gst_adapter_take_buffer (stream->adapter,
-      gst_adapter_available (stream->adapter));
   return gst_adaptive_demux_stream_push_buffer (stream, buffer);
 }
 
@@ -2119,15 +2206,14 @@
   }
 
   stream->download_total_time +=
-      g_get_monotonic_time () - stream->download_chunk_start_time;
+      GST_TIME_AS_USECONDS (gst_adaptive_demux_get_monotonic_time (demux)) -
+      stream->download_chunk_start_time;
   stream->download_total_bytes += gst_buffer_get_size (buffer);
 
-  gst_adapter_push (stream->adapter, buffer);
-  GST_DEBUG_OBJECT (stream->pad, "Received buffer of size %" G_GSIZE_FORMAT
-      ". Now %" G_GSIZE_FORMAT " on adapter", gst_buffer_get_size (buffer),
-      gst_adapter_available (stream->adapter));
+  GST_DEBUG_OBJECT (stream->pad, "Received buffer of size %" G_GSIZE_FORMAT,
+      gst_buffer_get_size (buffer));
 
-  ret = klass->data_received (demux, stream);
+  ret = klass->data_received (demux, stream, buffer);
 
   if (ret == GST_FLOW_FLUSHING) {
     /* do not make any changes if the stream is cancelled */
@@ -2140,12 +2226,14 @@
     g_mutex_unlock (&stream->fragment_download_lock);
   }
 
-  stream->download_chunk_start_time = g_get_monotonic_time ();
+  stream->download_chunk_start_time =
+      GST_TIME_AS_USECONDS (gst_adaptive_demux_get_monotonic_time (demux));
 
   if (ret != GST_FLOW_OK) {
+    gboolean finished = FALSE;
+
     if (ret < GST_FLOW_EOS) {
-      GST_ELEMENT_ERROR (demux, STREAM, FAILED, (NULL),
-          ("stream stopped, reason %s", gst_flow_get_name (ret)));
+      GST_ELEMENT_FLOW_ERROR (demux, ret);
 
       /* TODO push this on all pads */
       gst_pad_push_event (stream->pad, gst_event_new_eos ());
@@ -2154,9 +2242,23 @@
           gst_flow_get_name (ret));
     }
 
-    gst_adaptive_demux_stream_fragment_download_finish (stream, ret, NULL);
-    if (ret == (GstFlowReturn) GST_ADAPTIVE_DEMUX_FLOW_SWITCH)
+    if (ret == (GstFlowReturn) GST_ADAPTIVE_DEMUX_FLOW_SWITCH) {
       ret = GST_FLOW_EOS;       /* return EOS to make the source stop */
+    } else if (ret == GST_ADAPTIVE_DEMUX_FLOW_END_OF_FRAGMENT) {
+      /* Behaves like an EOS event from upstream */
+      stream->fragment.finished = TRUE;
+      ret = klass->finish_fragment (demux, stream);
+      if (ret == (GstFlowReturn) GST_ADAPTIVE_DEMUX_FLOW_SWITCH) {
+        ret = GST_FLOW_EOS;     /* return EOS to make the source stop */
+      } else if (ret != GST_FLOW_OK) {
+        goto error;
+      }
+      finished = TRUE;
+    }
+
+    gst_adaptive_demux_stream_fragment_download_finish (stream, ret, NULL);
+    if (finished)
+      ret = GST_FLOW_EOS;
   }
 
 error:
@@ -2189,6 +2291,23 @@
   g_mutex_unlock (&stream->fragment_download_lock);
 }
 
+static GstFlowReturn
+gst_adaptive_demux_eos_handling (GstAdaptiveDemuxStream * stream)
+{
+  GstFlowReturn ret = GST_FLOW_OK;
+  GstAdaptiveDemuxClass *klass = GST_ADAPTIVE_DEMUX_GET_CLASS (stream->demux);
+
+  if (!klass->need_another_chunk || stream->fragment.chunk_size == -1
+      || !klass->need_another_chunk (stream)
+      || stream->fragment.chunk_size == 0) {
+    stream->fragment.finished = TRUE;
+    ret = klass->finish_fragment (stream->demux, stream);
+  }
+  gst_adaptive_demux_stream_fragment_download_finish (stream, ret, NULL);
+
+  return ret;
+}
+
 static gboolean
 _src_event (GstPad * pad, GstObject * parent, GstEvent * event)
 {
@@ -2197,14 +2316,14 @@
 
   switch (GST_EVENT_TYPE (event)) {
     case GST_EVENT_EOS:{
-      GstAdaptiveDemuxClass *klass;
-      GstFlowReturn ret;
-
       GST_MANIFEST_LOCK (demux);
 
-      klass = GST_ADAPTIVE_DEMUX_GET_CLASS (demux);
-      ret = klass->finish_fragment (demux, stream);
-      gst_adaptive_demux_stream_fragment_download_finish (stream, ret, NULL);
+      gst_adaptive_demux_eos_handling (stream);
+
+      g_mutex_lock (&stream->fragment_download_lock);
+      stream->download_finished = TRUE;
+      g_cond_signal (&stream->fragment_download_cond);
+      g_mutex_unlock (&stream->fragment_download_lock);
 
       GST_MANIFEST_UNLOCK (demux);
       break;
@@ -2316,12 +2435,16 @@
     new_protocol = gst_uri_get_protocol (uri);
 
     if (!g_str_equal (old_protocol, new_protocol)) {
-      gst_object_unref (stream->src_srcpad);
-      gst_element_set_locked_state (stream->src, TRUE);
-      gst_element_set_state (stream->src, GST_STATE_NULL);
-      gst_bin_remove (GST_BIN_CAST (demux), stream->src);
+      GstElement *src = stream->src;
+
       stream->src = NULL;
+      gst_object_unref (stream->src_srcpad);
       stream->src_srcpad = NULL;
+      GST_MANIFEST_UNLOCK (demux);
+      gst_element_set_locked_state (src, TRUE);
+      gst_element_set_state (src, GST_STATE_NULL);
+      gst_bin_remove (GST_BIN_CAST (demux), src);
+      GST_MANIFEST_LOCK (demux);
       GST_DEBUG_OBJECT (demux, "Can't re-use old source element");
     } else {
       GError *err = NULL;
@@ -2329,15 +2452,19 @@
       GST_DEBUG_OBJECT (demux, "Re-using old source element");
       if (!gst_uri_handler_set_uri (GST_URI_HANDLER (stream->uri_handler), uri,
               &err)) {
+        GstElement *src = stream->src;
+
+        stream->src = NULL;
         GST_DEBUG_OBJECT (demux, "Failed to re-use old source element: %s",
             err->message);
         g_clear_error (&err);
         gst_object_unref (stream->src_srcpad);
-        gst_element_set_locked_state (stream->src, TRUE);
-        gst_element_set_state (stream->src, GST_STATE_NULL);
-        gst_bin_remove (GST_BIN_CAST (demux), stream->src);
-        stream->src = NULL;
         stream->src_srcpad = NULL;
+        GST_MANIFEST_UNLOCK (demux);
+        gst_element_set_locked_state (src, TRUE);
+        gst_element_set_state (src, GST_STATE_NULL);
+        gst_bin_remove (GST_BIN_CAST (demux), src);
+        GST_MANIFEST_LOCK (demux);
       }
     }
     g_free (old_uri);
@@ -2470,11 +2597,12 @@
 
     stream->uri_handler = uri_handler;
     stream->queue = queue;
+
+    stream->last_status_code = 200;     /* default to OK */
   }
   return TRUE;
 }
 
-
 static GstPadProbeReturn
 gst_ad_stream_src_to_ready_cb (GstPad * pad, GstPadProbeInfo * info,
     gpointer user_data)
@@ -2490,17 +2618,33 @@
   return GST_PAD_PROBE_OK;
 }
 
+#ifndef GST_DISABLE_GST_DEBUG
+static const char *
+uritype (GstAdaptiveDemuxStream * s)
+{
+  if (s->downloading_header)
+    return "header";
+  if (s->downloading_index)
+    return "index";
+  return "fragment";
+}
+#endif
+
 /* must be called with manifest_lock taken.
  * Can temporarily release manifest_lock
  */
 static GstFlowReturn
 gst_adaptive_demux_stream_download_uri (GstAdaptiveDemux * demux,
     GstAdaptiveDemuxStream * stream, const gchar * uri, gint64 start,
-    gint64 end)
+    gint64 end, guint * http_status)
 {
   GstFlowReturn ret = GST_FLOW_OK;
-  GST_DEBUG_OBJECT (stream->pad, "Downloading uri: %s, range:%" G_GINT64_FORMAT
-      " - %" G_GINT64_FORMAT, uri, start, end);
+  GST_DEBUG_OBJECT (stream->pad,
+      "Downloading %s uri: %s, range:%" G_GINT64_FORMAT " - %" G_GINT64_FORMAT,
+      uritype (stream), uri, start, end);
+
+  if (http_status)
+    *http_status = 200;         /* default to ok if no further information */
 
   if (!gst_adaptive_demux_stream_update_source (stream, uri, NULL, FALSE, TRUE)) {
     ret = stream->last_ret = GST_FLOW_ERROR;
@@ -2509,6 +2653,7 @@
 
   gst_element_set_locked_state (stream->src, TRUE);
 
+  GST_MANIFEST_UNLOCK (demux);
   if (gst_element_set_state (stream->src,
           GST_STATE_READY) != GST_STATE_CHANGE_FAILURE) {
     if (start != 0 || end != -1) {
@@ -2522,18 +2667,24 @@
                   GST_FORMAT_BYTES, (GstSeekFlags) GST_SEEK_FLAG_FLUSH,
                   GST_SEEK_TYPE_SET, start, GST_SEEK_TYPE_SET, end))) {
 
+        GST_MANIFEST_LOCK (demux);
         /* looks like the source can't handle seeks in READY */
         g_clear_error (&stream->last_error);
         stream->last_error = g_error_new (GST_CORE_ERROR,
             GST_CORE_ERROR_NOT_IMPLEMENTED,
             "Source element can't handle range requests");
         stream->last_ret = GST_FLOW_ERROR;
+      } else {
+        GST_MANIFEST_LOCK (demux);
       }
+    } else {
+      GST_MANIFEST_LOCK (demux);
     }
 
     if (G_LIKELY (stream->last_ret == GST_FLOW_OK)) {
-      stream->download_start_time = g_get_monotonic_time ();
-      stream->download_chunk_start_time = g_get_monotonic_time ();
+      stream->download_start_time =
+          GST_TIME_AS_USECONDS (gst_adaptive_demux_get_monotonic_time (demux));
+      stream->download_chunk_start_time = stream->download_start_time;
 
       /* src element is in state READY. Before we start it, we reset
        * download_finished
@@ -2554,7 +2705,7 @@
 
       /* wait for the fragment to be completely downloaded */
       GST_DEBUG_OBJECT (stream->pad,
-          "Waiting for fragment download to finish: %s", uri);
+          "Waiting for %s download to finish: %s", uritype (stream), uri);
 
       g_mutex_lock (&stream->fragment_download_lock);
       stream->src_at_ready = FALSE;
@@ -2581,10 +2732,15 @@
 
       ret = stream->last_ret;
 
-      GST_DEBUG_OBJECT (stream->pad, "Fragment download finished: %s %d %s",
-          uri, stream->last_ret, gst_flow_get_name (stream->last_ret));
+      GST_DEBUG_OBJECT (stream->pad, "%s download finished: %s %d %s",
+          uritype (stream), uri, stream->last_ret,
+          gst_flow_get_name (stream->last_ret));
+      if (stream->last_ret != GST_FLOW_OK && http_status) {
+        *http_status = stream->last_status_code;
+      }
     }
   } else {
+    GST_MANIFEST_UNLOCK (demux);
     if (stream->last_ret == GST_FLOW_OK)
       stream->last_ret = GST_FLOW_CUSTOM_ERROR;
     ret = GST_FLOW_CUSTOM_ERROR;
@@ -2646,7 +2802,7 @@
     stream->downloading_header = TRUE;
     ret = gst_adaptive_demux_stream_download_uri (demux, stream,
         stream->fragment.header_uri, stream->fragment.header_range_start,
-        stream->fragment.header_range_end);
+        stream->fragment.header_range_end, NULL);
     stream->downloading_header = FALSE;
   }
 
@@ -2661,7 +2817,7 @@
       stream->downloading_index = TRUE;
       ret = gst_adaptive_demux_stream_download_uri (demux, stream,
           stream->fragment.index_uri, stream->fragment.index_range_start,
-          stream->fragment.index_range_end);
+          stream->fragment.index_range_end, NULL);
       stream->downloading_index = FALSE;
     }
   }
@@ -2676,8 +2832,12 @@
 gst_adaptive_demux_stream_download_fragment (GstAdaptiveDemuxStream * stream)
 {
   GstAdaptiveDemux *demux = stream->demux;
+  GstAdaptiveDemuxClass *klass = GST_ADAPTIVE_DEMUX_GET_CLASS (demux);
   gchar *url = NULL;
-  GstFlowReturn ret = GST_FLOW_OK;
+  GstFlowReturn ret;
+  gboolean retried_once = FALSE, live;
+  guint http_status;
+  guint last_status_code;
 
   stream->starting_fragment = TRUE;
   stream->last_ret = GST_FLOW_OK;
@@ -2695,43 +2855,199 @@
     stream->need_header = FALSE;
   }
 
+again:
+  ret = GST_FLOW_OK;
   url = stream->fragment.uri;
   GST_DEBUG_OBJECT (stream->pad, "Got url '%s' for stream %p", url, stream);
-  if (url) {
+  if (!url)
+    return ret;
+
+  stream->last_ret = GST_FLOW_OK;
+  http_status = 200;
+
+  if (klass->need_another_chunk && klass->need_another_chunk (stream)
+      && stream->fragment.chunk_size != 0) {
+    gint64 range_start, range_end, chunk_start, chunk_end;
+    guint64 download_total_bytes;
+    gint chunk_size = stream->fragment.chunk_size;
+
+    range_start = chunk_start = stream->fragment.range_start;
+    range_end = stream->fragment.range_end;
+    /* HTTP ranges are inclusive for the end */
+    if (chunk_size != -1)
+      chunk_end = range_start + chunk_size - 1;
+    else
+      chunk_end = range_end;
+
+    if (range_end != -1)
+      chunk_end = MIN (chunk_end, range_end);
+
+    while (!stream->fragment.finished && (chunk_start <= range_end
+            || range_end == -1)) {
+      download_total_bytes = stream->download_total_bytes;
+
+      ret =
+          gst_adaptive_demux_stream_download_uri (demux, stream, url,
+          chunk_start, chunk_end, &http_status);
+
+      GST_DEBUG_OBJECT (stream->pad,
+          "Fragment chunk download result: %d (%d) %s", stream->last_ret,
+          http_status, gst_flow_get_name (stream->last_ret));
+
+      /* Don't retry for any chunks except the first. We would have sent
+       * data downstream already otherwise and it's difficult to recover
+       * from that in a meaningful way */
+      if (chunk_start > range_start)
+        retried_once = TRUE;
+
+      /* FIXME: Check for 416 Range Not Satisfiable here and fall back to
+       * downloading up to -1. We don't know the full duration.
+       * Needs https://bugzilla.gnome.org/show_bug.cgi?id=756806 */
+      if (ret != GST_FLOW_OK && chunk_end == -1) {
+        break;
+      } else if (ret != GST_FLOW_OK) {
+        chunk_end = -1;
+        stream->last_ret = GST_FLOW_OK;
+        continue;
+      }
+
+      if (chunk_end == -1)
+        break;
+
+      /* Short read, we're at the end now */
+      if (stream->download_total_bytes - download_total_bytes <
+          chunk_end + 1 - chunk_start)
+        break;
+
+      if (!klass->need_another_chunk (stream))
+        break;
+
+      /* HTTP ranges are inclusive for the end */
+      chunk_start += chunk_size;
+      chunk_size = stream->fragment.chunk_size;
+      if (chunk_size != -1)
+        chunk_end = chunk_start + chunk_size - 1;
+      else
+        chunk_end = range_end;
+
+      if (range_end != -1)
+        chunk_end = MIN (chunk_end, range_end);
+    }
+  } else {
     ret =
         gst_adaptive_demux_stream_download_uri (demux, stream, url,
-        stream->fragment.range_start, stream->fragment.range_end);
-    GST_DEBUG_OBJECT (stream->pad, "Fragment download result: %d %s",
-        stream->last_ret, gst_flow_get_name (stream->last_ret));
-    if (ret != GST_FLOW_OK) {
-      g_mutex_lock (&stream->fragment_download_lock);
-      if (G_UNLIKELY (stream->cancelled)) {
-        g_mutex_unlock (&stream->fragment_download_lock);
-        return ret;
-      }
-      g_mutex_unlock (&stream->fragment_download_lock);
+        stream->fragment.range_start, stream->fragment.range_end, &http_status);
+    GST_DEBUG_OBJECT (stream->pad, "Fragment download result: %d (%d) %s",
+        stream->last_ret, http_status, gst_flow_get_name (stream->last_ret));
+  }
+  if (ret == GST_FLOW_OK)
+    goto beach;
 
-      /* TODO check if we are truly stopping */
-      if (ret == GST_FLOW_CUSTOM_ERROR && gst_adaptive_demux_is_live (demux)) {
-        if (++stream->download_error_count <= MAX_DOWNLOAD_ERROR_COUNT) {
-          /* looks like there is no way of knowing when a live stream has ended
-           * Have to assume we are falling behind and cause a manifest reload */
-          GST_DEBUG_OBJECT (stream->pad,
-              "Converting error of live stream to EOS");
-          return GST_FLOW_EOS;
+  g_mutex_lock (&stream->fragment_download_lock);
+  if (G_UNLIKELY (stream->cancelled)) {
+    g_mutex_unlock (&stream->fragment_download_lock);
+    return ret;
+  }
+  g_mutex_unlock (&stream->fragment_download_lock);
+
+  /* TODO check if we are truly stopping */
+  if (ret != GST_FLOW_CUSTOM_ERROR)
+    goto beach;
+
+  last_status_code = stream->last_status_code;
+  GST_WARNING_OBJECT (stream->pad, "Got custom error, status %u, dc %d",
+      last_status_code, stream->download_error_count);
+
+  live = gst_adaptive_demux_is_live (demux);
+  if (!retried_once && ((last_status_code / 100 == 4 && live) || last_status_code / 100 == 5)) {        /* 4xx/5xx */
+    /* if current position is before available start, switch to next */
+    if (!gst_adaptive_demux_stream_has_next_fragment (demux, stream))
+      goto flushing;
+
+    if (live) {
+      gint64 range_start, range_stop;
+
+      if (!gst_adaptive_demux_get_live_seek_range (demux, &range_start,
+              &range_stop))
+        goto flushing;
+
+      if (demux->segment.position < range_start) {
+        GST_DEBUG_OBJECT (stream->pad, "Retrying once with next segment");
+        stream->last_ret = GST_FLOW_OK;
+        ret = gst_adaptive_demux_eos_handling (stream);
+        GST_DEBUG_OBJECT (stream->pad, "finish_fragment: %s",
+            gst_flow_get_name (ret));
+        ret = gst_adaptive_demux_stream_update_fragment_info (demux, stream);
+        GST_DEBUG_OBJECT (stream->pad, "finish_fragment: %s",
+            gst_flow_get_name (ret));
+        if (ret == GST_FLOW_OK) {
+          retried_once = TRUE;
+          goto again;
         }
-      } else if (ret == GST_FLOW_CUSTOM_ERROR
-          && !gst_adaptive_demux_stream_has_next_fragment (demux, stream)) {
-        /* If this is the last fragment, consider failures EOS and not actual
-         * errors. Due to rounding errors in the durations, the last fragment
-         * might not actually exist */
-        GST_DEBUG_OBJECT (stream->pad,
-            "Converting error for last fragment to EOS");
-        return GST_FLOW_EOS;
+      } else if (demux->segment.position > range_stop) {
+        /* wait a bit to be in range, we don't have any locks at that point */
+        gint64 wait_time =
+            gst_adaptive_demux_stream_get_fragment_waiting_time (demux, stream);
+        if (wait_time > 0) {
+          gint64 end_time = g_get_monotonic_time () + wait_time / GST_USECOND;
+
+          GST_DEBUG_OBJECT (stream->pad,
+              "Download waiting for %" GST_TIME_FORMAT,
+              GST_TIME_ARGS (wait_time));
+
+          GST_MANIFEST_UNLOCK (demux);
+          g_mutex_lock (&stream->fragment_download_lock);
+          if (G_UNLIKELY (stream->cancelled)) {
+            g_mutex_unlock (&stream->fragment_download_lock);
+            GST_MANIFEST_LOCK (demux);
+            stream->last_ret = GST_FLOW_FLUSHING;
+            goto flushing;
+          }
+          do {
+            g_cond_wait_until (&stream->fragment_download_cond,
+                &stream->fragment_download_lock, end_time);
+            if (G_UNLIKELY (stream->cancelled)) {
+              g_mutex_unlock (&stream->fragment_download_lock);
+              GST_MANIFEST_LOCK (demux);
+              stream->last_ret = GST_FLOW_FLUSHING;
+              goto flushing;
+            }
+          } while (!stream->download_finished);
+          g_mutex_unlock (&stream->fragment_download_lock);
+
+          GST_MANIFEST_LOCK (demux);
+        }
       }
     }
+
+  flushing:
+    if (++stream->download_error_count <= MAX_DOWNLOAD_ERROR_COUNT) {
+      /* looks like there is no way of knowing when a live stream has ended
+       * Have to assume we are falling behind and cause a manifest reload */
+      GST_DEBUG_OBJECT (stream->pad, "Converting error of live stream to EOS");
+      return GST_FLOW_EOS;
+    }
   }
 
+  else if (!gst_adaptive_demux_stream_has_next_fragment (demux, stream)) {
+    /* If this is the last fragment, consider failures EOS and not actual
+     * errors. Due to rounding errors in the durations, the last fragment
+     * might not actually exist */
+    GST_DEBUG_OBJECT (stream->pad, "Converting error for last fragment to EOS");
+    return GST_FLOW_EOS;
+  } else {
+    /* retry once (same segment) for 5xx (server errors) */
+    if (!retried_once) {
+      retried_once = TRUE;
+      /* wait a short time in case the server needs a bit to recover, we don't
+       * care if we get woken up before end time. We can use sleep here since
+       * we're already blocking and just want to wait some time. */
+      g_usleep (100000);        /* a tenth of a second */
+      goto again;
+    }
+  }
+
+beach:
   return ret;
 
 no_url_error:
@@ -2752,7 +3068,7 @@
 gst_adaptive_demux_stream_download_loop (GstAdaptiveDemuxStream * stream)
 {
   GstAdaptiveDemux *demux = stream->demux;
-  guint64 next_download = g_get_monotonic_time ();
+  GstClockTime next_download = gst_adaptive_demux_get_monotonic_time (demux);
   GstFlowReturn ret;
   gboolean live;
 
@@ -2879,6 +3195,7 @@
         GST_PTR_FORMAT, seg_event);
     gst_pad_push_event (stream->pad, seg_event);
 
+    stream->discont = TRUE;
     stream->restart_download = FALSE;
   }
 
@@ -2894,7 +3211,8 @@
       gint64 wait_time =
           gst_adaptive_demux_stream_get_fragment_waiting_time (demux, stream);
       if (wait_time > 0) {
-        gint64 end_time = g_get_monotonic_time () + wait_time / GST_USECOND;
+        GstClockTime end_time =
+            gst_adaptive_demux_get_monotonic_time (demux) + wait_time;
 
         GST_DEBUG_OBJECT (stream->pad, "Download waiting for %" GST_TIME_FORMAT,
             GST_TIME_ARGS (wait_time));
@@ -2908,8 +3226,9 @@
           stream->last_ret = GST_FLOW_FLUSHING;
           goto cancelled;
         }
-        g_cond_wait_until (&stream->fragment_download_cond,
-            &stream->fragment_download_lock, end_time);
+        gst_adaptive_demux_wait_until (demux->realtime_clock,
+            &stream->fragment_download_cond, &stream->fragment_download_lock,
+            end_time);
         g_mutex_unlock (&stream->fragment_download_lock);
 
         GST_DEBUG_OBJECT (stream->pad, "Download finished waiting");
@@ -2928,7 +3247,7 @@
 
     stream->last_ret = GST_FLOW_OK;
 
-    next_download = g_get_monotonic_time ();
+    next_download = gst_adaptive_demux_get_monotonic_time (demux);
     ret = gst_adaptive_demux_stream_download_fragment (stream);
 
     if (ret == GST_FLOW_FLUSHING) {
@@ -2968,13 +3287,15 @@
       break;
 
     case GST_FLOW_NOT_LINKED:
+    {
+      GstFlowReturn ret;
       gst_task_stop (stream->download_task);
-      if (gst_adaptive_demux_combine_flows (demux)
-          == GST_FLOW_NOT_LINKED) {
-        GST_ELEMENT_ERROR (demux, STREAM, FAILED,
-            (_("Internal data stream error.")), ("stream stopped, reason %s",
-                gst_flow_get_name (GST_FLOW_NOT_LINKED)));
+
+      ret = gst_adaptive_demux_combine_flows (demux);
+      if (ret == GST_FLOW_NOT_LINKED) {
+        GST_ELEMENT_FLOW_ERROR (demux, ret);
       }
+    }
       break;
 
     case GST_FLOW_FLUSHING:{
@@ -3014,9 +3335,7 @@
         }
 
         /* Wait half the fragment duration before retrying */
-        next_download +=
-            gst_util_uint64_scale
-            (stream->fragment.duration, G_USEC_PER_SEC, 2 * GST_SECOND);
+        next_download += stream->fragment.duration / 2;
 
         GST_MANIFEST_UNLOCK (demux);
 
@@ -3027,8 +3346,9 @@
           stream->last_ret = GST_FLOW_FLUSHING;
           goto cancelled;
         }
-        g_cond_wait_until (&stream->fragment_download_cond,
-            &stream->fragment_download_lock, next_download);
+        gst_adaptive_demux_wait_until (demux->realtime_clock,
+            &stream->fragment_download_cond, &stream->fragment_download_lock,
+            next_download);
         g_mutex_unlock (&stream->fragment_download_lock);
 
         GST_DEBUG_OBJECT (demux, "Retrying now");
@@ -3095,10 +3415,14 @@
 
     gst_task_stop (stream->download_task);
     if (stream->src) {
-      gst_element_set_locked_state (stream->src, TRUE);
-      gst_element_set_state (stream->src, GST_STATE_NULL);
-      gst_bin_remove (GST_BIN_CAST (demux), stream->src);
+      GstElement *src = stream->src;
+
       stream->src = NULL;
+      GST_MANIFEST_UNLOCK (demux);
+      gst_element_set_locked_state (src, TRUE);
+      gst_element_set_state (src, GST_STATE_NULL);
+      gst_bin_remove (GST_BIN_CAST (demux), src);
+      GST_MANIFEST_LOCK (demux);
     }
 
     gst_element_post_message (GST_ELEMENT_CAST (demux), msg);
@@ -3110,7 +3434,7 @@
 static void
 gst_adaptive_demux_updates_loop (GstAdaptiveDemux * demux)
 {
-  gint64 next_update;
+  GstClockTime next_update;
   GstAdaptiveDemuxClass *klass = GST_ADAPTIVE_DEMUX_GET_CLASS (demux);
 
   /* Loop for updating of the playlist. This periodically checks if
@@ -3122,8 +3446,9 @@
 
   GST_MANIFEST_LOCK (demux);
 
-  next_update = g_get_monotonic_time () +
-      klass->get_manifest_update_interval (demux);
+  next_update =
+      gst_adaptive_demux_get_monotonic_time (demux) +
+      klass->get_manifest_update_interval (demux) * GST_USECOND;
 
   /* Updating playlist only needed for live playlists */
   while (gst_adaptive_demux_is_live (demux)) {
@@ -3139,7 +3464,8 @@
       g_mutex_unlock (&demux->priv->updates_timed_lock);
       goto quit;
     }
-    g_cond_wait_until (&demux->priv->updates_timed_cond,
+    gst_adaptive_demux_wait_until (demux->realtime_clock,
+        &demux->priv->updates_timed_cond,
         &demux->priv->updates_timed_lock, next_update);
     g_mutex_unlock (&demux->priv->updates_timed_lock);
 
@@ -3163,8 +3489,8 @@
       demux->priv->update_failed_count++;
       if (demux->priv->update_failed_count <= DEFAULT_FAILED_COUNT) {
         GST_WARNING_OBJECT (demux, "Could not update the playlist");
-        next_update = g_get_monotonic_time () +
-            klass->get_manifest_update_interval (demux);
+        next_update = gst_adaptive_demux_get_monotonic_time (demux)
+            + klass->get_manifest_update_interval (demux) * GST_USECOND;
       } else {
         GST_ELEMENT_ERROR (demux, STREAM, FAILED,
             (_("Internal data stream error.")), ("Could not update playlist"));
@@ -3175,8 +3501,9 @@
       }
     } else {
       GST_DEBUG_OBJECT (demux, "Updated playlist successfully");
-      next_update = g_get_monotonic_time () +
-          klass->get_manifest_update_interval (demux);
+      next_update =
+          gst_adaptive_demux_get_monotonic_time (demux) +
+          klass->get_manifest_update_interval (demux) * GST_USECOND;
 
       /* Wake up download tasks */
       g_mutex_lock (&demux->priv->manifest_update_lock);
@@ -3337,26 +3664,43 @@
   }
 
   stream->download_start_time = stream->download_chunk_start_time =
-      g_get_monotonic_time ();
+      GST_TIME_AS_USECONDS (gst_adaptive_demux_get_monotonic_time (demux));
 
   if (ret == GST_FLOW_OK) {
     if (gst_adaptive_demux_stream_select_bitrate (demux, stream,
             gst_adaptive_demux_stream_update_current_bitrate (demux, stream))) {
       stream->need_header = TRUE;
-      gst_adapter_clear (stream->adapter);
       ret = (GstFlowReturn) GST_ADAPTIVE_DEMUX_FLOW_SWITCH;
     }
 
     /* the subclass might want to switch pads */
     if (G_UNLIKELY (demux->next_streams)) {
+      GList *iter;
+      gboolean can_expose = TRUE;
+
       gst_task_stop (stream->download_task);
 
-      /* TODO only allow switching streams if other downloads are not ongoing */
-      GST_DEBUG_OBJECT (demux, "Subclass wants new pads "
-          "to do bitrate switching");
-      gst_adaptive_demux_expose_streams (demux, FALSE);
-      gst_adaptive_demux_start_tasks (demux);
       ret = GST_FLOW_EOS;
+
+      for (iter = demux->streams; iter; iter = g_list_next (iter)) {
+        /* Only expose if all streams are now cancelled or finished downloading */
+        GstAdaptiveDemuxStream *other = iter->data;
+        if (other != stream) {
+          g_mutex_lock (&other->fragment_download_lock);
+          can_expose &= (other->cancelled == TRUE
+              || other->download_finished == TRUE);
+          g_mutex_unlock (&other->fragment_download_lock);
+        }
+      }
+
+      if (can_expose) {
+        GST_DEBUG_OBJECT (demux, "Subclass wants new pads "
+            "to do bitrate switching");
+        gst_adaptive_demux_expose_streams (demux, FALSE);
+        gst_adaptive_demux_start_tasks (demux);
+      } else {
+        GST_LOG_OBJECT (demux, "Not switching yet - ongoing downloads");
+      }
     }
   }
 
@@ -3370,12 +3714,6 @@
 {
   GstAdaptiveDemuxClass *klass = GST_ADAPTIVE_DEMUX_GET_CLASS (demux);
 
-  /* FIXME: Currently several issues have be found when letting bitrate adaptation
-   * happen using trick modes (such as 'All streams finished without buffers') and
-   * the adaptive algorithm does not properly behave. */
-  if (demux->segment.rate != 1.0)
-    return FALSE;
-
   if (klass->stream_select_bitrate)
     return klass->stream_select_bitrate (stream, bitrate);
   return FALSE;
@@ -3394,6 +3732,7 @@
   /* Make sure the sub-class will update bitrate, or else
    * we will later */
   stream->fragment.bitrate = 0;
+  stream->fragment.finished = FALSE;
 
   return klass->stream_update_fragment_info (stream);
 }
@@ -3490,6 +3829,8 @@
   f->index_uri = NULL;
   f->index_range_start = 0;
   f->index_range_end = -1;
+
+  f->finished = FALSE;
 }
 
 /* must be called with manifest_lock taken */
@@ -3518,3 +3859,131 @@
   gst_adaptive_demux_expose_streams (demux, FALSE);
   gst_adaptive_demux_start_tasks (demux);
 }
+
+/**
+ * gst_adaptive_demux_get_monotonic_time:
+ * Returns: a monotonically increasing time, using the system realtime clock
+ */
+GstClockTime
+gst_adaptive_demux_get_monotonic_time (GstAdaptiveDemux * demux)
+{
+  g_return_val_if_fail (demux != NULL, GST_CLOCK_TIME_NONE);
+  return gst_clock_get_time (demux->realtime_clock);
+}
+
+/**
+ * gst_adaptive_demux_get_client_now_utc:
+ * @demux: #GstAdaptiveDemux
+ * Returns: the client's estimate of UTC
+ *
+ * Used to find the client's estimate of UTC, using the system realtime clock.
+ */
+GDateTime *
+gst_adaptive_demux_get_client_now_utc (GstAdaptiveDemux * demux)
+{
+  GstClockTime rtc_now;
+  gint64 utc_now;
+  GTimeVal gtv;
+
+  rtc_now = gst_clock_get_time (demux->realtime_clock);
+  utc_now = demux->clock_offset + GST_TIME_AS_USECONDS (rtc_now);
+  gtv.tv_sec = utc_now / G_TIME_SPAN_SECOND;
+  gtv.tv_usec = utc_now % G_TIME_SPAN_SECOND;
+  return g_date_time_new_from_timeval_utc (&gtv);
+}
+
+static GstAdaptiveDemuxTimer *
+gst_adaptive_demux_timer_new (GCond * cond, GMutex * mutex)
+{
+  GstAdaptiveDemuxTimer *timer;
+
+  timer = g_slice_new (GstAdaptiveDemuxTimer);
+  timer->fired = FALSE;
+  timer->cond = cond;
+  timer->mutex = mutex;
+  timer->ref_count = 1;
+  return timer;
+}
+
+static GstAdaptiveDemuxTimer *
+gst_adaptive_demux_timer_ref (GstAdaptiveDemuxTimer * timer)
+{
+  g_return_val_if_fail (timer != NULL, NULL);
+  g_atomic_int_inc (&timer->ref_count);
+  return timer;
+}
+
+static void
+gst_adaptive_demux_timer_unref (GstAdaptiveDemuxTimer * timer)
+{
+  g_return_if_fail (timer != NULL);
+  if (g_atomic_int_dec_and_test (&timer->ref_count)) {
+    g_slice_free (GstAdaptiveDemuxTimer, timer);
+  }
+}
+
+/* gst_adaptive_demux_wait_until:
+ * A replacement for g_cond_wait_until that uses the clock rather
+ * than system time to control the duration of the sleep. Typically
+ * clock is actually a #GstSystemClock, in which case this function
+ * behaves exactly like g_cond_wait_until. Inside unit tests,
+ * the clock is typically a #GstTestClock, which allows tests to run
+ * in non-realtime.
+ * This function must be called with mutex held.
+ */
+static gboolean
+gst_adaptive_demux_wait_until (GstClock * clock, GCond * cond, GMutex * mutex,
+    GstClockTime end_time)
+{
+  GstAdaptiveDemuxTimer *timer;
+  gboolean fired;
+  GstClockReturn res;
+
+  if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (end_time))) {
+    /* for an invalid time, gst_clock_id_wait_async will try to call
+     * gst_adaptive_demux_clock_callback from the current thread.
+     * It still holds the mutex while doing that, so it will deadlock.
+     * g_cond_wait_until would return immediately with false, so we'll do the same.
+     */
+    return FALSE;
+  }
+  timer = gst_adaptive_demux_timer_new (cond, mutex);
+  timer->clock_id = gst_clock_new_single_shot_id (clock, end_time);
+  res =
+      gst_clock_id_wait_async (timer->clock_id,
+      gst_adaptive_demux_clock_callback, gst_adaptive_demux_timer_ref (timer),
+      (GDestroyNotify) gst_adaptive_demux_timer_unref);
+  /* clock does not support asynchronously wait. Assert and return */
+  if (res == GST_CLOCK_UNSUPPORTED) {
+    gst_clock_id_unref (timer->clock_id);
+    gst_adaptive_demux_timer_unref (timer);
+    g_return_val_if_reached (TRUE);
+  }
+  g_assert (!timer->fired);
+  /* the gst_adaptive_demux_clock_callback() will signal the
+   * cond when the clock's single shot timer fires, or the cond will be
+   * signalled by another thread that wants to cause this wait to finish
+   * early (e.g. to terminate the waiting thread).
+   * There is no need for a while loop here, because that logic is
+   * implemented by the function calling gst_adaptive_demux_wait_until() */
+  g_cond_wait (cond, mutex);
+  fired = timer->fired;
+  if (!fired)
+    gst_clock_id_unschedule (timer->clock_id);
+  gst_clock_id_unref (timer->clock_id);
+  gst_adaptive_demux_timer_unref (timer);
+  return !fired;
+}
+
+static gboolean
+gst_adaptive_demux_clock_callback (GstClock * clock,
+    GstClockTime time, GstClockID id, gpointer user_data)
+{
+  GstAdaptiveDemuxTimer *timer = (GstAdaptiveDemuxTimer *) user_data;
+  g_return_val_if_fail (timer != NULL, FALSE);
+  g_mutex_lock (timer->mutex);
+  timer->fired = TRUE;
+  g_cond_signal (timer->cond);
+  g_mutex_unlock (timer->mutex);
+  return TRUE;
+}
diff --git a/gst-libs/gst/adaptivedemux/gstadaptivedemux.h b/gst-libs/gst/adaptivedemux/gstadaptivedemux.h
index 3e84d69..e876600 100644
--- a/gst-libs/gst/adaptivedemux/gstadaptivedemux.h
+++ b/gst-libs/gst/adaptivedemux/gstadaptivedemux.h
@@ -81,6 +81,8 @@
   g_clear_error (&err); \
 } G_STMT_END
 
+#define GST_ADAPTIVE_DEMUX_FLOW_END_OF_FRAGMENT GST_FLOW_CUSTOM_SUCCESS_1
+
 typedef struct _GstAdaptiveDemuxStreamFragment GstAdaptiveDemuxStreamFragment;
 typedef struct _GstAdaptiveDemuxStream GstAdaptiveDemuxStream;
 typedef struct _GstAdaptiveDemux GstAdaptiveDemux;
@@ -96,6 +98,9 @@
   gint64 range_start;
   gint64 range_end;
 
+  /* when chunked downloading is used, may be be updated need_another_chunk() */
+  guint chunk_size;
+
   /* when headers are needed */
   gchar *header_uri;
   gint64 header_range_start;
@@ -109,6 +114,8 @@
   /* Nominal bitrate as provided by
    * sub-class or calculated by base-class */
   guint bitrate;
+
+  gboolean finished;
 };
 
 struct _GstAdaptiveDemuxStream
@@ -120,8 +127,6 @@
 
   GstSegment segment;
 
-  GstAdapter *adapter;
-
   GstCaps *pending_caps;
   GstEvent *pending_segment;
   GstTagList *pending_tags;
@@ -145,6 +150,7 @@
 
   /* download tooling */
   GstElement *src;
+  guint last_status_code;
   GstPad *src_srcpad;
   GstElement *uri_handler;
   GstElement *queue;
@@ -208,6 +214,10 @@
   gboolean have_group_id;
   guint group_id;
 
+  /* Realtime clock */
+  GstClock *realtime_clock;
+  gint64 clock_offset; /* offset between realtime_clock and UTC (in usec) */
+
   /* < private > */
   GstAdaptiveDemuxPrivate *priv;
 };
@@ -321,6 +331,17 @@
   GstFlowReturn (*stream_seek)     (GstAdaptiveDemuxStream * stream, gboolean forward, GstSeekFlags flags, GstClockTime target_ts, GstClockTime * final_ts);
   gboolean      (*stream_has_next_fragment)  (GstAdaptiveDemuxStream * stream);
   GstFlowReturn (*stream_advance_fragment) (GstAdaptiveDemuxStream * stream);
+
+  /**
+   * need_another_chunk:
+   * @stream: #GstAdaptiveDemuxStream
+   *
+   * If chunked downloading is used (chunk_size != 0) this is called once as
+   * chunk is finished to decide whether more has to be downloaded or not.
+   * May update chunk_size to a different value
+   */
+  gboolean      (*need_another_chunk) (GstAdaptiveDemuxStream * stream);
+
   /**
    * stream_update_fragment_info:
    * @stream: #GstAdaptiveDemuxStream
@@ -384,13 +405,14 @@
    * data_received:
    * @demux: #GstAdaptiveDemux
    * @stream: #GstAdaptiveDemuxStream
+   * @buffer: #GstBuffer
    *
    * Notifies the subclass that a fragment chunk was downloaded. The subclass
-   * can look at the data at the adapter and modify/push data as desired.
+   * can look at the data and modify/push data as desired.
    *
    * Returns: #GST_FLOW_OK if successful, #GST_FLOW_ERROR in case of error.
    */
-  GstFlowReturn (*data_received) (GstAdaptiveDemux * demux, GstAdaptiveDemuxStream * stream);
+  GstFlowReturn (*data_received) (GstAdaptiveDemux * demux, GstAdaptiveDemuxStream * stream, GstBuffer * buffer);
 
   /**
    * get_live_seek_range:
@@ -453,6 +475,9 @@
 void gst_adaptive_demux_stream_queue_event (GstAdaptiveDemuxStream * stream,
     GstEvent * event);
 
+GstClockTime gst_adaptive_demux_get_monotonic_time (GstAdaptiveDemux * demux);
+GDateTime *gst_adaptive_demux_get_client_now_utc (GstAdaptiveDemux * demux);
+
 G_END_DECLS
 
 #endif
diff --git a/gst-libs/gst/audio/Makefile.in b/gst-libs/gst/audio/Makefile.in
index d7846bc..9fd5c4b 100644
--- a/gst-libs/gst/audio/Makefile.in
+++ b/gst-libs/gst/audio/Makefile.in
@@ -294,6 +294,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -315,6 +317,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -364,6 +368,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -509,6 +515,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -635,8 +643,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -679,8 +685,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/base/Makefile.in b/gst-libs/gst/base/Makefile.in
index 7117a16..fa78568 100644
--- a/gst-libs/gst/base/Makefile.in
+++ b/gst-libs/gst/base/Makefile.in
@@ -288,6 +288,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -309,6 +311,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -358,6 +362,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -503,6 +509,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -629,8 +637,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -673,8 +679,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/base/gstaggregator.c b/gst-libs/gst/base/gstaggregator.c
index ec297df..7e8c5be 100644
--- a/gst-libs/gst/base/gstaggregator.c
+++ b/gst-libs/gst/base/gstaggregator.c
@@ -270,7 +270,7 @@
 
 struct _GstAggregatorPrivate
 {
-  gint padcount;
+  gint max_padserial;
 
   /* Our state is >= PAUSED */
   gboolean running;             /* protected by src_lock */
@@ -424,6 +424,7 @@
 {
   GstAggregatorPad *pad;
   GList *l, *sinkpads;
+  gboolean have_data = TRUE;
 
   GST_LOG_OBJECT (self, "checking pads");
 
@@ -438,22 +439,30 @@
 
     PAD_LOCK (pad);
 
-    /* In live mode, having a single pad with buffers is enough to
-     * generate a start time from it. In non-live mode all pads need
-     * to have a buffer
-     */
-    if (self->priv->peer_latency_live &&
-        !gst_aggregator_pad_queue_is_empty (pad))
+    if (gst_aggregator_pad_queue_is_empty (pad)) {
+      if (!pad->priv->eos) {
+        have_data = FALSE;
+
+        /* If not live we need data on all pads, so leave the loop */
+        if (!self->priv->peer_latency_live) {
+          PAD_UNLOCK (pad);
+          goto pad_not_ready;
+        }
+      }
+    } else if (self->priv->peer_latency_live) {
+      /* In live mode, having a single pad with buffers is enough to
+       * generate a start time from it. In non-live mode all pads need
+       * to have a buffer
+       */
       self->priv->first_buffer = FALSE;
-
-    if (gst_aggregator_pad_queue_is_empty (pad) && !pad->priv->eos) {
-      PAD_UNLOCK (pad);
-      goto pad_not_ready;
     }
-    PAD_UNLOCK (pad);
 
+    PAD_UNLOCK (pad);
   }
 
+  if (!have_data)
+    goto pad_not_ready;
+
   self->priv->first_buffer = FALSE;
 
   GST_OBJECT_UNLOCK (self);
@@ -649,6 +658,7 @@
    * and if a pad does not have a buffer in time we ignore
    * that pad.
    */
+  GST_OBJECT_LOCK (self);
   if (!GST_CLOCK_TIME_IS_VALID (latency) ||
       !GST_IS_CLOCK (GST_ELEMENT_CLOCK (self)) ||
       !GST_CLOCK_TIME_IS_VALID (start) ||
@@ -659,6 +669,7 @@
      * then check if we're ready now. If we return FALSE,
      * we will be directly called again.
      */
+    GST_OBJECT_UNLOCK (self);
     SRC_WAIT (self);
   } else {
     GstClockTime base_time, time;
@@ -669,11 +680,8 @@
     GST_DEBUG_OBJECT (self, "got subclass start time: %" GST_TIME_FORMAT,
         GST_TIME_ARGS (start));
 
-    GST_OBJECT_LOCK (self);
     base_time = GST_ELEMENT_CAST (self)->base_time;
-    clock = GST_ELEMENT_CLOCK (self);
-    if (clock)
-      gst_object_ref (clock);
+    clock = gst_object_ref (GST_ELEMENT_CLOCK (self));
     GST_OBJECT_UNLOCK (self);
 
     time = base_time + start;
@@ -683,7 +691,7 @@
         GST_TIME_FORMAT " (base %" GST_TIME_FORMAT " start %" GST_TIME_FORMAT
         " latency %" GST_TIME_FORMAT " current %" GST_TIME_FORMAT ")",
         GST_TIME_ARGS (time),
-        GST_TIME_ARGS (GST_ELEMENT_CAST (self)->base_time),
+        GST_TIME_ARGS (base_time),
         GST_TIME_ARGS (start), GST_TIME_ARGS (latency),
         GST_TIME_ARGS (gst_clock_get_time (clock)));
 
@@ -1316,22 +1324,22 @@
   gchar *name = NULL;
 
   if (templ->direction != GST_PAD_SINK ||
-      g_strcmp0 (templ->name_template, "sink_%u"))
+      g_strcmp0 (templ->name_template, "sink_%u") != 0)
     goto not_sink;
 
   GST_OBJECT_LOCK (self);
   if (req_name == NULL || strlen (req_name) < 6
       || !g_str_has_prefix (req_name, "sink_")) {
     /* no name given when requesting the pad, use next available int */
-    priv->padcount++;
+    serial = ++priv->max_padserial;
   } else {
     /* parse serial number from requested padname */
     serial = g_ascii_strtoull (&req_name[5], NULL, 10);
-    if (serial >= priv->padcount)
-      priv->padcount = serial;
+    if (serial > priv->max_padserial)
+      priv->max_padserial = serial;
   }
 
-  name = g_strdup_printf ("sink_%u", priv->padcount);
+  name = g_strdup_printf ("sink_%u", serial);
   agg_pad = g_object_new (GST_AGGREGATOR_GET_CLASS (self)->sinkpads_type,
       "name", name, "direction", GST_PAD_SINK, "template", templ, NULL);
   g_free (name);
@@ -2011,7 +2019,7 @@
       gst_element_class_get_pad_template (GST_ELEMENT_CLASS (klass), "src");
   g_return_if_fail (pad_template != NULL);
 
-  priv->padcount = -1;
+  priv->max_padserial = -1;
   priv->tags_changed = FALSE;
 
   self->priv->peer_latency_live = FALSE;
@@ -2139,10 +2147,6 @@
   if (aggpad->priv->pending_eos == TRUE)
     goto eos;
 
-  flow_return = aggpad->priv->flow_return;
-  if (flow_return != GST_FLOW_OK)
-    goto flushing;
-
   PAD_UNLOCK (aggpad);
 
   if (aggclass->clip && head) {
@@ -2306,10 +2310,11 @@
   return FALSE;
 }
 
-static gboolean
+static GstFlowReturn
 gst_aggregator_pad_event_func (GstPad * pad, GstObject * parent,
     GstEvent * event)
 {
+  GstFlowReturn ret = GST_FLOW_OK;
   GstAggregator *self = GST_AGGREGATOR (parent);
   GstAggregatorPad *aggpad = GST_AGGREGATOR_PAD (pad);
   GstAggregatorClass *klass = GST_AGGREGATOR_GET_CLASS (parent);
@@ -2320,8 +2325,10 @@
     PAD_LOCK (aggpad);
 
     if (aggpad->priv->flow_return != GST_FLOW_OK
-        && GST_EVENT_TYPE (event) != GST_EVENT_FLUSH_STOP)
+        && GST_EVENT_TYPE (event) != GST_EVENT_FLUSH_STOP) {
+      ret = aggpad->priv->flow_return;
       goto flushing;
+    }
 
     if (GST_EVENT_TYPE (event) == GST_EVENT_SEGMENT) {
       GST_OBJECT_LOCK (aggpad);
@@ -2343,10 +2350,22 @@
     SRC_UNLOCK (self);
   }
 
-  if (event)
-    return klass->sink_event (self, aggpad, event);
-  else
-    return TRUE;
+  if (event) {
+    if (!klass->sink_event (self, aggpad, event)) {
+      /* Copied from GstPad to convert boolean to a GstFlowReturn in
+       * the event handling func */
+      switch (GST_EVENT_TYPE (event)) {
+        case GST_EVENT_CAPS:
+          ret = GST_FLOW_NOT_NEGOTIATED;
+          break;
+        default:
+          ret = GST_FLOW_ERROR;
+          break;
+      }
+    }
+  }
+
+  return ret;
 
 flushing:
   GST_DEBUG_OBJECT (aggpad, "Pad is %s, dropping event",
@@ -2356,7 +2375,8 @@
   if (GST_EVENT_IS_STICKY (event))
     gst_pad_store_sticky_event (pad, event);
   gst_event_unref (event);
-  return FALSE;
+
+  return ret;
 }
 
 static gboolean
@@ -2393,8 +2413,9 @@
 
   gst_pad_set_chain_function (pad,
       GST_DEBUG_FUNCPTR (gst_aggregator_pad_chain));
-  gst_pad_set_event_function (pad,
-      GST_DEBUG_FUNCPTR (gst_aggregator_pad_event_func));
+  gst_pad_set_event_full_function_full (pad,
+      GST_DEBUG_FUNCPTR (gst_aggregator_pad_event_func),
+      NULL, NULL);
   gst_pad_set_query_function (pad,
       GST_DEBUG_FUNCPTR (gst_aggregator_pad_query_func));
   gst_pad_set_activatemode_function (pad,
diff --git a/gst-libs/gst/basecamerabinsrc/Makefile.in b/gst-libs/gst/basecamerabinsrc/Makefile.in
index a4e5c32..1453b08 100644
--- a/gst-libs/gst/basecamerabinsrc/Makefile.in
+++ b/gst-libs/gst/basecamerabinsrc/Makefile.in
@@ -293,6 +293,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -314,6 +316,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -363,6 +367,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -508,6 +514,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -634,8 +642,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -678,8 +684,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/basecamerabinsrc/gstcamerabinpreview.c b/gst-libs/gst/basecamerabinsrc/gstcamerabinpreview.c
index cfdc074..48ec2fe 100644
--- a/gst-libs/gst/basecamerabinsrc/gstcamerabinpreview.c
+++ b/gst-libs/gst/basecamerabinsrc/gstcamerabinpreview.c
@@ -235,7 +235,14 @@
   g_cond_clear (&preview->processing_cond);
 
   if (preview->pipeline) {
+    GstBus *bus;
+
     gst_element_set_state (preview->pipeline, GST_STATE_NULL);
+
+    bus = gst_pipeline_get_bus (GST_PIPELINE (preview->pipeline));
+    gst_bus_remove_watch (bus);
+    gst_object_unref (bus);
+
     gst_object_unref (preview->pipeline);
   }
   g_free (preview);
diff --git a/gst-libs/gst/codecparsers/Makefile.am b/gst-libs/gst/codecparsers/Makefile.am
index b180570..e7d8248 100644
--- a/gst-libs/gst/codecparsers/Makefile.am
+++ b/gst-libs/gst/codecparsers/Makefile.am
@@ -6,6 +6,7 @@
 	parserutils.c nalutils.c dboolhuff.c vp8utils.c \
 	gstjpegparser.c \
 	gstmpegvideometa.c \
+	gstjpeg2000sampling.c \
 	gstvp9parser.c vp9utils.c
 
 libgstcodecparsers_@GST_API_VERSION@includedir = \
@@ -18,6 +19,7 @@
 	gsth265parser.h gstvp8parser.h gstvp8rangedecoder.h \
 	gstjpegparser.h \
 	gstmpegvideometa.h \
+	gstjpeg2000sampling.h \
 	gstvp9parser.h
 
 libgstcodecparsers_@GST_API_VERSION@_la_CFLAGS = \
diff --git a/gst-libs/gst/codecparsers/Makefile.in b/gst-libs/gst/codecparsers/Makefile.in
index 084014e..2eead8b 100644
--- a/gst-libs/gst/codecparsers/Makefile.in
+++ b/gst-libs/gst/codecparsers/Makefile.in
@@ -182,6 +182,7 @@
 	libgstcodecparsers_@GST_API_VERSION@_la-vp8utils.lo \
 	libgstcodecparsers_@GST_API_VERSION@_la-gstjpegparser.lo \
 	libgstcodecparsers_@GST_API_VERSION@_la-gstmpegvideometa.lo \
+	libgstcodecparsers_@GST_API_VERSION@_la-gstjpeg2000sampling.lo \
 	libgstcodecparsers_@GST_API_VERSION@_la-gstvp9parser.lo \
 	libgstcodecparsers_@GST_API_VERSION@_la-vp9utils.lo
 libgstcodecparsers_@GST_API_VERSION@_la_OBJECTS =  \
@@ -323,6 +324,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -344,6 +347,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -393,6 +398,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -538,6 +545,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -664,8 +673,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -708,8 +715,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -805,6 +817,7 @@
 	parserutils.c nalutils.c dboolhuff.c vp8utils.c \
 	gstjpegparser.c \
 	gstmpegvideometa.c \
+	gstjpeg2000sampling.c \
 	gstvp9parser.c vp9utils.c
 
 libgstcodecparsers_@GST_API_VERSION@includedir = \
@@ -816,6 +829,7 @@
 	gsth265parser.h gstvp8parser.h gstvp8rangedecoder.h \
 	gstjpegparser.h \
 	gstmpegvideometa.h \
+	gstjpeg2000sampling.h \
 	gstvp9parser.h
 
 libgstcodecparsers_@GST_API_VERSION@_la_CFLAGS = \
@@ -918,6 +932,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-dboolhuff.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gsth264parser.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gsth265parser.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstjpeg2000sampling.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstjpegparser.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstmpeg4parser.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstmpegvideometa.Plo@am__quote@
@@ -1046,6 +1061,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcodecparsers_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstcodecparsers_@GST_API_VERSION@_la-gstmpegvideometa.lo `test -f 'gstmpegvideometa.c' || echo '$(srcdir)/'`gstmpegvideometa.c
 
+libgstcodecparsers_@GST_API_VERSION@_la-gstjpeg2000sampling.lo: gstjpeg2000sampling.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcodecparsers_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstcodecparsers_@GST_API_VERSION@_la-gstjpeg2000sampling.lo -MD -MP -MF $(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstjpeg2000sampling.Tpo -c -o libgstcodecparsers_@GST_API_VERSION@_la-gstjpeg2000sampling.lo `test -f 'gstjpeg2000sampling.c' || echo '$(srcdir)/'`gstjpeg2000sampling.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstjpeg2000sampling.Tpo $(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstjpeg2000sampling.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstjpeg2000sampling.c' object='libgstcodecparsers_@GST_API_VERSION@_la-gstjpeg2000sampling.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcodecparsers_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstcodecparsers_@GST_API_VERSION@_la-gstjpeg2000sampling.lo `test -f 'gstjpeg2000sampling.c' || echo '$(srcdir)/'`gstjpeg2000sampling.c
+
 libgstcodecparsers_@GST_API_VERSION@_la-gstvp9parser.lo: gstvp9parser.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcodecparsers_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstcodecparsers_@GST_API_VERSION@_la-gstvp9parser.lo -MD -MP -MF $(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstvp9parser.Tpo -c -o libgstcodecparsers_@GST_API_VERSION@_la-gstvp9parser.lo `test -f 'gstvp9parser.c' || echo '$(srcdir)/'`gstvp9parser.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstvp9parser.Tpo $(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstvp9parser.Plo
diff --git a/gst-libs/gst/codecparsers/gsth264parser.c b/gst-libs/gst/codecparsers/gsth264parser.c
index 925d95a..bc84416 100644
--- a/gst-libs/gst/codecparsers/gsth264parser.c
+++ b/gst-libs/gst/codecparsers/gsth264parser.c
@@ -1498,7 +1498,6 @@
   gint width, height;
   guint subwc[] = { 1, 2, 2, 1 };
   guint subhc[] = { 1, 2, 1, 1 };
-  GstH264VUIParams *vui = NULL;
 
   memset (sps, 0, sizeof (*sps));
 
@@ -1592,7 +1591,6 @@
   if (sps->vui_parameters_present_flag && parse_vui_params) {
     if (!gst_h264_parse_vui_parameters (sps, nr))
       goto error;
-    vui = &sps->vui_parameters;
   }
 
   /* calculate ChromaArrayType */
@@ -1631,26 +1629,10 @@
     GST_LOG ("crop_rectangle x=%u y=%u width=%u, height=%u", sps->crop_rect_x,
         sps->crop_rect_y, width, height);
   }
-  sps->fps_num = 0;
-  sps->fps_den = 1;
 
-  if (vui && vui->timing_info_present_flag) {
-    /* derive framerate */
-    /* FIXME verify / also handle other cases */
-    GST_LOG ("Framerate: %u %u %u %u", parse_vui_params,
-        vui->fixed_frame_rate_flag, sps->frame_mbs_only_flag,
-        vui->pic_struct_present_flag);
+  sps->fps_num_removed = 0;
+  sps->fps_den_removed = 1;
 
-    if (parse_vui_params && vui->fixed_frame_rate_flag) {
-      sps->fps_num = vui->time_scale;
-      sps->fps_den = vui->num_units_in_tick;
-      /* picture is a frame = 2 fields */
-      sps->fps_den *= 2;
-      GST_LOG ("framerate %d/%d", sps->fps_num, sps->fps_den);
-    }
-  } else {
-    GST_LOG ("No VUI, unknown framerate");
-  }
   return TRUE;
 
 error:
diff --git a/gst-libs/gst/codecparsers/gsth264parser.h b/gst-libs/gst/codecparsers/gsth264parser.h
index be5194f..56d8720 100644
--- a/gst-libs/gst/codecparsers/gsth264parser.h
+++ b/gst-libs/gst/codecparsers/gsth264parser.h
@@ -437,7 +437,7 @@
  * @aspect_ratio_idc specifies the value of the sample aspect ratio of the luma samples
  * @sar_width indicates the horizontal size of the sample aspect ratio
  * @sar_height indicates the vertical size of the sample aspect ratio
- * @overscan_info_present_flag: %TRUE overscan_appropriate_flag is present %FALSE otherwize
+ * @overscan_info_present_flag: %TRUE overscan_appropriate_flag is present %FALSE otherwise
  * @overscan_appropriate_flag: %TRUE indicates that the cropped decoded pictures
  *  output are suitable for display using overscan. %FALSE the cropped decoded pictures
  *  output contain visually important information
@@ -451,7 +451,7 @@
  * @transfer_characteristics: indicates the opto-electronic transfer characteristic
  * @matrix_coefficients: describes the matrix coefficients used in deriving luma and chroma signals
  * @chroma_loc_info_present_flag: %TRUE specifies that chroma_sample_loc_type_top_field and
- *  chroma_sample_loc_type_bottom_field are present, %FALSE otherwize
+ *  chroma_sample_loc_type_bottom_field are present, %FALSE otherwise
  * @chroma_sample_loc_type_top_field: specify the location of chroma for top field
  * @chroma_sample_loc_type_bottom_field specify the location of chroma for bottom field
  * @timing_info_present_flag: %TRUE specifies that num_units_in_tick,
@@ -460,7 +460,7 @@
  * time_scale: is the number of time units that pass in one second
  * @fixed_frame_rate_flag: %TRUE indicates that the temporal distance between the HRD output times
  *  of any two consecutive pictures in output order is constrained as specified in the spec, %FALSE
- *  otherwize.
+ *  otherwise.
  * @nal_hrd_parameters_present_flag: %TRUE if nal hrd parameters present in the bitstream
  * @vcl_hrd_parameters_present_flag: %TRUE if nal vlc hrd parameters present in the bitstream
  * @low_delay_hrd_flag: specifies the HRD operational mode
@@ -710,7 +710,7 @@
   gint width, height;
   gint crop_rect_width, crop_rect_height;
   gint crop_rect_x, crop_rect_y;
-  gint fps_num, fps_den;
+  gint fps_num_removed, fps_den_removed; /* FIXME: remove */
   gboolean valid;
 
   /* Subset SPS extensions */
diff --git a/gst-libs/gst/codecparsers/gsth265parser.h b/gst-libs/gst/codecparsers/gsth265parser.h
index 80cc270..4ec91fa 100644
--- a/gst-libs/gst/codecparsers/gsth265parser.h
+++ b/gst-libs/gst/codecparsers/gsth265parser.h
@@ -535,7 +535,7 @@
  * @aspect_ratio_idc specifies the value of the sample aspect ratio of the luma samples
  * @sar_width indicates the horizontal size of the sample aspect ratio
  * @sar_height indicates the vertical size of the sample aspect ratio
- * @overscan_info_present_flag: %TRUE overscan_appropriate_flag is present %FALSE otherwize
+ * @overscan_info_present_flag: %TRUE overscan_appropriate_flag is present %FALSE otherwise
  * @overscan_appropriate_flag: %TRUE indicates that the cropped decoded pictures
  *  output are suitable for display using overscan. %FALSE the cropped decoded pictures
  *  output contain visually important information
@@ -549,7 +549,7 @@
  * @transfer_characteristics: indicates the opto-electronic transfer characteristic
  * @matrix_coefficients: describes the matrix coefficients used in deriving luma and chroma signals
  * @chroma_loc_info_present_flag: %TRUE specifies that chroma_sample_loc_type_top_field and
- *  chroma_sample_loc_type_bottom_field are present, %FALSE otherwize
+ *  chroma_sample_loc_type_bottom_field are present, %FALSE otherwise
  * @chroma_sample_loc_type_top_field: specify the location of chroma for top field
  * @chroma_sample_loc_type_bottom_field specify the location of chroma for bottom field
  * @neutral_chroma_indication_flag: %TRUE indicate that the value of chroma samples is equla
diff --git a/gst-libs/gst/codecparsers/gstjpeg2000sampling.c b/gst-libs/gst/codecparsers/gstjpeg2000sampling.c
new file mode 100644
index 0000000..dba1c50
--- /dev/null
+++ b/gst-libs/gst/codecparsers/gstjpeg2000sampling.c
@@ -0,0 +1,126 @@
+/* GStreamer JPEG 2000 Sampling
+ * Copyright (C) <2016> Grok Image Compression Inc.
+ *  @author Aaron Boxer <boxerab@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/**
+ * SECTION:gstjpeg2000sampling
+ * @short_description: Manage JPEG 2000 sampling and colorspace fields
+ *
+ */
+
+#include "gstjpeg2000sampling.h"
+
+/* string values corresponding to GstJPEG2000Sampling enums */
+static const gchar *gst_jpeg2000_sampling_strings[] = {
+  "RGB",
+  "BGR",
+  "RGBA",
+  "BGRA",
+  "YCbCr-4:4:4",
+  "YCbCr-4:2:2",
+  "YCbCr-4:2:0",
+  "YCbCr-4:1:0",
+  "GRAYSCALE",
+  "YCbCrA-4:4:4:4",
+};
+
+/* convert string to GstJPEG2000Sampling enum */
+GstJPEG2000Sampling
+gst_jpeg2000_sampling_from_string (const gchar * sampling_string)
+{
+  GstJPEG2000Sampling i;
+  g_return_val_if_fail (sampling_string != NULL, GST_JPEG2000_SAMPLING_NONE);
+  for (i = 0; i < G_N_ELEMENTS (gst_jpeg2000_sampling_strings); ++i) {
+    if (!g_strcmp0 (sampling_string, gst_jpeg2000_sampling_strings[i]))
+      return (i + 1);
+  }
+  return GST_JPEG2000_SAMPLING_NONE;
+
+
+}
+
+/* convert GstJPEG2000Sampling enum to string */
+const gchar *
+gst_jpeg2000_sampling_to_string (GstJPEG2000Sampling sampling)
+{
+  g_return_val_if_fail (sampling > 0
+      && sampling <= G_N_ELEMENTS (gst_jpeg2000_sampling_strings), NULL);
+  return gst_jpeg2000_sampling_strings[sampling - 1];
+}
+
+/* check if @sampling is in RGB color space */
+gboolean
+gst_jpeg2000_sampling_is_rgb (GstJPEG2000Sampling sampling)
+{
+  return sampling == GST_JPEG2000_SAMPLING_RGB ||
+      sampling == GST_JPEG2000_SAMPLING_RGBA ||
+      sampling == GST_JPEG2000_SAMPLING_BGR
+      || sampling == GST_JPEG2000_SAMPLING_BGRA;
+}
+
+/* check if @sampling is in YUV color space */
+gboolean
+gst_jpeg2000_sampling_is_yuv (GstJPEG2000Sampling sampling)
+{
+  return sampling == GST_JPEG2000_SAMPLING_YBRA4444_EXT ||
+      sampling == GST_JPEG2000_SAMPLING_YBR444 ||
+      sampling == GST_JPEG2000_SAMPLING_YBR422 ||
+      sampling == GST_JPEG2000_SAMPLING_YBR420
+      || sampling == GST_JPEG2000_SAMPLING_YBR410;
+}
+
+/* check if @sampling is in GRAYSCALE color space */
+gboolean
+gst_jpeg2000_sampling_is_mono (GstJPEG2000Sampling sampling)
+{
+  return sampling == GST_JPEG2000_SAMPLING_GRAYSCALE;
+}
+
+/* string values corresponding to GstJPEG2000Colorspace enums */
+static const gchar *gst_jpeg2000_colorspace_strings[] = {
+  "sRGB",
+  "sYUV",
+  "GRAY",
+};
+
+/* convert GstJPEG2000Colorspace enum to string */
+GstJPEG2000Colorspace
+gst_jpeg2000_colorspace_from_string (const gchar * colorspace_string)
+{
+  GstJPEG2000Colorspace i;
+
+  g_return_val_if_fail (colorspace_string != NULL,
+      GST_JPEG2000_COLORSPACE_NONE);
+
+  for (i = 0; i < G_N_ELEMENTS (gst_jpeg2000_colorspace_strings); ++i) {
+    if (!g_strcmp0 (colorspace_string, gst_jpeg2000_colorspace_strings[i]))
+      return (i + 1);
+  }
+  return GST_JPEG2000_COLORSPACE_NONE;
+}
+
+/* convert string to GstJPEG2000Colorspace enum */
+const gchar *
+gst_jpeg2000_colorspace_to_string (GstJPEG2000Colorspace colorspace)
+{
+  g_return_val_if_fail (colorspace > GST_JPEG2000_COLORSPACE_NONE
+      && colorspace <= G_N_ELEMENTS (gst_jpeg2000_colorspace_strings), NULL);
+
+  return gst_jpeg2000_colorspace_strings[colorspace - 1];
+}
diff --git a/gst-libs/gst/codecparsers/gstjpeg2000sampling.h b/gst-libs/gst/codecparsers/gstjpeg2000sampling.h
new file mode 100644
index 0000000..fb6a0aa
--- /dev/null
+++ b/gst-libs/gst/codecparsers/gstjpeg2000sampling.h
@@ -0,0 +1,92 @@
+/* GStreamer JPEG 2000 Sampling
+ * Copyright (C) <2016> Grok Image Compression Inc.
+ *  @author Aaron Boxer <boxerab@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_JPEG2000_SAMPLING_H__
+#define __GST_JPEG2000_SAMPLING_H__
+
+#include <gst/gst.h>
+
+/**
+ * GstJPEG2000Sampling:
+ * Sampling values from RF 5371 for JPEG 2000 over RTP : https://datatracker.ietf.org/doc/rfc5371/C
+ * Note: sampling extensions that are not listed in the RFC are signified by an _EXT at the end of the enum
+ *
+ * @GST_JPEG2000_SAMPLING_NONE: no sampling
+ * @GST_JPEG2000_SAMPLING_RGB:  standard Red, Green, Blue color space.
+ * @GST_JPEG2000_SAMPLING_BGR:  standard Blue, Green, Red color space.
+ * @GST_JPEG2000_SAMPLING_RGBA:  standard Red, Green, Blue, Alpha color space.
+ * @GST_JPEG2000_SAMPLING_BGRA:  standard Blue, Green, Red, Alpha color space.
+ * @GST_JPEG2000_SAMPLING_YCbCr-4:4:4:  standard YCbCr color space; no subsampling.
+ * @GST_JPEG2000_SAMPLING_YCbCr-4:2:2:  standard YCbCr color space; Cb and Cr are subsampled horizontally by 1/2.
+ * @GST_JPEG2000_SAMPLING_YCbCr-4:2:0:  standard YCbCr color space; Cb and Cr are subsampled horizontally and vertically by 1/2.
+ * @GST_JPEG2000_SAMPLING_YCbCr-4:1:1:  standard YCbCr color space; Cb and Cr are subsampled vertically by 1/4.
+ * @GST_JPEG2000_SAMPLING_GRAYSCALE:  basically, a single component image of just multilevels of grey.
+ * @GST_JPEG2000_SAMPLING_YBRA4444_EXT: standard YCbCr color space, alpha channel, no subsampling,
+ */
+typedef enum
+{
+  GST_JPEG2000_SAMPLING_NONE,
+  GST_JPEG2000_SAMPLING_RGB,
+  GST_JPEG2000_SAMPLING_BGR,
+  GST_JPEG2000_SAMPLING_RGBA,
+  GST_JPEG2000_SAMPLING_BGRA,
+  GST_JPEG2000_SAMPLING_YBR444,
+  GST_JPEG2000_SAMPLING_YBR422,
+  GST_JPEG2000_SAMPLING_YBR420,
+  GST_JPEG2000_SAMPLING_YBR410,
+  GST_JPEG2000_SAMPLING_GRAYSCALE,
+  GST_JPEG2000_SAMPLING_YBRA4444_EXT
+} GstJPEG2000Sampling;
+
+/* GST_JPEG2000_SAMPLING_LIST: sampling strings in list form, for use in caps */
+#define GST_JPEG2000_SAMPLING_LIST "sampling = (string) {\"RGB\", \"BGR\", \"RGBA\", \"BGRA\", \"YCbCr-4:4:4\", \"YCbCr-4:2:2\", \"YCbCr-4:2:0\", \"YCbCr-4:1:1\", \"GRAYSCALE\" , \"YCbCrA-4:4:4:4\"}"
+
+const gchar *gst_jpeg2000_sampling_to_string (GstJPEG2000Sampling sampling);
+GstJPEG2000Sampling gst_jpeg2000_sampling_from_string (const gchar *
+    sampling_string);
+gboolean gst_jpeg2000_sampling_is_rgb (GstJPEG2000Sampling sampling);
+gboolean gst_jpeg2000_sampling_is_yuv (GstJPEG2000Sampling sampling);
+gboolean gst_jpeg2000_sampling_is_mono (GstJPEG2000Sampling sampling);
+
+
+/**
+ * GstJPEG2000Colorspace:
+ * @GST_JPEG2000_COLORSPACE_NONE: no color space
+ * @GST_JPEG2000_COLORSPACE_RGB: standard RGB color space
+ * @GST_JPEG2000_COLORSPACE_YUV: standard YUV color space
+ * @GST_JPEG2000_COLORSPACE_GRAY: monochrome color space
+ */
+typedef enum
+{
+  GST_JPEG2000_COLORSPACE_NONE,
+  GST_JPEG2000_COLORSPACE_RGB,
+  GST_JPEG2000_COLORSPACE_YUV,
+  GST_JPEG2000_COLORSPACE_GRAY
+} GstJPEG2000Colorspace;
+
+const gchar *gst_jpeg2000_colorspace_to_string (GstJPEG2000Colorspace
+    colorspace);
+GstJPEG2000Colorspace gst_jpeg2000_colorspace_from_string (const gchar *
+    colorspace_string);
+
+/* GST_JPEG2000_COLORSPACE_LIST: color space strings in list form, for use in caps */
+#define GST_JPEG2000_COLORSPACE_LIST "colorspace = (string) { \"sRGB\", \"sYUV\", \"GRAY\" }"
+
+#endif
diff --git a/gst-libs/gst/codecparsers/gstmpeg4parser.c b/gst-libs/gst/codecparsers/gstmpeg4parser.c
index b23fc87..b455764 100644
--- a/gst-libs/gst/codecparsers/gstmpeg4parser.c
+++ b/gst-libs/gst/codecparsers/gstmpeg4parser.c
@@ -411,7 +411,7 @@
 /**
  * gst_mpeg4_parse:
  * @packet: The #GstMpeg4Packet to fill
- * @skip_user_data: %TRUE to skip user data packet %FALSE otherwize
+ * @skip_user_data: %TRUE to skip user data packet %FALSE otherwise
  * @vop: The last parsed #GstMpeg4VideoObjectPlane or %NULL if you do
  * not need to detect the resync codes.
  * @offset: offset from which to start the parsing
diff --git a/gst-libs/gst/codecparsers/gstmpegvideometa.c b/gst-libs/gst/codecparsers/gstmpegvideometa.c
index f7b2f87..d5d5f0a 100644
--- a/gst-libs/gst/codecparsers/gstmpegvideometa.c
+++ b/gst-libs/gst/codecparsers/gstmpegvideometa.c
@@ -37,6 +37,7 @@
   mpeg_video_meta->pichdr = NULL;
   mpeg_video_meta->picext = NULL;
   mpeg_video_meta->quantext = NULL;
+  mpeg_video_meta->num_slices = mpeg_video_meta->slice_offset = 0;
 
   return TRUE;
 }
diff --git a/gst-libs/gst/codecparsers/gstmpegvideoparser.c b/gst-libs/gst/codecparsers/gstmpegvideoparser.c
index debafa0..2cfd32a 100644
--- a/gst-libs/gst/codecparsers/gstmpegvideoparser.c
+++ b/gst-libs/gst/codecparsers/gstmpegvideoparser.c
@@ -286,7 +286,7 @@
  * Parses the @seqhdr MPEG Video Sequence Header structure members
  * from video @packet
  *
- * Returns: %TRUE if the seqhdr could be parsed correctly, %FALSE otherwize.
+ * Returns: %TRUE if the seqhdr could be parsed correctly, %FALSE otherwise.
  *
  * Since: 1.2
  */
@@ -296,7 +296,6 @@
 {
   GstBitReader br;
   guint8 bits;
-  guint8 load_intra_flag, load_non_intra_flag;
 
   g_return_val_if_fail (seqhdr != NULL, FALSE);
 
@@ -339,8 +338,8 @@
   READ_UINT8 (&br, seqhdr->constrained_parameters_flag, 1);
 
   /* load_intra_quantiser_matrix */
-  READ_UINT8 (&br, load_intra_flag, 1);
-  if (load_intra_flag) {
+  READ_UINT8 (&br, seqhdr->load_intra_quantiser_matrix, 1);
+  if (seqhdr->load_intra_quantiser_matrix) {
     gint i;
     for (i = 0; i < 64; i++)
       READ_UINT8 (&br, seqhdr->intra_quantizer_matrix[i], 8);
@@ -348,8 +347,8 @@
     memcpy (seqhdr->intra_quantizer_matrix, default_intra_quantizer_matrix, 64);
 
   /* non intra quantizer matrix */
-  READ_UINT8 (&br, load_non_intra_flag, 1);
-  if (load_non_intra_flag) {
+  READ_UINT8 (&br, seqhdr->load_non_intra_quantiser_matrix, 1);
+  if (seqhdr->load_non_intra_quantiser_matrix) {
     gint i;
     for (i = 0; i < 64; i++)
       READ_UINT8 (&br, seqhdr->non_intra_quantizer_matrix[i], 8);
@@ -382,7 +381,7 @@
  * Parses the @seqext MPEG Video Sequence Extension structure members
  * from video @packet
  *
- * Returns: %TRUE if the seqext could be parsed correctly, %FALSE otherwize.
+ * Returns: %TRUE if the seqext could be parsed correctly, %FALSE otherwise.
  *
  * Since: 1.2
  */
@@ -449,7 +448,7 @@
  * Parses the @seqext MPEG Video Sequence Display Extension structure
  * members from video @packet
  *
- * Returns: %TRUE if the seqext could be parsed correctly, %FALSE otherwize.
+ * Returns: %TRUE if the seqext could be parsed correctly, %FALSE otherwise.
  *
  * Since: 1.2
  */
@@ -511,7 +510,7 @@
  * Parses the @seqscaleext MPEG Video Sequence Scalable Extension structure
  * members from video @packet
  *
- * Returns: %TRUE if the seqext could be parsed correctly, %FALSE otherwize.
+ * Returns: %TRUE if the seqext could be parsed correctly, %FALSE otherwise.
  *
  * Since: 1.2
  */
@@ -633,7 +632,7 @@
  * structure members from video @packet
  *
  * Returns: %TRUE if the quant matrix extension could be parsed correctly,
- * %FALSE otherwize.
+ * %FALSE otherwise.
  *
  * Since: 1.2
  */
@@ -703,7 +702,7 @@
  * video @packet
  *
  * Returns: %TRUE if the picture extension could be parsed correctly,
- * %FALSE otherwize.
+ * %FALSE otherwise.
  *
  * Since: 1.2
  */
@@ -803,7 +802,7 @@
  * from video @packet
  *
  * Returns: %TRUE if the picture sequence could be parsed correctly, %FALSE
- * otherwize.
+ * otherwise.
  *
  * Since: 1.2
  */
@@ -831,8 +830,8 @@
   if (hdr->pic_type == 0 || hdr->pic_type > 4)
     goto bad_pic_type;          /* Corrupted picture packet */
 
-  /* skip VBV delay */
-  if (!gst_bit_reader_skip (&br, 16))
+  /* VBV delay */
+  if (!gst_bit_reader_get_bits_uint16 (&br, &hdr->vbv_delay, 16))
     goto failed;
 
   if (hdr->pic_type == GST_MPEG_VIDEO_PICTURE_TYPE_P
@@ -880,7 +879,7 @@
  * Parses the @gop MPEG Video Group of Picture structure members from
  * video @packet
  *
- * Returns: %TRUE if the gop could be parsed correctly, %FALSE otherwize.
+ * Returns: %TRUE if the gop could be parsed correctly, %FALSE otherwise.
  *
  * Since: 1.2
  */
@@ -931,7 +930,7 @@
  *
  * Parses the @GstMpegVideoSliceHdr  structure members from @data
  *
- * Returns: %TRUE if the slice could be parsed correctly, %FALSE otherwize.
+ * Returns: %TRUE if the slice could be parsed correctly, %FALSE otherwise.
  *
  * Since: 1.2
  */
@@ -964,6 +963,9 @@
   if (height > 2800)
     READ_UINT8 (&br, vertical_position_extension, 3);
 
+  slice_hdr->vertical_position = packet->type;
+  slice_hdr->vertical_position_ext = vertical_position_extension;
+
   if (seqscaleext)
     if (seqscaleext->scalable_mode ==
         GST_MPEG_VIDEO_SEQ_SCALABLE_MODE_DATA_PARTITIONING)
@@ -971,12 +973,12 @@
 
   READ_UINT8 (&br, slice_hdr->quantiser_scale_code, 5);
 
-  READ_UINT8 (&br, extra_bits, 1);
-  if (!extra_bits)
+  READ_UINT8 (&br, slice_hdr->slice_ext_flag, 1);
+  if (!slice_hdr->slice_ext_flag)
     slice_hdr->intra_slice = 0;
   else {
     READ_UINT8 (&br, slice_hdr->intra_slice, 1);
-    SKIP (&br, 1);
+    READ_UINT8 (&br, slice_hdr->slice_picture_id_enable, 1);
     READ_UINT8 (&br, slice_hdr->slice_picture_id, 6);
 
     READ_UINT8 (&br, bits, 1);
@@ -1072,7 +1074,7 @@
  *
  * Parses the @seqhdr Mpeg Video Sequence Header structure members from @data
  *
- * Returns: %TRUE if the seqhdr could be parsed correctly, %FALSE otherwize.
+ * Returns: %TRUE if the seqhdr could be parsed correctly, %FALSE otherwise.
  *
  * Deprecated: Use gst_mpeg_video_packet_parse_sequence_header() instead.
  */
@@ -1105,7 +1107,7 @@
  *
  * Parses the @seqext Mpeg Video Sequence Extension structure members from @data
  *
- * Returns: %TRUE if the seqext could be parsed correctly, %FALSE otherwize.
+ * Returns: %TRUE if the seqext could be parsed correctly, %FALSE otherwise.
  *
  * Deprecated: Use gst_mpeg_video_packet_parse_sequence_extension() instead.
  */
@@ -1161,7 +1163,7 @@
  * @data
  *
  * Returns: %TRUE if the quant matrix extension could be parsed correctly,
- * %FALSE otherwize.
+ * %FALSE otherwise.
  *
  * Deprecated: Use gst_mpeg_video_packet_parse_quant_matrix_extension() instead.
  */
@@ -1195,7 +1197,7 @@
  * Parsers the @hdr Mpeg Video Picture Header structure members from @data
  *
  * Returns: %TRUE if the picture sequence could be parsed correctly, %FALSE
- * otherwize.
+ * otherwise.
  *
  * Deprecated: Use gst_mpeg_video_packet_parse_picture_header() instead.
  */
@@ -1229,7 +1231,7 @@
  * Parse the @ext Mpeg Video Picture Extension structure members from @data
  *
  * Returns: %TRUE if the picture extension could be parsed correctly,
- * %FALSE otherwize.
+ * %FALSE otherwise.
  *
  * Deprecated: Use gst_mpeg_video_packet_parse_picture_extension() instead.
  */
@@ -1262,7 +1264,7 @@
  *
  * Parses the @gop Mpeg Video Group of Picture structure members from @data
  *
- * Returns: %TRUE if the gop could be parsed correctly, %FALSE otherwize.
+ * Returns: %TRUE if the gop could be parsed correctly, %FALSE otherwise.
  *
  * Deprecated: Use gst_mpeg_video_packet_parse_gop() instead.
  */
diff --git a/gst-libs/gst/codecparsers/gstmpegvideoparser.h b/gst-libs/gst/codecparsers/gstmpegvideoparser.h
index 1298ed7..3989f0c 100644
--- a/gst-libs/gst/codecparsers/gstmpegvideoparser.h
+++ b/gst-libs/gst/codecparsers/gstmpegvideoparser.h
@@ -211,7 +211,9 @@
  * @bitrate_value: Value of the bitrate as is in the stream (400bps unit)
  * @bitrate: the real bitrate of the Mpeg video stream in bits per second, 0 if VBR stream
  * @constrained_parameters_flag: %TRUE if this stream uses contrained parameters.
+ * @load_intra_quantiser_matrix: %TRUE indicates the presence of intra_quantiser_matrix
  * @intra_quantizer_matrix: intra-quantization table, in zigzag scan order
+ * @load_non_intra_quantiser_matrix: %TRUE indicates the presence of non_intra_quantiser_matrix
  * @non_intra_quantizer_matrix: non-intra quantization table, in zigzag scan order
  *
  * The Mpeg2 Video Sequence Header structure.
@@ -226,7 +228,9 @@
 
   guint8  constrained_parameters_flag;
 
+  guint8  load_intra_quantiser_matrix;
   guint8  intra_quantizer_matrix[64];
+  guint8  load_non_intra_quantiser_matrix;
   guint8  non_intra_quantizer_matrix[64];
 
   /* Calculated values */
@@ -376,6 +380,7 @@
 {
   guint16 tsn;
   guint8 pic_type;
+  guint16 vbv_delay;
 
   guint8 full_pel_forward_vector, full_pel_backward_vector;
 
@@ -394,7 +399,7 @@
  * @alternate_scan: Alternate Scan
  * @repeat_first_field: Repeat First Field
  * @chroma_420_type: Chroma 420 Type
- * @progressive_frame: %TRUE if the frame is progressive %FALSE otherwize
+ * @progressive_frame: %TRUE if the frame is progressive %FALSE otherwise
  *
  * The Mpeg2 Video Picture Extension structure.
  */
@@ -445,10 +450,13 @@
 
 /**
  * GstMpegVideoSliceHdr:
- * @slice_vertical_position_extension: Extension to slice_vertical_position
+ * @vertical_position: slice vertical position
+ * @vertical_position_extension: Extension to slice_vertical_position
  * @priority_breakpoint: Point where the bitstream shall be partitioned
  * @quantiser_scale_code: Quantiser value (range: 1-31)
+ * @slice_ext_flag: Slice Extension flag
  * @intra_slice: Equal to one if all the macroblocks are intra macro blocks.
+ * @slice_picture_id_enable: controls the semantics of slice_picture_id
  * @slice_picture_id: Intended to aid recovery on severe bursts of
  *   errors for certain types of applications
  *
@@ -458,9 +466,14 @@
  */
 struct _GstMpegVideoSliceHdr
 {
+  guint8 vertical_position;
+  guint8 vertical_position_ext;
+
   guint8 priority_breakpoint;
   guint8 quantiser_scale_code;
+  guint8 slice_ext_flag;
   guint8 intra_slice;
+  guint8 slice_picture_id_enable;
   guint8 slice_picture_id;
 
   /* Calculated values */
diff --git a/gst-libs/gst/codecparsers/gstvc1parser.c b/gst-libs/gst/codecparsers/gstvc1parser.c
index fd16ee0..7ed73f8 100644
--- a/gst-libs/gst/codecparsers/gstvc1parser.c
+++ b/gst-libs/gst/codecparsers/gstvc1parser.c
@@ -2197,7 +2197,7 @@
  * in simple or main mode, or after #gst_vc1_parse_entry_point_header
  * if in advanced mode.
  *
- * Returns: %TRUE if everything went fine, %FALSE otherwize
+ * Returns: %TRUE if everything went fine, %FALSE otherwise
  */
 gboolean
 gst_vc1_bitplanes_ensure_size (GstVC1BitPlanes * bitplanes,
diff --git a/gst-libs/gst/codecparsers/gstvp9parser.c b/gst-libs/gst/codecparsers/gstvp9parser.c
index e518dee..0bd05bc 100644
--- a/gst-libs/gst/codecparsers/gstvp9parser.c
+++ b/gst-libs/gst/codecparsers/gstvp9parser.c
@@ -103,26 +103,26 @@
 }
 
 static gboolean
-parse_bitdepth_colorspace_sampling (GstBitReader * const br,
-    GstVp9FrameHdr * frame_hdr)
+parse_bitdepth_colorspace_sampling (GstVp9Parser * parser,
+    GstBitReader * const br, GstVp9FrameHdr * frame_hdr)
 {
   if (frame_hdr->profile > GST_VP9_PROFILE_1)
-    frame_hdr->bit_depth =
+    parser->bit_depth =
         gst_vp9_read_bit (br) ? GST_VP9_BIT_DEPTH_12 : GST_VP9_BIT_DEPTH_10;
   else
-    frame_hdr->bit_depth = GST_VP9_BIT_DEPTH_8;
+    parser->bit_depth = GST_VP9_BIT_DEPTH_8;
 
-  frame_hdr->color_space = gst_vp9_read_bits (br, 3);
-  if (frame_hdr->color_space != GST_VP9_CS_SRGB) {
-    frame_hdr->color_range = gst_vp9_read_bit (br);
+  parser->color_space = gst_vp9_read_bits (br, 3);
+  if (parser->color_space != GST_VP9_CS_SRGB) {
+    parser->color_range = gst_vp9_read_bit (br);
 
     if (frame_hdr->profile == GST_VP9_PROFILE_1
         || frame_hdr->profile == GST_VP9_PROFILE_3) {
 
-      frame_hdr->subsampling_x = gst_vp9_read_bit (br);
-      frame_hdr->subsampling_y = gst_vp9_read_bit (br);
+      parser->subsampling_x = gst_vp9_read_bit (br);
+      parser->subsampling_y = gst_vp9_read_bit (br);
 
-      if (frame_hdr->subsampling_x == 1 && frame_hdr->subsampling_y == 1) {
+      if (parser->subsampling_x == 1 && parser->subsampling_y == 1) {
         GST_ERROR
             ("4:2:0 subsampling is not supported in profile_1 or profile_3");
         goto error;
@@ -133,10 +133,10 @@
         goto error;
       }
     } else {
-      frame_hdr->subsampling_y = frame_hdr->subsampling_x = 1;
+      parser->subsampling_y = parser->subsampling_x = 1;
     }
   } else {
-    frame_hdr->color_range = GST_VP9_CR_FULL;
+    parser->color_range = GST_VP9_CR_FULL;
 
     if (frame_hdr->profile == GST_VP9_PROFILE_1
         || frame_hdr->profile == GST_VP9_PROFILE_3) {
@@ -481,12 +481,12 @@
     const GstVp9SegmentationInfoData *info = priv->segmentation + i;
 
     seg->luma_dc_quant_scale =
-        gst_vp9_dc_quant (q, quant_indices->y_dc_delta, frame_hdr->bit_depth);
-    seg->luma_ac_quant_scale = gst_vp9_ac_quant (q, 0, frame_hdr->bit_depth);
+        gst_vp9_dc_quant (q, quant_indices->y_dc_delta, parser->bit_depth);
+    seg->luma_ac_quant_scale = gst_vp9_ac_quant (q, 0, parser->bit_depth);
     seg->chroma_dc_quant_scale =
-        gst_vp9_dc_quant (q, quant_indices->uv_dc_delta, frame_hdr->bit_depth);
+        gst_vp9_dc_quant (q, quant_indices->uv_dc_delta, parser->bit_depth);
     seg->chroma_ac_quant_scale =
-        gst_vp9_ac_quant (q, quant_indices->uv_ac_delta, frame_hdr->bit_depth);
+        gst_vp9_ac_quant (q, quant_indices->uv_ac_delta, parser->bit_depth);
 
     if (lf->filter_level) {
       guint8 filter = seg_get_filter_level (parser, frame_hdr, i);
@@ -578,13 +578,17 @@
 }
 
 static void
-gst_vp9_parser_init (GstVp9Parser * parser)
+gst_vp9_parser_reset (GstVp9Parser * parser)
 {
   GstVp9ParserPrivate *priv = parser->priv;
 
-  memset (parser, 0, sizeof (GstVp9Parser));
-  memset (priv, 0, sizeof (GstVp9ParserPrivate));
+  parser->priv = NULL;
+  memset (parser->mb_segment_tree_probs, 0,
+      sizeof (parser->mb_segment_tree_probs));
+  memset (parser->segment_pred_probs, 0, sizeof (parser->segment_pred_probs));
+  memset (parser->segmentation, 0, sizeof (parser->segmentation));
 
+  memset (priv, 0, sizeof (GstVp9ParserPrivate));
   parser->priv = priv;
 }
 
@@ -592,7 +596,7 @@
 gst_vp9_parser_update (GstVp9Parser * parser, GstVp9FrameHdr * const frame_hdr)
 {
   if (frame_hdr->frame_type == GST_VP9_KEY_FRAME)
-    gst_vp9_parser_init (parser);
+    gst_vp9_parser_reset (parser);
 
   if (frame_is_intra_only (frame_hdr) || frame_hdr->error_resilient_mode)
     setup_past_independence (parser, frame_hdr);
@@ -626,16 +630,15 @@
   INITIALIZE_DEBUG_CATEGORY;
   GST_DEBUG ("Create VP9 Parser");
 
-  parser = g_slice_new (GstVp9Parser);
+  parser = g_slice_new0 (GstVp9Parser);
   if (!parser)
     return NULL;
 
-  priv = g_slice_new (GstVp9ParserPrivate);
+  priv = g_slice_new0 (GstVp9ParserPrivate);
   if (!priv)
     return NULL;
 
   parser->priv = priv;
-  gst_vp9_parser_init (parser);
 
   return parser;
 }
@@ -712,7 +715,7 @@
       goto error;
     }
 
-    if (!parse_bitdepth_colorspace_sampling (br, frame_hdr)) {
+    if (!parse_bitdepth_colorspace_sampling (parser, br, frame_hdr)) {
       GST_ERROR ("Failed to parse color_space/bit_depth info !");
       goto error;
     }
@@ -734,15 +737,15 @@
       }
 
       if (frame_hdr->profile > GST_VP9_PROFILE_0) {
-        if (!parse_bitdepth_colorspace_sampling (br, frame_hdr)) {
+        if (!parse_bitdepth_colorspace_sampling (parser, br, frame_hdr)) {
           GST_ERROR ("Failed to parse color_space/bit_depth info !");
           goto error;
         }
       } else {
-        frame_hdr->color_space = GST_VP9_CS_BT_601;
-        frame_hdr->color_range = GST_VP9_CR_LIMITED;
-        frame_hdr->subsampling_y = frame_hdr->subsampling_x = 1;
-        frame_hdr->bit_depth = GST_VP9_BIT_DEPTH_8;
+        parser->color_space = GST_VP9_CS_BT_601;
+        parser->color_range = GST_VP9_CR_LIMITED;
+        parser->subsampling_y = parser->subsampling_x = 1;
+        parser->bit_depth = GST_VP9_BIT_DEPTH_8;
       }
 
       frame_hdr->refresh_frame_flags =
@@ -766,12 +769,6 @@
 
       frame_hdr->allow_high_precision_mv = gst_vp9_read_bit (br);
       frame_hdr->mcomp_filter_type = parse_interp_filter (br);
-
-      /* Assing defalut values */
-      frame_hdr->color_space = GST_VP9_CS_BT_601;
-      frame_hdr->color_range = GST_VP9_CR_LIMITED;
-      frame_hdr->subsampling_y = frame_hdr->subsampling_x = 1;
-      frame_hdr->bit_depth = GST_VP9_BIT_DEPTH_8;
     }
   }
 
@@ -811,7 +808,6 @@
 
   frame_hdr->frame_header_length_in_bytes =
       (gst_bit_reader_get_pos (br) + 7) / 8;
-
   return gst_vp9_parser_update (parser, frame_hdr);
 
 error:
diff --git a/gst-libs/gst/codecparsers/gstvp9parser.h b/gst-libs/gst/codecparsers/gstvp9parser.h
index fd45e54..aaf30e5 100644
--- a/gst-libs/gst/codecparsers/gstvp9parser.h
+++ b/gst-libs/gst/codecparsers/gstvp9parser.h
@@ -350,17 +350,12 @@
  * @frame_type: frame type
  * @show_frame: indicate whether it is a displayable frame or not
  * @error_resilient_mode: error resilent mode
- * @subsampling_x: horizontal subsampling
- * @subsampling_y: vertical subsampling
  * @width: frame width
  * @height: frame height
  * @display_size_enabled: display size enabled (cropping)
  * @display_width: display width
  * @display_height: display height
  * @frame_context_idx: frame context index
- * @bit_depth: bit depth of the stream
- * @color_space: color space standard
- * @color_range: color range standard
  * @intra_only: intra only frame
  * @reset_frame_context: reset frame context
  * @refresh_frame_flags: refresh reference frame flags
@@ -391,8 +386,6 @@
   guint frame_type;
   guint8 show_frame;
   guint8 error_resilient_mode;
-  gint subsampling_x;
-  gint subsampling_y;
   guint32 width;
   guint32 height;
   guint8 display_size_enabled;
@@ -400,10 +393,6 @@
   guint32 display_height;
   guint frame_context_idx;
 
-  guint bit_depth;
-  guint color_space;
-  guint color_range;
-
   guint8 intra_only;
   gint reset_frame_context;
   gint refresh_frame_flags;
@@ -464,6 +453,11 @@
 /**
  * GstVp9Parser:
  * @priv: GstVp9ParserPrivate struct to keep track of state variables
+ * @subsampling_x: horizontal subsampling
+ * @subsampling_y: vertical subsampling
+ * @bit_depth: bit depth of the stream
+ * @color_space: color space standard
+ * @color_range: color range standard
  * @mb_segment_tree_probs: decoding tree probabilities
  * @segment_pred_probs: segment prediction probabiilties
  * @segmentation: Segmentation info
@@ -477,6 +471,12 @@
   /* private stuct for tracking state variables across frames */
   void *priv;
 
+  gint subsampling_x;
+  gint subsampling_y;
+  guint bit_depth;
+  guint color_space;
+  guint color_range;
+
   guint8 mb_segment_tree_probs[GST_VP9_SEG_TREE_PROBS];
   guint8 segment_pred_probs[GST_VP9_PREDICTION_PROBS];
   GstVp9Segmentation segmentation[GST_VP9_MAX_SEGMENTS];
diff --git a/gst-libs/gst/codecparsers/nalutils.c b/gst-libs/gst/codecparsers/nalutils.c
index b949acb..045b91b 100644
--- a/gst-libs/gst/codecparsers/nalutils.c
+++ b/gst-libs/gst/codecparsers/nalutils.c
@@ -77,7 +77,7 @@
   nr->cache = 0xff;
 }
 
-inline gboolean
+extern inline gboolean
 nal_reader_read (NalReader * nr, guint nbits)
 {
   if (G_UNLIKELY (nr->byte * 8 + (nbits - nr->bits_in_cache) > nr->size * 8)) {
@@ -115,7 +115,7 @@
 
 /* Skips the specified amount of bits. This is only suitable to a
    cacheable number of bits */
-inline gboolean
+extern inline gboolean
 nal_reader_skip (NalReader * nr, guint nbits)
 {
   g_assert (nbits <= 8 * sizeof (nr->cache));
@@ -146,19 +146,19 @@
   return TRUE;
 }
 
-inline guint
+extern inline guint
 nal_reader_get_pos (const NalReader * nr)
 {
   return nr->byte * 8 - nr->bits_in_cache;
 }
 
-inline guint
+extern inline guint
 nal_reader_get_remaining (const NalReader * nr)
 {
   return (nr->size - nr->byte) * 8 + nr->bits_in_cache;
 }
 
-inline guint
+extern inline guint
 nal_reader_get_epb_count (const NalReader * nr)
 {
   return nr->n_epb;
@@ -230,7 +230,7 @@
   return TRUE;
 }
 
-inline gboolean
+extern inline gboolean
 nal_reader_get_se (NalReader * nr, gint32 * val)
 {
   guint32 value;
@@ -297,7 +297,7 @@
 
 /***********  end of nal parser ***************/
 
-inline gint
+extern inline gint
 scan_for_start_codes (const guint8 * data, guint size)
 {
   GstByteReader br;
diff --git a/gst-libs/gst/gl/Makefile.am b/gst-libs/gst/gl/Makefile.am
index 3f04a51..5572d2d 100644
--- a/gst-libs/gst/gl/Makefile.am
+++ b/gst-libs/gst/gl/Makefile.am
@@ -14,6 +14,7 @@
 	gstglbuffer.c \
 	gstglmemory.c \
 	gstglmemorypbo.c \
+	gstglrenderbuffer.c \
 	gstglbufferpool.c \
 	gstglfilter.c \
 	gstglformat.c \
@@ -45,6 +46,7 @@
 	gstglbuffer.h \
 	gstglmemory.h \
 	gstglmemorypbo.h \
+	gstglrenderbuffer.h \
 	gstglbufferpool.h \
 	gstglfilter.h \
 	gstglformat.h \
@@ -129,7 +131,6 @@
 libgstgl_@GST_API_VERSION@_la_CFLAGS = \
 	-I$(top_srcdir)/gst-libs \
 	-I$(top_builddir)/gst-libs \
-	$(GL_CFLAGS) \
 	$(GST_PLUGINS_BASE_CFLAGS) \
 	$(GST_BASE_CFLAGS) \
 	$(GST_CFLAGS) \
diff --git a/gst-libs/gst/gl/Makefile.in b/gst-libs/gst/gl/Makefile.in
index 6bd9f5d..43eb799 100644
--- a/gst-libs/gst/gl/Makefile.in
+++ b/gst-libs/gst/gl/Makefile.in
@@ -200,6 +200,7 @@
 	libgstgl_@GST_API_VERSION@_la-gstglbuffer.lo \
 	libgstgl_@GST_API_VERSION@_la-gstglmemory.lo \
 	libgstgl_@GST_API_VERSION@_la-gstglmemorypbo.lo \
+	libgstgl_@GST_API_VERSION@_la-gstglrenderbuffer.lo \
 	libgstgl_@GST_API_VERSION@_la-gstglbufferpool.lo \
 	libgstgl_@GST_API_VERSION@_la-gstglfilter.lo \
 	libgstgl_@GST_API_VERSION@_la-gstglformat.lo \
@@ -400,6 +401,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -421,6 +424,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -470,6 +475,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -615,6 +622,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -741,8 +750,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -785,8 +792,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -889,6 +901,7 @@
 	gstglbuffer.c \
 	gstglmemory.c \
 	gstglmemorypbo.c \
+	gstglrenderbuffer.c \
 	gstglbufferpool.c \
 	gstglfilter.c \
 	gstglformat.c \
@@ -920,6 +933,7 @@
 	gstglbuffer.h \
 	gstglmemory.h \
 	gstglmemorypbo.h \
+	gstglrenderbuffer.h \
 	gstglbufferpool.h \
 	gstglfilter.h \
 	gstglformat.h \
@@ -959,7 +973,6 @@
 libgstgl_@GST_API_VERSION@_la_CFLAGS = \
 	-I$(top_srcdir)/gst-libs \
 	-I$(top_builddir)/gst-libs \
-	$(GL_CFLAGS) \
 	$(GST_PLUGINS_BASE_CFLAGS) \
 	$(GST_BASE_CFLAGS) \
 	$(GST_CFLAGS) \
@@ -1080,6 +1093,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglmemorypbo.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstgloverlaycompositor.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglquery.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglrenderbuffer.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglshader.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglshaderstrings.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglsl.Plo@am__quote@
@@ -1163,6 +1177,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgl_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstgl_@GST_API_VERSION@_la-gstglmemorypbo.lo `test -f 'gstglmemorypbo.c' || echo '$(srcdir)/'`gstglmemorypbo.c
 
+libgstgl_@GST_API_VERSION@_la-gstglrenderbuffer.lo: gstglrenderbuffer.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgl_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstgl_@GST_API_VERSION@_la-gstglrenderbuffer.lo -MD -MP -MF $(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglrenderbuffer.Tpo -c -o libgstgl_@GST_API_VERSION@_la-gstglrenderbuffer.lo `test -f 'gstglrenderbuffer.c' || echo '$(srcdir)/'`gstglrenderbuffer.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglrenderbuffer.Tpo $(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglrenderbuffer.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstglrenderbuffer.c' object='libgstgl_@GST_API_VERSION@_la-gstglrenderbuffer.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgl_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstgl_@GST_API_VERSION@_la-gstglrenderbuffer.lo `test -f 'gstglrenderbuffer.c' || echo '$(srcdir)/'`gstglrenderbuffer.c
+
 libgstgl_@GST_API_VERSION@_la-gstglbufferpool.lo: gstglbufferpool.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgl_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstgl_@GST_API_VERSION@_la-gstglbufferpool.lo -MD -MP -MF $(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglbufferpool.Tpo -c -o libgstgl_@GST_API_VERSION@_la-gstglbufferpool.lo `test -f 'gstglbufferpool.c' || echo '$(srcdir)/'`gstglbufferpool.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglbufferpool.Tpo $(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglbufferpool.Plo
diff --git a/gst-libs/gst/gl/android/Makefile.in b/gst-libs/gst/gl/android/Makefile.in
index 3f966c4..a54865b 100644
--- a/gst-libs/gst/gl/android/Makefile.in
+++ b/gst-libs/gst/gl/android/Makefile.in
@@ -301,6 +301,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -322,6 +324,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -371,6 +375,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -516,6 +522,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -642,8 +650,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -686,8 +692,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/gl/cocoa/Makefile.in b/gst-libs/gst/gl/cocoa/Makefile.in
index 1b0c70f..1e4b991 100644
--- a/gst-libs/gst/gl/cocoa/Makefile.in
+++ b/gst-libs/gst/gl/cocoa/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/gl/cocoa/gstglcaopengllayer.m b/gst-libs/gst/gl/cocoa/gstglcaopengllayer.m
index 45bd0dd..59ed09c 100644
--- a/gst-libs/gst/gl/cocoa/gstglcaopengllayer.m
+++ b/gst-libs/gst/gl/cocoa/gstglcaopengllayer.m
@@ -126,7 +126,7 @@
   }
 
   gst_gl_context_activate (self->draw_context, TRUE);
-  gst_gl_context_set_shared_with (self->draw_context, self->gst_gl_context);
+  gst_gl_context_set_shared_with (self->draw_context, GST_GL_CONTEXT (self->gst_gl_context));
   if (!gst_gl_context_fill_info (self->draw_context, &error)) {
     GST_ERROR ("failed to fill wrapped context information: %s", error->message);
     return NULL;
diff --git a/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m b/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m
index 0d027c5..495d022 100644
--- a/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m
+++ b/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m
@@ -77,6 +77,8 @@
     gint width, gint height);
 static void gst_gl_window_cocoa_show (GstGLWindow * window);
 static void gst_gl_window_cocoa_queue_resize (GstGLWindow * window);
+static void gst_gl_window_cocoa_send_message_async (GstGLWindow * window,
+    GstGLWindowCB callback, gpointer data, GDestroyNotify destroy);
 
 struct _GstGLWindowCocoaPrivate
 {
@@ -90,6 +92,8 @@
 
   /* atomic set when the internal NSView has been created */
   int view_ready;
+
+  dispatch_queue_t gl_queue;
 };
 
 static void
@@ -111,6 +115,8 @@
       GST_DEBUG_FUNCPTR (gst_gl_window_cocoa_set_preferred_size);
   window_class->show = GST_DEBUG_FUNCPTR (gst_gl_window_cocoa_show);
   window_class->queue_resize = GST_DEBUG_FUNCPTR (gst_gl_window_cocoa_queue_resize);
+  window_class->send_message_async =
+      GST_DEBUG_FUNCPTR (gst_gl_window_cocoa_send_message_async);
 
   gobject_class->finalize = gst_gl_window_cocoa_finalize;
 }
@@ -122,11 +128,15 @@
 
   window->priv->preferred_width = 320;
   window->priv->preferred_height = 240;
+  window->priv->gl_queue =
+      dispatch_queue_create ("org.freedesktop.gstreamer.glwindow", NULL);
 }
 
 static void
 gst_gl_window_cocoa_finalize (GObject * object)
 {
+  GstGLWindowCocoa *window = GST_GL_WINDOW_COCOA (object);
+  dispatch_release (window->priv->gl_queue);
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
 
@@ -370,6 +380,33 @@
   [pool release];
 }
 
+static void
+gst_gl_window_cocoa_send_message_async (GstGLWindow * window,
+    GstGLWindowCB callback, gpointer data, GDestroyNotify destroy)
+{
+  GstGLWindowCocoa *window_cocoa = (GstGLWindowCocoa *) window;
+  GstGLContext *context = gst_gl_window_get_context (window);
+  GThread *thread = gst_gl_context_get_thread (context);
+
+  if (thread == g_thread_self()) {
+    /* this case happens for nested calls happening from inside the GCD queue */
+    callback (data);
+    if (destroy)
+      destroy (data);
+    gst_object_unref (context);
+  } else {
+    dispatch_async (window_cocoa->priv->gl_queue, ^{
+      gst_gl_context_activate (context, TRUE);
+      gst_object_unref (context);
+      callback (data);
+      if (destroy)
+        destroy (data);
+    });
+  }
+  if (thread)
+    g_thread_unref (thread);
+}
+
 /* =============================================================*/
 /*                                                              */
 /*                    GstGLNSWindow implementation              */
diff --git a/gst-libs/gst/gl/dispmanx/Makefile.in b/gst-libs/gst/gl/dispmanx/Makefile.in
index b8d2722..b49a2e5 100644
--- a/gst-libs/gst/gl/dispmanx/Makefile.in
+++ b/gst-libs/gst/gl/dispmanx/Makefile.in
@@ -273,6 +273,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -294,6 +296,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -343,6 +347,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -488,6 +494,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -614,8 +622,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -658,8 +664,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.c b/gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.c
index f4a5ae0..d06424c 100644
--- a/gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.c
+++ b/gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.c
@@ -57,7 +57,8 @@
 static gboolean gst_gl_window_dispmanx_egl_open (GstGLWindow * window,
     GError ** error);
 static guintptr gst_gl_window_dispmanx_egl_get_display (GstGLWindow * window);
-
+static gboolean gst_gl_window_dispmanx_egl_set_render_rectangle (GstGLWindow *
+    window, gint x, gint y, gint width, gint height);
 
 static void window_resize (GstGLWindowDispmanxEGL * window_egl, guint width,
     guint height, gboolean visible);
@@ -78,6 +79,8 @@
       GST_DEBUG_FUNCPTR (gst_gl_window_dispmanx_egl_get_display);
   window_class->set_preferred_size =
       GST_DEBUG_FUNCPTR (gst_gl_window_dispmanx_egl_set_preferred_size);
+  window_class->set_render_rectangle =
+      GST_DEBUG_FUNCPTR (gst_gl_window_dispmanx_egl_set_render_rectangle);
 }
 
 static void
@@ -92,6 +95,10 @@
   window_egl->native.element = 0;
   window_egl->native.width = 0;
   window_egl->native.height = 0;
+  window_egl->render_rect.x = 0;
+  window_egl->render_rect.y = 0;
+  window_egl->render_rect.w = 0;
+  window_egl->render_rect.h = 0;
 }
 
 /* Must be called in the gl thread */
@@ -194,20 +201,27 @@
   if (window_egl->display) {
     VC_RECT_T dst_rect;
     VC_RECT_T src_rect;
-    GstVideoRectangle src, dst, res;
+    GstVideoRectangle src, res;
     DISPMANX_UPDATE_HANDLE_T dispman_update;
     uint32_t opacity = visible ? 255 : 0;
     VC_DISPMANX_ALPHA_T alpha =
         { DISPMANX_FLAGS_ALPHA_FIXED_ALL_PIXELS, opacity, 0 };
 
-    /* Center width*height frame inside dp_width*dp_height */
     src.w = width;
     src.h = height;
     src.x = src.y = 0;
-    dst.w = window_egl->dp_width;
-    dst.h = window_egl->dp_height;
-    dst.x = dst.y = 0;
-    gst_video_sink_center_rect (src, dst, &res, FALSE);
+
+    /* If there is no render rectangle, center the width*height frame
+     *  inside dp_width*dp_height */
+    if (window_egl->render_rect.w <= 0 || window_egl->render_rect.h <= 0) {
+      GstVideoRectangle dst;
+      dst.w = window_egl->dp_width;
+      dst.h = window_egl->dp_height;
+      dst.x = dst.y = 0;
+      gst_video_sink_center_rect (src, dst, &res, FALSE);
+    } else {
+      gst_video_sink_center_rect (src, window_egl->render_rect, &res, FALSE);
+    }
 
     dst_rect.x = res.x;
     dst_rect.y = res.y;
@@ -243,6 +257,21 @@
   window_egl->native.height = height;
 }
 
+static gboolean
+gst_gl_window_dispmanx_egl_set_render_rectangle (GstGLWindow * window,
+    gint x, gint y, gint width, gint height)
+{
+  GstGLWindowDispmanxEGL *window_egl = GST_GL_WINDOW_DISPMANX_EGL (window);
+  window_egl->render_rect.x = x;
+  window_egl->render_rect.y = x;
+  window_egl->render_rect.w = width;
+  window_egl->render_rect.h = height;
+
+  window_resize (window_egl, window_egl->render_rect.w,
+      window_egl->render_rect.h, TRUE);
+  return TRUE;
+}
+
 static void
 gst_gl_window_dispmanx_egl_show (GstGLWindow * window)
 {
diff --git a/gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.h b/gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.h
index 3130a6c..f0663e2 100644
--- a/gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.h
+++ b/gst-libs/gst/gl/dispmanx/gstglwindow_dispmanx_egl.h
@@ -67,6 +67,7 @@
 
   gint preferred_width;
   gint preferred_height;
+  GstVideoRectangle render_rect;
 
   gboolean visible;
 
diff --git a/gst-libs/gst/gl/eagl/Makefile.in b/gst-libs/gst/gl/eagl/Makefile.in
index 074ff57..11ee06c 100644
--- a/gst-libs/gst/gl/eagl/Makefile.in
+++ b/gst-libs/gst/gl/eagl/Makefile.in
@@ -273,6 +273,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -294,6 +296,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -343,6 +347,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -488,6 +494,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -614,8 +622,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -658,8 +664,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/gl/eagl/gstglcontext_eagl.m b/gst-libs/gst/gl/eagl/gstglcontext_eagl.m
index 42dde56..ecadc3f 100644
--- a/gst-libs/gst/gl/eagl/gstglcontext_eagl.m
+++ b/gst-libs/gst/gl/eagl/gstglcontext_eagl.m
@@ -219,18 +219,30 @@
 {
   GstGLContextEagl *context_eagl = GST_GL_CONTEXT_EAGL (context);
   GstGLContextEaglPrivate *priv = context_eagl->priv;
+  EAGLSharegroup *share_group;
 
   if (other_context) {
     EAGLContext *external_gl_context = (EAGLContext *)
         gst_gl_context_get_gl_context (other_context);
-    EAGLSharegroup *share_group = [external_gl_context sharegroup];
-
-    priv->eagl_context = [[EAGLContext alloc] initWithAPI: kEAGLRenderingAPIOpenGLES2 sharegroup:share_group];
-    [share_group release];
+    share_group = [external_gl_context sharegroup];
   } else {
-    priv->eagl_context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
+    share_group = nil;
   }
 
+  priv->eagl_context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3 sharegroup:share_group];
+  if (!priv->eagl_context) {
+    priv->eagl_context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2 sharegroup:share_group];
+  }
+  if (!priv->eagl_context) {
+    g_set_error_literal (error, GST_GL_CONTEXT_ERROR,
+        GST_GL_CONTEXT_ERROR_CREATE_CONTEXT,
+        "Failed to create OpenGL ES context");
+    return FALSE;
+  }
+
+  if (share_group)
+    [share_group release];
+
   priv->eagl_layer = NULL;
   priv->framebuffer = 0;
   priv->color_renderbuffer = 0;
diff --git a/gst-libs/gst/gl/eagl/gstglwindow_eagl.m b/gst-libs/gst/gl/eagl/gstglwindow_eagl.m
index eb9d4f7..72ab1ab 100644
--- a/gst-libs/gst/gl/eagl/gstglwindow_eagl.m
+++ b/gst-libs/gst/gl/eagl/gstglwindow_eagl.m
@@ -40,6 +40,7 @@
 #define gst_gl_window_eagl_parent_class parent_class
 G_DEFINE_TYPE_WITH_CODE (GstGLWindowEagl, gst_gl_window_eagl,
     GST_GL_TYPE_WINDOW, DEBUG_INIT);
+static void gst_gl_window_eagl_finalize (GObject * object);
 
 static guintptr gst_gl_window_eagl_get_display (GstGLWindow * window);
 static guintptr gst_gl_window_eagl_get_window_handle (GstGLWindow * window);
@@ -48,21 +49,27 @@
 static void gst_gl_window_eagl_set_preferred_size (GstGLWindow * window,
     gint width, gint height);
 static void gst_gl_window_eagl_draw (GstGLWindow * window);
+static void gst_gl_window_eagl_send_message_async (GstGLWindow * window,
+    GstGLWindowCB callback, gpointer data, GDestroyNotify destroy);
 
 struct _GstGLWindowEaglPrivate
 {
   UIView *view;
   gint window_width, window_height;
   gint preferred_width, preferred_height;
+  dispatch_queue_t gl_queue;
 };
 
 static void
 gst_gl_window_eagl_class_init (GstGLWindowEaglClass * klass)
 {
+  GObjectClass *gobject_class = (GObjectClass *) klass;
   GstGLWindowClass *window_class = (GstGLWindowClass *) klass;
 
   g_type_class_add_private (klass, sizeof (GstGLWindowEaglPrivate));
 
+  gobject_class->finalize = gst_gl_window_eagl_finalize;
+
   window_class->get_display =
       GST_DEBUG_FUNCPTR (gst_gl_window_eagl_get_display);
   window_class->get_window_handle =
@@ -72,13 +79,24 @@
   window_class->draw = GST_DEBUG_FUNCPTR (gst_gl_window_eagl_draw);
   window_class->set_preferred_size =
       GST_DEBUG_FUNCPTR (gst_gl_window_eagl_set_preferred_size);
+  window_class->send_message_async =
+      GST_DEBUG_FUNCPTR (gst_gl_window_eagl_send_message_async);
 }
 
 static void
 gst_gl_window_eagl_init (GstGLWindowEagl * window)
 {
   window->priv = GST_GL_WINDOW_EAGL_GET_PRIVATE (window);
+  window->priv->gl_queue =
+      dispatch_queue_create ("org.freedesktop.gstreamer.glwindow", NULL);
+}
 
+static void
+gst_gl_window_eagl_finalize (GObject * object)
+{
+  GstGLWindowEagl *window = GST_GL_WINDOW_EAGL (object);
+  dispatch_release (window->priv->gl_queue);
+  G_OBJECT_CLASS (parent_class)->finalize (object);
 }
 
 /* Must be called in the gl thread */
@@ -127,6 +145,33 @@
 }
 
 static void
+gst_gl_window_eagl_send_message_async (GstGLWindow * window,
+    GstGLWindowCB callback, gpointer data, GDestroyNotify destroy)
+{
+  GstGLWindowEagl *window_eagl = (GstGLWindowEagl *) window;
+  GstGLContext *context = gst_gl_window_get_context (window);
+  GThread *thread = gst_gl_context_get_thread (context);
+
+  if (thread == g_thread_self()) {
+    /* this case happens for nested calls happening from inside the GCD queue */
+    callback (data);
+    if (destroy)
+      destroy (data);
+    gst_object_unref (context);
+  } else {
+    dispatch_async (window_eagl->priv->gl_queue, ^{
+      gst_gl_context_activate (context, TRUE);
+      gst_object_unref (context);
+      callback (data);
+      if (destroy)
+        destroy (data);
+    });
+  }
+  if (thread)
+    g_thread_unref (thread);
+}
+
+static void
 draw_cb (gpointer data)
 {
   GstGLWindowEagl *window_eagl = data;
diff --git a/gst-libs/gst/gl/egl/Makefile.am b/gst-libs/gst/gl/egl/Makefile.am
index b808178..e164eb0 100644
--- a/gst-libs/gst/gl/egl/Makefile.am
+++ b/gst-libs/gst/gl/egl/Makefile.am
@@ -5,7 +5,8 @@
 libgstgl_egl_la_SOURCES = \
 	gstgldisplay_egl.c \
 	gstglcontext_egl.c \
-	gsteglimagememory.c
+	gstglmemoryegl.c \
+	gsteglimage.c
 
 noinst_HEADERS =
 
@@ -13,7 +14,8 @@
 libgstgl_eglinclude_HEADERS = \
 	gstgldisplay_egl.h \
 	gstglcontext_egl.h \
-	gsteglimagememory.h \
+	gstglmemoryegl.h \
+	gsteglimage.h \
 	gstegl.h
 
 libgstgl_egl_la_CFLAGS = \
diff --git a/gst-libs/gst/gl/egl/Makefile.in b/gst-libs/gst/gl/egl/Makefile.in
index e182bd9..bf567c6 100644
--- a/gst-libs/gst/gl/egl/Makefile.in
+++ b/gst-libs/gst/gl/egl/Makefile.in
@@ -137,7 +137,8 @@
 libgstgl_egl_la_LIBADD =
 am_libgstgl_egl_la_OBJECTS = libgstgl_egl_la-gstgldisplay_egl.lo \
 	libgstgl_egl_la-gstglcontext_egl.lo \
-	libgstgl_egl_la-gsteglimagememory.lo
+	libgstgl_egl_la-gstglmemoryegl.lo \
+	libgstgl_egl_la-gsteglimage.lo
 libgstgl_egl_la_OBJECTS = $(am_libgstgl_egl_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -302,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -323,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -372,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -517,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -643,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -781,14 +793,16 @@
 libgstgl_egl_la_SOURCES = \
 	gstgldisplay_egl.c \
 	gstglcontext_egl.c \
-	gsteglimagememory.c
+	gstglmemoryegl.c \
+	gsteglimage.c
 
 noinst_HEADERS = 
 libgstgl_eglincludedir = $(includedir)/gstreamer-@GST_API_VERSION@/gst/gl/egl
 libgstgl_eglinclude_HEADERS = \
 	gstgldisplay_egl.h \
 	gstglcontext_egl.h \
-	gsteglimagememory.h \
+	gstglmemoryegl.h \
+	gsteglimage.h \
 	gstegl.h
 
 libgstgl_egl_la_CFLAGS = \
@@ -857,9 +871,10 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_egl_la-gsteglimagememory.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_egl_la-gsteglimage.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_egl_la-gstglcontext_egl.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_egl_la-gstgldisplay_egl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_egl_la-gstglmemoryegl.Plo@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -899,12 +914,19 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgl_egl_la_CFLAGS) $(CFLAGS) -c -o libgstgl_egl_la-gstglcontext_egl.lo `test -f 'gstglcontext_egl.c' || echo '$(srcdir)/'`gstglcontext_egl.c
 
-libgstgl_egl_la-gsteglimagememory.lo: gsteglimagememory.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgl_egl_la_CFLAGS) $(CFLAGS) -MT libgstgl_egl_la-gsteglimagememory.lo -MD -MP -MF $(DEPDIR)/libgstgl_egl_la-gsteglimagememory.Tpo -c -o libgstgl_egl_la-gsteglimagememory.lo `test -f 'gsteglimagememory.c' || echo '$(srcdir)/'`gsteglimagememory.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstgl_egl_la-gsteglimagememory.Tpo $(DEPDIR)/libgstgl_egl_la-gsteglimagememory.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gsteglimagememory.c' object='libgstgl_egl_la-gsteglimagememory.lo' libtool=yes @AMDEPBACKSLASH@
+libgstgl_egl_la-gstglmemoryegl.lo: gstglmemoryegl.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgl_egl_la_CFLAGS) $(CFLAGS) -MT libgstgl_egl_la-gstglmemoryegl.lo -MD -MP -MF $(DEPDIR)/libgstgl_egl_la-gstglmemoryegl.Tpo -c -o libgstgl_egl_la-gstglmemoryegl.lo `test -f 'gstglmemoryegl.c' || echo '$(srcdir)/'`gstglmemoryegl.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstgl_egl_la-gstglmemoryegl.Tpo $(DEPDIR)/libgstgl_egl_la-gstglmemoryegl.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstglmemoryegl.c' object='libgstgl_egl_la-gstglmemoryegl.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgl_egl_la_CFLAGS) $(CFLAGS) -c -o libgstgl_egl_la-gsteglimagememory.lo `test -f 'gsteglimagememory.c' || echo '$(srcdir)/'`gsteglimagememory.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgl_egl_la_CFLAGS) $(CFLAGS) -c -o libgstgl_egl_la-gstglmemoryegl.lo `test -f 'gstglmemoryegl.c' || echo '$(srcdir)/'`gstglmemoryegl.c
+
+libgstgl_egl_la-gsteglimage.lo: gsteglimage.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgl_egl_la_CFLAGS) $(CFLAGS) -MT libgstgl_egl_la-gsteglimage.lo -MD -MP -MF $(DEPDIR)/libgstgl_egl_la-gsteglimage.Tpo -c -o libgstgl_egl_la-gsteglimage.lo `test -f 'gsteglimage.c' || echo '$(srcdir)/'`gsteglimage.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstgl_egl_la-gsteglimage.Tpo $(DEPDIR)/libgstgl_egl_la-gsteglimage.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gsteglimage.c' object='libgstgl_egl_la-gsteglimage.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgl_egl_la_CFLAGS) $(CFLAGS) -c -o libgstgl_egl_la-gsteglimage.lo `test -f 'gsteglimage.c' || echo '$(srcdir)/'`gsteglimage.c
 
 mostlyclean-libtool:
 	-rm -f *.lo
diff --git a/gst-libs/gst/gl/egl/gstegl.h b/gst-libs/gst/gl/egl/gstegl.h
index 82d4953..2a31f82 100644
--- a/gst-libs/gst/gl/egl/gstegl.h
+++ b/gst-libs/gst/gl/egl/gstegl.h
@@ -46,4 +46,9 @@
 #pragma GCC diagnostic pop
 #endif
 
+/* compatibility definitions... */
+#if !GST_GL_HAVE_EGLATTRIB
+typedef gintptr EGLAttrib;
+#endif
+
 #endif /* _GST_EGL_H_ */
diff --git a/gst-libs/gst/gl/egl/gsteglimage.c b/gst-libs/gst/gl/egl/gsteglimage.c
new file mode 100644
index 0000000..5d2a0a0
--- /dev/null
+++ b/gst-libs/gst/gl/egl/gsteglimage.c
@@ -0,0 +1,322 @@
+/*
+ * GStreamer
+ * Copyright (C) 2012 Collabora Ltd.
+ *   @author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
+ * Copyright (C) 2014 Julien Isorce <julien.isorce@gmail.com>
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gsteglimage.h"
+#include <string.h>
+
+#if GST_GL_HAVE_DMABUF
+#include <gst/allocators/gstdmabuf.h>
+#include <libdrm/drm_fourcc.h>
+
+#ifndef DRM_FORMAT_R8
+#define DRM_FORMAT_R8 fourcc_code('R', '8', ' ', ' ')
+#endif
+
+#ifndef DRM_FORMAT_RG88
+#define DRM_FORMAT_RG88 fourcc_code('R', 'G', '8', '8')
+#endif
+
+#ifndef DRM_FORMAT_GR88
+#define DRM_FORMAT_GR88 fourcc_code('G', 'R', '8', '8')
+#endif
+#endif
+
+#ifndef EGL_LINUX_DMA_BUF_EXT
+#define EGL_LINUX_DMA_BUF_EXT 0x3270
+#endif
+
+#ifndef EGL_LINUX_DRM_FOURCC_EXT
+#define EGL_LINUX_DRM_FOURCC_EXT 0x3271
+#endif
+
+#ifndef EGL_DMA_BUF_PLANE0_FD_EXT
+#define EGL_DMA_BUF_PLANE0_FD_EXT 0x3272
+#endif
+
+#ifndef EGL_DMA_BUF_PLANE0_OFFSET_EXT
+#define EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273
+#endif
+
+#ifndef EGL_DMA_BUF_PLANE0_PITCH_EXT
+#define EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274
+#endif
+
+GST_DEFINE_MINI_OBJECT_TYPE (GstEGLImage, gst_egl_image);
+
+/* XXX: This is only used currently if dmabuf support is enabled */
+#if GST_GL_HAVE_DMABUF
+#ifndef GST_DISABLE_GST_DEBUG
+#define GST_CAT_DEFAULT gst_egl_image_ensure_debug_category()
+
+static GstDebugCategory *
+gst_egl_image_ensure_debug_category (void)
+{
+  static gsize cat_gonce = 0;
+
+  if (g_once_init_enter (&cat_gonce)) {
+    GstDebugCategory *cat = NULL;
+
+    GST_DEBUG_CATEGORY_INIT (cat, "gleglimage", 0, "EGLImage wrapper");
+
+    g_once_init_leave (&cat_gonce, (gsize) cat);
+  }
+
+  return (GstDebugCategory *) cat_gonce;
+}
+#endif /* GST_DISABLE_GST_DEBUG */
+#endif /* GST_GL_HAVE_DMABUF */
+
+EGLImageKHR
+gst_egl_image_get_image (GstEGLImage * image)
+{
+  g_return_val_if_fail (GST_IS_EGL_IMAGE (image), EGL_NO_IMAGE_KHR);
+
+  return image->image;
+}
+
+GstVideoGLTextureOrientation
+gst_egl_image_get_orientation (GstEGLImage * image)
+{
+  g_return_val_if_fail (GST_IS_EGL_IMAGE (image),
+      GST_VIDEO_GL_TEXTURE_ORIENTATION_X_NORMAL_Y_NORMAL);
+
+  return image->orientation;
+}
+
+static void
+_gst_egl_image_free_thread (GstGLContext * context, GstEGLImage * image)
+{
+  if (image->destroy_notify)
+    image->destroy_notify (image, image->destroy_data);
+}
+
+static void
+_gst_egl_image_free (GstMiniObject * object)
+{
+  GstEGLImage *image = GST_EGL_IMAGE (object);
+
+  if (image->context) {
+    gst_gl_context_thread_add (GST_GL_CONTEXT (image->context),
+        (GstGLContextThreadFunc) _gst_egl_image_free_thread, image);
+    gst_object_unref (image->context);
+  }
+}
+
+static GstMiniObject *
+_gst_egl_image_copy (GstMiniObject * obj)
+{
+  return gst_mini_object_ref (obj);
+}
+
+GstEGLImage *
+gst_egl_image_new_wrapped (GstGLContext * context, EGLImageKHR image,
+    GstVideoGLTextureType type, GstVideoGLTextureOrientation orientation,
+    gpointer user_data, GstEGLImageDestroyNotify user_data_destroy)
+{
+  GstEGLImage *img = NULL;
+
+  g_return_val_if_fail (context != NULL, NULL);
+  g_return_val_if_fail (GST_IS_GL_CONTEXT_EGL (context), NULL);
+  g_return_val_if_fail (image != EGL_NO_IMAGE_KHR, NULL);
+
+  img = g_new0 (GstEGLImage, 1);
+  gst_mini_object_init (GST_MINI_OBJECT_CAST (img), 0, GST_TYPE_EGL_IMAGE,
+      (GstMiniObjectCopyFunction) _gst_egl_image_copy, NULL,
+      (GstMiniObjectFreeFunction) _gst_egl_image_free);
+
+  img->context = gst_object_ref (context);
+  img->image = image;
+  img->type = type;
+  img->orientation = orientation;
+
+  img->destroy_data = user_data;
+  img->destroy_notify = user_data_destroy;
+
+  return img;
+}
+
+#if GST_GL_HAVE_DMABUF
+/*
+ * GStreamer format descriptions differ from DRM formats as the representation
+ * is relative to a register, hence in native endianness. To reduce the driver
+ * requirement, we only import with a subset of texture formats and use
+ * shaders to convert. This way we avoid having to use external texture
+ * target.
+ */
+static int
+_drm_fourcc_from_info (GstVideoInfo * info, int plane)
+{
+  GstVideoFormat format = GST_VIDEO_INFO_FORMAT (info);
+#if G_BYTE_ORDER == G_LITTLE_ENDIAN
+  const gint rgba_fourcc = DRM_FORMAT_ABGR8888;
+  const gint rgb_fourcc = DRM_FORMAT_BGR888;
+  const gint rg_fourcc = DRM_FORMAT_GR88;
+#else
+  const gint rgba_fourcc = DRM_FORMAT_RGBA8888;
+  const gint rgb_fourcc = DRM_FORMAT_RGB888;
+  const gint rg_fourcc = DRM_FORMAT_RG88;
+#endif
+
+  GST_DEBUG ("Getting DRM fourcc for %s plane %i",
+      gst_video_format_to_string (format), plane);
+
+  switch (format) {
+    case GST_VIDEO_FORMAT_RGB16:
+    case GST_VIDEO_FORMAT_BGR16:
+      return DRM_FORMAT_RGB565;
+
+    case GST_VIDEO_FORMAT_RGB:
+    case GST_VIDEO_FORMAT_BGR:
+      return rgb_fourcc;
+
+    case GST_VIDEO_FORMAT_RGBA:
+    case GST_VIDEO_FORMAT_RGBx:
+    case GST_VIDEO_FORMAT_BGRA:
+    case GST_VIDEO_FORMAT_BGRx:
+    case GST_VIDEO_FORMAT_ARGB:
+    case GST_VIDEO_FORMAT_xRGB:
+    case GST_VIDEO_FORMAT_ABGR:
+    case GST_VIDEO_FORMAT_xBGR:
+    case GST_VIDEO_FORMAT_AYUV:
+      return rgba_fourcc;
+
+    case GST_VIDEO_FORMAT_GRAY8:
+      return DRM_FORMAT_R8;
+
+    case GST_VIDEO_FORMAT_YUY2:
+    case GST_VIDEO_FORMAT_UYVY:
+    case GST_VIDEO_FORMAT_GRAY16_LE:
+    case GST_VIDEO_FORMAT_GRAY16_BE:
+      return rg_fourcc;
+
+    case GST_VIDEO_FORMAT_NV12:
+    case GST_VIDEO_FORMAT_NV21:
+      return plane == 0 ? DRM_FORMAT_R8 : rg_fourcc;
+
+    case GST_VIDEO_FORMAT_I420:
+    case GST_VIDEO_FORMAT_YV12:
+    case GST_VIDEO_FORMAT_Y41B:
+    case GST_VIDEO_FORMAT_Y42B:
+    case GST_VIDEO_FORMAT_Y444:
+      return DRM_FORMAT_R8;
+
+    default:
+      GST_ERROR ("Unsupported format for DMABuf.");
+      return -1;
+  }
+}
+
+static void
+_destroy_egl_image (GstEGLImage * image, gpointer user_data)
+{
+  image->context->eglDestroyImage (image->context->egl_display, image->image);
+}
+
+GstEGLImage *
+gst_egl_image_from_dmabuf (GstGLContext * context,
+    gint dmabuf, GstVideoInfo * in_info, gint plane, gsize offset)
+{
+  GstGLContextEGL *ctx_egl = GST_GL_CONTEXT_EGL (context);
+  gint fourcc;
+  gint atti = 0;
+  EGLint attribs[13];
+#ifdef EGL_VERSION_1_5
+  EGLAttrib attribs_1_5[13];
+#endif
+  EGLImageKHR img = EGL_NO_IMAGE_KHR;
+  GstVideoGLTextureType type;
+
+  fourcc = _drm_fourcc_from_info (in_info, plane);
+  type =
+      gst_gl_texture_type_from_format (context, GST_VIDEO_INFO_FORMAT (in_info),
+      plane);
+
+  GST_DEBUG ("fourcc %.4s (%d) plane %d (%dx%d)",
+      (char *) &fourcc, fourcc, plane,
+      GST_VIDEO_INFO_COMP_WIDTH (in_info, plane),
+      GST_VIDEO_INFO_COMP_HEIGHT (in_info, plane));
+
+#ifdef EGL_VERSION_1_5
+  if (GST_GL_CHECK_GL_VERSION (ctx_egl->egl_major, ctx_egl->egl_minor, 1, 5)) {
+    attribs_1_5[atti++] = EGL_WIDTH;
+    attribs_1_5[atti++] = GST_VIDEO_INFO_COMP_WIDTH (in_info, plane);
+    attribs_1_5[atti++] = EGL_HEIGHT;
+    attribs_1_5[atti++] = GST_VIDEO_INFO_COMP_HEIGHT (in_info, plane);
+    attribs_1_5[atti++] = EGL_LINUX_DRM_FOURCC_EXT;
+    attribs_1_5[atti++] = fourcc;
+    attribs_1_5[atti++] = EGL_DMA_BUF_PLANE0_FD_EXT;
+    attribs_1_5[atti++] = dmabuf;
+    attribs_1_5[atti++] = EGL_DMA_BUF_PLANE0_OFFSET_EXT;
+    attribs_1_5[atti++] = offset;
+    attribs_1_5[atti++] = EGL_DMA_BUF_PLANE0_PITCH_EXT;
+    attribs_1_5[atti++] = GST_VIDEO_INFO_PLANE_STRIDE (in_info, plane);
+    attribs_1_5[atti] = EGL_NONE;
+
+    for (int i = 0; i < atti; i++)
+      GST_LOG ("attr %i: %" G_GINTPTR_FORMAT, i, attribs_1_5[i]);
+
+    g_assert (atti == 12);
+
+    img = ctx_egl->eglCreateImage (ctx_egl->egl_display, EGL_NO_CONTEXT,
+        EGL_LINUX_DMA_BUF_EXT, NULL, attribs_1_5);
+
+  } else
+#endif
+  {
+    attribs[atti++] = EGL_WIDTH;
+    attribs[atti++] = GST_VIDEO_INFO_COMP_WIDTH (in_info, plane);
+    attribs[atti++] = EGL_HEIGHT;
+    attribs[atti++] = GST_VIDEO_INFO_COMP_HEIGHT (in_info, plane);
+    attribs[atti++] = EGL_LINUX_DRM_FOURCC_EXT;
+    attribs[atti++] = fourcc;
+    attribs[atti++] = EGL_DMA_BUF_PLANE0_FD_EXT;
+    attribs[atti++] = dmabuf;
+    attribs[atti++] = EGL_DMA_BUF_PLANE0_OFFSET_EXT;
+    attribs[atti++] = offset;
+    attribs[atti++] = EGL_DMA_BUF_PLANE0_PITCH_EXT;
+    attribs[atti++] = GST_VIDEO_INFO_PLANE_STRIDE (in_info, plane);
+    attribs[atti] = EGL_NONE;
+
+    for (int i = 0; i < atti; i++)
+      GST_LOG ("attr %i: %08X", i, attribs[i]);
+
+    g_assert (atti == 12);
+
+    img = ctx_egl->eglCreateImageKHR (ctx_egl->egl_display, EGL_NO_CONTEXT,
+        EGL_LINUX_DMA_BUF_EXT, NULL, attribs);
+  }
+  if (!img) {
+    GST_WARNING ("eglCreateImage failed: %s",
+        gst_gl_context_egl_get_error_string (eglGetError ()));
+    return NULL;
+  }
+
+  return gst_egl_image_new_wrapped (context, img, type,
+      GST_VIDEO_GL_TEXTURE_ORIENTATION_X_NORMAL_Y_NORMAL,
+      (GstEGLImageDestroyNotify) _destroy_egl_image, NULL);
+}
+#endif /* GST_GL_HAVE_DMABUF */
diff --git a/gst-libs/gst/gl/egl/gsteglimage.h b/gst-libs/gst/gl/egl/gsteglimage.h
new file mode 100644
index 0000000..2d2e075
--- /dev/null
+++ b/gst-libs/gst/gl/egl/gsteglimage.h
@@ -0,0 +1,106 @@
+/*
+ * GStreamer
+ * Copyright (C) 2012 Collabora Ltd.
+ *   @author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
+ * Copyright (C) 2014 Julien Isorce <julien.isorce@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _GST_EGL_IMAGE_H_
+#define _GST_EGL_IMAGE_H_
+
+#include <gst/gst.h>
+#include <gst/video/video.h>
+
+#include <gst/gl/gl.h>
+#include <gst/gl/egl/gstglcontext_egl.h>
+
+G_BEGIN_DECLS
+
+GType gst_egl_image_get_type (void);
+#define GST_TYPE_EGL_IMAGE                         (gst_egl_image_get_type())
+#define GST_IS_EGL_IMAGE(obj)                      (GST_IS_MINI_OBJECT_TYPE(obj, GST_TYPE_EGL_IMAGE))
+#define GST_EGL_IMAGE_CAST(obj)                    ((GstEGLImage *)(obj))
+#define GST_EGL_IMAGE(obj)                         (GST_EGL_IMAGE_CAST(obj))
+
+typedef struct _GstEGLImage GstEGLImage;
+
+typedef void (*GstEGLImageDestroyNotify) (GstEGLImage * image,
+    gpointer data);
+
+struct _GstEGLImage
+{
+  GstMiniObject parent;
+
+  GstGLContextEGL *context;
+  EGLImageKHR image;
+  GstVideoGLTextureType type;
+  /* FIXME: remove this and use the affine transformation meta instead */
+  GstVideoGLTextureOrientation orientation;
+
+  /* <private> */
+  gpointer destroy_data;
+  GstEGLImageDestroyNotify destroy_notify;
+};
+
+GstEGLImage *             gst_egl_image_new_wrapped             (GstGLContext * context,
+                                                                 EGLImageKHR image,
+                                                                 GstVideoGLTextureType type,
+                                                                 GstVideoGLTextureOrientation orientation,
+                                                                 gpointer user_data,
+                                                                 GstEGLImageDestroyNotify user_data_destroy);
+EGLImageKHR             gst_egl_image_get_image                 (GstEGLImage * image);
+GstVideoGLTextureOrientation gst_egl_image_get_orientation      (GstEGLImage * image);
+
+#if GST_GL_HAVE_DMABUF
+GstEGLImage *           gst_egl_image_from_dmabuf               (GstGLContext * context,
+                                                                 gint dmabuf,
+                                                                 GstVideoInfo * in_info,
+                                                                 gint plane,
+                                                                 gsize offset);
+#endif
+
+/**
+ * gst_egl_image_ref:
+ * @image: a #GstEGLImage.
+ *
+ * Increases the refcount of the given image by one.
+ *
+ * Returns: (transfer full): @image
+ */
+static inline GstEGLImage *
+gst_egl_image_ref (GstEGLImage * image)
+{
+  return (GstEGLImage *) gst_mini_object_ref (GST_MINI_OBJECT_CAST (image));
+}
+
+/**
+ * gst_buffer_unref:
+ * @buf: (transfer full): a #GstBuffer.
+ *
+ * Decreases the refcount of the image. If the refcount reaches 0, the image
+ * with the associated metadata and memory will be freed.
+ */
+static inline void
+gst_egl_image_unref (GstEGLImage * image)
+{
+  gst_mini_object_unref (GST_MINI_OBJECT_CAST (image));
+}
+
+G_END_DECLS
+
+#endif /* _GST_EGL_IMAGE_H_ */
diff --git a/gst-libs/gst/gl/egl/gsteglimagememory.c b/gst-libs/gst/gl/egl/gsteglimagememory.c
deleted file mode 100644
index 46098b5..0000000
--- a/gst-libs/gst/gl/egl/gsteglimagememory.c
+++ /dev/null
@@ -1,732 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2012 Collabora Ltd.
- *   @author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
- * Copyright (C) 2014 Julien Isorce <julien.isorce@gmail.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "gsteglimagememory.h"
-#include <string.h>
-
-#if GST_GL_HAVE_DMABUF
-#include <gst/allocators/gstdmabuf.h>
-#include <libdrm/drm_fourcc.h>
-
-#ifndef DRM_FORMAT_R8
-#define DRM_FORMAT_R8 fourcc_code('R', '8', ' ', ' ')
-#endif
-
-#ifndef DRM_FORMAT_RG88
-#define DRM_FORMAT_RG88 fourcc_code('R', 'G', '8', '8')
-#endif
-
-#ifndef DRM_FORMAT_GR88
-#define DRM_FORMAT_GR88 fourcc_code('G', 'R', '8', '8')
-#endif
-#endif
-
-#ifndef EGL_LINUX_DMA_BUF_EXT
-#define EGL_LINUX_DMA_BUF_EXT 0x3270
-#endif
-
-#ifndef EGL_LINUX_DRM_FOURCC_EXT
-#define EGL_LINUX_DRM_FOURCC_EXT 0x3271
-#endif
-
-#ifndef EGL_DMA_BUF_PLANE0_FD_EXT
-#define EGL_DMA_BUF_PLANE0_FD_EXT 0x3272
-#endif
-
-#ifndef EGL_DMA_BUF_PLANE0_OFFSET_EXT
-#define EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273
-#endif
-
-#ifndef EGL_DMA_BUF_PLANE0_PITCH_EXT
-#define EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274
-#endif
-
-GST_DEBUG_CATEGORY_STATIC (GST_CAT_EGL_IMAGE_MEMORY);
-#define GST_CAT_DEFAULT GST_CAT_EGL_IMAGE_MEMORY
-
-#define GST_EGL_IMAGE_MEMORY(mem) ((GstEGLImageMemory*)(mem))
-
-gboolean
-gst_is_egl_image_memory (GstMemory * mem)
-{
-  g_return_val_if_fail (mem != NULL, FALSE);
-  g_return_val_if_fail (mem->allocator != NULL, FALSE);
-
-  return g_strcmp0 (mem->allocator->mem_type, GST_EGL_IMAGE_MEMORY_TYPE) == 0;
-}
-
-EGLImageKHR
-gst_egl_image_memory_get_image (GstMemory * mem)
-{
-  g_return_val_if_fail (gst_is_egl_image_memory (mem), EGL_NO_IMAGE_KHR);
-
-  if (mem->parent)
-    mem = mem->parent;
-
-  return GST_EGL_IMAGE_MEMORY (mem)->image;
-}
-
-EGLDisplay
-gst_egl_image_memory_get_display (GstMemory * mem)
-{
-  g_return_val_if_fail (gst_is_egl_image_memory (mem), NULL);
-
-  if (mem->parent)
-    mem = mem->parent;
-
-  return GST_EGL_IMAGE_MEMORY (mem)->context->egl_display;
-}
-
-GstVideoGLTextureOrientation
-gst_egl_image_memory_get_orientation (GstMemory * mem)
-{
-  g_return_val_if_fail (gst_is_egl_image_memory (mem),
-      GST_VIDEO_GL_TEXTURE_ORIENTATION_X_NORMAL_Y_NORMAL);
-
-  if (mem->parent)
-    mem = mem->parent;
-
-  return GST_EGL_IMAGE_MEMORY (mem)->orientation;
-}
-
-void
-gst_egl_image_memory_set_orientation (GstMemory * mem,
-    GstVideoGLTextureOrientation orientation)
-{
-  g_return_if_fail (gst_is_egl_image_memory (mem));
-
-  if (mem->parent)
-    mem = mem->parent;
-
-  GST_EGL_IMAGE_MEMORY (mem)->orientation = orientation;
-}
-
-static GstMemory *
-gst_egl_image_allocator_alloc_vfunc (GstAllocator * allocator, gsize size,
-    GstAllocationParams * params)
-{
-  g_warning
-      ("Use gst_egl_image_allocator_alloc() to allocate from this allocator");
-
-  return NULL;
-}
-
-static void
-gst_egl_image_allocator_free_vfunc (GstAllocator * allocator, GstMemory * mem)
-{
-  GstEGLImageMemory *emem = (GstEGLImageMemory *) mem;
-
-  g_return_if_fail (gst_is_egl_image_memory (mem));
-
-  /* Shared memory should not destroy all the data */
-  if (!mem->parent) {
-    emem->context->eglDestroyImage (emem->context->egl_display, emem->image);
-
-    if (emem->user_data_destroy)
-      emem->user_data_destroy (emem->context, emem->user_data);
-
-    gst_object_unref (emem->context);
-    emem->context = NULL;
-  }
-
-  g_slice_free (GstEGLImageMemory, emem);
-}
-
-static gpointer
-gst_egl_image_mem_map (GstMemory * mem, gsize maxsize, GstMapFlags flags)
-{
-  return NULL;
-}
-
-static void
-gst_egl_image_mem_unmap (GstMemory * mem)
-{
-}
-
-static GstMemory *
-gst_egl_image_mem_share (GstMemory * mem, gssize offset, gssize size)
-{
-  return NULL;
-}
-
-static GstMemory *
-gst_egl_image_mem_copy (GstMemory * mem, gssize offset, gssize size)
-{
-  return NULL;
-}
-
-static gboolean
-gst_egl_image_mem_is_span (GstMemory * mem1, GstMemory * mem2, gsize * offset)
-{
-  return FALSE;
-}
-
-typedef struct _GstEGLImageAllocator GstEGLImageAllocator;
-typedef struct _GstEGLImageAllocatorClass GstEGLImageAllocatorClass;
-
-struct _GstEGLImageAllocator
-{
-  GstAllocator parent;
-};
-
-struct _GstEGLImageAllocatorClass
-{
-  GstAllocatorClass parent_class;
-};
-
-GType gst_egl_image_allocator_get_type (void);
-G_DEFINE_TYPE (GstEGLImageAllocator, gst_egl_image_allocator,
-    GST_TYPE_ALLOCATOR);
-
-#define GST_TYPE_EGL_IMAGE_ALLOCATOR   (gst_egl_image_mem_allocator_get_type())
-#define GST_IS_EGL_IMAGE_ALLOCATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_EGL_IMAGE_ALLOCATOR))
-
-static void
-gst_egl_image_allocator_class_init (GstEGLImageAllocatorClass * klass)
-{
-  GstAllocatorClass *allocator_class = (GstAllocatorClass *) klass;
-
-  allocator_class->alloc = gst_egl_image_allocator_alloc_vfunc;
-  allocator_class->free = gst_egl_image_allocator_free_vfunc;
-}
-
-static void
-gst_egl_image_allocator_init (GstEGLImageAllocator * allocator)
-{
-  GstAllocator *alloc = GST_ALLOCATOR_CAST (allocator);
-
-  alloc->mem_type = GST_EGL_IMAGE_MEMORY_TYPE;
-  alloc->mem_map = gst_egl_image_mem_map;
-  alloc->mem_unmap = gst_egl_image_mem_unmap;
-  alloc->mem_share = gst_egl_image_mem_share;
-  alloc->mem_copy = gst_egl_image_mem_copy;
-  alloc->mem_is_span = gst_egl_image_mem_is_span;
-
-  GST_OBJECT_FLAG_SET (allocator, GST_ALLOCATOR_FLAG_CUSTOM_ALLOC);
-}
-
-static gpointer
-gst_egl_image_allocator_init_instance (gpointer data)
-{
-  GstAllocator *allocator =
-      g_object_new (gst_egl_image_allocator_get_type (), NULL);
-
-  GST_DEBUG_CATEGORY_INIT (GST_CAT_EGL_IMAGE_MEMORY, "eglimagememory", 0,
-      "EGLImage Memory");
-
-  gst_allocator_register (GST_EGL_IMAGE_MEMORY_TYPE,
-      gst_object_ref (allocator));
-
-  return allocator;
-}
-
-static GstEGLImageAllocator *
-gst_egl_image_allocator_obtain (void)
-{
-  static GOnce once = G_ONCE_INIT;
-
-  g_once (&once, gst_egl_image_allocator_init_instance, NULL);
-
-  g_return_val_if_fail (once.retval != NULL, NULL);
-
-  return (GstEGLImageAllocator *) (g_object_ref (once.retval));
-}
-
-void
-gst_egl_image_memory_init (void)
-{
-  gst_egl_image_allocator_obtain ();
-}
-
-static void
-gst_egl_image_memory_del_gl_texture (GstGLContext * context, gpointer tex)
-{
-  GLuint textures[1] = { GPOINTER_TO_UINT (tex) };
-
-  gst_gl_context_del_texture (context, textures);
-}
-
-static GstMemory *
-gst_egl_image_allocator_wrap (GstEGLImageAllocator * allocator,
-    GstGLContextEGL * context, EGLImageKHR image, GstVideoGLTextureType type,
-    GstMemoryFlags flags, gsize size, gpointer user_data,
-    GstEGLImageDestroyNotify user_data_destroy)
-{
-  GstEGLImageMemory *mem = NULL;
-
-  g_return_val_if_fail (context != NULL, NULL);
-  g_return_val_if_fail (image != EGL_NO_IMAGE_KHR, NULL);
-
-  if (!allocator) {
-    allocator = gst_egl_image_allocator_obtain ();
-  }
-
-  mem = g_slice_new (GstEGLImageMemory);
-  gst_memory_init (GST_MEMORY_CAST (mem), flags,
-      GST_ALLOCATOR (allocator), NULL, size, 0, 0, size);
-
-  gst_object_unref (allocator);
-
-  mem->context = gst_object_ref (context);
-  mem->image = image;
-  mem->type = type;
-  mem->orientation = GST_VIDEO_GL_TEXTURE_ORIENTATION_X_NORMAL_Y_NORMAL;
-
-  mem->user_data = user_data;
-  mem->user_data_destroy = user_data_destroy;
-
-  return GST_MEMORY_CAST (mem);
-}
-
-#if 0
-static GstMemory *
-gst_egl_image_allocator_alloc (GstAllocator * allocator,
-    GstGLContextEGL * context, GstVideoGLTextureType type, gint width,
-    gint height, gsize size)
-{
-  /* EGL_NO_CONTEXT */
-  return NULL;
-}
-#endif
-
-static gboolean
-gst_eglimage_to_gl_texture_upload_meta (GstVideoGLTextureUploadMeta *
-    meta, guint texture_id[4])
-{
-  gint i = 0;
-  gint n = 0;
-
-  g_return_val_if_fail (meta != NULL, FALSE);
-  g_return_val_if_fail (texture_id != NULL, FALSE);
-
-  GST_DEBUG ("Uploading for meta with textures %i,%i,%i,%i", texture_id[0],
-      texture_id[1], texture_id[2], texture_id[3]);
-
-  n = gst_buffer_n_memory (meta->buffer);
-
-  for (i = 0; i < n; i++) {
-    GstMemory *mem = gst_buffer_peek_memory (meta->buffer, i);
-    const GstGLFuncs *gl = NULL;
-
-    if (!gst_is_egl_image_memory (mem)) {
-      GST_WARNING ("memory %p does not hold an EGLImage", mem);
-      return FALSE;
-    }
-
-    gl = GST_GL_CONTEXT (GST_EGL_IMAGE_MEMORY (mem)->context)->gl_vtable;
-
-    gl->ActiveTexture (GL_TEXTURE0 + i);
-    gl->BindTexture (GL_TEXTURE_2D, texture_id[i]);
-    gl->EGLImageTargetTexture2D (GL_TEXTURE_2D,
-        gst_egl_image_memory_get_image (mem));
-  }
-
-  if (GST_IS_GL_BUFFER_POOL (meta->buffer->pool))
-    gst_gl_buffer_pool_replace_last_buffer (GST_GL_BUFFER_POOL (meta->
-            buffer->pool), meta->buffer);
-
-
-  return TRUE;
-}
-
-#if GST_GL_HAVE_DMABUF
-/*
- * GStreamer format descriptions differ from DRM formats as the representation
- * is relative to a register, hence in native endianness. To reduce the driver
- * requirement, we only import with a subset of texture formats and use
- * shaders to convert. This way we avoid having to use external texture
- * target.
- */
-static int
-_drm_fourcc_from_info (GstVideoInfo * info, int plane)
-{
-  GstVideoFormat format = GST_VIDEO_INFO_FORMAT (info);
-#if G_BYTE_ORDER == G_LITTLE_ENDIAN
-  const gint rgba_fourcc = DRM_FORMAT_ABGR8888;
-  const gint rgb_fourcc = DRM_FORMAT_BGR888;
-  const gint rg_fourcc = DRM_FORMAT_GR88;
-#else
-  const gint rgba_fourcc = DRM_FORMAT_RGBA8888;
-  const gint rgb_fourcc = DRM_FORMAT_RGB888;
-  const gint rg_fourcc = DRM_FORMAT_RG88;
-#endif
-
-  GST_DEBUG ("Getting DRM fourcc for %s plane %i",
-      gst_video_format_to_string (format), plane);
-
-  switch (format) {
-    case GST_VIDEO_FORMAT_RGB16:
-    case GST_VIDEO_FORMAT_BGR16:
-      return DRM_FORMAT_RGB565;
-
-    case GST_VIDEO_FORMAT_RGB:
-    case GST_VIDEO_FORMAT_BGR:
-      return rgb_fourcc;
-
-    case GST_VIDEO_FORMAT_RGBA:
-    case GST_VIDEO_FORMAT_RGBx:
-    case GST_VIDEO_FORMAT_BGRA:
-    case GST_VIDEO_FORMAT_BGRx:
-    case GST_VIDEO_FORMAT_ARGB:
-    case GST_VIDEO_FORMAT_xRGB:
-    case GST_VIDEO_FORMAT_ABGR:
-    case GST_VIDEO_FORMAT_xBGR:
-    case GST_VIDEO_FORMAT_AYUV:
-      return rgba_fourcc;
-
-    case GST_VIDEO_FORMAT_GRAY8:
-      return DRM_FORMAT_R8;
-
-    case GST_VIDEO_FORMAT_YUY2:
-    case GST_VIDEO_FORMAT_UYVY:
-    case GST_VIDEO_FORMAT_GRAY16_LE:
-    case GST_VIDEO_FORMAT_GRAY16_BE:
-      return rg_fourcc;
-
-    case GST_VIDEO_FORMAT_NV12:
-    case GST_VIDEO_FORMAT_NV21:
-      return plane == 0 ? DRM_FORMAT_R8 : rg_fourcc;
-
-    case GST_VIDEO_FORMAT_I420:
-    case GST_VIDEO_FORMAT_YV12:
-    case GST_VIDEO_FORMAT_Y41B:
-    case GST_VIDEO_FORMAT_Y42B:
-    case GST_VIDEO_FORMAT_Y444:
-      return DRM_FORMAT_R8;
-
-    default:
-      GST_ERROR ("Unsupported format for DMABuf.");
-      return -1;
-  }
-}
-
-GstMemory *
-gst_egl_image_memory_from_dmabuf (GstGLContext * context,
-    gint dmabuf, GstVideoInfo * in_info, gint plane, gsize offset)
-{
-  GstGLContextEGL *ctx_egl = GST_GL_CONTEXT_EGL (context);
-  GstEGLImageAllocator *allocator;
-  gint fourcc;
-  gint atti = 0;
-  EGLint attribs[13];
-  EGLImageKHR img = EGL_NO_IMAGE_KHR;
-
-  allocator = gst_egl_image_allocator_obtain ();
-  fourcc = _drm_fourcc_from_info (in_info, plane);
-
-  GST_DEBUG ("fourcc %.4s (%d) plane %d (%dx%d)",
-      (char *) &fourcc, fourcc, plane,
-      GST_VIDEO_INFO_COMP_WIDTH (in_info, plane),
-      GST_VIDEO_INFO_COMP_HEIGHT (in_info, plane));
-
-  attribs[atti++] = EGL_WIDTH;
-  attribs[atti++] = GST_VIDEO_INFO_COMP_WIDTH (in_info, plane);
-  attribs[atti++] = EGL_HEIGHT;
-  attribs[atti++] = GST_VIDEO_INFO_COMP_HEIGHT (in_info, plane);
-
-  attribs[atti++] = EGL_LINUX_DRM_FOURCC_EXT;
-  attribs[atti++] = fourcc;
-
-  attribs[atti++] = EGL_DMA_BUF_PLANE0_FD_EXT;
-  attribs[atti++] = dmabuf;
-
-  attribs[atti++] = EGL_DMA_BUF_PLANE0_OFFSET_EXT;
-  attribs[atti++] = offset;
-  attribs[atti++] = EGL_DMA_BUF_PLANE0_PITCH_EXT;
-  attribs[atti++] = GST_VIDEO_INFO_PLANE_STRIDE (in_info, plane);
-
-  attribs[atti] = EGL_NONE;
-
-  for (int i = 0; i < atti; i++)
-    GST_LOG ("attr %i: %08X", i, attribs[i]);
-
-  g_assert (atti == 12);
-
-  img = ctx_egl->eglCreateImage (ctx_egl->egl_display, EGL_NO_CONTEXT,
-      EGL_LINUX_DMA_BUF_EXT, NULL, attribs);
-
-  if (!img) {
-    GST_WARNING_OBJECT (allocator, "eglCreateImage failed: %s",
-        gst_gl_context_egl_get_error_string (eglGetError ()));
-    return NULL;
-  }
-
-  return gst_egl_image_allocator_wrap (allocator, ctx_egl, img, 0, 0,
-      in_info->size, NULL, NULL);
-}
-#endif /* GST_GL_HAVE_DMABUF */
-
-gboolean
-gst_egl_image_memory_setup_buffer (GstGLContext * ctx, GstVideoInfo * info,
-    GstBuffer * buffer)
-{
-  gint i = 0;
-  gint stride[3];
-  gsize offset[3];
-  GstMemory *mem[3] = { NULL, NULL, NULL };
-  guint n_mem = 0;
-  GstMemoryFlags flags = 0;
-  EGLImageKHR image = EGL_NO_IMAGE_KHR;
-  EGLClientBuffer client_buffer_tex[3] = { 0, 0, 0 };
-  GstVideoGLTextureType texture_types[] = { 0, 0, 0, 0 };
-  GstEGLImageAllocator *allocator = gst_egl_image_allocator_obtain ();
-  GstGLContextEGL *context = GST_GL_CONTEXT_EGL (ctx);
-
-  g_return_val_if_fail (ctx, FALSE);
-  g_return_val_if_fail (info, FALSE);
-  g_return_val_if_fail (buffer, FALSE);
-  g_return_val_if_fail (gst_gl_context_check_feature (ctx,
-          "EGL_KHR_image_base"), FALSE);
-
-  memset (stride, 0, sizeof (stride));
-  memset (offset, 0, sizeof (offset));
-
-  flags |= GST_MEMORY_FLAG_NOT_MAPPABLE;
-  flags |= GST_MEMORY_FLAG_NO_SHARE;
-
-  switch (GST_VIDEO_INFO_FORMAT (info)) {
-    case GST_VIDEO_FORMAT_RGB:
-    case GST_VIDEO_FORMAT_BGR:
-    case GST_VIDEO_FORMAT_RGB16:
-    case GST_VIDEO_FORMAT_RGBA:
-    case GST_VIDEO_FORMAT_BGRA:
-    case GST_VIDEO_FORMAT_ARGB:
-    case GST_VIDEO_FORMAT_ABGR:
-    case GST_VIDEO_FORMAT_RGBx:
-    case GST_VIDEO_FORMAT_BGRx:
-    case GST_VIDEO_FORMAT_xRGB:
-    case GST_VIDEO_FORMAT_xBGR:
-    case GST_VIDEO_FORMAT_AYUV:
-    {
-      gsize size = 0;
-
-      switch (GST_VIDEO_INFO_FORMAT (info)) {
-        case GST_VIDEO_FORMAT_RGB:
-        case GST_VIDEO_FORMAT_BGR:
-        case GST_VIDEO_FORMAT_RGB16:
-        {
-          texture_types[0] = GST_VIDEO_GL_TEXTURE_TYPE_RGB;
-          break;
-        }
-        case GST_VIDEO_FORMAT_RGBA:
-        case GST_VIDEO_FORMAT_BGRA:
-        case GST_VIDEO_FORMAT_ARGB:
-        case GST_VIDEO_FORMAT_ABGR:
-        case GST_VIDEO_FORMAT_RGBx:
-        case GST_VIDEO_FORMAT_BGRx:
-        case GST_VIDEO_FORMAT_xRGB:
-        case GST_VIDEO_FORMAT_xBGR:
-        case GST_VIDEO_FORMAT_AYUV:
-        {
-          texture_types[0] = GST_VIDEO_GL_TEXTURE_TYPE_RGBA;
-          break;
-        }
-        default:
-          g_assert_not_reached ();
-          break;
-      }
-#if 0
-      mem[0] =
-          gst_egl_image_allocator_alloc (allocator, context,
-          texture_types[0], GST_VIDEO_INFO_WIDTH (info),
-          GST_VIDEO_INFO_HEIGHT (info), size);
-      if (mem[0]) {
-        stride[0] = size / GST_VIDEO_INFO_HEIGHT (info);
-        n_mem = 1;
-        GST_MINI_OBJECT_FLAG_SET (mem[0], GST_MEMORY_FLAG_NO_SHARE);
-      } else
-#endif
-      {
-        gst_gl_generate_texture_full (GST_GL_CONTEXT (context), info, 0, stride,
-            offset, &size, (GLuint *) & client_buffer_tex[0]);
-
-        image = context->eglCreateImage (context->egl_display,
-            context->egl_context, EGL_GL_TEXTURE_2D_KHR, client_buffer_tex[0],
-            NULL);
-        if (eglGetError () != EGL_SUCCESS)
-          goto mem_error;
-
-        mem[0] =
-            gst_egl_image_allocator_wrap (allocator, context,
-            image, texture_types[0], flags, size, client_buffer_tex[0],
-            (GstEGLImageDestroyNotify) gst_egl_image_memory_del_gl_texture);
-        n_mem = 1;
-      }
-      break;
-    }
-
-    case GST_VIDEO_FORMAT_NV12:
-    case GST_VIDEO_FORMAT_NV21:
-    {
-      gsize size[2];
-
-      texture_types[0] = GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE;
-      texture_types[1] = GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE_ALPHA;
-#if 0
-      mem[0] =
-          gst_egl_image_allocator_alloc (allocator, context,
-          texture_types[0], GST_VIDEO_INFO_COMP_WIDTH (info,
-              0), GST_VIDEO_INFO_COMP_HEIGHT (info, 0), size[0]);
-      mem[1] =
-          gst_egl_image_allocator_alloc (allocator, context,
-          texture_types[1],
-          GST_VIDEO_INFO_COMP_WIDTH (info, 1),
-          GST_VIDEO_INFO_COMP_HEIGHT (info, 1), size[1]);
-
-      if (mem[0] && mem[1]) {
-        stride[0] = size[0] / GST_VIDEO_INFO_HEIGHT (info);
-        offset[1] = size[0];
-        stride[1] = size[1] / GST_VIDEO_INFO_HEIGHT (info);
-        n_mem = 2;
-        GST_MINI_OBJECT_FLAG_SET (mem[0], GST_MEMORY_FLAG_NO_SHARE);
-        GST_MINI_OBJECT_FLAG_SET (mem[1], GST_MEMORY_FLAG_NO_SHARE);
-      } else {
-        if (mem[0])
-          gst_memory_unref (mem[0]);
-        if (mem[1])
-          gst_memory_unref (mem[1]);
-        mem[0] = mem[1] = NULL;
-      }
-#endif
-      {
-        for (i = 0; i < 2; i++) {
-          gst_gl_generate_texture_full (GST_GL_CONTEXT (context), info, 0,
-              stride, offset, size, (GLuint *) & client_buffer_tex[i]);
-
-          image = context->eglCreateImage (context->egl_display,
-              context->egl_context, EGL_GL_TEXTURE_2D_KHR, client_buffer_tex[i],
-              NULL);
-          if (eglGetError () != EGL_SUCCESS)
-            goto mem_error;
-
-          mem[i] =
-              gst_egl_image_allocator_wrap (allocator, context,
-              image, texture_types[i], flags, size[i], client_buffer_tex[i],
-              (GstEGLImageDestroyNotify) gst_egl_image_memory_del_gl_texture);
-        }
-
-        n_mem = 2;
-      }
-      break;
-    }
-    case GST_VIDEO_FORMAT_I420:
-    case GST_VIDEO_FORMAT_YV12:
-    case GST_VIDEO_FORMAT_Y444:
-    case GST_VIDEO_FORMAT_Y42B:
-    case GST_VIDEO_FORMAT_Y41B:
-    {
-      gsize size[3];
-
-      texture_types[0] = GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE;
-      texture_types[1] = GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE;
-      texture_types[2] = GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE;
-#if 0
-      mem[0] =
-          gst_egl_image_allocator_alloc (allocator, context,
-          texture_types[0], GST_VIDEO_INFO_COMP_WIDTH (info,
-              0), GST_VIDEO_INFO_COMP_HEIGHT (info, 0), size[0]);
-      mem[1] =
-          gst_egl_image_allocator_alloc (allocator, context,
-          texture_types[1], GST_VIDEO_INFO_COMP_WIDTH (info,
-              1), GST_VIDEO_INFO_COMP_HEIGHT (info, 1), size[1]);
-      mem[2] =
-          gst_egl_image_allocator_alloc (allocator, context,
-          texture_types[2], GST_VIDEO_INFO_COMP_WIDTH (info,
-              2), GST_VIDEO_INFO_COMP_HEIGHT (info, 2), size[2]);
-
-      if (mem[0] && mem[1] && mem[2]) {
-        stride[0] = size[0] / GST_VIDEO_INFO_HEIGHT (info);
-        offset[1] = size[0];
-        stride[1] = size[1] / GST_VIDEO_INFO_HEIGHT (info);
-        offset[2] = size[1];
-        stride[2] = size[2] / GST_VIDEO_INFO_HEIGHT (info);
-        n_mem = 3;
-        GST_MINI_OBJECT_FLAG_SET (mem[0], GST_MEMORY_FLAG_NO_SHARE);
-        GST_MINI_OBJECT_FLAG_SET (mem[1], GST_MEMORY_FLAG_NO_SHARE);
-        GST_MINI_OBJECT_FLAG_SET (mem[2], GST_MEMORY_FLAG_NO_SHARE);
-      } else {
-        if (mem[0])
-          gst_memory_unref (mem[0]);
-        if (mem[1])
-          gst_memory_unref (mem[1]);
-        if (mem[2])
-          gst_memory_unref (mem[2]);
-        mem[0] = mem[1] = mem[2] = NULL;
-      }
-#endif
-      {
-        for (i = 0; i < 3; i++) {
-          gst_gl_generate_texture_full (GST_GL_CONTEXT (context), info, i,
-              stride, offset, size, (GLuint *) & client_buffer_tex[i]);
-
-          image = context->eglCreateImage (context->egl_display,
-              context->egl_context, EGL_GL_TEXTURE_2D_KHR, client_buffer_tex[i],
-              NULL);
-          if (eglGetError () != EGL_SUCCESS)
-            goto mem_error;
-
-          mem[i] =
-              gst_egl_image_allocator_wrap (allocator, context,
-              image, texture_types[i], flags, size[i], client_buffer_tex[i],
-              (GstEGLImageDestroyNotify) gst_egl_image_memory_del_gl_texture);
-        }
-
-        n_mem = 3;
-      }
-      break;
-    }
-    default:
-      g_assert_not_reached ();
-      break;
-  }
-
-  gst_buffer_add_video_meta_full (buffer, 0, GST_VIDEO_INFO_FORMAT (info),
-      GST_VIDEO_INFO_WIDTH (info), GST_VIDEO_INFO_HEIGHT (info),
-      GST_VIDEO_INFO_N_PLANES (info), offset, stride);
-
-  gst_buffer_add_video_gl_texture_upload_meta (buffer,
-      gst_egl_image_memory_get_orientation (mem[0]), n_mem, texture_types,
-      gst_eglimage_to_gl_texture_upload_meta, NULL, NULL, NULL);
-
-  for (i = 0; i < n_mem; i++)
-    gst_buffer_append_memory (buffer, mem[i]);
-
-  return TRUE;
-
-mem_error:
-  {
-    GST_CAT_ERROR (GST_CAT_DEFAULT, "Failed to create EGLImage");
-
-    for (i = 0; i < 3; i++) {
-      if (client_buffer_tex[i])
-        gst_gl_context_del_texture (ctx, (GLuint *) & client_buffer_tex[i]);
-      if (mem[i])
-        gst_memory_unref (mem[i]);
-    }
-
-    return FALSE;
-  }
-}
diff --git a/gst-libs/gst/gl/egl/gsteglimagememory.h b/gst-libs/gst/gl/egl/gsteglimagememory.h
deleted file mode 100644
index aced247..0000000
--- a/gst-libs/gst/gl/egl/gsteglimagememory.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2012 Collabora Ltd.
- *   @author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
- * Copyright (C) 2014 Julien Isorce <julien.isorce@gmail.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GST_EGL_IMAGE_MEMORY_H_
-#define _GST_EGL_IMAGE_MEMORY_H_
-
-#include <gst/gst.h>
-#include <gst/gstallocator.h>
-#include <gst/gstmemory.h>
-#include <gst/video/video.h>
-
-#include <gst/gl/gl.h>
-#include "gstglcontext_egl.h"
-
-G_BEGIN_DECLS
-
-typedef void (*GstEGLImageDestroyNotify) (GstGLContextEGL * context,
-    gpointer data);
-
-typedef struct _GstEGLImageMemory GstEGLImageMemory;
-
-#define GST_EGL_IMAGE_MEMORY_TYPE "EGLImage"
-
-#define GST_CAPS_FEATURE_MEMORY_EGL_IMAGE "memory:EGLImage"
-
-struct _GstEGLImageMemory
-{
-  GstMemory parent;
-
-  GstGLContextEGL *context;
-  EGLImageKHR image;
-  GstVideoGLTextureType type;
-  GstVideoGLTextureOrientation orientation;
-
-  gpointer user_data;
-  GstEGLImageDestroyNotify user_data_destroy;
-};
-
-void gst_egl_image_memory_init (void);
-gboolean gst_egl_image_memory_setup_buffer (GstGLContext * context, GstVideoInfo * info, GstBuffer * buffer);
-gboolean gst_is_egl_image_memory (GstMemory * mem);
-EGLImageKHR gst_egl_image_memory_get_image (GstMemory * mem);
-EGLDisplay gst_egl_image_memory_get_display (GstMemory * mem);
-GstVideoGLTextureOrientation gst_egl_image_memory_get_orientation (GstMemory * mem);
-void gst_egl_image_memory_set_orientation (GstMemory * mem,
-    GstVideoGLTextureOrientation orientation);
-
-#if GST_GL_HAVE_DMABUF
-GstMemory * gst_egl_image_memory_from_dmabuf (GstGLContext * context,
-    gint dmabuf, GstVideoInfo * in_info, gint plane, gsize offset);
-#endif
-
-G_END_DECLS
-
-#endif /* _GST_GL_MEMORY_H_ */
diff --git a/gst-libs/gst/gl/egl/gstglcontext_egl.c b/gst-libs/gst/gl/egl/gstglcontext_egl.c
index ceafdf3..057c6a9 100644
--- a/gst-libs/gst/gl/egl/gstglcontext_egl.c
+++ b/gst-libs/gst/gl/egl/gstglcontext_egl.c
@@ -309,8 +309,8 @@
   GstGLContextEGL *egl;
   GstGLWindow *window = NULL;
   EGLNativeWindowType window_handle = (EGLNativeWindowType) 0;
-  EGLint majorVersion;
-  EGLint minorVersion;
+  EGLint egl_major;
+  EGLint egl_minor;
   gboolean need_surface = TRUE;
   guintptr external_gl_context = 0;
   GstGLDisplay *display;
@@ -363,8 +363,8 @@
   }
   gst_object_unref (display);
 
-  if (eglInitialize (egl->egl_display, &majorVersion, &minorVersion)) {
-    GST_INFO ("egl initialized, version: %d.%d", majorVersion, minorVersion);
+  if (eglInitialize (egl->egl_display, &egl_major, &egl_minor)) {
+    GST_INFO ("egl initialized, version: %d.%d", egl_major, egl_minor);
   } else {
     g_set_error (error, GST_GL_CONTEXT_ERROR,
         GST_GL_CONTEXT_ERROR_RESOURCE_UNAVAILABLE,
@@ -380,16 +380,16 @@
     gint i;
 
     /* egl + opengl only available with EGL 1.4+ */
-    if (majorVersion == 1 && minorVersion <= 3) {
+    if (egl_major == 1 && egl_minor <= 3) {
       if ((gl_api & ~GST_GL_API_OPENGL) == GST_GL_API_NONE) {
         g_set_error (error, GST_GL_CONTEXT_ERROR, GST_GL_CONTEXT_ERROR_OLD_LIBS,
             "EGL version (%i.%i) too old for OpenGL support, (needed at least 1.4)",
-            majorVersion, minorVersion);
+            egl_major, egl_minor);
         goto failure;
       } else {
         GST_WARNING
             ("EGL version (%i.%i) too old for OpenGL support, (needed at least 1.4)",
-            majorVersion, minorVersion);
+            egl_major, egl_minor);
         if (gl_api & GST_GL_API_GLES2) {
           goto try_gles2;
         } else {
@@ -599,22 +599,28 @@
   }
 
   /* EGLImage functions */
-  if (GST_GL_CHECK_GL_VERSION (majorVersion, minorVersion, 1, 5)) {
+  if (GST_GL_CHECK_GL_VERSION (egl_major, egl_minor, 1, 5)) {
     egl->eglCreateImage = gst_gl_context_get_proc_address (context,
         "eglCreateImage");
     egl->eglDestroyImage = gst_gl_context_get_proc_address (context,
         "eglDestroyImage");
+    if (egl->eglCreateImage == NULL || egl->eglDestroyImage == NULL) {
+      egl->eglCreateImage = NULL;
+      egl->eglDestroyImage = NULL;
+    }
   } else if (gst_gl_check_extension ("EGL_KHR_image_base", egl->egl_exts)) {
-    egl->eglCreateImage = gst_gl_context_get_proc_address (context,
+    egl->eglCreateImageKHR = gst_gl_context_get_proc_address (context,
         "eglCreateImageKHR");
     egl->eglDestroyImage = gst_gl_context_get_proc_address (context,
         "eglDestroyImageKHR");
+    if (egl->eglCreateImageKHR == NULL || egl->eglDestroyImage == NULL) {
+      egl->eglCreateImageKHR = NULL;
+      egl->eglDestroyImage = NULL;
+    }
   }
-  if (egl->eglCreateImage == NULL || egl->eglDestroyImage == NULL) {
-    egl->eglCreateImage = NULL;
-    egl->eglDestroyImage = NULL;
-  }
-
+  egl->egl_major = egl_major;
+  egl->egl_minor = egl_minor;
+ 
   if (window)
     gst_object_unref (window);
 
@@ -817,7 +823,11 @@
   GstGLContextEGL *context_egl = GST_GL_CONTEXT_EGL (context);
 
   if (g_strcmp0 (feature, "EGL_KHR_image_base") == 0) {
-    return context_egl->eglCreateImage != NULL &&
+    if (GST_GL_CHECK_GL_VERSION (context_egl->egl_major, context_egl->egl_minor, 1, 5))
+      return context_egl->eglCreateImage != NULL &&
+        context_egl->eglDestroyImage != NULL;
+    else
+      return context_egl->eglCreateImageKHR != NULL &&
         context_egl->eglDestroyImage != NULL;
   }
 
diff --git a/gst-libs/gst/gl/egl/gstglcontext_egl.h b/gst-libs/gst/gl/egl/gstglcontext_egl.h
index 90abb03..c73cd02 100644
--- a/gst-libs/gst/gl/egl/gstglcontext_egl.h
+++ b/gst-libs/gst/gl/egl/gstglcontext_egl.h
@@ -46,12 +46,17 @@
   EGLSurface egl_surface;
   EGLConfig  egl_config;
 
+  gint egl_major;
+  gint egl_minor;
+
   GstGLAPI gl_api;
 
   const gchar *egl_exts;
 
-  EGLImageKHR (*eglCreateImage) (EGLDisplay dpy, EGLContext ctx, EGLenum target,
+  EGLImageKHR (*eglCreateImageKHR) (EGLDisplay dpy, EGLContext ctx, EGLenum target,
       EGLClientBuffer buffer, const EGLint *attrib_list);
+  EGLImageKHR (*eglCreateImage) (EGLDisplay dpy, EGLContext ctx, EGLenum target,
+      EGLClientBuffer buffer, const EGLAttrib *attrib_list);
   EGLBoolean (*eglDestroyImage) (EGLDisplay dpy, EGLImageKHR image);
 
   /* Cached handle */
diff --git a/gst-libs/gst/gl/egl/gstgldisplay_egl.c b/gst-libs/gst/gl/egl/gstgldisplay_egl.c
index 9acf4f0..c0c8022 100644
--- a/gst-libs/gst/gl/egl/gstgldisplay_egl.c
+++ b/gst-libs/gst/gl/egl/gstgldisplay_egl.c
@@ -23,7 +23,8 @@
 #endif
 
 #include <gst/gl/egl/gstgldisplay_egl.h>
-#include <gst/gl/egl/gsteglimagememory.h>
+#include <gst/gl/egl/gsteglimage.h>
+#include <gst/gl/egl/gstglmemoryegl.h>
 
 GST_DEBUG_CATEGORY_STATIC (gst_gl_display_debug);
 #define GST_CAT_DEFAULT gst_gl_display_debug
@@ -50,7 +51,7 @@
   display->type = GST_GL_DISPLAY_TYPE_EGL;
   display_egl->foreign_display = FALSE;
 
-  gst_egl_image_memory_init ();
+  gst_gl_memory_egl_init_once ();
 }
 
 static void
diff --git a/gst-libs/gst/gl/egl/gstglmemoryegl.c b/gst-libs/gst/gl/egl/gstglmemoryegl.c
new file mode 100644
index 0000000..cde47ca
--- /dev/null
+++ b/gst-libs/gst/gl/egl/gstglmemoryegl.c
@@ -0,0 +1,251 @@
+/*
+ * GStreamer
+ * Copyright (C) 2012 Collabora Ltd.
+ *   @author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
+ * Copyright (C) 2014 Julien Isorce <julien.isorce@gmail.com>
+ * Copyright (C) 2015 Igalia
+ *    Author: Gwang Yoon Hwang <yoon@igalia.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <string.h>
+
+#include <gst/gl/egl/gstglmemoryegl.h>
+
+static GstAllocator *_gl_memory_egl_allocator;
+
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_GL_MEMORY);
+#define GST_CAT_DEFAULT GST_CAT_GL_MEMORY
+
+#define parent_class gst_gl_memory_egl_allocator_parent_class
+G_DEFINE_TYPE (GstGLMemoryEGLAllocator, gst_gl_memory_egl_allocator,
+    GST_TYPE_GL_MEMORY_ALLOCATOR);
+
+gboolean
+gst_is_gl_memory_egl (GstMemory * mem)
+{
+  return mem != NULL && mem->allocator != NULL
+      && g_type_is_a (G_OBJECT_TYPE (mem->allocator),
+      GST_TYPE_GL_MEMORY_EGL_ALLOCATOR);
+}
+
+static GstGLMemoryEGL *
+_gl_mem_get_parent (GstGLMemoryEGL * gl_mem)
+{
+  GstGLMemoryEGL *parent = (GstGLMemoryEGL *) gl_mem->mem.mem.mem.parent;
+  return parent ? parent : gl_mem;
+}
+
+EGLImageKHR
+gst_gl_memory_egl_get_image (GstGLMemoryEGL * mem)
+{
+  g_return_val_if_fail (gst_is_gl_memory_egl (GST_MEMORY_CAST (mem)),
+      EGL_NO_IMAGE_KHR);
+  return gst_egl_image_get_image (_gl_mem_get_parent (mem)->image);
+}
+
+EGLDisplay
+gst_gl_memory_egl_get_display (GstGLMemoryEGL * mem)
+{
+  g_return_val_if_fail (gst_is_gl_memory_egl (GST_MEMORY_CAST (mem)), NULL);
+  return GST_GL_CONTEXT_EGL (_gl_mem_get_parent (mem)->mem.mem.
+      context)->egl_display;
+}
+
+GstVideoGLTextureOrientation
+gst_gl_memory_egl_get_orientation (GstGLMemoryEGL * mem)
+{
+  g_return_val_if_fail (gst_is_gl_memory_egl (GST_MEMORY_CAST (mem)),
+      GST_VIDEO_GL_TEXTURE_ORIENTATION_X_NORMAL_Y_NORMAL);
+
+  return gst_egl_image_get_orientation (_gl_mem_get_parent (mem)->image);
+}
+
+static GstMemory *
+_gl_mem_alloc (GstAllocator * allocator, gsize size,
+    GstAllocationParams * params)
+{
+  g_warning ("Use gst_gl_base_memory_allocator_alloc() to allocate from this "
+      "GstGLMemoryEGL allocator");
+
+  return NULL;
+}
+
+static void
+_gl_mem_destroy (GstGLMemoryEGL * mem)
+{
+  if (mem->image)
+    gst_egl_image_unref (mem->image);
+
+  GST_GL_BASE_MEMORY_ALLOCATOR_CLASS (parent_class)->destroy ((GstGLBaseMemory
+          *) mem);
+}
+
+static GstGLMemoryEGL *
+_gl_mem_egl_alloc (GstGLBaseMemoryAllocator * allocator,
+    GstGLVideoAllocationParams * params)
+{
+  guint alloc_flags = params->parent.alloc_flags;
+  GstGLMemoryEGL *mem;
+
+  g_return_val_if_fail (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_VIDEO,
+      NULL);
+  g_return_val_if_fail ((alloc_flags &
+          GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_SYSMEM) == 0, NULL);
+  if (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) {
+    g_return_val_if_fail (GST_IS_EGL_IMAGE (params->parent.gl_handle), NULL);
+  }
+
+  mem = g_new0 (GstGLMemoryEGL, 1);
+  if (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) {
+    if (params->target != GST_GL_TEXTURE_TARGET_2D) {
+      g_free (mem);
+      GST_CAT_ERROR (GST_CAT_GL_MEMORY, "GstGLMemoryEGL only supports wrapping "
+          "2D textures");
+      return NULL;
+    }
+    mem->image = gst_egl_image_ref (params->parent.gl_handle);
+  }
+
+  gst_gl_memory_init (GST_GL_MEMORY_CAST (mem), GST_ALLOCATOR_CAST (allocator),
+      NULL, params->parent.context, params->target, params->tex_type,
+      params->parent.alloc_params, params->v_info, params->plane,
+      params->valign, params->parent.user_data, params->parent.notify);
+
+  return mem;
+}
+
+static void
+_destroy_egl_image (GstEGLImage * image, gpointer user_data)
+{
+  image->context->eglDestroyImage (image->context->egl_display, image->image);
+}
+
+static gboolean
+_gl_mem_create (GstGLMemoryEGL * gl_mem, GError ** error)
+{
+  GstGLContext *context = gl_mem->mem.mem.context;
+  GstGLContextEGL *ctx_egl = GST_GL_CONTEXT_EGL (context);
+  const GstGLFuncs *gl = context->gl_vtable;
+  GstGLBaseMemoryAllocatorClass *alloc_class;
+
+  if (!gst_gl_context_check_feature (GST_GL_CONTEXT (context),
+          "EGL_KHR_image_base")) {
+    g_set_error (error, GST_GL_CONTEXT_ERROR, GST_GL_CONTEXT_ERROR_WRONG_API,
+        "EGL_KHR_image_base is not supported");
+    return FALSE;
+  }
+
+  alloc_class = GST_GL_BASE_MEMORY_ALLOCATOR_CLASS (parent_class);
+  if (!alloc_class->create ((GstGLBaseMemory *) gl_mem, error))
+    return FALSE;
+
+  if (gl_mem->image == NULL) {
+    EGLImageKHR image = ctx_egl->eglCreateImageKHR (ctx_egl->egl_display,
+        ctx_egl->egl_context, EGL_GL_TEXTURE_2D_KHR,
+        (EGLClientBuffer) (guintptr) gl_mem->mem.tex_id, NULL);
+
+    GST_TRACE ("Generating EGLImage handle:%p from a texture:%u",
+        gl_mem->image, gl_mem->mem.tex_id);
+
+    if (eglGetError () != EGL_SUCCESS) {
+      g_set_error (error, GST_GL_CONTEXT_ERROR, GST_GL_CONTEXT_ERROR_FAILED,
+          "Failed to create EGLImage");
+      return FALSE;
+    }
+
+    gl_mem->image = gst_egl_image_new_wrapped (context, image, 0, 0,
+        (GstEGLImageDestroyNotify) _destroy_egl_image, NULL);
+  } else {
+    gl->ActiveTexture (GL_TEXTURE0 + gl_mem->mem.plane);
+    gl->BindTexture (GL_TEXTURE_2D, gl_mem->mem.tex_id);
+    gl->EGLImageTargetTexture2D (GL_TEXTURE_2D,
+        gst_egl_image_get_image (GST_EGL_IMAGE (gl_mem->image)));
+  }
+
+  return TRUE;
+}
+
+static GstMemory *
+_gl_mem_copy (GstGLMemoryEGL * src, gssize offset, gssize size)
+{
+  GST_CAT_ERROR (GST_CAT_GL_MEMORY, "GstGLMemoryEGL does not support copy");
+  return NULL;
+}
+
+static void
+gst_gl_memory_egl_allocator_class_init (GstGLMemoryEGLAllocatorClass * klass)
+{
+  GstGLBaseMemoryAllocatorClass *gl_base;
+  GstGLMemoryAllocatorClass *gl_tex;
+  GstAllocatorClass *allocator_class;
+
+  gl_tex = (GstGLMemoryAllocatorClass *) klass;
+  gl_base = (GstGLBaseMemoryAllocatorClass *) klass;
+  allocator_class = (GstAllocatorClass *) klass;
+
+  gl_base->alloc = (GstGLBaseMemoryAllocatorAllocFunction) _gl_mem_egl_alloc;
+  gl_base->create = (GstGLBaseMemoryAllocatorCreateFunction) _gl_mem_create;
+  gl_base->destroy = (GstGLBaseMemoryAllocatorDestroyFunction) _gl_mem_destroy;
+  gl_tex->copy = (GstGLBaseMemoryAllocatorCopyFunction) _gl_mem_copy;
+
+  allocator_class->alloc = _gl_mem_alloc;
+}
+
+static void
+gst_gl_memory_egl_allocator_init (GstGLMemoryEGLAllocator * allocator)
+{
+  GstAllocator *alloc = GST_ALLOCATOR_CAST (allocator);
+
+  alloc->mem_type = GST_GL_MEMORY_EGL_ALLOCATOR_NAME;
+
+  GST_OBJECT_FLAG_SET (allocator, GST_ALLOCATOR_FLAG_CUSTOM_ALLOC);
+}
+
+/**
+ * gst_gl_memory_egl_init_once:
+ *
+ * Initializes the GL Memory allocator. It is safe to call this function
+ * multiple times.  This must be called before any other GstGLMemoryEGL operation.
+ */
+void
+gst_gl_memory_egl_init_once (void)
+{
+  static volatile gsize _init = 0;
+
+  if (g_once_init_enter (&_init)) {
+    gst_gl_memory_init_once ();
+
+    GST_DEBUG_CATEGORY_INIT (GST_CAT_GL_MEMORY, "glmemory", 0,
+        "OpenGL Texture with EGLImage memory");
+
+    _gl_memory_egl_allocator =
+        g_object_new (GST_TYPE_GL_MEMORY_EGL_ALLOCATOR, NULL);
+
+    /* The allocator is never unreffed */
+    GST_OBJECT_FLAG_SET (_gl_memory_egl_allocator,
+        GST_OBJECT_FLAG_MAY_BE_LEAKED);
+
+    gst_allocator_register (GST_GL_MEMORY_EGL_ALLOCATOR_NAME,
+        gst_object_ref (_gl_memory_egl_allocator));
+    g_once_init_leave (&_init, 1);
+  }
+}
diff --git a/gst-libs/gst/gl/egl/gstglmemoryegl.h b/gst-libs/gst/gl/egl/gstglmemoryegl.h
new file mode 100644
index 0000000..c05ef82
--- /dev/null
+++ b/gst-libs/gst/gl/egl/gstglmemoryegl.h
@@ -0,0 +1,99 @@
+/*
+ * GStreamer
+ * Copyright (C) 2012 Collabora Ltd.
+ *   @author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
+ * Copyright (C) 2014 Julien Isorce <julien.isorce@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _GST_GL_MEMORY_EGL_H_
+#define _GST_GL_MEMORY_EGL_H_
+
+#include <gst/gst.h>
+#include <gst/gstallocator.h>
+#include <gst/gstmemory.h>
+#include <gst/video/video.h>
+
+#include <gst/gl/gl.h>
+#include <gst/gl/egl/gstglcontext_egl.h>
+#include <gst/gl/egl/gsteglimage.h>
+
+#include <gst/gl/gstglmemory.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_GL_MEMORY_EGL_ALLOCATOR (gst_gl_memory_egl_allocator_get_type())
+GType gst_gl_memory_egl_allocator_get_type(void);
+
+#define GST_IS_GL_MEMORY_EGL_ALLOCATOR(obj)              (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_GL_MEMORY_EGL_ALLOCATOR))
+#define GST_IS_GL_MEMORY_EGL_ALLOCATOR_CLASS(klass)      (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_GL_MEMORY_EGL_ALLOCATOR))
+#define GST_GL_MEMORY_EGL_ALLOCATOR_GET_CLASS(obj)       (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_GL_MEMORY_EGL_ALLOCATOR, GstGLMemoryEGLAllocatorClass))
+#define GST_GL_MEMORY_EGL_ALLOCATOR(obj)                 (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_GL_MEMORY_EGL_ALLOCATOR, GstGLMemoryEGLAllocator))
+#define GST_GL_MEMORY_EGL_ALLOCATOR_CLASS(klass)         (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_GL_MEMORY_EGL_ALLOCATOR, GstGLAllocatorClass))
+#define GST_GL_MEMORY_EGL_ALLOCATOR_CAST(obj)            ((GstGLMemoryEGLAllocator *)(obj))
+
+/**
+ * GstGLMemoryEGL:
+ *
+ * Private instance
+ */
+struct _GstGLMemoryEGL
+{
+  GstGLMemory mem;
+
+  GstEGLImage *image;
+};
+
+/**
+ * GST_GL_MEMORY_EGL_ALLOCATOR:
+ *
+ * The name of the GL Memory EGL allocator
+ */
+#define GST_GL_MEMORY_EGL_ALLOCATOR_NAME "GLMemoryEGL"
+
+void          gst_gl_memory_egl_init_once               (void);
+gboolean      gst_is_gl_memory_egl                      (GstMemory * mem);
+
+EGLImageKHR   gst_gl_memory_egl_get_image               (GstGLMemoryEGL * mem);
+EGLDisplay    gst_gl_memory_egl_get_display             (GstGLMemoryEGL * mem);
+
+GstVideoGLTextureOrientation gst_gl_memory_egl_get_orientation
+                                                        (GstGLMemoryEGL * mem);
+
+/**
+ * GstGLAllocator
+ *
+ * Opaque #GstGLAllocator struct
+ */
+struct _GstGLMemoryEGLAllocator
+{
+  GstGLMemoryAllocator parent;
+};
+
+/**
+ * GstGLAllocatorClass:
+ *
+ * The #GstGLAllocatorClass only contains private data
+ */
+struct _GstGLMemoryEGLAllocatorClass
+{
+  GstGLMemoryAllocatorClass parent_class;
+};
+
+G_END_DECLS
+
+#endif /* _GST_GL_MEMORY_EGL_H_ */
diff --git a/gst-libs/gst/gl/gl.h b/gst-libs/gst/gl/gl.h
index b17a4c6..9547386 100644
--- a/gst-libs/gst/gl/gl.h
+++ b/gst-libs/gst/gl/gl.h
@@ -45,6 +45,7 @@
 #include <gst/gl/gstglbuffer.h>
 #include <gst/gl/gstglmemory.h>
 #include <gst/gl/gstglmemorypbo.h>
+#include <gst/gl/gstglrenderbuffer.h>
 #include <gst/gl/gstglbufferpool.h>
 #include <gst/gl/gstglframebuffer.h>
 #include <gst/gl/gstglbasefilter.h>
diff --git a/gst-libs/gst/gl/glprototypes/Makefile.in b/gst-libs/gst/gl/glprototypes/Makefile.in
index 3284cc2..b1819df 100644
--- a/gst-libs/gst/gl/glprototypes/Makefile.in
+++ b/gst-libs/gst/gl/glprototypes/Makefile.in
@@ -265,6 +265,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -286,6 +288,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -335,6 +339,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -480,6 +486,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -606,8 +614,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -650,8 +656,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/gl/glprototypes/gstgl_gles2compat.h b/gst-libs/gst/gl/glprototypes/gstgl_gles2compat.h
index d282990..6dfd2c3 100644
--- a/gst-libs/gst/gl/glprototypes/gstgl_gles2compat.h
+++ b/gst-libs/gst/gl/glprototypes/gstgl_gles2compat.h
@@ -27,23 +27,30 @@
 
 G_BEGIN_DECLS
 
-/* SUPPORTED */
-//FIXME:
+#ifndef GL_RGB16
 #define GL_RGB16 GL_RGB565
+#endif
+#ifndef GL_RGB8
 #define GL_RGB8 GL_RGB
-//END FIXME
+#endif
 
 /* UNSUPPORTED */
 
-#define GL_COLOR_ATTACHMENT1 0
-#define GL_COLOR_ATTACHMENT2 0
+#ifndef GL_COLOR_ATTACHMENT1
+#define GL_COLOR_ATTACHMENT1 0x8CE1
+#endif
+#ifndef GL_COLOR_ATTACHMENT2
+#define GL_COLOR_ATTACHMENT2 0x8CE2
+#endif
 #ifndef GL_TEXTURE_ENV
 #define GL_TEXTURE_ENV 0
 #endif
 #ifndef GL_TEXTURE_ENV_MODE
 #define GL_TEXTURE_ENV_MODE 0
 #endif
-#define GL_DEPTH24_STENCIL8 0
+#ifndef GL_DEPTH24_STENCIL8
+#define GL_DEPTH24_STENCIL8 0x88F0
+#endif
 
 G_END_DECLS
 
diff --git a/gst-libs/gst/gl/glprototypes/shaders.h b/gst-libs/gst/gl/glprototypes/shaders.h
index 817e479..6d828db 100644
--- a/gst-libs/gst/gl/glprototypes/shaders.h
+++ b/gst-libs/gst/gl/glprototypes/shaders.h
@@ -362,3 +362,13 @@
 GST_GL_EXT_FUNCTION (void, UniformMatrix4x3fv,
                      (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))
 GST_GL_EXT_END ()
+
+GST_GL_EXT_BEGIN (bind_frag_data,
+                  GST_GL_API_OPENGL | GST_GL_API_OPENGL3,
+                  3, 0,
+                  255, 255,
+                  "\0",
+                  "\0")
+GST_GL_EXT_FUNCTION (void, BindFragDataLocation,
+                     (GLuint program, GLuint index, const GLchar * name))
+GST_GL_EXT_END ()
diff --git a/gst-libs/gst/gl/gstgl_fwd.h b/gst-libs/gst/gl/gstgl_fwd.h
index fb64ff6..465e284 100644
--- a/gst-libs/gst/gl/gstgl_fwd.h
+++ b/gst-libs/gst/gl/gstgl_fwd.h
@@ -55,6 +55,18 @@
 typedef struct _GstGLMemoryPBOAllocator GstGLMemoryPBOAllocator;
 typedef struct _GstGLMemoryPBOAllocatorClass GstGLMemoryPBOAllocatorClass;
 
+typedef struct _GstGLMemoryEGL GstGLMemoryEGL;
+typedef struct _GstGLMemoryEGLAllocator GstGLMemoryEGLAllocator;
+typedef struct _GstGLMemoryEGLAllocatorClass GstGLMemoryEGLAllocatorClass;
+
+typedef struct _GstGLRenderbuffer GstGLRenderbuffer;
+typedef struct _GstGLRenderbufferAllocator GstGLRenderbufferAllocator;
+typedef struct _GstGLRenderbufferAllocatorClass GstGLRenderbufferAllocatorClass;
+
+typedef struct _GstGLFramebuffer GstGLFramebuffer;
+typedef struct _GstGLFramebufferAllocator GstGLFramebufferAllocator;
+typedef struct _GstGLFramebufferAllocatorClass GstGLFramebufferAllocatorClass;
+
 typedef struct _GstGLSLStage        GstGLSLStage;
 typedef struct _GstGLSLStagePrivate GstGLSLStagePrivate;
 typedef struct _GstGLSLStageClass   GstGLSLStageClass;
diff --git a/gst-libs/gst/gl/gstglapi.h b/gst-libs/gst/gl/gstglapi.h
index be38113..93b60b7 100644
--- a/gst-libs/gst/gl/gstglapi.h
+++ b/gst-libs/gst/gl/gstglapi.h
@@ -39,8 +39,13 @@
 #  include <OpenGLES/ES2/gl.h>
 #  include <OpenGLES/ES2/glext.h>
 # else
-#  include <GLES2/gl2.h>
-#  include <GLES2/gl2ext.h>
+#  if GST_GL_HAVE_GLES3
+#   include <GLES3/gl3.h>
+#   include <GLES3/gl3ext.h>
+#  else
+#   include <GLES2/gl2.h>
+#   include <GLES2/gl2ext.h>
+#  endif
 # endif
 # if !GST_GL_HAVE_OPENGL
 #  include <gst/gl/glprototypes/gstgl_gles2compat.h>
diff --git a/gst-libs/gst/gl/gstglbasefilter.h b/gst-libs/gst/gl/gstglbasefilter.h
index fa16d07..f893127 100644
--- a/gst-libs/gst/gl/gstglbasefilter.h
+++ b/gst-libs/gst/gl/gstglbasefilter.h
@@ -58,7 +58,7 @@
   GstCaps           *out_caps;
 
   /* <private> */
-  gpointer _padding[GST_PADDING];
+  gpointer           _padding[GST_PADDING];
 
   GstGLBaseFilterPrivate *priv;
 };
diff --git a/gst-libs/gst/gl/gstglbasememory.c b/gst-libs/gst/gl/gstglbasememory.c
index 7fc1d00..2d4c8c3 100644
--- a/gst-libs/gst/gl/gstglbasememory.c
+++ b/gst-libs/gst/gl/gstglbasememory.c
@@ -606,7 +606,7 @@
     gsize struct_size, guint alloc_flags, GstGLAllocationParamsCopyFunc copy,
     GstGLAllocationParamsFreeFunc free, GstGLContext * context,
     gsize alloc_size, GstAllocationParams * alloc_params,
-    gpointer wrapped_data, guint gl_handle, gpointer user_data,
+    gpointer wrapped_data, gpointer gl_handle, gpointer user_data,
     GDestroyNotify notify)
 {
   memset (params, 0, sizeof (*params));
@@ -732,6 +732,8 @@
 {
   GstGLBaseMemoryAllocatorClass *alloc_class;
 
+  g_return_val_if_fail (GST_IS_GL_BASE_MEMORY_ALLOCATOR (allocator), NULL);
+
   alloc_class = GST_GL_BASE_MEMORY_ALLOCATOR_GET_CLASS (allocator);
 
   g_return_val_if_fail (alloc_class != NULL, NULL);
diff --git a/gst-libs/gst/gl/gstglbasememory.h b/gst-libs/gst/gl/gstglbasememory.h
index f862c85..22129d0 100644
--- a/gst-libs/gst/gl/gstglbasememory.h
+++ b/gst-libs/gst/gl/gstglbasememory.h
@@ -32,7 +32,7 @@
 #define GST_TYPE_GL_BASE_MEMORY_ALLOCATOR (gst_gl_base_memory_allocator_get_type())
 GType gst_gl_base_memory_allocator_get_type(void);
 
-#define GST_IS_GL_BASE_MEMORY_ALLOCATOR(obj)              (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_GL_ALLOCATOR))
+#define GST_IS_GL_BASE_MEMORY_ALLOCATOR(obj)              (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_GL_BASE_MEMORY_ALLOCATOR))
 #define GST_IS_GL_BASE_MEMORY_ALLOCATOR_CLASS(klass)      (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_GL_BASE_MEMORY_ALLOCATOR))
 #define GST_GL_BASE_MEMORY_ALLOCATOR_GET_CLASS(obj)       (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_GL_BASE_MEMORY_ALLOCATOR, GstGLBaseMemoryAllocatorClass))
 #define GST_GL_BASE_MEMORY_ALLOCATOR(obj)                 (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_GL_BASE_MEMORY_ALLOCATOR, GstGLBaseMemoryAllocator))
@@ -112,6 +112,8 @@
 
   GDestroyNotify        notify;
   gpointer              user_data;
+
+  gpointer              _padding[GST_PADDING];
 };
 
 typedef struct _GstGLAllocationParams GstGLAllocationParams;
@@ -173,7 +175,10 @@
   /* GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_SYSMEM only */
   gpointer                          wrapped_data;
   /* GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE only */
-  guint                             gl_handle;
+  gpointer                          gl_handle;
+
+  /* <private> */
+  gpointer                          _padding[GST_PADDING];
 };
 
 gboolean                gst_gl_allocation_params_init       (GstGLAllocationParams * params,
@@ -185,7 +190,7 @@
                                                              gsize alloc_size,
                                                              GstAllocationParams * alloc_params,
                                                              gpointer wrapped_data,
-                                                             guint gl_handle,
+                                                             gpointer gl_handle,
                                                              gpointer user_data,
                                                              GDestroyNotify notify);
 
@@ -293,6 +298,8 @@
   /*< private >*/
   GstAllocator parent;
   GstMemoryCopyFunction fallback_mem_copy;
+
+  gpointer _padding[GST_PADDING];
 };
 
 /**
@@ -315,13 +322,16 @@
 
   GstGLBaseMemoryAllocatorCreateFunction        create;
   GstGLBaseMemoryAllocatorMapFunction           map;
+  GstGLBaseMemoryAllocatorUnmapFunction         unmap;
+  GstGLBaseMemoryAllocatorCopyFunction          copy;
+  GstGLBaseMemoryAllocatorDestroyFunction       destroy;
 #if 0
   GstGLBaseMemoryAllocatorFlushFunction         flush;        /* make CPU writes visible to the GPU */
   GstGLBaseMemoryAllocatorInvalidateFunction    invalidate;   /* make GPU writes visible to the CPU */
 #endif
-  GstGLBaseMemoryAllocatorUnmapFunction         unmap;
-  GstGLBaseMemoryAllocatorCopyFunction          copy;
-  GstGLBaseMemoryAllocatorDestroyFunction       destroy;
+
+  /* <private> */
+  gpointer                                      _padding[GST_PADDING];
 };
 
 #include <gst/gl/gl.h>
diff --git a/gst-libs/gst/gl/gstglbuffer.c b/gst-libs/gst/gl/gstglbuffer.c
index 2abdd6d..d50fd6d 100644
--- a/gst-libs/gst/gl/gstglbuffer.c
+++ b/gst-libs/gst/gl/gstglbuffer.c
@@ -456,6 +456,9 @@
     _gl_buffer_allocator =
         g_object_new (gst_gl_buffer_allocator_get_type (), NULL);
 
+    /* The allocator is never unreffed */
+    GST_OBJECT_FLAG_SET (_gl_buffer_allocator, GST_OBJECT_FLAG_MAY_BE_LEAKED);
+
     gst_allocator_register (GST_GL_BUFFER_ALLOCATOR_NAME,
         gst_object_ref (_gl_buffer_allocator));
     g_once_init_leave (&_init, 1);
diff --git a/gst-libs/gst/gl/gstglbuffer.h b/gst-libs/gst/gl/gstglbuffer.h
index ef519d8..e481536 100644
--- a/gst-libs/gst/gl/gstglbuffer.h
+++ b/gst-libs/gst/gl/gstglbuffer.h
@@ -74,6 +74,9 @@
 
   guint                     gl_target;
   guint                     gl_usage;
+
+  /* <private> */
+  gpointer                  _padding[GST_PADDING];
 };
 
 GstGLBufferAllocationParams *   gst_gl_buffer_allocation_params_new     (GstGLContext * context,
@@ -90,6 +93,9 @@
 struct _GstGLBufferAllocator
 {
   GstGLBaseMemoryAllocator parent;
+
+  /* <private> */
+  gpointer _padding[GST_PADDING];
 };
 
 /**
@@ -100,6 +106,9 @@
 struct _GstGLBufferAllocatorClass
 {
   GstGLBaseMemoryAllocatorClass parent_class;
+
+  /* <private> */
+  gpointer _padding[GST_PADDING];
 };
 
 #define GST_CAPS_FEATURE_MEMORY_GL_BUFFER "memory:GLBuffer"
diff --git a/gst-libs/gst/gl/gstglbufferpool.c b/gst-libs/gst/gl/gstglbufferpool.c
index 90536b0..218169a 100644
--- a/gst-libs/gst/gl/gstglbufferpool.c
+++ b/gst-libs/gst/gl/gstglbufferpool.c
@@ -26,10 +26,6 @@
 #include "gstglbufferpool.h"
 #include "gstglutils.h"
 
-#if GST_GL_HAVE_PLATFORM_EGL
-#include <gst/gl/egl/gsteglimagememory.h>
-#endif
-
 /**
  * SECTION:gstglbufferpool
  * @short_description: buffer pool for #GstGLMemory objects
@@ -51,8 +47,6 @@
   GstCaps *caps;
   gboolean add_videometa;
   gboolean add_glsyncmeta;
-  gboolean want_eglimage;
-  GstBuffer *last_buffer;
 };
 
 static void gst_gl_buffer_pool_finalize (GObject * object);
@@ -132,23 +126,13 @@
   priv->add_glsyncmeta = gst_buffer_pool_config_has_option (config,
       GST_BUFFER_POOL_OPTION_GL_SYNC_META);
 
-#if GST_GL_HAVE_PLATFORM_EGL
-  if (priv->allocator) {
-    priv->want_eglimage =
-        (g_strcmp0 (priv->allocator->mem_type, GST_EGL_IMAGE_MEMORY_TYPE) == 0);
-  } else
-#endif
-  {
-    priv->want_eglimage = FALSE;
-  }
-
   if (priv->gl_params)
     gst_gl_allocation_params_free ((GstGLAllocationParams *) priv->gl_params);
   priv->gl_params = (GstGLVideoAllocationParams *)
       gst_buffer_pool_config_get_gl_allocation_params (config);
   if (!priv->gl_params)
     priv->gl_params = gst_gl_video_allocation_params_new (glpool->context,
-        &alloc_params, &info, -1, NULL, 0);
+        &alloc_params, &info, -1, NULL, 0, 0);
 
   max_align = alloc_params.align;
 
@@ -276,22 +260,9 @@
   if (!(buf = gst_buffer_new ())) {
     goto no_buffer;
   }
-#if GST_GL_HAVE_PLATFORM_EGL
-  if (priv->want_eglimage) {
-    /* alloc and append memories, also add video_meta and
-     * texture_upload_meta */
-    if (!gst_egl_image_memory_setup_buffer (glpool->context,
-            priv->gl_params->v_info, buf))
-      goto egl_image_mem_create_failed;
-
-    *buffer = buf;
-
-    return GST_FLOW_OK;
-  }
-#endif
 
   alloc = GST_GL_MEMORY_ALLOCATOR (priv->allocator);
-  if (!gst_gl_memory_setup_buffer (alloc, buf, priv->gl_params))
+  if (!gst_gl_memory_setup_buffer (alloc, buf, priv->gl_params, NULL, NULL, 0))
     goto mem_create_failed;
 
   if (priv->add_glsyncmeta)
@@ -312,48 +283,6 @@
     GST_WARNING_OBJECT (pool, "Could not create GL Memory");
     return GST_FLOW_ERROR;
   }
-
-#if GST_GL_HAVE_PLATFORM_EGL
-egl_image_mem_create_failed:
-  {
-    GST_WARNING_OBJECT (pool, "Could not create EGLImage Memory");
-    return GST_FLOW_ERROR;
-  }
-#endif
-}
-
-
-static GstFlowReturn
-gst_gl_buffer_pool_acquire_buffer (GstBufferPool * bpool,
-    GstBuffer ** buffer, GstBufferPoolAcquireParams * params)
-{
-  GstFlowReturn ret = GST_FLOW_OK;
-  GstGLBufferPool *glpool = NULL;
-
-  ret =
-      GST_BUFFER_POOL_CLASS
-      (gst_gl_buffer_pool_parent_class)->acquire_buffer (bpool, buffer, params);
-  if (ret != GST_FLOW_OK || !*buffer)
-    return ret;
-
-  glpool = GST_GL_BUFFER_POOL (bpool);
-
-  /* XXX: Don't return the memory we just rendered, glEGLImageTargetTexture2DOES()
-   * keeps the EGLImage unmappable until the next one is uploaded
-   */
-  if (glpool->priv->want_eglimage && *buffer
-      && *buffer == glpool->priv->last_buffer) {
-    GstBuffer *oldbuf = *buffer;
-
-    ret =
-        GST_BUFFER_POOL_CLASS
-        (gst_gl_buffer_pool_parent_class)->acquire_buffer (bpool,
-        buffer, params);
-    gst_object_replace ((GstObject **) & oldbuf->pool, (GstObject *) glpool);
-    gst_buffer_unref (oldbuf);
-  }
-
-  return ret;
 }
 
 /**
@@ -376,24 +305,6 @@
   return GST_BUFFER_POOL_CAST (pool);
 }
 
-/**
- * gst_gl_buffer_pool_replace_last_buffer:
- * @pool: a #GstGLBufferPool
- * @buffer: a #GstBuffer
- *
- * Set @pool<--  -->s last buffer to @buffer for #GstGLPlatform<--  -->s that
- * require it.
- */
-void
-gst_gl_buffer_pool_replace_last_buffer (GstGLBufferPool * pool,
-    GstBuffer * buffer)
-{
-  g_return_if_fail (pool != NULL);
-  g_return_if_fail (buffer != NULL);
-
-  gst_buffer_replace (&pool->priv->last_buffer, buffer);
-}
-
 static void
 gst_gl_buffer_pool_class_init (GstGLBufferPoolClass * klass)
 {
@@ -407,7 +318,6 @@
   gstbufferpool_class->get_options = gst_gl_buffer_pool_get_options;
   gstbufferpool_class->set_config = gst_gl_buffer_pool_set_config;
   gstbufferpool_class->alloc_buffer = gst_gl_buffer_pool_alloc;
-  gstbufferpool_class->acquire_buffer = gst_gl_buffer_pool_acquire_buffer;
   gstbufferpool_class->start = gst_gl_buffer_pool_start;
 }
 
@@ -423,8 +333,6 @@
   priv->caps = NULL;
   priv->add_videometa = TRUE;
   priv->add_glsyncmeta = FALSE;
-  priv->want_eglimage = FALSE;
-  priv->last_buffer = FALSE;
 }
 
 static void
@@ -435,8 +343,6 @@
 
   GST_LOG_OBJECT (pool, "finalize GL buffer pool %p", pool);
 
-  gst_buffer_replace (&pool->priv->last_buffer, NULL);
-
   if (priv->caps)
     gst_caps_unref (priv->caps);
 
diff --git a/gst-libs/gst/gl/gstglbufferpool.h b/gst-libs/gst/gl/gstglbufferpool.h
index ee13366..a136955 100644
--- a/gst-libs/gst/gl/gstglbufferpool.h
+++ b/gst-libs/gst/gl/gstglbufferpool.h
@@ -47,7 +47,10 @@
 
   GstGLContext *context;
 
+  /* <private> */
   GstGLBufferPoolPrivate *priv;
+
+  gpointer _padding[GST_PADDING];
 };
 
 /**
@@ -58,11 +61,12 @@
 struct _GstGLBufferPoolClass
 {
   GstBufferPoolClass parent_class;
+
+  /* <private> */
+  gpointer _padding[GST_PADDING];
 };
 
 GstBufferPool *gst_gl_buffer_pool_new (GstGLContext * context);
-void gst_gl_buffer_pool_replace_last_buffer (GstGLBufferPool * pool,
-    GstBuffer * buffer);
 
 GstGLAllocationParams * gst_buffer_pool_config_get_gl_allocation_params    (GstStructure * config);
 void                    gst_buffer_pool_config_set_gl_allocation_params    (GstStructure * config,
diff --git a/gst-libs/gst/gl/gstglcolorconvert.c b/gst-libs/gst/gl/gstglcolorconvert.c
index eb3b4a8..e9eb88a 100644
--- a/gst-libs/gst/gl/gstglcolorconvert.c
+++ b/gst-libs/gst/gl/gstglcolorconvert.c
@@ -27,6 +27,7 @@
 
 #include "gl.h"
 #include "gstglcolorconvert.h"
+#include "gstglsl_private.h"
 
 /**
  * SECTION:gstglcolorconvert
@@ -261,9 +262,9 @@
     "    for (int j = 0; j < int(chroma_sampling.y); j++) {\n"
     "      int n = (i+1)*(j+1);\n"
     "      delta.y = float(j);\n"
-    "      vec4 sample = texture2D(tex, (chroma_pos + delta) / unnormalization).%c%c%c%c;\n"
+    "      vec4 s = texture2D(tex, (chroma_pos + delta) / unnormalization).%c%c%c%c;\n"
            /* rolling average */
-    "      uv_texel = (float(n-1) * uv_texel + sample) / float(n);\n"
+    "      uv_texel = (float(n-1) * uv_texel + s) / float(n);\n"
     "    }\n"
     "  }\n"
     "}\n"
@@ -413,6 +414,8 @@
   GstGLMemory *in_tex[GST_VIDEO_MAX_PLANES];
   GstGLMemory *out_tex[GST_VIDEO_MAX_PLANES];
 
+  GstVideoGLTextureType in_tex_types[GST_VIDEO_MAX_PLANES];
+
   GLuint vao;
   GLuint vertex_buffer;
   GLuint vbo_indices;
@@ -520,23 +523,8 @@
 }
 
 static void
-gst_gl_color_convert_reset (GstGLColorConvert * convert)
+gst_gl_color_convert_reset_shader (GstGLColorConvert * convert)
 {
-  guint i;
-
-  if (convert->fbo || convert->depth_buffer) {
-    gst_gl_context_del_fbo (convert->context, convert->fbo,
-        convert->depth_buffer);
-    convert->fbo = 0;
-    convert->depth_buffer = 0;
-  }
-
-  for (i = 0; i < convert->priv->convert_info.out_n_textures; i++) {
-    if (convert->priv->out_tex[i])
-      gst_memory_unref ((GstMemory *) convert->priv->out_tex[i]);
-    convert->priv->out_tex[i] = NULL;
-  }
-
   convert->priv->convert_info.chroma_sampling[0] = 1.0f;
   convert->priv->convert_info.chroma_sampling[1] = 1.0f;
 
@@ -553,12 +541,32 @@
     convert->shader = NULL;
   }
 
+  convert->initted = FALSE;
+}
+
+static void
+gst_gl_color_convert_reset (GstGLColorConvert * convert)
+{
+  guint i;
+
+  if (convert->fbo) {
+    gst_object_unref (convert->fbo);
+    convert->fbo = NULL;
+  }
+
+  for (i = 0; i < convert->priv->convert_info.out_n_textures; i++) {
+    if (convert->priv->out_tex[i])
+      gst_memory_unref ((GstMemory *) convert->priv->out_tex[i]);
+    convert->priv->out_tex[i] = NULL;
+  }
+
   if (convert->priv->pool) {
     convert->priv->pool_started = FALSE;
 
     gst_object_unref (convert->priv->pool);
     convert->priv->pool = NULL;
   }
+
   gst_caps_replace (&convert->priv->in_caps, NULL);
   gst_caps_replace (&convert->priv->out_caps, NULL);
 
@@ -566,6 +574,8 @@
     gst_gl_context_thread_add (convert->context,
         (GstGLContextThreadFunc) _reset_gl, convert);
   }
+
+  gst_gl_color_convert_reset_shader (convert);
 }
 
 static gboolean
@@ -788,7 +798,7 @@
         GST_BUFFER_POOL_OPTION_GL_SYNC_META);
 
   params = gst_gl_video_allocation_params_new (convert->context, NULL, &vinfo,
-      0, NULL, convert->priv->to_texture_target);
+      0, NULL, convert->priv->to_texture_target, 0);
   gst_buffer_pool_config_set_gl_allocation_params (config,
       (GstGLAllocationParams *) params);
   gst_gl_allocation_params_free ((GstGLAllocationParams *) params);
@@ -1328,6 +1338,44 @@
   return g_string_free (ret, discard_output);
 }
 
+static guint
+_get_n_textures (GstVideoFormat v_format)
+{
+  switch (v_format) {
+    case GST_VIDEO_FORMAT_RGBA:
+    case GST_VIDEO_FORMAT_RGBx:
+    case GST_VIDEO_FORMAT_ARGB:
+    case GST_VIDEO_FORMAT_xRGB:
+    case GST_VIDEO_FORMAT_BGRA:
+    case GST_VIDEO_FORMAT_BGRx:
+    case GST_VIDEO_FORMAT_ABGR:
+    case GST_VIDEO_FORMAT_xBGR:
+    case GST_VIDEO_FORMAT_RGB:
+    case GST_VIDEO_FORMAT_BGR:
+    case GST_VIDEO_FORMAT_AYUV:
+    case GST_VIDEO_FORMAT_GRAY8:
+    case GST_VIDEO_FORMAT_GRAY16_LE:
+    case GST_VIDEO_FORMAT_GRAY16_BE:
+    case GST_VIDEO_FORMAT_YUY2:
+    case GST_VIDEO_FORMAT_UYVY:
+    case GST_VIDEO_FORMAT_RGB16:
+    case GST_VIDEO_FORMAT_BGR16:
+      return 1;
+    case GST_VIDEO_FORMAT_NV12:
+    case GST_VIDEO_FORMAT_NV21:
+      return 2;
+    case GST_VIDEO_FORMAT_I420:
+    case GST_VIDEO_FORMAT_Y444:
+    case GST_VIDEO_FORMAT_Y42B:
+    case GST_VIDEO_FORMAT_Y41B:
+    case GST_VIDEO_FORMAT_YV12:
+      return 3;
+    default:
+      g_assert_not_reached ();
+      return 0;
+  }
+}
+
 static void
 _RGB_to_RGB (GstGLColorConvert * convert)
 {
@@ -1339,8 +1387,6 @@
   gchar *pixel_order = _RGB_pixel_order (in_format_str, out_format_str);
   gchar *alpha = NULL;
 
-  info->in_n_textures = 1;
-  info->out_n_textures = 1;
   if (_is_RGBx (in_format)) {
     int i;
     char input_alpha_channel = 'a';
@@ -1368,13 +1414,6 @@
   GstVideoFormat out_format = GST_VIDEO_INFO_FORMAT (&convert->out_info);
   const gchar *out_format_str = gst_video_format_to_string (out_format);
   gchar *pixel_order = _RGB_pixel_order ("rgba", out_format_str);
-  gboolean texture_rg =
-      gst_gl_context_check_feature (convert->context, "GL_EXT_texture_rg")
-      || gst_gl_context_check_gl_version (convert->context, GST_GL_API_GLES2, 3,
-      0)
-      || gst_gl_context_check_feature (convert->context, "GL_ARB_texture_rg")
-      || gst_gl_context_check_gl_version (convert->context, GST_GL_API_OPENGL3,
-      3, 0);
   gboolean apple_ycbcr = gst_gl_context_check_feature (convert->context,
       "GL_APPLE_ycbcr_422");
   gboolean in_tex_rectangular = FALSE;
@@ -1402,7 +1441,6 @@
     info->frag_body =
         g_strdup_printf (info->templ->body, pixel_order[0], pixel_order[1],
         pixel_order[2], pixel_order[3]);
-    info->in_n_textures = 1;
     info->shader_tex_names[0] = "tex";
   } else {
     switch (GST_VIDEO_INFO_FORMAT (&convert->in_info)) {
@@ -1410,7 +1448,6 @@
         info->templ = &templ_AYUV_to_RGB;
         info->frag_body = g_strdup_printf (info->templ->body, pixel_order[0],
             pixel_order[1], pixel_order[2], pixel_order[3]);
-        info->in_n_textures = 1;
         info->shader_tex_names[0] = "tex";
         break;
       case GST_VIDEO_FORMAT_I420:
@@ -1421,7 +1458,6 @@
         info->frag_body =
             g_strdup_printf (info->templ->body, pixel_order[0],
             pixel_order[1], pixel_order[2], pixel_order[3]);
-        info->in_n_textures = 3;
         info->shader_tex_names[0] = "Ytex";
         info->shader_tex_names[1] = "Utex";
         info->shader_tex_names[2] = "Vtex";
@@ -1431,51 +1467,54 @@
         info->frag_body =
             g_strdup_printf (info->templ->body, pixel_order[0],
             pixel_order[1], pixel_order[2], pixel_order[3]);
-        info->in_n_textures = 3;
         info->shader_tex_names[0] = "Ytex";
         info->shader_tex_names[1] = "Vtex";
         info->shader_tex_names[2] = "Utex";
         break;
       case GST_VIDEO_FORMAT_YUY2:
       {
-        char uv_val = texture_rg ? 'g' : 'a';
+        char uv_val =
+            convert->priv->in_tex_types[0] ==
+            GST_VIDEO_GL_TEXTURE_TYPE_RG ? 'g' : 'a';
         info->templ = &templ_YUY2_UYVY_to_RGB;
         info->frag_body = g_strdup_printf (info->templ->body, 'r', uv_val,
             uv_val, 'g', 'a', pixel_order[0], pixel_order[1], pixel_order[2],
             pixel_order[3]);
-        info->in_n_textures = 1;
         info->shader_tex_names[0] = "Ytex";
         break;
       }
       case GST_VIDEO_FORMAT_UYVY:
       {
-        char y_val = texture_rg ? 'g' : 'a';
+        char y_val =
+            convert->priv->in_tex_types[0] ==
+            GST_VIDEO_GL_TEXTURE_TYPE_RG ? 'g' : 'a';
         info->templ = &templ_YUY2_UYVY_to_RGB;
         info->frag_body = g_strdup_printf (info->templ->body, y_val, 'g',
             'g', 'r', 'b', pixel_order[0], pixel_order[1], pixel_order[2],
             pixel_order[3]);
-        info->in_n_textures = 1;
         info->shader_tex_names[0] = "Ytex";
         break;
       }
       case GST_VIDEO_FORMAT_NV12:
       {
-        char val2 = texture_rg ? 'g' : 'a';
+        char val2 =
+            convert->priv->in_tex_types[1] ==
+            GST_VIDEO_GL_TEXTURE_TYPE_RG ? 'g' : 'a';
         info->templ = &templ_NV12_NV21_to_RGB;
         info->frag_body = g_strdup_printf (info->templ->body, 'r', val2,
             pixel_order[0], pixel_order[1], pixel_order[2], pixel_order[3]);
-        info->in_n_textures = 2;
         info->shader_tex_names[0] = "Ytex";
         info->shader_tex_names[1] = "UVtex";
         break;
       }
       case GST_VIDEO_FORMAT_NV21:
       {
-        char val2 = texture_rg ? 'g' : 'a';
+        char val2 =
+            convert->priv->in_tex_types[1] ==
+            GST_VIDEO_GL_TEXTURE_TYPE_RG ? 'g' : 'a';
         info->templ = &templ_NV12_NV21_to_RGB;
         info->frag_body = g_strdup_printf (info->templ->body, val2, 'r',
             pixel_order[0], pixel_order[1], pixel_order[2], pixel_order[3]);
-        info->in_n_textures = 2;
         info->shader_tex_names[0] = "Ytex";
         info->shader_tex_names[1] = "UVtex";
         break;
@@ -1513,7 +1552,6 @@
   const gchar *alpha;
 
   info->frag_prog = NULL;
-  info->in_n_textures = 1;
 
   info->shader_tex_names[0] = "tex";
 
@@ -1609,7 +1647,6 @@
   gchar *pixel_order = _RGB_pixel_order (in_format_str, "rgba");
   gchar *alpha = NULL;
 
-  info->in_n_textures = 1;
   info->out_n_textures = 1;
   info->shader_tex_names[0] = "tex";
 
@@ -1637,16 +1674,7 @@
   GstVideoFormat out_format = GST_VIDEO_INFO_FORMAT (&convert->out_info);
   const gchar *out_format_str = gst_video_format_to_string (out_format);
   gchar *pixel_order = _RGB_pixel_order ("rgba", out_format_str);
-  gboolean texture_rg =
-      gst_gl_context_check_feature (convert->context, "GL_EXT_texture_rg")
-      || gst_gl_context_check_gl_version (convert->context, GST_GL_API_GLES2, 3,
-      0)
-      || gst_gl_context_check_feature (convert->context, "GL_ARB_texture_rg")
-      || gst_gl_context_check_gl_version (convert->context, GST_GL_API_OPENGL3,
-      3, 0);
 
-  info->in_n_textures = 1;
-  info->out_n_textures = 1;
   info->shader_tex_names[0] = "tex";
 
   switch (GST_VIDEO_INFO_FORMAT (&convert->in_info)) {
@@ -1657,7 +1685,9 @@
       break;
     case GST_VIDEO_FORMAT_GRAY16_LE:
     {
-      char val2 = texture_rg ? 'g' : 'a';
+      char val2 =
+          convert->priv->in_tex_types[0] ==
+          GST_VIDEO_GL_TEXTURE_TYPE_RG ? 'g' : 'a';
       info->templ = &templ_COMPOSE;
       info->frag_body = g_strdup_printf (info->templ->body, val2, 'r',
           pixel_order[0], pixel_order[1], pixel_order[2], pixel_order[3]);
@@ -1665,7 +1695,9 @@
     }
     case GST_VIDEO_FORMAT_GRAY16_BE:
     {
-      char val2 = texture_rg ? 'g' : 'a';
+      char val2 =
+          convert->priv->in_tex_types[0] ==
+          GST_VIDEO_GL_TEXTURE_TYPE_RG ? 'g' : 'a';
       info->templ = &templ_COMPOSE;
       info->frag_body = g_strdup_printf (info->templ->body, 'r', val2,
           pixel_order[0], pixel_order[1], pixel_order[2], pixel_order[3]);
@@ -1710,178 +1742,6 @@
   gl->DisableVertexAttribArray (convert->priv->attr_texture);
 }
 
-static gchar *
-_mangle_texture_access (const gchar * str, GstGLTextureTarget from,
-    GstGLTextureTarget to, GstGLAPI gl_api)
-{
-  const gchar *from_str = NULL, *to_str = NULL;
-  gchar *ret, *tmp;
-  gchar *regex_find;
-  GRegex *regex;
-
-  if (from == GST_GL_TEXTURE_TARGET_2D)
-    from_str = "texture2D";
-  if (from == GST_GL_TEXTURE_TARGET_RECTANGLE)
-    from_str = "texture2DRect";
-  if (from == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
-    from_str = "texture2D";
-
-  if (gl_api & GST_GL_API_OPENGL3) {
-    to_str = "texture";
-  } else {
-    if (to == GST_GL_TEXTURE_TARGET_2D)
-      to_str = "texture2D";
-    if (to == GST_GL_TEXTURE_TARGET_RECTANGLE)
-      to_str = "texture2DRect";
-    if (to == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
-      to_str = "texture2D";
-  }
-
-  /* followed by any amount of whitespace then a bracket */
-  regex_find = g_strdup_printf ("%s(?=\\s*\\()", from_str);
-  regex = g_regex_new (regex_find, 0, 0, NULL);
-  tmp = g_regex_replace_literal (regex, str, -1, 0, to_str, 0, NULL);
-  g_free (regex_find);
-  g_regex_unref (regex);
-
-  if (tmp) {
-    ret = tmp;
-  } else {
-    GST_FIXME ("Couldn't mangle texture access successfully from %s to %s",
-        from_str, to_str);
-    ret = g_strdup (str);
-  }
-
-  return ret;
-}
-
-static gchar *
-_mangle_sampler_type (const gchar * str, GstGLTextureTarget from,
-    GstGLTextureTarget to)
-{
-  const gchar *from_str = NULL, *to_str = NULL;
-  gchar *ret, *tmp;
-  gchar *regex_find;
-  GRegex *regex;
-
-  if (from == GST_GL_TEXTURE_TARGET_2D)
-    from_str = "sampler2D";
-  if (from == GST_GL_TEXTURE_TARGET_RECTANGLE)
-    from_str = "sampler2DRect";
-  if (from == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
-    from_str = "samplerExternalOES";
-
-  if (to == GST_GL_TEXTURE_TARGET_2D)
-    to_str = "sampler2D";
-  if (to == GST_GL_TEXTURE_TARGET_RECTANGLE)
-    to_str = "sampler2DRect";
-  if (to == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
-    to_str = "samplerExternalOES";
-
-  /* followed by some whitespace  */
-  regex_find = g_strdup_printf ("%s(?=\\s)", from_str);
-  regex = g_regex_new (regex_find, 0, 0, NULL);
-  tmp = g_regex_replace_literal (regex, str, -1, 0, to_str, 0, NULL);
-  g_free (regex_find);
-  g_regex_unref (regex);
-
-  if (tmp) {
-    ret = tmp;
-  } else {
-    GST_FIXME ("Couldn't mangle sampler type successfully from %s to %s",
-        from_str, to_str);
-    ret = g_strdup (str);
-  }
-
-  return ret;
-}
-
-static gchar *
-_mangle_varying_attribute (const gchar * str, guint shader_type,
-    GstGLAPI gl_api)
-{
-  if (gl_api & GST_GL_API_OPENGL3) {
-    if (shader_type == GL_VERTEX_SHADER) {
-      gchar *tmp, *tmp2;
-      GRegex *regex;
-
-      /* followed by some whitespace  */
-      regex = g_regex_new ("varying(?=\\s)", 0, 0, NULL);
-      tmp = g_regex_replace_literal (regex, str, -1, 0, "out", 0, NULL);
-      g_regex_unref (regex);
-
-      /* followed by some whitespace  */
-      regex = g_regex_new ("attribute(?=\\s)", 0, 0, NULL);
-      tmp2 = g_regex_replace_literal (regex, tmp, -1, 0, "in", 0, NULL);
-      g_regex_unref (regex);
-
-      g_free (tmp);
-      return tmp2;
-    } else if (shader_type == GL_FRAGMENT_SHADER) {
-      gchar *tmp;
-      GRegex *regex;
-
-      /* followed by some whitespace  */
-      regex = g_regex_new ("varying(?=\\s)", 0, 0, NULL);
-      tmp = g_regex_replace_literal (regex, str, -1, 0, "in", 0, NULL);
-      g_regex_unref (regex);
-
-      return tmp;
-    }
-  }
-  return g_strdup (str);
-}
-
-static gchar *
-_mangle_frag_color (const gchar * str)
-{
-  GRegex *regex;
-  gchar *ret;
-
-  regex = g_regex_new ("gl_FragColor", 0, 0, NULL);
-  ret = g_regex_replace_literal (regex, str, -1, 0, "fragColor", 0, NULL);
-  g_regex_unref (regex);
-
-  return ret;
-}
-
-static void
-_mangle_version_profile_from_gl_api (GstGLAPI gl_api, GstGLSLVersion * version,
-    GstGLSLProfile * profile)
-{
-  if (gl_api & GST_GL_API_OPENGL3) {
-    *version = GST_GLSL_VERSION_150;
-    *profile = GST_GLSL_PROFILE_NONE;
-  } else if (gl_api & GST_GL_API_GLES2) {
-    *version = GST_GLSL_VERSION_100;
-    *profile = GST_GLSL_PROFILE_ES;
-  } else if (gl_api & GST_GL_API_OPENGL) {
-    *version = GST_GLSL_VERSION_110;
-    *profile = GST_GLSL_PROFILE_COMPATIBILITY;
-  }
-}
-
-static gchar *
-_mangle_shader (const gchar * str, guint shader_type, GstGLTextureTarget from,
-    GstGLTextureTarget to, GstGLAPI gl_api, GstGLSLVersion * version,
-    GstGLSLProfile * profile)
-{
-  gchar *tmp, *tmp2;
-
-  tmp = _mangle_texture_access (str, from, to, gl_api);
-  tmp2 = _mangle_sampler_type (tmp, from, to);
-  g_free (tmp);
-  tmp = _mangle_varying_attribute (tmp2, shader_type, gl_api);
-  g_free (tmp2);
-  if (shader_type == GL_FRAGMENT_SHADER && gl_api & GST_GL_API_OPENGL3) {
-    tmp2 = _mangle_frag_color (tmp);
-    g_free (tmp);
-    tmp = tmp2;
-  }
-  _mangle_version_profile_from_gl_api (gl_api, version, profile);
-  return tmp;
-}
-
 static GstGLShader *
 _create_shader (GstGLColorConvert * convert)
 {
@@ -1894,16 +1754,14 @@
   gchar *version_str, *tmp, *tmp1;
   const gchar *strings[2];
   GError *error = NULL;
-  GstGLAPI gl_api;
   int i;
 
-  gl_api = gst_gl_context_get_gl_api (convert->context);
-
   ret = gst_gl_shader_new (convert->context);
 
   tmp =
-      _mangle_shader (text_vertex_shader, GL_VERTEX_SHADER, info->templ->target,
-      convert->priv->from_texture_target, gl_api, &version, &profile);
+      _gst_glsl_mangle_shader (text_vertex_shader, GL_VERTEX_SHADER,
+      info->templ->target, convert->priv->from_texture_target, convert->context,
+      &version, &profile);
 
   tmp1 = gst_glsl_version_profile_to_string (version, profile);
   version_str = g_strdup_printf ("#version %s\n", tmp1);
@@ -1941,9 +1799,37 @@
   if (info->templ->uniforms)
     g_string_append (str, info->templ->uniforms);
 
-  if (gl_api & GST_GL_API_OPENGL3) {
-    g_string_append_c (str, '\n');
-    g_string_append (str, "out vec4 fragColor;\n");
+  g_string_append_c (str, '\n');
+
+  /* GL 3.3+ and GL ES 3.x */
+  if ((profile == GST_GLSL_PROFILE_CORE && version >= GST_GLSL_VERSION_330)
+      || (profile == GST_GLSL_PROFILE_ES && version >= GST_GLSL_VERSION_300)) {
+    if (info->out_n_textures > 1) {
+      gint i;
+
+      for (i = 0; i < info->out_n_textures; i++) {
+        g_string_append_printf (str,
+            "layout(location = %d) out vec4 fragColor_%d;\n", i, i);
+      }
+    } else {
+      g_string_append (str, "layout (location = 0) out vec4 fragColor;\n");
+    }
+  } else if (profile == GST_GLSL_PROFILE_CORE
+      && version >= GST_GLSL_VERSION_150) {
+    /* no layout specifiers, use glBindFragDataLocation instead */
+    if (info->out_n_textures > 1) {
+      gint i;
+
+      for (i = 0; i < info->out_n_textures; i++) {
+        gchar *var_name = g_strdup_printf ("fragColor_%d", i);
+        g_string_append_printf (str, "out vec4 %s;\n", var_name);
+        gst_gl_shader_bind_frag_data_location (ret, i, var_name);
+        g_free (var_name);
+      }
+    } else {
+      g_string_append (str, "out vec4 fragColor;\n");
+      gst_gl_shader_bind_frag_data_location (ret, 0, "fragColor");
+    }
   }
 
   for (i = 0; i < MAX_FUNCTIONS; i++) {
@@ -1955,7 +1841,19 @@
     g_string_append_c (str, '\n');
   }
 
-  g_string_append (str, "\nvarying vec2 v_texcoord;\nvoid main (void) {\n");
+  {
+    const gchar *varying = NULL;
+
+    if ((profile == GST_GLSL_PROFILE_ES && version >= GST_GLSL_VERSION_300)
+        || (profile == GST_GLSL_PROFILE_CORE
+            && version >= GST_GLSL_VERSION_150)) {
+      varying = "in";
+    } else {
+      varying = "varying";
+    }
+    g_string_append_printf (str, "\n%s vec2 v_texcoord;\nvoid main (void) {\n",
+        varying);
+  }
   if (info->frag_body) {
     g_string_append (str, "vec2 texcoord;\n");
     if (convert->priv->from_texture_target == GST_GL_TEXTURE_TARGET_RECTANGLE
@@ -1969,8 +1867,8 @@
   }
   g_string_append (str, "\n}");
   tmp = g_string_free (str, FALSE);
-  info->frag_prog = _mangle_shader (tmp, GL_FRAGMENT_SHADER,
-      info->templ->target, convert->priv->from_texture_target, gl_api,
+  info->frag_prog = _gst_glsl_mangle_shader (tmp, GL_FRAGMENT_SHADER,
+      info->templ->target, convert->priv->from_texture_target, convert->context,
       &version, &profile);
   g_free (tmp);
 
@@ -2026,8 +1924,8 @@
       gst_video_format_to_string (GST_VIDEO_INFO_FORMAT (&convert->out_info)));
 
   if (!gl->CreateProgramObject && !gl->CreateProgram) {
-    gst_gl_context_set_error (convert->context,
-        "Cannot perform color conversion without OpenGL shaders");
+    GST_ERROR_OBJECT (convert, "Cannot perform color conversion without "
+        "OpenGL shaders");
     goto error;
   }
 
@@ -2071,7 +1969,7 @@
   }
 
   /* Requires reading from a RG/LA framebuffer... */
-  if (USING_GLES2 (convert->context) &&
+  if (USING_GLES2 (convert->context) && !USING_GLES3 (convert->context) &&
       (GST_VIDEO_INFO_FORMAT (&convert->out_info) == GST_VIDEO_FORMAT_YUY2 ||
           GST_VIDEO_INFO_FORMAT (&convert->out_info) ==
           GST_VIDEO_FORMAT_UYVY)) {
@@ -2129,7 +2027,7 @@
 
   gst_gl_context_clear_shader (convert->context);
 
-  if (!_init_convert_fbo (convert)) {
+  if (convert->fbo == NULL && !_init_convert_fbo (convert)) {
     goto error;
   }
 
@@ -2165,8 +2063,7 @@
   return TRUE;
 
 unhandled_format:
-  gst_gl_context_set_error (convert->context,
-      "Don't know how to convert from %s to %s",
+  GST_ERROR_OBJECT (convert, "Don't know how to convert from %s to %s",
       gst_video_format_to_string (GST_VIDEO_INFO_FORMAT (&convert->in_info)),
       gst_video_format_to_string (GST_VIDEO_INFO_FORMAT (&convert->out_info)));
 
@@ -2175,8 +2072,7 @@
 
 incompatible_api:
   {
-    gst_gl_context_set_error (convert->context,
-        "Converting from %s to %s requires "
+    GST_ERROR_OBJECT (convert, "Converting from %s to %s requires "
         "functionality that the current OpenGL setup does not support",
         gst_video_format_to_string (GST_VIDEO_INFO_FORMAT (&convert->in_info)),
         gst_video_format_to_string (GST_VIDEO_INFO_FORMAT
@@ -2185,87 +2081,20 @@
   }
 }
 
-
 /* called by _init_convert (in the gl thread) */
 static gboolean
 _init_convert_fbo (GstGLColorConvert * convert)
 {
-  GstGLFuncs *gl;
   guint out_width, out_height;
-  GLuint fake_texture = 0;      /* a FBO must hava texture to init */
-  GLenum internal_format;
-
-  gl = convert->context->gl_vtable;
 
   out_width = GST_VIDEO_INFO_WIDTH (&convert->out_info);
   out_height = GST_VIDEO_INFO_HEIGHT (&convert->out_info);
 
-  if (!gl->GenFramebuffers) {
-    /* turn off the pipeline because Frame buffer object is a not present */
-    gst_gl_context_set_error (convert->context,
-        "Context, EXT_framebuffer_object supported: no");
-    return FALSE;
-  }
+  convert->fbo =
+      gst_gl_framebuffer_new_with_default_depth (convert->context, out_width,
+      out_height);
 
-  GST_INFO ("Context, EXT_framebuffer_object supported: yes");
-
-  /* setup FBO */
-  gl->GenFramebuffers (1, &convert->fbo);
-  gl->BindFramebuffer (GL_FRAMEBUFFER, convert->fbo);
-
-  /* setup the render buffer for depth */
-  gl->GenRenderbuffers (1, &convert->depth_buffer);
-  gl->BindRenderbuffer (GL_RENDERBUFFER, convert->depth_buffer);
-  if (USING_OPENGL (convert->context) || USING_OPENGL3 (convert->context)) {
-    gl->RenderbufferStorage (GL_RENDERBUFFER, GL_DEPTH24_STENCIL8,
-        out_width, out_height);
-  }
-  if (USING_GLES2 (convert->context)) {
-    gl->RenderbufferStorage (GL_RENDERBUFFER, GL_DEPTH_COMPONENT16,
-        out_width, out_height);
-  }
-
-  /* a fake texture is attached to the convert FBO (cannot init without it) */
-  gl->GenTextures (1, &fake_texture);
-  gl->BindTexture (GL_TEXTURE_2D, fake_texture);
-  internal_format =
-      gst_gl_sized_gl_format_from_gl_format_type (convert->context, GL_RGBA,
-      GL_UNSIGNED_BYTE);
-  gl->TexImage2D (GL_TEXTURE_2D, 0, internal_format, out_width, out_height, 0,
-      GL_RGBA, GL_UNSIGNED_BYTE, NULL);
-  gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-  gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-  gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-  gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-
-  /* attach the texture to the FBO to renderer to */
-  gl->FramebufferTexture2D (GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
-      GL_TEXTURE_2D, fake_texture, 0);
-
-  /* attach the depth render buffer to the FBO */
-  gl->FramebufferRenderbuffer (GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
-      GL_RENDERBUFFER, convert->depth_buffer);
-
-  if (USING_OPENGL (convert->context)) {
-    gl->FramebufferRenderbuffer (GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT,
-        GL_RENDERBUFFER, convert->depth_buffer);
-  }
-
-  if (!gst_gl_context_check_framebuffer_status (convert->context)) {
-    gst_gl_context_set_error (convert->context,
-        "GL framebuffer status incomplete");
-
-    gl->DeleteTextures (1, &fake_texture);
-
-    return FALSE;
-  }
-
-  /* unbind the FBO */
-  gl->BindFramebuffer (GL_FRAMEBUFFER, 0);
-
-  gl->DeleteTextures (1, &fake_texture);
-
-  return TRUE;
+  return convert->fbo != NULL;
 }
 
 static gboolean
@@ -2336,7 +2165,8 @@
         allocator = gst_allocator_find (GST_GL_MEMORY_ALLOCATOR_NAME);
         base_mem_allocator = GST_GL_BASE_MEMORY_ALLOCATOR (allocator);
         params = gst_gl_video_allocation_params_new (context, NULL, &temp_info,
-            0, NULL, convert->priv->to_texture_target);
+            0, NULL, convert->priv->to_texture_target,
+            GST_VIDEO_GL_TEXTURE_TYPE_RGBA);
 
         convert->priv->out_tex[j] =
             (GstGLMemory *) gst_gl_base_memory_alloc (base_mem_allocator,
@@ -2387,15 +2217,13 @@
 
       if (!gst_memory_map ((GstMemory *) convert->priv->out_tex[j], &from_info,
               GST_MAP_READ | GST_MAP_GL)) {
-        gst_gl_context_set_error (convert->context, "Failed to map "
-            "intermediate memory");
+        GST_ERROR_OBJECT (convert, "Failed to map intermediate memory");
         res = FALSE;
         continue;
       }
       if (!gst_memory_map ((GstMemory *) out_tex, &to_info,
               GST_MAP_WRITE | GST_MAP_GL)) {
-        gst_gl_context_set_error (convert->context, "Failed to map "
-            "intermediate memory");
+        GST_ERROR_OBJECT (convert, "Failed to map intermediate memory");
         res = FALSE;
         continue;
       }
@@ -2432,6 +2260,7 @@
 _do_convert (GstGLContext * context, GstGLColorConvert * convert)
 {
   GstVideoInfo *in_info = &convert->in_info;
+  struct ConvertInfo *c_info = &convert->priv->convert_info;
   gboolean res = TRUE;
   gint views, v;
   GstVideoOverlayCompositionMeta *composition_meta;
@@ -2440,6 +2269,54 @@
 
   convert->outbuf = NULL;
 
+  if (GST_VIDEO_INFO_MULTIVIEW_MODE (in_info) ==
+      GST_VIDEO_MULTIVIEW_MODE_SEPARATED)
+    views = GST_VIDEO_INFO_VIEWS (in_info);
+  else
+    views = 1;
+
+  c_info->in_n_textures =
+      _get_n_textures (GST_VIDEO_INFO_FORMAT (&convert->in_info));
+  c_info->out_n_textures =
+      _get_n_textures (GST_VIDEO_INFO_FORMAT (&convert->out_info));
+
+  {
+    gboolean tex_type_change = FALSE;
+    guint i, v;
+
+    for (v = 0; v < views; v++) {
+      for (i = 0; i < c_info->in_n_textures; i++) {
+        guint j = v * c_info->in_n_textures + i;
+        GstGLMemory *in_tex =
+            (GstGLMemory *) gst_buffer_peek_memory (convert->inbuf, j);
+        if (!gst_is_gl_memory ((GstMemory *) in_tex)) {
+          GST_ERROR_OBJECT (convert, "input must be GstGLMemory");
+          convert->priv->result = FALSE;
+          return;
+        }
+
+        if (j >= GST_VIDEO_MAX_PLANES)
+          /* our arrays aren't that big */
+          g_assert_not_reached ();
+
+        if (v > 0 && in_tex->tex_type != convert->priv->in_tex_types[i]) {
+          GST_ERROR_OBJECT (convert, "Cannot convert textures with "
+              "different types");
+          convert->priv->result = FALSE;
+          return;
+        }
+
+        if (convert->priv->in_tex_types[j] != in_tex->tex_type)
+          tex_type_change = TRUE;
+
+        convert->priv->in_tex_types[j] = in_tex->tex_type;
+      }
+    }
+
+    if (tex_type_change)
+      gst_gl_color_convert_reset_shader (convert);
+  }
+
   if (!_init_convert (convert)) {
     convert->priv->result = FALSE;
     return;
@@ -2488,12 +2365,6 @@
     return;
   }
 
-  if (GST_VIDEO_INFO_MULTIVIEW_MODE (in_info) ==
-      GST_VIDEO_MULTIVIEW_MODE_SEPARATED)
-    views = GST_VIDEO_INFO_VIEWS (in_info);
-  else
-    views = 1;
-
   gst_gl_insert_debug_marker (context, "%s converting from %s to %s",
       GST_OBJECT_NAME (convert),
       gst_video_format_to_string (GST_VIDEO_INFO_FORMAT (in_info)),
@@ -2545,21 +2416,13 @@
 
   gl = context->gl_vtable;
 
-  out_width = GST_VIDEO_INFO_WIDTH (&convert->out_info);
-  out_height = GST_VIDEO_INFO_HEIGHT (&convert->out_info);
-
-  gl->BindFramebuffer (GL_FRAMEBUFFER, convert->fbo);
+  gst_gl_framebuffer_bind (convert->fbo);
 
   /* attach the texture to the FBO to renderer to */
   for (i = 0; i < c_info->out_n_textures; i++) {
-    guint gl_target =
-        gst_gl_texture_target_to_gl (convert->priv->to_texture_target);
+    GstGLBaseMemory *tex = (GstGLBaseMemory *) convert->priv->out_tex[i];
 
-    /* needed? */
-    gl->BindTexture (gl_target, convert->priv->out_tex[i]->tex_id);
-
-    gl->FramebufferTexture2D (GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + i,
-        gl_target, convert->priv->out_tex[i]->tex_id, 0);
+    gst_gl_framebuffer_attach (convert->fbo, GL_COLOR_ATTACHMENT0 + i, tex);
   }
 
   if (gl->DrawBuffers)
@@ -2569,6 +2432,8 @@
 
   gl->GetIntegerv (GL_VIEWPORT, viewport_dim);
 
+  gst_gl_framebuffer_get_effective_dimensions (convert->fbo, &out_width,
+      &out_height);
   gl->Viewport (0, 0, out_width, out_height);
 
   gst_gl_shader_use (convert->shader);
@@ -2614,7 +2479,7 @@
 
   gst_gl_context_check_framebuffer_status (context);
 
-  gl->BindFramebuffer (GL_FRAMEBUFFER, 0);
+  gst_gl_context_clear_framebuffer (context);
 
   return TRUE;
 }
diff --git a/gst-libs/gst/gl/gstglcolorconvert.h b/gst-libs/gst/gl/gstglcolorconvert.h
index 5980cfa..d978e7e 100644
--- a/gst-libs/gst/gl/gstglcolorconvert.h
+++ b/gst-libs/gst/gl/gstglcolorconvert.h
@@ -59,8 +59,7 @@
   GstBuffer *    outbuf;
 
   /* used for the conversion */
-  GLuint           fbo;
-  GLuint           depth_buffer;
+  GstGLFramebuffer *fbo;
   GstGLShader     *shader;
 
   /* <private> */
@@ -77,6 +76,9 @@
 struct _GstGLColorConvertClass
 {
   GstObjectClass object_class;
+
+  /* <private> */
+  gpointer _padding[GST_PADDING];
 };
 
 /**
diff --git a/gst-libs/gst/gl/gstglcontext.c b/gst-libs/gst/gl/gstglcontext.c
index 59bcf4d..2bc0a78 100644
--- a/gst-libs/gst/gl/gstglcontext.c
+++ b/gst-libs/gst/gl/gstglcontext.c
@@ -132,10 +132,6 @@
   return NULL;
 }
 
-#if GST_GL_HAVE_GLES3
-#error "Add module loading support for GLES3"
-#endif
-
 /* Context sharedness is tracked by a refcounted pointer stored in each context
  * object to track complex creation/deletion scenarios.  As a result,
  * sharedness can only be successfully validated between two GstGLContext's
@@ -541,9 +537,9 @@
 gst_gl_context_get_current_gl_api (GstGLPlatform platform, guint * major,
     guint * minor)
 {
-  const GLubyte *(GSTGLAPI *GetString) (GLenum name);
+  const GLubyte *(GSTGLAPI * GetString) (GLenum name);
 #if GST_GL_HAVE_OPENGL
-  void (GSTGLAPI *GetIntegerv) (GLenum name, GLuint * n);
+  void (GSTGLAPI * GetIntegerv) (GLenum name, GLuint * n);
 #endif
   const gchar *version;
   gint maj, min, n;
@@ -646,7 +642,14 @@
       gst_gl_window_quit (context->window);
 
       GST_INFO_OBJECT (context, "joining gl thread");
-      g_thread_join (context->priv->gl_thread);
+      g_mutex_lock (&context->priv->render_lock);
+      if (context->priv->alive) {
+        GThread *t = context->priv->gl_thread;
+        g_mutex_unlock (&context->priv->render_lock);
+        g_thread_join (t);
+      } else {
+        g_mutex_unlock (&context->priv->render_lock);
+      }
       GST_INFO_OBJECT (context, "gl thread joined");
       context->priv->gl_thread = NULL;
     }
@@ -1517,7 +1520,7 @@
 gst_gl_context_get_gl_version (GstGLContext * context, gint * maj, gint * min)
 {
   g_return_if_fail (GST_IS_GL_CONTEXT (context));
-  g_return_if_fail (maj != NULL && min != NULL);
+  g_return_if_fail (!(maj == NULL && min == NULL));
 
   if (maj)
     *maj = context->priv->gl_major;
diff --git a/gst-libs/gst/gl/gstglcontext.h b/gst-libs/gst/gl/gstglcontext.h
index 5cbc8ad..83e159d 100644
--- a/gst-libs/gst/gl/gstglcontext.h
+++ b/gst-libs/gst/gl/gstglcontext.h
@@ -69,7 +69,6 @@
  * Opaque #GstGLContext object
  */
 struct _GstGLContext {
-  /*< private >*/
   GstObject parent;
 
   GstGLDisplay *display;
@@ -77,9 +76,10 @@
 
   GstGLFuncs *gl_vtable;
 
-  gpointer _reserved[GST_PADDING];
-
+  /*< private >*/
   GstGLContextPrivate *priv;
+
+  gpointer _reserved[GST_PADDING];
 };
 
 /**
diff --git a/gst-libs/gst/gl/gstgldebug.h b/gst-libs/gst/gl/gstgldebug.h
index f568a2b..f131428 100644
--- a/gst-libs/gst/gl/gstgldebug.h
+++ b/gst-libs/gst/gl/gstgldebug.h
@@ -51,6 +51,8 @@
   GstGLAsyncDebugLogGetMessage callback;
   gpointer          user_data;
   GDestroyNotify    notify;
+
+  gpointer _padding[GST_PADDING];
 };
 
 GstGLAsyncDebug *   gst_gl_async_debug_new                      (void);
diff --git a/gst-libs/gst/gl/gstgldisplay.c b/gst-libs/gst/gl/gstgldisplay.c
index 5cae2f4..3ffc906 100644
--- a/gst-libs/gst/gl/gstgldisplay.c
+++ b/gst-libs/gst/gl/gstgldisplay.c
@@ -67,7 +67,8 @@
 #endif
 #if GST_GL_HAVE_PLATFORM_EGL
 #include <gst/gl/egl/gstgldisplay_egl.h>
-#include <gst/gl/egl/gsteglimagememory.h>
+#include <gst/gl/egl/gsteglimage.h>
+#include <gst/gl/egl/gstglmemoryegl.h>
 #endif
 
 GST_DEBUG_CATEGORY_STATIC (gst_context);
@@ -141,9 +142,10 @@
 
   gst_gl_buffer_init_once ();
   gst_gl_memory_pbo_init_once ();
+  gst_gl_renderbuffer_init_once ();
 
 #if GST_GL_HAVE_PLATFORM_EGL
-  gst_egl_image_memory_init ();
+  gst_gl_memory_egl_init_once ();
 #endif
 }
 
@@ -211,8 +213,7 @@
     display = GST_GL_DISPLAY (gst_gl_display_egl_new ());
 #endif
   if (!display) {
-    /* subclass returned a NULL window */
-    GST_WARNING ("Could not create display. user specified %s "
+    GST_INFO ("Could not create platform/winsys display. user specified %s "
         "(platform: %s), creating dummy",
         GST_STR_NULL (user_choice), GST_STR_NULL (platform_choice));
 
@@ -432,13 +433,17 @@
     if (!context) {
       /* remove dead contexts */
       g_weak_ref_clear (l->data);
+      g_free (l->data);
       display->priv->contexts = g_list_delete_link (display->priv->contexts, l);
       l = prev ? prev->next : display->priv->contexts;
       continue;
     }
 
-    if (thread == NULL)
+    if (thread == NULL) {
+      GST_DEBUG_OBJECT (display, "Returning GL context %" GST_PTR_FORMAT " for "
+          "NULL thread", context);
       return context;
+    }
 
     context_thread = gst_gl_context_get_thread (context);
     if (thread != context_thread) {
@@ -451,9 +456,13 @@
 
     if (context_thread)
       g_thread_unref (context_thread);
+
+    GST_DEBUG_OBJECT (display, "Returning GL context %" GST_PTR_FORMAT " for "
+        "thread %p", context, thread);
     return context;
   }
 
+  GST_DEBUG_OBJECT (display, "No GL context for thread %p", thread);
   return NULL;
 }
 
@@ -549,11 +558,15 @@
 
     /* adding the same context is a no-op */
     if (context == collision) {
+      GST_LOG_OBJECT (display, "Attempting to add the same GL context %"
+          GST_PTR_FORMAT ". Ignoring", context);
       ret = TRUE;
       goto out;
     }
 
     if (_check_collision (context, collision)) {
+      GST_DEBUG_OBJECT (display, "Collision detected adding GL context "
+          "%" GST_PTR_FORMAT, context);
       ret = FALSE;
       goto out;
     }
@@ -562,6 +575,7 @@
   ref = g_new0 (GWeakRef, 1);
   g_weak_ref_init (ref, context);
 
+  GST_DEBUG_OBJECT (display, "Adding GL context %" GST_PTR_FORMAT, context);
   display->priv->contexts = g_list_prepend (display->priv->contexts, ref);
 
 out:
diff --git a/gst-libs/gst/gl/gstgldisplay.h b/gst-libs/gst/gl/gstgldisplay.h
index 7f49a44..bc00b68 100644
--- a/gst-libs/gst/gl/gstgldisplay.h
+++ b/gst-libs/gst/gl/gstgldisplay.h
@@ -85,6 +85,9 @@
   GstObjectClass object_class;
 
   guintptr (*get_handle)      (GstGLDisplay * display);
+
+  /* <private> */
+  gpointer _padding[GST_PADDING];
 };
 
 GstGLDisplay *gst_gl_display_new (void);
diff --git a/gst-libs/gst/gl/gstglfeature.h b/gst-libs/gst/gl/gstglfeature.h
index fdc3137..f1ae142 100644
--- a/gst-libs/gst/gl/gstglfeature.h
+++ b/gst-libs/gst/gl/gstglfeature.h
@@ -40,8 +40,8 @@
  *
  */
 
-#ifndef __COGL_FEATURE_PRIVATE_H
-#define __COGL_FEATURE_PRIVATE_H
+#ifndef __GST_GL_FEATURE_H__
+#define __GST_GL_FEATURE_H__
 
 #include <gst/gst.h>
 
@@ -113,4 +113,4 @@
 
 G_END_DECLS
 
-#endif /* __COGL_FEATURE_PRIVATE_H */
+#endif /* __GST_GL_FEATURE_H__ */
diff --git a/gst-libs/gst/gl/gstglfilter.c b/gst-libs/gst/gl/gstglfilter.c
index d25bb72..b0693c1 100644
--- a/gst-libs/gst/gl/gstglfilter.c
+++ b/gst-libs/gst/gl/gstglfilter.c
@@ -28,10 +28,6 @@
 
 #include "gstglfilter.h"
 
-#if GST_GL_HAVE_PLATFORM_EGL
-#include "egl/gsteglimagememory.h"
-#endif
-
 #define GST_CAT_DEFAULT gst_gl_filter_debug
 GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
 
@@ -82,7 +78,8 @@
 #define gst_gl_filter_parent_class parent_class
 G_DEFINE_TYPE_WITH_CODE (GstGLFilter, gst_gl_filter, GST_TYPE_GL_BASE_FILTER,
     GST_DEBUG_CATEGORY_INIT (gst_gl_filter_debug, "glfilter", 0,
-        "glfilter element"););
+        "glfilter element");
+    );
 
 static void gst_gl_filter_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec);
@@ -142,10 +139,10 @@
 
   klass->transform_internal_caps = default_transform_internal_caps;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_gl_filter_src_pad_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_gl_filter_sink_pad_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_gl_filter_src_pad_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_gl_filter_sink_pad_template);
 }
 
 static void
@@ -231,12 +228,11 @@
     filter->vbo_indices = 0;
   }
 
-  if (filter->fbo != 0) {
-    gst_gl_context_del_fbo (context, filter->fbo, filter->depthbuffer);
+  if (filter->fbo != NULL) {
+    gst_object_unref (filter->fbo);
+    filter->fbo = NULL;
   }
 
-  filter->fbo = 0;
-  filter->depthbuffer = 0;
   filter->default_shader = NULL;
   filter->draw_attr_position_loc = -1;
   filter->draw_attr_texture_loc = -1;
@@ -694,14 +690,12 @@
   out_width = GST_VIDEO_INFO_WIDTH (&filter->out_info);
   out_height = GST_VIDEO_INFO_HEIGHT (&filter->out_info);
 
-  if (filter->fbo) {
-    gst_gl_context_del_fbo (context, filter->fbo, filter->depthbuffer);
-    filter->fbo = 0;
-    filter->depthbuffer = 0;
-  }
-  //blocking call, generate a FBO
-  if (!gst_gl_context_gen_fbo (context, out_width, out_height,
-          &filter->fbo, &filter->depthbuffer))
+  if (filter->fbo)
+    gst_object_unref (filter->fbo);
+
+  if (!(filter->fbo =
+          gst_gl_framebuffer_new_with_default_depth (context, out_width,
+              out_height)))
     goto context_error;
 
   if (filter_class->init_fbo) {
@@ -908,7 +902,7 @@
     GstBuffer * outbuf)
 {
   GstGLFilterClass *filter_class;
-  guint in_tex, out_tex;
+  GstMemory *in_tex, *out_tex;
   GstVideoFrame gl_frame, out_frame;
   gboolean ret;
 
@@ -920,7 +914,12 @@
     goto inbuf_error;
   }
 
-  in_tex = *(guint *) gl_frame.data[0];
+  in_tex = gl_frame.map[0].memory;
+  if (!gst_is_gl_memory (in_tex)) {
+    ret = FALSE;
+    GST_ERROR_OBJECT (filter, "Input memory must be GstGLMemory");
+    goto inbuf_error;
+  }
 
   if (!gst_video_frame_map (&out_frame, &filter->out_info, outbuf,
           GST_MAP_WRITE | GST_MAP_GL)) {
@@ -928,13 +927,17 @@
     goto unmap_out_error;
   }
 
-  out_tex = *(guint *) out_frame.data[0];
+  out_tex = out_frame.map[0].memory;
+  g_return_val_if_fail (gst_is_gl_memory (out_tex), FALSE);
 
-  GST_DEBUG ("calling filter_texture with textures in:%i out:%i", in_tex,
-      out_tex);
+  GST_DEBUG ("calling filter_texture with textures in:%i out:%i",
+      GST_GL_MEMORY_CAST (in_tex)->tex_id,
+      GST_GL_MEMORY_CAST (out_tex)->tex_id);
 
   g_assert (filter_class->filter_texture);
-  ret = filter_class->filter_texture (filter, in_tex, out_tex);
+
+  ret = filter_class->filter_texture (filter, GST_GL_MEMORY_CAST (in_tex),
+      GST_GL_MEMORY_CAST (out_tex));
 
   gst_video_frame_unmap (&out_frame);
 unmap_out_error:
@@ -945,10 +948,19 @@
 }
 
 static void
-_debug_marker (GstGLContext * context, GstGLFilter * filter)
+_filter_gl (GstGLContext * context, GstGLFilter * filter)
 {
+  GstGLFilterClass *filter_class = GST_GL_FILTER_GET_CLASS (filter);
+
   gst_gl_insert_debug_marker (context,
       "processing in element %s", GST_OBJECT_NAME (filter));
+
+  if (filter_class->filter)
+    filter->gl_result =
+        filter_class->filter (filter, filter->inbuf, filter->outbuf);
+  else
+    filter->gl_result =
+        gst_gl_filter_filter_texture (filter, filter->inbuf, filter->outbuf);
 }
 
 static GstFlowReturn
@@ -971,12 +983,11 @@
   if (in_sync_meta)
     gst_gl_sync_meta_wait (in_sync_meta, context);
 
-  gst_gl_context_thread_add (context, (GstGLContextThreadFunc) _debug_marker,
+  filter->inbuf = inbuf;
+  filter->outbuf = outbuf;
+  gst_gl_context_thread_add (context, (GstGLContextThreadFunc) _filter_gl,
       filter);
-  if (filter_class->filter)
-    ret = filter_class->filter (filter, inbuf, outbuf);
-  else
-    ret = gst_gl_filter_filter_texture (filter, inbuf, outbuf);
+  ret = filter->gl_result;
 
   out_sync_meta = gst_buffer_get_gl_sync_meta (outbuf);
   if (out_sync_meta)
@@ -985,66 +996,46 @@
   return ret ? GST_FLOW_OK : GST_FLOW_ERROR;
 }
 
-struct glcb2
+struct glcb
 {
-  GLCB func;
+  GstGLFilter *filter;
+  GstGLFilterRenderFunc func;
+  GstGLMemory *in_tex;
   gpointer data;
-  guint texture;
-  guint width;
-  guint height;
 };
 
-/* convenience functions to simplify filter development */
-static void
-_glcb2 (gpointer data)
+static gboolean
+_glcb (gpointer data)
 {
-  struct glcb2 *cb = data;
+  struct glcb *cb = data;
 
-  cb->func (cb->width, cb->height, cb->texture, cb->data);
+  return cb->func (cb->filter, cb->in_tex, cb->data);
 }
 
 /**
  * gst_gl_filter_render_to_target:
  * @filter: a #GstGLFilter
- * @resize: whether to automatically resize the texture between the input size
- *          and the output size
  * @input: the input texture
- * @target: the output texture
+ * @output: the output texture
  * @func: the function to transform @input into @output. called with @data
  * @data: the data associated with @func
  *
- * Transforms @input into @output using @func on through FBO.  @resize should
- * only ever be %TRUE whenever @input is the input texture of @filter.
+ * Transforms @input into @output using @func on through FBO.
+ *
+ * Returns: the return value of @func
  */
-void
-gst_gl_filter_render_to_target (GstGLFilter * filter, gboolean resize,
-    GLuint input, GLuint target, GLCB func, gpointer data)
+gboolean
+gst_gl_filter_render_to_target (GstGLFilter * filter, GstGLMemory * input,
+    GstGLMemory * output, GstGLFilterRenderFunc func, gpointer data)
 {
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  guint in_width, in_height, out_width, out_height;
-  struct glcb2 cb;
+  struct glcb cb;
 
-  out_width = GST_VIDEO_INFO_WIDTH (&filter->out_info);
-  out_height = GST_VIDEO_INFO_HEIGHT (&filter->out_info);
-  if (resize) {
-    in_width = GST_VIDEO_INFO_WIDTH (&filter->in_info);
-    in_height = GST_VIDEO_INFO_HEIGHT (&filter->in_info);
-  } else {
-    in_width = out_width;
-    in_height = out_height;
-  }
-
-  GST_LOG ("rendering to target. in %u, %ux%u out %u, %ux%u", input, in_width,
-      in_height, target, out_width, out_height);
-
+  cb.filter = filter;
   cb.func = func;
+  cb.in_tex = input;
   cb.data = data;
-  cb.texture = input;
-  cb.width = in_width;
-  cb.height = in_height;
 
-  gst_gl_context_use_fbo_v2 (context, out_width, out_height,
-      filter->fbo, filter->depthbuffer, target, _glcb2, &cb);
+  return gst_gl_framebuffer_draw_to_texture (filter->fbo, output, _glcb, &cb);
 }
 
 static void
@@ -1069,10 +1060,10 @@
   filter->valid_attributes = TRUE;
 }
 
-static void
-_draw_with_shader_cb (gint width, gint height, guint texture, gpointer stuff)
+static gboolean
+_draw_with_shader_cb (GstGLFilter * filter, GstGLMemory * in_tex,
+    gpointer unused)
 {
-  GstGLFilter *filter = GST_GL_FILTER (stuff);
   GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
   GstGLFuncs *gl = context->gl_vtable;
 
@@ -1087,26 +1078,27 @@
   gst_gl_shader_use (filter->default_shader);
 
   gl->ActiveTexture (GL_TEXTURE1);
-  gl->BindTexture (GL_TEXTURE_2D, texture);
+  gl->BindTexture (GL_TEXTURE_2D, gst_gl_memory_get_texture_id (in_tex));
 
   gst_gl_shader_set_uniform_1i (filter->default_shader, "tex", 1);
-  gst_gl_shader_set_uniform_1f (filter->default_shader, "width", width);
-  gst_gl_shader_set_uniform_1f (filter->default_shader, "height", height);
+  gst_gl_shader_set_uniform_1f (filter->default_shader, "width",
+      GST_VIDEO_INFO_WIDTH (&filter->out_info));
+  gst_gl_shader_set_uniform_1f (filter->default_shader, "height",
+      GST_VIDEO_INFO_HEIGHT (&filter->out_info));
 
-  gst_gl_filter_draw_texture (filter, texture, width, height);
+  gst_gl_filter_draw_fullscreen_quad (filter);
+
+  return TRUE;
 }
 
 /**
  * gst_gl_filter_render_to_target_with_shader:
  * @filter: a #GstGLFilter
- * @resize: whether to automatically resize the texture between the input size
- *          and the output size
  * @input: the input texture
- * @target: the output texture
+ * @output: the output texture
  * @shader: the shader to use.
  *
- * Transforms @input into @output using @shader on FBO.  @resize should
- * only ever be %TRUE whenever @input is the input texture of @filter.
+ * Transforms @input into @output using @shader with a FBO.
  *
  * See also: gst_gl_filter_render_to_target()
  */
@@ -1114,14 +1106,14 @@
  * the shader, render input to a quad */
 void
 gst_gl_filter_render_to_target_with_shader (GstGLFilter * filter,
-    gboolean resize, GLuint input, GLuint target, GstGLShader * shader)
+    GstGLMemory * input, GstGLMemory * output, GstGLShader * shader)
 {
   if (filter->default_shader != shader)
     filter->valid_attributes = FALSE;
   filter->default_shader = shader;
 
-  gst_gl_filter_render_to_target (filter, resize, input, target,
-      _draw_with_shader_cb, filter);
+  gst_gl_filter_render_to_target (filter, input, output, _draw_with_shader_cb,
+      NULL);
 }
 
 /* *INDENT-OFF* */
@@ -1172,23 +1164,20 @@
 }
 
 /**
- * gst_gl_filter_draw_texture:
+ * gst_gl_filter_draw_fullscreen_quad:
  * @filter: a #GstGLFilter
- * @texture: the texture to draw
- * @width: width of @texture
- * @height: height of texture
  *
- * Draws @texture into the OpenGL scene at the specified @width and @height.
+ * Render a fullscreen quad using the current GL state.  The only GL state this 
+ * modifies is the necessary vertex/index buffers and, if necessary, a
+ * Vertex Array Object for drawing a fullscreen quad.  Framebuffer state,
+ * any shaders, viewport state, etc must be setup by the caller.
  */
 void
-gst_gl_filter_draw_texture (GstGLFilter * filter, GLuint texture,
-    guint width, guint height)
+gst_gl_filter_draw_fullscreen_quad (GstGLFilter * filter)
 {
   GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
   GstGLFuncs *gl = context->gl_vtable;
 
-  GST_DEBUG ("drawing texture:%u dimensions:%ux%u", texture, width, height);
-
   {
     if (!filter->vertex_buffer) {
       if (gl->GenVertexArrays) {
diff --git a/gst-libs/gst/gl/gstglfilter.h b/gst-libs/gst/gl/gstglfilter.h
index a818bab..cdebe57 100644
--- a/gst-libs/gst/gl/gstglfilter.h
+++ b/gst-libs/gst/gl/gstglfilter.h
@@ -38,6 +38,8 @@
 #define GST_IS_GL_FILTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass) ,GST_TYPE_GL_FILTER))
 #define GST_GL_FILTER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj) ,GST_TYPE_GL_FILTER,GstGLFilterClass))
 
+typedef gboolean (*GstGLFilterRenderFunc) (GstGLFilter * filter, GstGLMemory * in_tex, gpointer user_data);
+
 /**
  * GstGLFilter:
  * @base_transform: parent #GstBaseTransform
@@ -63,12 +65,13 @@
 
   GstCaps           *out_caps;
 
-  /* <private> */
-  GLuint             fbo;
-  GLuint             depthbuffer;
+  /* <protected> */
+  GstGLFramebuffer  *fbo;
 
-  GLuint             in_tex_id;
-  GLuint             out_tex_id;
+  /* <private> */
+  gboolean           gl_result;
+  GstBuffer         *inbuf;
+  GstBuffer         *outbuf;
 
   GstGLShader       *default_shader;
   gboolean           valid_attributes;
@@ -78,6 +81,8 @@
   GLuint             vertex_buffer;
   GLint              draw_attr_position_loc;
   GLint              draw_attr_texture_loc;
+
+  gpointer          _padding[GST_PADDING];
 };
 
 /**
@@ -102,7 +107,7 @@
 
   gboolean (*set_caps)          (GstGLFilter* filter, GstCaps* incaps, GstCaps* outcaps);
   gboolean (*filter)            (GstGLFilter *filter, GstBuffer *inbuf, GstBuffer *outbuf);
-  gboolean (*filter_texture)    (GstGLFilter *filter, guint in_tex, guint out_tex);
+  gboolean (*filter_texture)    (GstGLFilter *filter, GstGLMemory *in_tex, GstGLMemory *out_tex);
   gboolean (*init_fbo)          (GstGLFilter *filter);
 
   GstCaps *(*transform_internal_caps) (GstGLFilter *filter,
@@ -111,18 +116,24 @@
   /* useful to init and cleanup custom gl resources */
   void (*display_init_cb)       (GstGLFilter *filter);
   void (*display_reset_cb)      (GstGLFilter *filter);
+
+  gpointer                      _padding[GST_PADDING];
 };
 
 gboolean gst_gl_filter_filter_texture (GstGLFilter * filter, GstBuffer * inbuf,
                                        GstBuffer * outbuf);
 
-void gst_gl_filter_render_to_target (GstGLFilter *filter, gboolean resize, GLuint input,
-                                     GLuint target, GLCB func, gpointer data);
+gboolean gst_gl_filter_render_to_target             (GstGLFilter *filter,
+                                                     GstGLMemory * input,
+                                                     GstGLMemory * output,
+                                                     GstGLFilterRenderFunc func,
+                                                     gpointer data);
 
-void gst_gl_filter_render_to_target_with_shader (GstGLFilter * filter, gboolean resize,
-                                                 GLuint input, GLuint target, GstGLShader *shader);
-
-void gst_gl_filter_draw_texture (GstGLFilter *filter, GLuint texture, guint width, guint height);
+void gst_gl_filter_draw_fullscreen_quad             (GstGLFilter *filter);
+void gst_gl_filter_render_to_target_with_shader     (GstGLFilter * filter,
+                                                     GstGLMemory * input,
+                                                     GstGLMemory * output,
+                                                     GstGLShader *shader);
 
 G_END_DECLS
 
diff --git a/gst-libs/gst/gl/gstglformat.c b/gst-libs/gst/gl/gstglformat.c
index 237e250..1a71327 100644
--- a/gst-libs/gst/gl/gstglformat.c
+++ b/gst-libs/gst/gl/gstglformat.c
@@ -31,22 +31,6 @@
 #define USING_GLES2(context) (gst_gl_context_check_gl_version (context, GST_GL_API_GLES2, 2, 0))
 #define USING_GLES3(context) (gst_gl_context_check_gl_version (context, GST_GL_API_GLES2, 3, 0))
 
-#ifndef GL_RGBA8
-#define GL_RGBA8 0x8058
-#endif
-#ifndef GL_RED
-#define GL_RED 0x1903
-#endif
-#ifndef GL_RG
-#define GL_RG 0x8227
-#endif
-#ifndef GL_R8
-#define GL_R8 0x8229
-#endif
-#ifndef GL_RG8
-#define GL_RG8 0x822B
-#endif
-
 #ifndef GL_TEXTURE_RECTANGLE
 #define GL_TEXTURE_RECTANGLE 0x84F5
 #endif
@@ -59,21 +43,21 @@
 {
   switch (format) {
     case GST_VIDEO_GL_TEXTURE_TYPE_RGBA:
-    case GL_RGBA:
+    case GST_GL_RGBA:
       return 4;
     case GST_VIDEO_GL_TEXTURE_TYPE_RGB:
     case GST_VIDEO_GL_TEXTURE_TYPE_RGB16:
-    case GL_RGB:
+    case GST_GL_RGB:
       return 3;
     case GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE_ALPHA:
     case GST_VIDEO_GL_TEXTURE_TYPE_RG:
-    case GL_LUMINANCE_ALPHA:
-    case GL_RG:
+    case GST_GL_LUMINANCE_ALPHA:
+    case GST_GL_RG:
       return 2;
     case GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE:
     case GST_VIDEO_GL_TEXTURE_TYPE_R:
-    case GL_LUMINANCE:
-    case GL_RED:
+    case GST_GL_LUMINANCE:
+    case GST_GL_RED:
       return 1;
     default:
       return 0;
@@ -153,20 +137,20 @@
 {
   switch (tex_format) {
     case GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE_ALPHA:
-      return GL_LUMINANCE_ALPHA;
+      return GST_GL_LUMINANCE_ALPHA;
     case GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE:
-      return GL_LUMINANCE;
+      return GST_GL_LUMINANCE;
     case GST_VIDEO_GL_TEXTURE_TYPE_RGBA:
-      return GL_RGBA;
+      return GST_GL_RGBA;
     case GST_VIDEO_GL_TEXTURE_TYPE_RGB:
     case GST_VIDEO_GL_TEXTURE_TYPE_RGB16:
-      return GL_RGB;
+      return GST_GL_RGB;
     case GST_VIDEO_GL_TEXTURE_TYPE_RG:
-      return GL_RG;
+      return GST_GL_RG;
     case GST_VIDEO_GL_TEXTURE_TYPE_R:
-      return GL_RED;
+      return GST_GL_RED;
     default:
-      return GST_VIDEO_GL_TEXTURE_TYPE_RGBA;
+      return tex_format;
   }
 }
 
@@ -273,51 +257,52 @@
       gst_gl_context_check_feature (context, "GL_EXT_texture_rg");
 
   switch (format) {
-    case GL_RGBA:
+    case GST_GL_RGBA:
       switch (type) {
         case GL_UNSIGNED_BYTE:
           return USING_GLES2 (context)
-              && !USING_GLES3 (context) ? GL_RGBA : GL_RGBA8;
+              && !USING_GLES3 (context) ? GST_GL_RGBA : GST_GL_RGBA8;
           break;
       }
       break;
-    case GL_RGB:
+    case GST_GL_RGB:
       switch (type) {
         case GL_UNSIGNED_BYTE:
-          return GL_RGB8;
+          return GST_GL_RGB8;
           break;
         case GL_UNSIGNED_SHORT_5_6_5:
-          return GL_RGB;
+          return GST_GL_RGB;
           break;
       }
       break;
-    case GL_RG:
+    case GST_GL_RG:
       switch (type) {
         case GL_UNSIGNED_BYTE:
           if (!USING_GLES3 (context) && USING_GLES2 (context) && ext_texture_rg)
-            return GL_RG;
-          return GL_RG8;
+            return GST_GL_RG;
+          return GST_GL_RG8;
           break;
       }
       break;
-    case GL_RED:
+    case GST_GL_RED:
       switch (type) {
         case GL_UNSIGNED_BYTE:
           if (!USING_GLES3 (context) && USING_GLES2 (context) && ext_texture_rg)
-            return GL_RED;
-          return GL_R8;
+            return GST_GL_RED;
+          return GST_GL_R8;
           break;
       }
       break;
-    case GL_LUMINANCE:
-      return GL_LUMINANCE;
-      break;
-    case GL_LUMINANCE_ALPHA:
-      return GL_LUMINANCE_ALPHA;
-      break;
-    case GL_ALPHA:
-      return GL_ALPHA;
-      break;
+    case GST_GL_RGBA8:
+    case GST_GL_RGB8:
+    case GST_GL_RG8:
+    case GST_GL_R8:
+    case GST_GL_LUMINANCE:
+    case GST_GL_LUMINANCE_ALPHA:
+    case GST_GL_ALPHA:
+    case GST_GL_DEPTH_COMPONENT16:
+    case GST_GL_DEPTH24_STENCIL8:
+      return format;
     default:
       break;
   }
diff --git a/gst-libs/gst/gl/gstglformat.h b/gst-libs/gst/gl/gstglformat.h
index fcd618a..e4e6e37 100644
--- a/gst-libs/gst/gl/gstglformat.h
+++ b/gst-libs/gst/gl/gstglformat.h
@@ -70,6 +70,33 @@
 
 G_BEGIN_DECLS
 
+typedef enum
+{
+  /* values taken from the GL headers */
+  GST_GL_LUMINANCE                      = 0x1909,
+
+  GST_GL_ALPHA                          = 0x1906,
+
+  GST_GL_LUMINANCE_ALPHA                = 0x190A,
+
+  GST_GL_RED                            = 0x1903,
+  GST_GL_R8                             = 0x8229,
+
+  GST_GL_RG                             = 0x8227,
+  GST_GL_RG8                            = 0x822B,
+
+  GST_GL_RGB                            = 0x1907,
+  GST_GL_RGB8                           = 0x8051,
+  GST_GL_RGB565                         = 0x8D62,
+
+  GST_GL_RGBA                           = 0x1908,
+  GST_GL_RGBA8                          = 0x8058,
+
+  GST_GL_DEPTH_COMPONENT16              = 0x81A5,
+
+  GST_GL_DEPTH24_STENCIL8               = 0x88F0,
+} GstGLFormat;
+
 guint                   gst_gl_format_type_n_bytes                  (guint format,
                                                                      guint type);
 guint                   gst_gl_texture_type_n_bytes                 (GstVideoGLTextureType tex_format);
diff --git a/gst-libs/gst/gl/gstglframebuffer.c b/gst-libs/gst/gl/gstglframebuffer.c
index fb706f5..67f860e 100644
--- a/gst-libs/gst/gl/gstglframebuffer.c
+++ b/gst-libs/gst/gl/gstglframebuffer.c
@@ -24,13 +24,33 @@
 #include "gl.h"
 #include "gstglframebuffer.h"
 
+#ifndef GL_FRAMEBUFFER_UNDEFINED
+#define GL_FRAMEBUFFER_UNDEFINED          0x8219
+#endif
+#ifndef GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
+#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
+#endif
+#ifndef GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT
+#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
+#endif
+#ifndef GL_FRAMEBUFFER_UNSUPPORTED
+#define GL_FRAMEBUFFER_UNSUPPORTED        0x8CDD
+#endif
+#ifndef GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS
+#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9
+#endif
+
+#ifndef GL_DEPTH_STENCIL_ATTACHMENT
+#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A
+#endif
+
 GST_DEBUG_CATEGORY_STATIC (gst_gl_framebuffer_debug);
 #define GST_CAT_DEFAULT gst_gl_framebuffer_debug
 
 #define DEBUG_INIT \
   GST_DEBUG_CATEGORY_INIT (gst_gl_framebuffer_debug, "glframebuffer", 0, "GL Framebuffer");
 
-G_DEFINE_TYPE_WITH_CODE (GstGLFramebuffer, gst_gl_framebuffer, G_TYPE_OBJECT,
+G_DEFINE_TYPE_WITH_CODE (GstGLFramebuffer, gst_gl_framebuffer, GST_TYPE_OBJECT,
     DEBUG_INIT);
 
 #define GST_GL_FRAMEBUFFER_GET_PRIVATE(o) \
@@ -40,13 +60,35 @@
 
 struct _GstGLFramebufferPrivate
 {
-  gint width;
-  gint height;
-
-  guint fbo;
-  guint depth;
+  guint effective_width;
+  guint effective_height;
 };
 
+struct fbo_attachment
+{
+  guint attachment_point;
+  GstGLBaseMemory *mem;
+};
+
+static void
+_fbo_attachment_init (struct fbo_attachment *attach, guint point,
+    GstGLBaseMemory * mem)
+{
+  attach->attachment_point = point;
+  attach->mem = (GstGLBaseMemory *) gst_memory_ref (GST_MEMORY_CAST (mem));
+}
+
+static void
+_fbo_attachment_unset (struct fbo_attachment *attach)
+{
+  if (!attach)
+    return;
+
+  if (attach->mem)
+    gst_memory_unref (GST_MEMORY_CAST (attach->mem));
+  attach->mem = NULL;
+}
+
 static void
 gst_gl_framebuffer_class_init (GstGLFramebufferClass * klass)
 {
@@ -56,183 +98,355 @@
 }
 
 static void
-gst_gl_framebuffer_init (GstGLFramebuffer * fbo)
+gst_gl_framebuffer_init (GstGLFramebuffer * fb)
 {
-  fbo->priv = GST_GL_FRAMEBUFFER_GET_PRIVATE (fbo);
+  fb->priv = GST_GL_FRAMEBUFFER_GET_PRIVATE (fb);
+
+  fb->attachments =
+      g_array_new (FALSE, FALSE, (sizeof (struct fbo_attachment)));
+  g_array_set_clear_func (fb->attachments,
+      (GDestroyNotify) _fbo_attachment_unset);
+}
+
+static void
+_delete_fbo_gl (GstGLContext * context, GstGLFramebuffer * fb)
+{
+  const GstGLFuncs *gl = context->gl_vtable;
+
+  if (fb->fbo_id)
+    gl->DeleteFramebuffers (1, &fb->fbo_id);
+  fb->fbo_id = 0;
 }
 
 static void
 gst_gl_framebuffer_finalize (GObject * object)
 {
-  GstGLFramebuffer *fbo = GST_GL_FRAMEBUFFER (object);
+  GstGLFramebuffer *fb = GST_GL_FRAMEBUFFER (object);
 
-  if (fbo->context) {
-    gst_object_unref (fbo->context);
-    fbo->context = NULL;
+  if (fb->context) {
+    if (fb->fbo_id)
+      gst_gl_context_thread_add (fb->context,
+          (GstGLContextThreadFunc) _delete_fbo_gl, fb);
+
+    gst_object_unref (fb->context);
+    fb->context = NULL;
   }
 
+  if (fb->attachments)
+    g_array_free (fb->attachments, TRUE);
+  fb->attachments = NULL;
+
   G_OBJECT_CLASS (gst_gl_framebuffer_parent_class)->finalize (object);
 }
 
 GstGLFramebuffer *
 gst_gl_framebuffer_new (GstGLContext * context)
 {
-  GstGLFramebuffer *fbo = g_object_new (GST_TYPE_GL_FRAMEBUFFER, NULL);
-
-  fbo->context = gst_object_ref (context);
-
-  return fbo;
-}
-
-gboolean
-gst_gl_framebuffer_generate (GstGLFramebuffer * frame, gint width, gint height,
-    guint * fbo, guint * depth)
-{
-  GLuint fake_texture = 0;
+  GstGLFramebuffer *fb;
   const GstGLFuncs *gl;
-  GLenum internal_format;
 
-  g_return_val_if_fail (GST_IS_GL_FRAMEBUFFER (frame), FALSE);
-  g_return_val_if_fail (fbo != NULL && depth != NULL, FALSE);
-  g_return_val_if_fail (width > 0 && height > 0, FALSE);
+  g_return_val_if_fail (GST_IS_GL_CONTEXT (context), NULL);
+  g_return_val_if_fail (gst_gl_context_get_current () == context, NULL);
 
-  gl = frame->context->gl_vtable;
-
-  GST_TRACE ("creating FBO dimensions:%ux%u", width, height);
+  gl = context->gl_vtable;
 
   if (!gl->GenFramebuffers) {
-    gst_gl_context_set_error (frame->context,
-        "Context, EXT_framebuffer_object not supported");
-    return FALSE;
+    GST_ERROR_OBJECT (context, "Framebuffers are not supported!");
+    return NULL;
   }
-  /* setup FBO */
-  gl->GenFramebuffers (1, fbo);
-  gl->BindFramebuffer (GL_FRAMEBUFFER, *fbo);
 
-  /* setup the render buffer for depth */
-  gl->GenRenderbuffers (1, depth);
-  gl->BindRenderbuffer (GL_RENDERBUFFER, *depth);
+  fb = g_object_new (GST_TYPE_GL_FRAMEBUFFER, NULL);
+  fb->context = gst_object_ref (context);
+  gl->GenFramebuffers (1, &fb->fbo_id);
 
-  if (gst_gl_context_get_gl_api (frame->context) & (GST_GL_API_OPENGL |
+  return fb;
+}
+
+GstGLFramebuffer *
+gst_gl_framebuffer_new_with_default_depth (GstGLContext * context, guint width,
+    guint height)
+{
+  GstGLFramebuffer *fb = gst_gl_framebuffer_new (context);
+  GstGLBaseMemoryAllocator *render_alloc;
+  GstGLAllocationParams *params;
+  GstGLBaseMemory *renderbuffer;
+  guint attach_point, attach_type;
+
+  if (!fb)
+    return NULL;
+
+  if (gst_gl_context_get_gl_api (fb->context) & (GST_GL_API_OPENGL |
           GST_GL_API_OPENGL3)) {
-    gl->RenderbufferStorage (GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, width,
-        height);
-  }
-  if (gst_gl_context_get_gl_api (frame->context) & GST_GL_API_GLES2) {
-    gl->RenderbufferStorage (GL_RENDERBUFFER, GL_DEPTH_COMPONENT16,
-        width, height);
+    attach_point = GL_DEPTH_STENCIL_ATTACHMENT;
+    attach_type = GST_GL_DEPTH24_STENCIL8;
+  } else if (gst_gl_context_get_gl_api (fb->context) & GST_GL_API_GLES2) {
+    attach_point = GL_DEPTH_ATTACHMENT;
+    attach_type = GST_GL_DEPTH_COMPONENT16;
+  } else {
+    g_assert_not_reached ();
+    return NULL;
   }
 
-  /* setup a texture to render to */
-  gl->GenTextures (1, &fake_texture);
-  gl->BindTexture (GL_TEXTURE_2D, fake_texture);
-  internal_format =
-      gst_gl_sized_gl_format_from_gl_format_type (frame->context, GL_RGBA,
-      GL_UNSIGNED_BYTE);
-  gl->TexImage2D (GL_TEXTURE_2D, 0, internal_format, width, height, 0, GL_RGBA,
-      GL_UNSIGNED_BYTE, NULL);
-  gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-  gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-  gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-  gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+  render_alloc = (GstGLBaseMemoryAllocator *)
+      gst_allocator_find (GST_GL_RENDERBUFFER_ALLOCATOR_NAME);
+  params = (GstGLAllocationParams *)
+      gst_gl_renderbuffer_allocation_params_new (context, NULL, attach_type,
+      width, height);
 
-  /* attach the texture to the FBO to renderer to */
-  gl->FramebufferTexture2D (GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
-      GL_TEXTURE_2D, fake_texture, 0);
+  renderbuffer = gst_gl_base_memory_alloc (render_alloc, params);
+  gst_gl_allocation_params_free (params);
+  gst_object_unref (render_alloc);
 
-  /* attach the depth render buffer to the FBO */
-  gl->FramebufferRenderbuffer (GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
-      GL_RENDERBUFFER, *depth);
+  gst_gl_framebuffer_bind (fb);
+  gst_gl_framebuffer_attach (fb, attach_point, renderbuffer);
+  gst_gl_context_clear_framebuffer (fb->context);
+  gst_memory_unref (GST_MEMORY_CAST (renderbuffer));
 
-  if (gst_gl_context_get_gl_api (frame->context) & (GST_GL_API_OPENGL |
-          GST_GL_API_OPENGL3)) {
-    gl->FramebufferRenderbuffer (GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT,
-        GL_RENDERBUFFER, *depth);
-  }
-
-  if (gl->CheckFramebufferStatus (GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
-    gst_gl_context_set_error (frame->context,
-        "GL framebuffer status incomplete");
-
-    gl->DeleteTextures (1, &fake_texture);
-
-    return FALSE;
-  }
-
-  /* unbind the FBO */
-  gl->BindFramebuffer (GL_FRAMEBUFFER, 0);
-
-  gl->DeleteTextures (1, &fake_texture);
-
-  return TRUE;
+  return fb;
 }
 
 gboolean
-gst_gl_framebuffer_use_v2 (GstGLFramebuffer * frame, gint texture_fbo_width,
-    gint texture_fbo_height, GLuint fbo, GLuint depth_buffer,
-    GLuint texture_fbo, GLCB_V2 cb, gpointer stuff)
+gst_gl_framebuffer_draw_to_texture (GstGLFramebuffer * fb, GstGLMemory * mem,
+    GstGLFramebufferFunc func, gpointer user_data)
 {
-  const GstGLFuncs *gl;
   GLint viewport_dim[4] = { 0 };
+  const GstGLFuncs *gl;
+  gboolean ret;
 
-  g_return_val_if_fail (GST_IS_GL_FRAMEBUFFER (frame), FALSE);
-  g_return_val_if_fail (texture_fbo_width > 0 && texture_fbo_height > 0, FALSE);
-  g_return_val_if_fail (fbo != 0, FALSE);
-  g_return_val_if_fail (texture_fbo != 0, FALSE);
-  g_return_val_if_fail (cb != NULL, FALSE);
+  g_return_val_if_fail (GST_IS_GL_FRAMEBUFFER (fb), FALSE);
+  g_return_val_if_fail (gst_is_gl_memory (GST_MEMORY_CAST (mem)), FALSE);
 
-  gl = frame->context->gl_vtable;
+  gl = fb->context->gl_vtable;
 
-  GST_TRACE ("Binding v2 FBO %u dimensions:%ux%u with texture:%u ",
-      fbo, texture_fbo_width, texture_fbo_height, texture_fbo);
+  GST_TRACE_OBJECT (fb, "drawing to texture %u, dimensions %ix%i", mem->tex_id,
+      gst_gl_memory_get_texture_width (mem),
+      gst_gl_memory_get_texture_height (mem));
 
-  gl->BindFramebuffer (GL_FRAMEBUFFER, fbo);
-
-  /* setup a texture to render to */
-  gl->BindTexture (GL_TEXTURE_2D, texture_fbo);
-
-  /* attach the texture to the FBO to renderer to */
-  gl->FramebufferTexture2D (GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
-      GL_TEXTURE_2D, texture_fbo, 0);
+  gst_gl_framebuffer_bind (fb);
+  gst_gl_framebuffer_attach (fb, GL_COLOR_ATTACHMENT0, (GstGLBaseMemory *) mem);
 
   gl->GetIntegerv (GL_VIEWPORT, viewport_dim);
-
-  gl->Viewport (0, 0, texture_fbo_width, texture_fbo_height);
-
-  if (gst_gl_context_get_gl_api (frame->context) & (GST_GL_API_OPENGL |
+  gl->Viewport (0, 0, fb->priv->effective_width, fb->priv->effective_height);
+  if (gst_gl_context_get_gl_api (fb->context) & (GST_GL_API_OPENGL |
           GST_GL_API_OPENGL3))
     gl->DrawBuffer (GL_COLOR_ATTACHMENT0);
 
-  /* the opengl scene */
-  cb (stuff);
+  ret = func (user_data);
 
-  if (gst_gl_context_get_gl_api (frame->context) & (GST_GL_API_OPENGL |
+  if (gst_gl_context_get_gl_api (fb->context) & (GST_GL_API_OPENGL |
           GST_GL_API_OPENGL3))
     gl->DrawBuffer (GL_NONE);
+  gl->Viewport (viewport_dim[0], viewport_dim[1], viewport_dim[2],
+      viewport_dim[3]);
+  gst_gl_context_clear_framebuffer (fb->context);
 
-  gl->Viewport (viewport_dim[0], viewport_dim[1],
-      viewport_dim[2], viewport_dim[3]);
-
-  gl->BindFramebuffer (GL_FRAMEBUFFER, 0);
-
-  return TRUE;
+  return ret;
 }
 
 void
-gst_gl_framebuffer_delete (GstGLFramebuffer * frame, guint fbo, guint depth)
+gst_gl_framebuffer_bind (GstGLFramebuffer * fb)
 {
   const GstGLFuncs *gl;
 
-  g_return_if_fail (GST_IS_GL_FRAMEBUFFER (frame));
+  g_return_if_fail (GST_IS_GL_FRAMEBUFFER (fb));
+  g_return_if_fail (gst_gl_context_get_current () == fb->context);
+  g_return_if_fail (fb->fbo_id != 0);
 
-  gl = frame->context->gl_vtable;
+  gl = fb->context->gl_vtable;
 
-  GST_TRACE ("Deleting FBO %u", fbo);
+  gl->BindFramebuffer (GL_FRAMEBUFFER, fb->fbo_id);
+}
 
-  if (fbo) {
-    gl->DeleteFramebuffers (1, &fbo);
+void
+gst_gl_context_clear_framebuffer (GstGLContext * context)
+{
+  const GstGLFuncs *gl;
+
+  g_return_if_fail (GST_IS_GL_CONTEXT (context));
+
+  gl = context->gl_vtable;
+
+  gl->BindFramebuffer (GL_FRAMEBUFFER, 0);
+}
+
+static void
+_update_effective_dimensions (GstGLFramebuffer * fb)
+{
+  int i;
+  guint min_width = -1, min_height = -1;
+
+  /* remove the previous attachment */
+  for (i = 0; i < fb->attachments->len; i++) {
+    struct fbo_attachment *attach;
+    int width, height;
+
+    attach = &g_array_index (fb->attachments, struct fbo_attachment, i);
+
+    if (gst_is_gl_memory (GST_MEMORY_CAST (attach->mem))) {
+      GstGLMemory *mem = (GstGLMemory *) attach->mem;
+
+      width = gst_gl_memory_get_texture_width (mem);
+      height = gst_gl_memory_get_texture_height (mem);
+    } else if (gst_is_gl_renderbuffer (GST_MEMORY_CAST (attach->mem))) {
+      GstGLRenderbuffer *mem = (GstGLRenderbuffer *) attach->mem;
+
+      width = mem->width;
+      height = mem->height;
+    } else {
+      g_assert_not_reached ();
+    }
+
+    if (width < min_width)
+      min_width = width;
+    if (height < min_height)
+      min_height = height;
   }
-  if (depth) {
-    gl->DeleteRenderbuffers (1, &depth);
+
+  fb->priv->effective_width = min_width;
+  fb->priv->effective_height = min_height;
+}
+
+static gboolean
+_is_valid_attachment_point (guint attachment_point)
+{
+  /* all 31 possible color attachments */
+  if (attachment_point >= 0x8CE0 && attachment_point <= 0x8CFF)
+    return TRUE;
+
+  /* depth-stencil attachment */
+  if (attachment_point == 0x821A)
+    return TRUE;
+
+  /* depth attachment */
+  if (attachment_point == 0x8D00)
+    return TRUE;
+
+  /* stencil attachment */
+  if (attachment_point == 0x8D20)
+    return TRUE;
+
+  return FALSE;
+}
+
+static void
+_attach_gl_memory (GstGLFramebuffer * fb, guint attachment_point,
+    GstGLMemory * mem)
+{
+  struct fbo_attachment attach;
+  const GstGLFuncs *gl = fb->context->gl_vtable;
+  guint gl_target = gst_gl_texture_target_to_gl (mem->tex_target);
+
+  gst_gl_framebuffer_bind (fb);
+
+  gl->FramebufferTexture2D (GL_FRAMEBUFFER, attachment_point, gl_target,
+      mem->tex_id, 0);
+
+  _fbo_attachment_init (&attach, attachment_point, (GstGLBaseMemory *) mem);
+  fb->attachments = g_array_append_val (fb->attachments, attach);
+}
+
+static void
+_attach_renderbuffer (GstGLFramebuffer * fb, guint attachment_point,
+    GstGLRenderbuffer * rb)
+{
+  struct fbo_attachment attach;
+  const GstGLFuncs *gl = fb->context->gl_vtable;
+
+  gst_gl_framebuffer_bind (fb);
+  gl->BindRenderbuffer (GL_RENDERBUFFER, rb->renderbuffer_id);
+
+  gl->FramebufferRenderbuffer (GL_FRAMEBUFFER, attachment_point,
+      GL_RENDERBUFFER, rb->renderbuffer_id);
+
+  _fbo_attachment_init (&attach, attachment_point, (GstGLBaseMemory *) rb);
+  fb->attachments = g_array_append_val (fb->attachments, attach);
+}
+
+void
+gst_gl_framebuffer_attach (GstGLFramebuffer * fb, guint attachment_point,
+    GstGLBaseMemory * mem)
+{
+  int i;
+
+  g_return_if_fail (GST_IS_GL_FRAMEBUFFER (fb));
+  g_return_if_fail (gst_gl_context_get_current () == fb->context);
+  g_return_if_fail (_is_valid_attachment_point (attachment_point));
+
+  /* remove the previous attachment */
+  for (i = 0; i < fb->attachments->len; i++) {
+    struct fbo_attachment *attach;
+
+    attach = &g_array_index (fb->attachments, struct fbo_attachment, i);
+
+    if (attach->attachment_point == attachment_point) {
+      g_array_remove_index_fast (fb->attachments, i);
+      break;
+    }
   }
+
+  if (gst_is_gl_memory (GST_MEMORY_CAST (mem))) {
+    _attach_gl_memory (fb, attachment_point, (GstGLMemory *) mem);
+  } else if (gst_is_gl_renderbuffer (GST_MEMORY_CAST (mem))) {
+    _attach_renderbuffer (fb, attachment_point, (GstGLRenderbuffer *) mem);
+  } else {
+    g_assert_not_reached ();
+    return;
+  }
+
+  _update_effective_dimensions (fb);
+}
+
+void
+gst_gl_framebuffer_get_effective_dimensions (GstGLFramebuffer * fb,
+    guint * width, guint * height)
+{
+  g_return_if_fail (GST_IS_GL_FRAMEBUFFER (fb));
+
+  if (width)
+    *width = fb->priv->effective_width;
+  if (height)
+    *height = fb->priv->effective_height;
+}
+
+gboolean
+gst_gl_context_check_framebuffer_status (GstGLContext * context)
+{
+  g_return_val_if_fail (GST_IS_GL_CONTEXT (context), FALSE);
+
+  switch (context->gl_vtable->CheckFramebufferStatus (GL_FRAMEBUFFER)) {
+    case GL_FRAMEBUFFER_COMPLETE:
+      return TRUE;
+      break;
+    case GL_FRAMEBUFFER_UNSUPPORTED:
+      GST_WARNING_OBJECT (context, "GL_FRAMEBUFFER_UNSUPPORTED");
+      break;
+    case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT:
+      GST_WARNING_OBJECT (context, "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT");
+      break;
+    case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:
+      GST_WARNING_OBJECT (context,
+          "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT");
+      break;
+    case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS:
+      GST_WARNING_OBJECT (context, "GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS");
+      break;
+#if GST_GL_HAVE_OPENGL
+    case GL_FRAMEBUFFER_UNDEFINED:
+      GST_WARNING_OBJECT (context, "GL_FRAMEBUFFER_UNDEFINED");
+      break;
+#endif
+    default:
+      GST_WARNING_OBJECT (context, "Unknown FBO error");
+      break;
+  }
+
+  return FALSE;
+}
+
+guint
+gst_gl_framebuffer_get_id (GstGLFramebuffer * fb)
+{
+  g_return_val_if_fail (GST_IS_GL_FRAMEBUFFER (fb), 0);
+
+  return fb->fbo_id;
 }
diff --git a/gst-libs/gst/gl/gstglframebuffer.h b/gst-libs/gst/gl/gstglframebuffer.h
index 4768afb..6298af1 100644
--- a/gst-libs/gst/gl/gstglframebuffer.h
+++ b/gst-libs/gst/gl/gstglframebuffer.h
@@ -34,35 +34,62 @@
 #define GST_IS_GL_FRAMEBUFFER_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_GL_FRAMEBUFFER))
 #define GST_GL_FRAMEBUFFER_CAST(obj)        ((GstGLFramebuffer*)(obj))
 
-typedef struct _GstGLFramebuffer GstGLFramebuffer;
 typedef struct _GstGLFramebufferClass GstGLFramebufferClass;
 typedef struct _GstGLFramebufferPrivate GstGLFramebufferPrivate;
 
+/**
+ * GstGLFramebufferFunc:
+ * @data: user data
+ *
+ * callback definition for operating through a Framebuffer object
+ */
+typedef gboolean (*GstGLFramebufferFunc) (gpointer stuff);
+
 struct _GstGLFramebuffer
 {
-  GObject             object;
+  GstObject             object;
+
+  GstGLContext *context;
 
   /* <private> */
-  GstGLContext *context;
+  guint fbo_id;
+  GArray *attachments;
+
+  gpointer          _padding[GST_PADDING];
 
   GstGLFramebufferPrivate  *priv;
 };
 
 struct _GstGLFramebufferClass
 {
-  GObjectClass object_class;
+  GstObjectClass object_class;
+
+  gpointer          _padding[GST_PADDING];
 };
 
-GstGLFramebuffer *gst_gl_framebuffer_new (GstGLContext *context);
+GstGLFramebuffer *      gst_gl_framebuffer_new                      (GstGLContext *context);
+GstGLFramebuffer *      gst_gl_framebuffer_new_with_default_depth   (GstGLContext *context,
+                                                                     guint width,
+                                                                     guint height);
 
-gboolean gst_gl_framebuffer_generate (GstGLFramebuffer *frame, gint width, gint height,
-    guint * fbo, guint * depthbuffer);
+guint                   gst_gl_framebuffer_get_id                   (GstGLFramebuffer * fb);
 
-gboolean gst_gl_framebuffer_use_v2 (GstGLFramebuffer * frame, gint texture_fbo_width,
-    gint texture_fbo_height, GLuint fbo, GLuint depth_buffer,
-    GLuint texture_fbo, GLCB_V2 cb, gpointer stuff);
+void                    gst_gl_framebuffer_attach                   (GstGLFramebuffer * fb,
+                                                                     guint attachment_point,
+                                                                     GstGLBaseMemory * mem);
+void                    gst_gl_framebuffer_bind                     (GstGLFramebuffer * fb);
+void                    gst_gl_context_clear_framebuffer            (GstGLContext * context);
 
-void gst_gl_framebuffer_delete (GstGLFramebuffer *frame, guint fbo, guint depth);
+void                    gst_gl_framebuffer_get_effective_dimensions (GstGLFramebuffer * fb,
+                                                                     guint * width,
+                                                                     guint * height);
+
+gboolean                gst_gl_context_check_framebuffer_status     (GstGLContext * context);
+
+gboolean                gst_gl_framebuffer_draw_to_texture          (GstGLFramebuffer * fb,
+                                                                     GstGLMemory * mem,
+                                                                     GstGLFramebufferFunc cb,
+                                                                     gpointer user_data);
 
 #ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstGLFramebuffer, gst_object_unref)
diff --git a/gst-libs/gst/gl/gstglmemory.c b/gst-libs/gst/gl/gstglmemory.c
index 402fd4d..73c3b59 100644
--- a/gst-libs/gst/gl/gstglmemory.c
+++ b/gst-libs/gst/gl/gstglmemory.c
@@ -275,8 +275,9 @@
 void
 gst_gl_memory_init (GstGLMemory * mem, GstAllocator * allocator,
     GstMemory * parent, GstGLContext * context, GstGLTextureTarget target,
-    GstAllocationParams * params, GstVideoInfo * info, guint plane,
-    GstVideoAlignment * valign, gpointer user_data, GDestroyNotify notify)
+    GstVideoGLTextureType tex_type, GstAllocationParams * params,
+    GstVideoInfo * info, guint plane, GstVideoAlignment * valign,
+    gpointer user_data, GDestroyNotify notify)
 {
   const gchar *target_str;
   gsize size;
@@ -307,9 +308,7 @@
   size = gst_gl_get_plane_data_size (info, valign, plane);
 
   mem->tex_target = target;
-  mem->tex_type =
-      gst_gl_texture_type_from_format (context, GST_VIDEO_INFO_FORMAT (info),
-      plane);
+  mem->tex_type = tex_type;
   mem->plane = plane;
 
   _calculate_unpack_length (mem, context);
@@ -367,6 +366,26 @@
     return FALSE;
   }
 
+  if (USING_GLES2 (context) || USING_GLES3 (context)) {
+    if (format == GL_RGBA && type == GL_UNSIGNED_BYTE) {
+      /* explicitly supported */
+    } else {
+      gint supported_format, supported_type;
+
+      gl->GetIntegerv (GL_IMPLEMENTATION_COLOR_READ_FORMAT, &supported_format);
+      gl->GetIntegerv (GL_IMPLEMENTATION_COLOR_READ_TYPE, &supported_type);
+
+      if (supported_format != format || supported_type != type) {
+        GST_CAT_ERROR (GST_CAT_GL_MEMORY, "cannot read pixels with "
+            "unsupported format and type.  Supported format 0x%x type 0x%x",
+            supported_format, supported_type);
+        gl->BindFramebuffer (GL_FRAMEBUFFER, 0);
+        gl->DeleteFramebuffers (1, &fbo);
+        return FALSE;
+      }
+    }
+  }
+
   gst_gl_query_start_log (GST_GL_BASE_MEMORY_CAST (gl_mem)->query,
       GST_CAT_GL_MEMORY, GST_LEVEL_LOG, NULL, "%s", "glReadPixels took");
   gl->ReadPixels (0, 0, gl_mem->tex_width, GL_MEM_HEIGHT (gl_mem), format,
@@ -374,7 +393,6 @@
   gst_gl_query_end (GST_GL_BASE_MEMORY_CAST (gl_mem)->query);
 
   gl->BindFramebuffer (GL_FRAMEBUFFER, 0);
-
   gl->DeleteFramebuffers (1, &fbo);
 
   return TRUE;
@@ -619,12 +637,21 @@
     goto error;
   }
 
+  if (USING_GLES2 (src->mem.context)
+      && (src->tex_type == GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE
+          || src->tex_type == GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE_ALPHA)) {
+    GST_CAT_FIXME (GST_CAT_GL_MEMORY,
+        "Cannot copy Luminance/Luminance Alpha textures in GLES");
+    goto error;
+  }
+
   if (!gst_memory_map (GST_MEMORY_CAST (src), &sinfo,
           GST_MAP_READ | GST_MAP_GL)) {
     GST_CAT_ERROR (GST_CAT_GL_MEMORY,
         "Failed to map source memory for copying");
     goto error;
   }
+
   src_tex_id = *(guint *) sinfo.data;
 
   GST_CAT_LOG (GST_CAT_GL_MEMORY, "copying memory %p, tex %u into "
@@ -719,22 +746,15 @@
   dest = g_new0 (GstGLMemory, 1);
 
   gst_gl_memory_init (dest, allocator, NULL, src->mem.context, src->tex_target,
-      &params, &src->info, src->plane, &src->valign, NULL, NULL);
+      src->tex_type, &params, &src->info, src->plane, &src->valign, NULL, NULL);
 
-  if (GST_MEMORY_FLAG_IS_SET (src, GST_GL_BASE_MEMORY_TRANSFER_NEED_UPLOAD)) {
-    if (!gst_gl_base_memory_memcpy ((GstGLBaseMemory *) src,
-            (GstGLBaseMemory *) dest, offset, size)) {
-      GST_CAT_WARNING (GST_CAT_GL_MEMORY, "Could not copy GL Memory");
-      gst_memory_unref (GST_MEMORY_CAST (dest));
-      return NULL;
-    }
-  } else {
+  if (!GST_MEMORY_FLAG_IS_SET (src, GST_GL_BASE_MEMORY_TRANSFER_NEED_UPLOAD)) {
     GstMapInfo dinfo;
 
     if (!gst_memory_map (GST_MEMORY_CAST (dest), &dinfo,
             GST_MAP_WRITE | GST_MAP_GL)) {
       GST_CAT_WARNING (GST_CAT_GL_MEMORY,
-          "Failed not map destination " "for writing");
+          "Failed not map destination for writing");
       gst_memory_unref (GST_MEMORY_CAST (dest));
       return NULL;
     }
@@ -744,11 +764,18 @@
             src->tex_type, src->tex_width, GL_MEM_HEIGHT (src))) {
       GST_CAT_WARNING (GST_CAT_GL_MEMORY, "Could not copy GL Memory");
       gst_memory_unmap (GST_MEMORY_CAST (dest), &dinfo);
-      gst_memory_unref (GST_MEMORY_CAST (dest));
-      return NULL;
+      goto memcpy;
     }
 
     gst_memory_unmap (GST_MEMORY_CAST (dest), &dinfo);
+  } else {
+  memcpy:
+    if (!gst_gl_base_memory_memcpy ((GstGLBaseMemory *) src,
+            (GstGLBaseMemory *) dest, offset, size)) {
+      GST_CAT_WARNING (GST_CAT_GL_MEMORY, "Could not copy GL Memory");
+      gst_memory_unref (GST_MEMORY_CAST (dest));
+      return NULL;
+    }
   }
 
   return (GstMemory *) dest;
@@ -802,14 +829,14 @@
   mem = g_new0 (GstGLMemory, 1);
 
   if (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) {
-    mem->tex_id = params->parent.gl_handle;
+    mem->tex_id = GPOINTER_TO_UINT (params->parent.gl_handle);
     mem->texture_wrapped = TRUE;
   }
 
   gst_gl_memory_init (mem, GST_ALLOCATOR_CAST (allocator), NULL,
-      params->parent.context, params->target, params->parent.alloc_params,
-      params->v_info, params->plane, params->valign, params->parent.user_data,
-      params->parent.notify);
+      params->parent.context, params->target, params->tex_type,
+      params->parent.alloc_params, params->v_info, params->plane,
+      params->valign, params->parent.user_data, params->parent.notify);
 
   if (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) {
     GST_MINI_OBJECT_FLAG_SET (mem, GST_GL_BASE_MEMORY_TRANSFER_NEED_DOWNLOAD);
@@ -1044,6 +1071,7 @@
  * @plane: the video plane @wrapped_data represents
  * @valign: (allow-none): any #GstVideoAlignment applied to symem mappings of @wrapped_data
  * @target: the #GstGLTextureTarget
+ * @tex_type: the #GstVideoGLTextureType
  * @wrapped_data: (allow-none): the optional data pointer to wrap
  * @gl_handle: the optional OpenGL handle to wrap or 0
  * @user_data: (allow-none): user data to call @notify with
@@ -1061,8 +1089,8 @@
     GstGLAllocationParamsFreeFunc free, GstGLContext * context,
     GstAllocationParams * alloc_params, GstVideoInfo * v_info,
     guint plane, GstVideoAlignment * valign, GstGLTextureTarget target,
-    gpointer wrapped_data, guint gl_handle, gpointer user_data,
-    GDestroyNotify notify)
+    GstVideoGLTextureType tex_type, gpointer wrapped_data, gpointer gl_handle,
+    gpointer user_data, GDestroyNotify notify)
 {
   guint i;
 
@@ -1087,6 +1115,7 @@
   }
   _gst_gl_video_allocation_params_set_video_alignment (params, valign);
   params->target = target;
+  params->tex_type = tex_type;
   params->plane = plane;
 
   return TRUE;
@@ -1095,11 +1124,12 @@
 /**
  * gst_gl_video_allocation_params_new:
  * @context: a #GstGLContext
- * @alloc_params: (allow-none): the #GstAllocationParams for @wrapped_data
- * @v_info: the #GstVideoInfo for @wrapped_data
- * @plane: the video plane @wrapped_data represents
- * @valign: (allow-none): any #GstVideoAlignment applied to symem mappings of @wrapped_data
- * @target: the #GstGLTextureTarget for @wrapped_data
+ * @alloc_params: (allow-none): the #GstAllocationParams for sysmem mappings of the texture
+ * @v_info: the #GstVideoInfo for the texture
+ * @plane: the video plane of @v_info to allocate
+ * @valign: (allow-none): any #GstVideoAlignment applied to symem mappings of the texture
+ * @target: the #GstGLTextureTarget for the created textures
+ * @target: the #GstVideoGLTextureType for the created textures
  *
  * Returns: a new #GstGLVideoAllocationParams for allocating #GstGLMemory's
  *
@@ -1108,7 +1138,8 @@
 GstGLVideoAllocationParams *
 gst_gl_video_allocation_params_new (GstGLContext * context,
     GstAllocationParams * alloc_params, GstVideoInfo * v_info, guint plane,
-    GstVideoAlignment * valign, GstGLTextureTarget target)
+    GstVideoAlignment * valign, GstGLTextureTarget target,
+    GstVideoGLTextureType tex_type)
 {
   GstGLVideoAllocationParams *params = g_new0 (GstGLVideoAllocationParams, 1);
 
@@ -1120,7 +1151,7 @@
           gst_gl_video_allocation_params_copy_data,
           (GstGLAllocationParamsFreeFunc)
           gst_gl_video_allocation_params_free_data, context, alloc_params,
-          v_info, plane, valign, target, NULL, 0, NULL, NULL)) {
+          v_info, plane, valign, target, tex_type, NULL, 0, NULL, NULL)) {
     g_free (params);
     return NULL;
   }
@@ -1136,6 +1167,7 @@
  * @plane: the video plane @wrapped_data represents
  * @valign: (allow-none): any #GstVideoAlignment applied to symem mappings of @wrapped_data
  * @target: the #GstGLTextureTarget for @wrapped_data
+ * @tex_type: the #GstVideoGLTextureType for @wrapped_data
  * @wrapped_data: the data pointer to wrap
  * @user_data: (allow-none): user data to call @notify with
  * @notify: (allow-none): a #GDestroyNotify
@@ -1148,7 +1180,8 @@
 gst_gl_video_allocation_params_new_wrapped_data (GstGLContext * context,
     GstAllocationParams * alloc_params, GstVideoInfo * v_info, guint plane,
     GstVideoAlignment * valign, GstGLTextureTarget target,
-    gpointer wrapped_data, gpointer user_data, GDestroyNotify notify)
+    GstVideoGLTextureType tex_type, gpointer wrapped_data, gpointer user_data,
+    GDestroyNotify notify)
 {
   GstGLVideoAllocationParams *params = g_new0 (GstGLVideoAllocationParams, 1);
 
@@ -1160,7 +1193,55 @@
           gst_gl_video_allocation_params_copy_data,
           (GstGLAllocationParamsFreeFunc)
           gst_gl_video_allocation_params_free_data, context, alloc_params,
-          v_info, plane, valign, target, wrapped_data, 0, user_data, notify)) {
+          v_info, plane, valign, target, tex_type, wrapped_data, 0, user_data,
+          notify)) {
+    g_free (params);
+    return NULL;
+  }
+
+  return params;
+}
+
+/**
+ * gst_gl_video_allocation_params_new_wrapped_gl_handle:
+ * @context: a #GstGLContext
+ * @alloc_params: (allow-none): the #GstAllocationParams for @tex_id
+ * @v_info: the #GstVideoInfo for @tex_id
+ * @plane: the video plane @tex_id represents
+ * @valign: (allow-none): any #GstVideoAlignment applied to symem mappings of @tex_id
+ * @target: the #GstGLTextureTarget for @tex_id
+ * @tex_type: the #GstVideoGLTextureType for @tex_id
+ * @gl_handle: the GL handle to wrap
+ * @user_data: (allow-none): user data to call @notify with
+ * @notify: (allow-none): a #GDestroyNotify
+ *
+ * @gl_handle is defined by the specific OpenGL handle being wrapped
+ * For #GstGLMemory and #GstGLMemoryPBO it is an OpenGL texture id.
+ * Other memory types may define it to require a different type of parameter.
+ *
+ * Returns: a new #GstGLVideoAllocationParams for wrapping @gl_handle
+ *
+ * Since: 1.8
+ */
+GstGLVideoAllocationParams *
+gst_gl_video_allocation_params_new_wrapped_gl_handle (GstGLContext * context,
+    GstAllocationParams * alloc_params, GstVideoInfo * v_info, guint plane,
+    GstVideoAlignment * valign, GstGLTextureTarget target,
+    GstVideoGLTextureType tex_type, gpointer gl_handle, gpointer user_data,
+    GDestroyNotify notify)
+{
+  GstGLVideoAllocationParams *params = g_new0 (GstGLVideoAllocationParams, 1);
+
+  if (!gst_gl_video_allocation_params_init_full (params,
+          sizeof (GstGLVideoAllocationParams),
+          GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE |
+          GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_VIDEO,
+          (GstGLAllocationParamsCopyFunc)
+          gst_gl_video_allocation_params_copy_data,
+          (GstGLAllocationParamsFreeFunc)
+          gst_gl_video_allocation_params_free_data, context, alloc_params,
+          v_info, plane, valign, target, tex_type, NULL, gl_handle, user_data,
+          notify)) {
     g_free (params);
     return NULL;
   }
@@ -1176,6 +1257,7 @@
  * @plane: the video plane @tex_id represents
  * @valign: (allow-none): any #GstVideoAlignment applied to symem mappings of @tex_id
  * @target: the #GstGLTextureTarget for @tex_id
+ * @tex_type: the #GstGLTextureType for @tex_id
  * @tex_id: the GL texture to wrap
  * @user_data: (allow-none): user data to call @notify with
  * @notify: (allow-none): a #GDestroyNotify
@@ -1188,24 +1270,12 @@
 gst_gl_video_allocation_params_new_wrapped_texture (GstGLContext * context,
     GstAllocationParams * alloc_params, GstVideoInfo * v_info, guint plane,
     GstVideoAlignment * valign, GstGLTextureTarget target,
-    guint tex_id, gpointer user_data, GDestroyNotify notify)
+    GstVideoGLTextureType tex_type, guint tex_id, gpointer user_data,
+    GDestroyNotify notify)
 {
-  GstGLVideoAllocationParams *params = g_new0 (GstGLVideoAllocationParams, 1);
-
-  if (!gst_gl_video_allocation_params_init_full (params,
-          sizeof (GstGLVideoAllocationParams),
-          GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE |
-          GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_VIDEO,
-          (GstGLAllocationParamsCopyFunc)
-          gst_gl_video_allocation_params_copy_data,
-          (GstGLAllocationParamsFreeFunc)
-          gst_gl_video_allocation_params_free_data, context, alloc_params,
-          v_info, plane, valign, target, NULL, tex_id, user_data, notify)) {
-    g_free (params);
-    return NULL;
-  }
-
-  return params;
+  return gst_gl_video_allocation_params_new_wrapped_gl_handle (context,
+      alloc_params, v_info, plane, valign, target, tex_type,
+      GUINT_TO_POINTER (tex_id), user_data, notify);
 }
 
 /**
@@ -1255,6 +1325,7 @@
   _gst_gl_video_allocation_params_set_video_alignment (dest_vid,
       src_vid->valign);
   dest_vid->target = src_vid->target;
+  dest_vid->tex_type = src_vid->tex_type;
   dest_vid->plane = src_vid->plane;
 }
 
@@ -1263,6 +1334,7 @@
  * @allocator: the @GstGLMemoryAllocator to allocate from
  * @buffer: a #GstBuffer to setup
  * @params: the #GstGLVideoAllocationParams to allocate with
+ * @tex_types: (allow-none): a list of #GstVideoGLTextureType's to allocate with.
  *
  * Returns: whether the buffer was correctly setup
  *
@@ -1270,18 +1342,15 @@
  */
 gboolean
 gst_gl_memory_setup_buffer (GstGLMemoryAllocator * allocator,
-    GstBuffer * buffer, GstGLVideoAllocationParams * params)
+    GstBuffer * buffer, GstGLVideoAllocationParams * params,
+    GstVideoGLTextureType * tex_types, gpointer * wrapped_data,
+    gsize n_wrapped_pointers)
 {
   GstGLBaseMemoryAllocator *base_allocator;
   guint n_mem, i, v, views;
   guint alloc_flags = params->parent.alloc_flags;
 
   g_return_val_if_fail (params != NULL, FALSE);
-  g_return_val_if_fail ((alloc_flags &
-          GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_SYSMEM)
-      == 0, FALSE);
-  g_return_val_if_fail ((params->parent.alloc_flags &
-          GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) == 0, FALSE);
   g_return_val_if_fail (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_VIDEO,
       FALSE);
 
@@ -1294,11 +1363,30 @@
   else
     views = 1;
 
+  g_return_val_if_fail (!wrapped_data
+      || views * n_mem != n_wrapped_pointers, FALSE);
+
   for (v = 0; v < views; v++) {
     for (i = 0; i < n_mem; i++) {
       GstGLMemory *gl_mem;
 
+      if (tex_types) {
+        params->tex_type = tex_types[i];
+      } else {
+        params->tex_type =
+            gst_gl_texture_type_from_format (params->parent.context,
+            GST_VIDEO_INFO_FORMAT (params->v_info), i);
+      }
+
       params->plane = i;
+      if (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_SYSMEM) {
+        g_return_val_if_fail (wrapped_data != NULL, FALSE);
+        params->parent.wrapped_data = wrapped_data[i];
+      } else if (alloc_flags &
+          GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) {
+        g_return_val_if_fail (wrapped_data != NULL, FALSE);
+        params->parent.gl_handle = wrapped_data[i];
+      }
 
       if (!(gl_mem = (GstGLMemory *) gst_gl_base_memory_alloc (base_allocator,
                   (GstGLAllocationParams *) params)))
diff --git a/gst-libs/gst/gl/gstglmemory.h b/gst-libs/gst/gl/gstglmemory.h
index b032a5c..d632564 100644
--- a/gst-libs/gst/gl/gstglmemory.h
+++ b/gst-libs/gst/gl/gstglmemory.h
@@ -78,6 +78,9 @@
   gboolean                  texture_wrapped;
   guint                     unpack_length;
   guint                     tex_width;
+
+  /* <private> */
+  gpointer                  _padding[GST_PADDING];
 };
 
 typedef struct _GstGLVideoAllocationParams GstGLVideoAllocationParams;
@@ -92,6 +95,10 @@
   guint                  plane;
   GstVideoAlignment     *valign;
   GstGLTextureTarget     target;
+  GstVideoGLTextureType  tex_type;
+
+  /* <private> */
+  gpointer               _padding[GST_PADDING];
 };
 
 gboolean        gst_gl_video_allocation_params_init_full        (GstGLVideoAllocationParams * params,
@@ -105,8 +112,9 @@
                                                                  guint plane,
                                                                  GstVideoAlignment * valign,
                                                                  GstGLTextureTarget target,
+                                                                 GstVideoGLTextureType tex_type,
                                                                  gpointer wrapped_data,
-                                                                 guint gl_handle,
+                                                                 gpointer gl_handle,
                                                                  gpointer user_data,
                                                                  GDestroyNotify notify);
 GstGLVideoAllocationParams * gst_gl_video_allocation_params_new (GstGLContext * context,
@@ -114,13 +122,15 @@
                                                                  GstVideoInfo * v_info,
                                                                  guint plane,
                                                                  GstVideoAlignment * valign,
-                                                                 GstGLTextureTarget target);
+                                                                 GstGLTextureTarget target,
+                                                                 GstVideoGLTextureType tex_type);
 GstGLVideoAllocationParams * gst_gl_video_allocation_params_new_wrapped_data    (GstGLContext * context,
                                                                                  GstAllocationParams * alloc_params,
                                                                                  GstVideoInfo * v_info,
                                                                                  guint plane,
                                                                                  GstVideoAlignment * valign,
                                                                                  GstGLTextureTarget target,
+                                                                                 GstVideoGLTextureType tex_type,
                                                                                  gpointer wrapped_data,
                                                                                  gpointer user_data,
                                                                                  GDestroyNotify notify);
@@ -131,10 +141,22 @@
                                                                                  guint plane,
                                                                                  GstVideoAlignment * valign,
                                                                                  GstGLTextureTarget target,
+                                                                                 GstVideoGLTextureType tex_type,
                                                                                  guint tex_id,
                                                                                  gpointer user_data,
                                                                                  GDestroyNotify notify);
 
+GstGLVideoAllocationParams * gst_gl_video_allocation_params_new_wrapped_gl_handle (GstGLContext * context,
+                                                                                 GstAllocationParams * alloc_params,
+                                                                                 GstVideoInfo * v_info,
+                                                                                 guint plane,
+                                                                                 GstVideoAlignment * valign,
+                                                                                 GstGLTextureTarget target,
+                                                                                 GstVideoGLTextureType tex_type,
+                                                                                 gpointer gl_handle,
+                                                                                 gpointer user_data,
+                                                                                 GDestroyNotify notify);
+
 /* subclass usage */
 void            gst_gl_video_allocation_params_free_data    (GstGLVideoAllocationParams * params);
 /* subclass usage */
@@ -149,6 +171,9 @@
 struct _GstGLMemoryAllocator
 {
   GstGLBaseMemoryAllocator parent;
+
+  /* <private> */
+  gpointer _padding[GST_PADDING];
 };
 
 /**
@@ -163,6 +188,9 @@
   GstGLBaseMemoryAllocatorMapFunction       map;
   GstGLBaseMemoryAllocatorCopyFunction      copy;
   GstGLBaseMemoryAllocatorUnmapFunction     unmap;
+
+  /* <private> */
+  gpointer                                  _padding[GST_PADDING];
 };
 
 #include <gst/gl/gstglbasememory.h>
@@ -182,6 +210,7 @@
                                                  GstMemory * parent,
                                                  GstGLContext * context,
                                                  GstGLTextureTarget target,
+                                                 GstVideoGLTextureType tex_type,
                                                  GstAllocationParams *params,
                                                  GstVideoInfo * info,
                                                  guint plane,
@@ -216,8 +245,10 @@
 
 gboolean                gst_gl_memory_setup_buffer          (GstGLMemoryAllocator * allocator,
                                                              GstBuffer * buffer,
-                                                             GstGLVideoAllocationParams * params);
-
+                                                             GstGLVideoAllocationParams * params,
+                                                             GstVideoGLTextureType *tex_types,
+                                                             gpointer *wrapped_data,
+                                                             gsize n_wrapped_pointers);
 
 GstGLMemoryAllocator *  gst_gl_memory_allocator_get_default (GstGLContext *context);
 
diff --git a/gst-libs/gst/gl/gstglmemorypbo.c b/gst-libs/gst/gl/gstglmemorypbo.c
index d8fa710..ebf8f29 100644
--- a/gst-libs/gst/gl/gstglmemorypbo.c
+++ b/gst-libs/gst/gl/gstglmemorypbo.c
@@ -217,34 +217,6 @@
   return TRUE;
 }
 
-static void
-_gl_mem_init (GstGLMemoryPBO * mem, GstAllocator * allocator,
-    GstMemory * parent, GstGLContext * context, GstGLTextureTarget target,
-    GstAllocationParams * params, GstVideoInfo * info,
-    guint plane, GstVideoAlignment * valign, gpointer user_data,
-    GDestroyNotify notify)
-{
-  gst_gl_memory_init ((GstGLMemory *) mem, allocator, parent,
-      context, target, params, info, plane, valign, user_data, notify);
-}
-
-static GstGLMemoryPBO *
-_gl_mem_new (GstAllocator * allocator, GstMemory * parent,
-    GstGLContext * context, GstGLTextureTarget target,
-    GstAllocationParams * params, GstVideoInfo * info,
-    guint plane, GstVideoAlignment * valign, gpointer user_data,
-    GDestroyNotify notify)
-{
-  GstGLMemoryPBO *mem;
-  mem = g_new0 (GstGLMemoryPBO, 1);
-  mem->mem.texture_wrapped = FALSE;
-
-  _gl_mem_init (mem, allocator, parent, context, target, params, info, plane,
-      valign, user_data, notify);
-
-  return mem;
-}
-
 static gboolean
 _read_pixels_to_pbo (GstGLMemoryPBO * gl_mem)
 {
@@ -457,7 +429,7 @@
     in_gl_type = GL_UNSIGNED_SHORT_5_6_5;
 
   if (!gl->GenFramebuffers) {
-    gst_gl_context_set_error (context,
+    GST_CAT_ERROR (GST_CAT_GL_MEMORY,
         "Context, EXT_framebuffer_object not supported");
     goto error;
   }
@@ -467,9 +439,9 @@
 
   if (copy_params->respecify) {
     if (in_size != out_size) {
-      GST_ERROR ("Cannot copy between textures with backing data of different"
-          "sizes. input %" G_GSIZE_FORMAT " output %" G_GSIZE_FORMAT, in_size,
-          out_size);
+      GST_CAT_ERROR (GST_CAT_GL_MEMORY, "Cannot copy between textures with "
+          "backing data of different sizes. input %" G_GSIZE_FORMAT " output %"
+          G_GSIZE_FORMAT, in_size, out_size);
       goto error;
     }
   }
@@ -515,7 +487,7 @@
     GstMapInfo pbo_info;
 
     if (!gl->GenBuffers || !src->pbo) {
-      gst_gl_context_set_error (context, "Cannot reinterpret texture contents "
+      GST_CAT_ERROR (GST_CAT_GL_MEMORY, "Cannot reinterpret texture contents "
           "without pixel buffer objects");
       gl->BindTexture (out_tex_target, 0);
       goto fbo_error;
@@ -523,7 +495,7 @@
 
     if (gst_gl_context_get_gl_api (context) & GST_GL_API_GLES2
         && (in_gl_format != GL_RGBA || in_gl_type != GL_UNSIGNED_BYTE)) {
-      gst_gl_context_set_error (context, "Cannot copy non RGBA/UNSIGNED_BYTE "
+      GST_CAT_ERROR (GST_CAT_GL_MEMORY, "Cannot copy non RGBA/UNSIGNED_BYTE "
           "textures on GLES2");
       gl->BindTexture (out_tex_target, 0);
       goto fbo_error;
@@ -601,18 +573,12 @@
         size);
   }
 
-  dest = (GstMemory *) _gl_mem_new (allocator, NULL, src->mem.mem.context,
-      src->mem.tex_target, &params, &src->mem.info, src->mem.plane,
-      &src->mem.valign, NULL, NULL);
+  dest = (GstMemory *) g_new0 (GstGLMemoryPBO, 1);
+  gst_gl_memory_init (GST_GL_MEMORY_CAST (dest), allocator, NULL,
+      src->mem.mem.context, src->mem.tex_target, src->mem.tex_type, &params,
+      &src->mem.info, src->mem.plane, &src->mem.valign, NULL, NULL);
 
-  if (GST_MEMORY_FLAG_IS_SET (src, GST_GL_BASE_MEMORY_TRANSFER_NEED_UPLOAD)) {
-    if (!gst_gl_base_memory_memcpy ((GstGLBaseMemory *) src,
-            (GstGLBaseMemory *) dest, offset, size)) {
-      GST_CAT_WARNING (GST_CAT_GL_MEMORY, "Could not copy GL Memory");
-      gst_memory_unref (GST_MEMORY_CAST (dest));
-      return NULL;
-    }
-  } else {
+  if (!GST_MEMORY_FLAG_IS_SET (src, GST_GL_BASE_MEMORY_TRANSFER_NEED_UPLOAD)) {
     GstMapInfo dinfo;
 
     if (!gst_memory_map (GST_MEMORY_CAST (dest), &dinfo,
@@ -628,11 +594,18 @@
             src->mem.tex_type, src->mem.tex_width, GL_MEM_HEIGHT (src))) {
       GST_CAT_WARNING (GST_CAT_GL_MEMORY, "Could not copy GL Memory");
       gst_memory_unmap (GST_MEMORY_CAST (dest), &dinfo);
-      gst_memory_unref (GST_MEMORY_CAST (dest));
-      return NULL;
+      goto memcpy;
     }
 
     gst_memory_unmap (GST_MEMORY_CAST (dest), &dinfo);
+  } else {
+  memcpy:
+    if (!gst_gl_base_memory_memcpy ((GstGLBaseMemory *) src,
+            (GstGLBaseMemory *) dest, offset, size)) {
+      GST_CAT_WARNING (GST_CAT_GL_MEMORY, "Could not copy GL Memory");
+      gst_memory_unref (GST_MEMORY_CAST (dest));
+      return NULL;
+    }
   }
 
   return dest;
@@ -674,14 +647,14 @@
   mem = g_new0 (GstGLMemoryPBO, 1);
 
   if (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) {
-    mem->mem.tex_id = params->parent.gl_handle;
+    mem->mem.tex_id = GPOINTER_TO_UINT (params->parent.gl_handle);
     mem->mem.texture_wrapped = TRUE;
   }
 
-  _gl_mem_init (mem, GST_ALLOCATOR_CAST (allocator), NULL,
-      params->parent.context, params->target, params->parent.alloc_params,
-      params->v_info, params->plane, params->valign, params->parent.user_data,
-      params->parent.notify);
+  gst_gl_memory_init (GST_GL_MEMORY_CAST (mem), GST_ALLOCATOR_CAST (allocator),
+      NULL, params->parent.context, params->target, params->tex_type,
+      params->parent.alloc_params, params->v_info, params->plane,
+      params->valign, params->parent.user_data, params->parent.notify);
 
   if (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) {
     GST_MINI_OBJECT_FLAG_SET (mem, GST_GL_BASE_MEMORY_TRANSFER_NEED_DOWNLOAD);
@@ -864,6 +837,8 @@
     GST_DEBUG_CATEGORY_INIT (GST_CAT_GL_MEMORY, "glmemory", 0, "OpenGL Memory");
 
     _gl_allocator = g_object_new (GST_TYPE_GL_MEMORY_PBO_ALLOCATOR, NULL);
+    /* The allocator is never unreffed */
+    GST_OBJECT_FLAG_SET (_gl_allocator, GST_OBJECT_FLAG_MAY_BE_LEAKED);
 
     gst_allocator_register (GST_GL_MEMORY_PBO_ALLOCATOR_NAME,
         gst_object_ref (_gl_allocator));
diff --git a/gst-libs/gst/gl/gstglmemorypbo.h b/gst-libs/gst/gl/gstglmemorypbo.h
index aa4110e..830c0f4 100644
--- a/gst-libs/gst/gl/gstglmemorypbo.h
+++ b/gst-libs/gst/gl/gstglmemorypbo.h
@@ -52,6 +52,9 @@
 
   /* <private> */
   GstGLBuffer          *pbo;
+
+  /* <private> */
+  gpointer                  _padding[GST_PADDING];
 };
 
 /**
@@ -84,6 +87,9 @@
 struct _GstGLMemoryPBOAllocator
 {
   GstGLMemoryAllocator parent;
+
+  /* <private> */
+  gpointer             _padding[GST_PADDING];
 };
 
 /**
@@ -94,6 +100,9 @@
 struct _GstGLMemoryPBOAllocatorClass
 {
   GstGLMemoryAllocatorClass parent_class;
+
+  /* <private> */
+  gpointer                  _padding[GST_PADDING];
 };
 
 G_END_DECLS
diff --git a/gst-libs/gst/gl/gstgloverlaycompositor.c b/gst-libs/gst/gl/gstgloverlaycompositor.c
index f7d0639..f6548a0 100644
--- a/gst-libs/gst/gl/gstgloverlaycompositor.c
+++ b/gst-libs/gst/gl/gstgloverlaycompositor.c
@@ -356,7 +356,8 @@
 
     params = gst_gl_video_allocation_params_new_wrapped_data (overlay->context,
         NULL, &comp_frame->info, 0, NULL, GST_GL_TEXTURE_TARGET_2D,
-        comp_frame->data[0], comp_frame, _video_frame_unmap_and_free);
+        GST_VIDEO_GL_TEXTURE_TYPE_RGBA, comp_frame->data[0], comp_frame,
+        _video_frame_unmap_and_free);
 
     comp_gl_memory =
         (GstGLMemory *) gst_gl_base_memory_alloc (mem_allocator,
diff --git a/gst-libs/gst/gl/gstgloverlaycompositor.h b/gst-libs/gst/gl/gstgloverlaycompositor.h
index dcecb49..dc8434a 100644
--- a/gst-libs/gst/gl/gstgloverlaycompositor.h
+++ b/gst-libs/gst/gl/gstgloverlaycompositor.h
@@ -43,7 +43,10 @@
 struct _GstGLOverlayCompositor
 {
   GstObject parent;
+
   GstGLContext *context;
+
+  /* <private> */
   guint last_window_width;
   guint last_window_height;
 
@@ -52,6 +55,8 @@
   GstGLShader *shader;
   GLint  position_attrib;
   GLint  texcoord_attrib;
+
+  gpointer _padding[GST_PADDING];
 };
 
 /**
@@ -61,6 +66,9 @@
 struct _GstGLOverlayCompositorClass
 {
   GstObjectClass object_class;
+
+  /* <private> */
+  gpointer _padding[GST_PADDING];
 };
 
 GstGLOverlayCompositor *gst_gl_overlay_compositor_new (GstGLContext * context);
diff --git a/gst-libs/gst/gl/gstglquery.c b/gst-libs/gst/gl/gstglquery.c
index 45e6336..c59c19f 100644
--- a/gst-libs/gst/gl/gstglquery.c
+++ b/gst-libs/gst/gl/gstglquery.c
@@ -254,7 +254,8 @@
 
   gl = query->context->gl_vtable;
   if (gl->GetQueryObjectui64v) {
-    gl->GetQueryObjectui64v (query->query_id, GL_QUERY_RESULT, &ret);
+    gl->GetQueryObjectui64v (query->query_id, GL_QUERY_RESULT,
+        (GLuint64 *) & ret);
   } else {
     guint tmp;
     gl->GetQueryObjectuiv (query->query_id, GL_QUERY_RESULT, &tmp);
diff --git a/gst-libs/gst/gl/gstglquery.h b/gst-libs/gst/gl/gstglquery.h
index 9cf06fa..33777d4 100644
--- a/gst-libs/gst/gl/gstglquery.h
+++ b/gst-libs/gst/gl/gstglquery.h
@@ -42,6 +42,9 @@
 
   gboolean          start_called;
   GstGLAsyncDebug   debug;
+
+  /* <private> */
+  gpointer          _padding[GST_PADDING];
 };
 
 void                gst_gl_query_init               (GstGLQuery * query,
diff --git a/gst-libs/gst/gl/gstglrenderbuffer.c b/gst-libs/gst/gl/gstglrenderbuffer.c
new file mode 100644
index 0000000..0cabad9
--- /dev/null
+++ b/gst-libs/gst/gl/gstglrenderbuffer.c
@@ -0,0 +1,456 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <string.h>
+
+#include <gst/video/video.h>
+
+#include <gst/gl/gstglbasememory.h>
+#include <gst/gl/gstglrenderbuffer.h>
+
+/**
+ * SECTION:gstglrenderbuffer
+ * @short_description: memory subclass for GL renderbuffer objects
+ * @see_also: #GstMemory, #GstAllocator
+ *
+ * GstGLRenderbuffer is a #GstGLBaseMemory subclass providing support for
+ * OpenGL renderbuffers.  
+ *
+ * #GstGLRenderbuffer is created or wrapped through gst_gl_base_memory_alloc()
+ * with #GstGLRenderbufferAllocationParams.
+ */
+
+#define USING_OPENGL(context) (gst_gl_context_check_gl_version (context, GST_GL_API_OPENGL, 1, 0))
+#define USING_OPENGL3(context) (gst_gl_context_check_gl_version (context, GST_GL_API_OPENGL3, 3, 1))
+#define USING_GLES(context) (gst_gl_context_check_gl_version (context, GST_GL_API_GLES, 1, 0))
+#define USING_GLES2(context) (gst_gl_context_check_gl_version (context, GST_GL_API_GLES2, 2, 0))
+#define USING_GLES3(context) (gst_gl_context_check_gl_version (context, GST_GL_API_GLES2, 3, 0))
+
+static GstAllocator *_gl_renderbuffer_allocator;
+
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_GL_RENDERBUFFER);
+#define GST_CAT_DEFAULT GST_CAT_GL_RENDERBUFFER
+
+G_DEFINE_TYPE (GstGLRenderbufferAllocator, gst_gl_renderbuffer_allocator,
+    GST_TYPE_GL_BASE_MEMORY_ALLOCATOR);
+
+static guint
+_new_renderbuffer (GstGLContext * context, guint format, guint width,
+    guint height)
+{
+  const GstGLFuncs *gl = context->gl_vtable;
+  guint rbo_id;
+
+  gl->GenRenderbuffers (1, &rbo_id);
+  gl->BindRenderbuffer (GL_RENDERBUFFER, rbo_id);
+
+  gl->RenderbufferStorage (GL_RENDERBUFFER, format, width, height);
+
+  gl->BindRenderbuffer (GL_RENDERBUFFER, 0);
+
+  return rbo_id;
+}
+
+static gboolean
+_gl_rbo_create (GstGLRenderbuffer * gl_mem, GError ** error)
+{
+  if (!gl_mem->renderbuffer_wrapped) {
+    GstGLContext *context = gl_mem->mem.context;
+    GLenum internal_format;
+    GLenum tex_format;
+    GLenum renderbuffer_type;
+
+    tex_format = gst_gl_format_from_gl_texture_type (gl_mem->renderbuffer_type);
+    renderbuffer_type = GL_UNSIGNED_BYTE;
+    if (gl_mem->renderbuffer_type == GST_VIDEO_GL_TEXTURE_TYPE_RGB16)
+      renderbuffer_type = GL_UNSIGNED_SHORT_5_6_5;
+
+    internal_format =
+        gst_gl_sized_gl_format_from_gl_format_type (context, tex_format,
+        renderbuffer_type);
+
+    gl_mem->renderbuffer_id =
+        _new_renderbuffer (context, internal_format,
+        gst_gl_renderbuffer_get_width (gl_mem),
+        gst_gl_renderbuffer_get_height (gl_mem));
+
+    GST_CAT_TRACE (GST_CAT_GL_RENDERBUFFER, "Generating renderbuffer id:%u "
+        "format:%u dimensions:%ux%u", gl_mem->renderbuffer_id, internal_format,
+        gst_gl_renderbuffer_get_width (gl_mem),
+        gst_gl_renderbuffer_get_height (gl_mem));
+  }
+
+  return TRUE;
+}
+
+static void
+gst_gl_renderbuffer_init (GstGLRenderbuffer * mem, GstAllocator * allocator,
+    GstMemory * parent, GstGLContext * context,
+    GstVideoGLTextureType renderbuffer_type, GstAllocationParams * params,
+    guint width, guint height, gpointer user_data, GDestroyNotify notify)
+{
+  gsize size = gst_gl_texture_type_n_bytes (renderbuffer_type) * width * height;
+
+  mem->renderbuffer_type = renderbuffer_type;
+  mem->width = width;
+  mem->height = height;
+
+  gst_gl_base_memory_init ((GstGLBaseMemory *) mem, allocator, parent, context,
+      params, size, user_data, notify);
+
+  GST_CAT_DEBUG (GST_CAT_GL_RENDERBUFFER, "new GL renderbuffer context:%"
+      GST_PTR_FORMAT " memory:%p format:%u dimensions:%ux%u ", context, mem,
+      mem->renderbuffer_type, gst_gl_renderbuffer_get_width (mem),
+      gst_gl_renderbuffer_get_height (mem));
+}
+
+static gpointer
+_gl_rbo_map (GstGLRenderbuffer * gl_mem, GstMapInfo * info, gsize maxsize)
+{
+  GST_CAT_WARNING (GST_CAT_GL_RENDERBUFFER, "Renderbuffer's cannot be mapped");
+
+  return NULL;
+}
+
+static void
+_gl_rbo_unmap (GstGLRenderbuffer * gl_mem, GstMapInfo * info)
+{
+}
+
+static GstMemory *
+_gl_rbo_copy (GstGLRenderbuffer * src, gssize offset, gssize size)
+{
+  GST_CAT_WARNING (GST_CAT_GL_RENDERBUFFER, "Renderbuffer's cannot be copied");
+
+  return NULL;
+}
+
+static GstMemory *
+_gl_rbo_alloc (GstAllocator * allocator, gsize size,
+    GstAllocationParams * params)
+{
+  g_warning ("Use gst_gl_base_memory_alloc to allocate from this allocator");
+
+  return NULL;
+}
+
+static void
+_gl_rbo_destroy (GstGLRenderbuffer * gl_mem)
+{
+  const GstGLFuncs *gl = gl_mem->mem.context->gl_vtable;
+
+  if (gl_mem->renderbuffer_id && !gl_mem->renderbuffer_wrapped)
+    gl->DeleteRenderbuffers (1, &gl_mem->renderbuffer_id);
+}
+
+static GstGLRenderbuffer *
+_default_gl_rbo_alloc (GstGLRenderbufferAllocator * allocator,
+    GstGLRenderbufferAllocationParams * params)
+{
+  guint alloc_flags = params->parent.alloc_flags;
+  GstGLRenderbuffer *mem;
+
+  g_return_val_if_fail ((alloc_flags &
+          GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_SYSMEM) == 0, NULL);
+
+  mem = g_new0 (GstGLRenderbuffer, 1);
+
+  if (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) {
+    mem->renderbuffer_id = GPOINTER_TO_UINT (params->parent.gl_handle);
+    mem->renderbuffer_wrapped = TRUE;
+  }
+
+  gst_gl_renderbuffer_init (mem, GST_ALLOCATOR_CAST (allocator), NULL,
+      params->parent.context, params->renderbuffer_type,
+      params->parent.alloc_params, params->width, params->height,
+      params->parent.user_data, params->parent.notify);
+
+  return mem;
+}
+
+static void
+gst_gl_renderbuffer_allocator_class_init (GstGLRenderbufferAllocatorClass *
+    klass)
+{
+  GstGLBaseMemoryAllocatorClass *gl_base;
+  GstAllocatorClass *allocator_class;
+
+  gl_base = (GstGLBaseMemoryAllocatorClass *) klass;
+  allocator_class = (GstAllocatorClass *) klass;
+
+  gl_base->alloc =
+      (GstGLBaseMemoryAllocatorAllocFunction) _default_gl_rbo_alloc;
+  gl_base->create = (GstGLBaseMemoryAllocatorCreateFunction) _gl_rbo_create;
+  gl_base->destroy = (GstGLBaseMemoryAllocatorDestroyFunction) _gl_rbo_destroy;
+
+  allocator_class->alloc = _gl_rbo_alloc;
+}
+
+static void
+gst_gl_renderbuffer_allocator_init (GstGLRenderbufferAllocator * allocator)
+{
+  GstAllocator *alloc = GST_ALLOCATOR_CAST (allocator);
+
+  alloc->mem_type = GST_GL_RENDERBUFFER_ALLOCATOR_NAME;
+
+  alloc->mem_map_full = (GstMemoryMapFullFunction) _gl_rbo_map;
+  alloc->mem_unmap_full = (GstMemoryUnmapFullFunction) _gl_rbo_unmap;
+  alloc->mem_copy = (GstMemoryCopyFunction) _gl_rbo_copy;
+
+  GST_OBJECT_FLAG_SET (allocator, GST_ALLOCATOR_FLAG_CUSTOM_ALLOC);
+}
+
+/**
+ * gst_gl_renderbuffer_get_width:
+ * @gl_mem: a #GstGLRenderbuffer
+ *
+ * Returns: the configured width of @gl_mem
+ *
+ * Since: 1.8
+ */
+gint
+gst_gl_renderbuffer_get_width (GstGLRenderbuffer * gl_mem)
+{
+  g_return_val_if_fail (gst_is_gl_renderbuffer ((GstMemory *) gl_mem), 0);
+
+  return gl_mem->width;
+}
+
+/**
+ * gst_gl_renderbuffer_get_height:
+ * @gl_mem: a #GstGLRenderbuffer
+ *
+ * Returns: the configured height of @gl_mem
+ *
+ * Since: 1.8
+ */
+gint
+gst_gl_renderbuffer_get_height (GstGLRenderbuffer * gl_mem)
+{
+  g_return_val_if_fail (gst_is_gl_renderbuffer ((GstMemory *) gl_mem), 0);
+
+  return gl_mem->height;
+}
+
+/**
+ * gst_gl_renderbuffer_get_type:
+ * @gl_mem: a #GstGLRenderbuffer
+ *
+ * Returns: the #GstVideoGLTextureType of @gl_mem
+ *
+ * Since: 1.8
+ */
+GstVideoGLTextureType
+gst_gl_renderbuffer_get_type (GstGLRenderbuffer * gl_mem)
+{
+  g_return_val_if_fail (gst_is_gl_renderbuffer ((GstMemory *) gl_mem), 0);
+
+  return gl_mem->renderbuffer_type;
+}
+
+/**
+ * gst_gl_renderbuffer_get_id:
+ * @gl_mem: a #GstGLRenderbuffer
+ *
+ * Returns: the OpenGL renderbuffer handle of @gl_mem
+ *
+ * Since: 1.8
+ */
+guint
+gst_gl_renderbuffer_get_id (GstGLRenderbuffer * gl_mem)
+{
+  g_return_val_if_fail (gst_is_gl_renderbuffer ((GstMemory *) gl_mem), 0);
+
+  return gl_mem->renderbuffer_id;
+}
+
+/**
+ * gst_gl_renderbuffer_init_once:
+ *
+ * Initializes the GL Base Texture allocator. It is safe to call this function
+ * multiple times.  This must be called before any other GstGLRenderbuffer operation.
+ *
+ * Since: 1.4
+ */
+void
+gst_gl_renderbuffer_init_once (void)
+{
+  static volatile gsize _init = 0;
+
+  if (g_once_init_enter (&_init)) {
+    gst_gl_base_memory_init_once ();
+
+    GST_DEBUG_CATEGORY_INIT (GST_CAT_GL_RENDERBUFFER, "glrenderbuffermemory", 0,
+        "OpenGL Renderbuffer memory");
+
+    _gl_renderbuffer_allocator =
+        g_object_new (GST_TYPE_GL_RENDERBUFFER_ALLOCATOR, NULL);
+    GST_OBJECT_FLAG_SET (_gl_renderbuffer_allocator,
+        GST_OBJECT_FLAG_MAY_BE_LEAKED);
+
+    gst_allocator_register (GST_GL_RENDERBUFFER_ALLOCATOR_NAME,
+        _gl_renderbuffer_allocator);
+
+    g_once_init_leave (&_init, 1);
+  }
+}
+
+/**
+ * gst_is_gl_renderbuffer:
+ * @mem:a #GstMemory
+ * 
+ * Returns: whether the memory at @mem is a #GstGLRenderbuffer
+ *
+ * Since: 1.10
+ */
+gboolean
+gst_is_gl_renderbuffer (GstMemory * mem)
+{
+  return mem != NULL && mem->allocator != NULL
+      && g_type_is_a (G_OBJECT_TYPE (mem->allocator),
+      GST_TYPE_GL_RENDERBUFFER_ALLOCATOR);
+}
+
+static void
+_gst_gl_rb_alloc_params_free_data (GstGLRenderbufferAllocationParams * params)
+{
+  gst_gl_allocation_params_free_data (&params->parent);
+}
+
+static void
+_gst_gl_rb_alloc_params_copy_data (GstGLRenderbufferAllocationParams * src_vid,
+    GstGLRenderbufferAllocationParams * dest_vid)
+{
+  GstGLAllocationParams *src = (GstGLAllocationParams *) src_vid;
+  GstGLAllocationParams *dest = (GstGLAllocationParams *) dest_vid;
+
+  gst_gl_allocation_params_copy_data (src, dest);
+
+  dest_vid->renderbuffer_type = src_vid->renderbuffer_type;
+  dest_vid->width = src_vid->width;
+  dest_vid->height = src_vid->height;
+}
+
+static gboolean
+    _gst_gl_renderbuffer_allocation_params_init_full
+    (GstGLRenderbufferAllocationParams * params, gsize struct_size,
+    guint alloc_flags, GstGLAllocationParamsCopyFunc copy,
+    GstGLAllocationParamsFreeFunc free, GstGLContext * context,
+    GstAllocationParams * alloc_params, guint width, guint height,
+    GstVideoGLTextureType renderbuffer_type, gpointer wrapped_data,
+    gpointer gl_handle, gpointer user_data, GDestroyNotify notify)
+{
+  g_return_val_if_fail (params != NULL, FALSE);
+  g_return_val_if_fail (copy != NULL, FALSE);
+  g_return_val_if_fail (free != NULL, FALSE);
+  g_return_val_if_fail (GST_IS_GL_CONTEXT (context), FALSE);
+
+  memset (params, 0, sizeof (*params));
+
+  if (!gst_gl_allocation_params_init ((GstGLAllocationParams *) params,
+          struct_size, alloc_flags, copy, free, context, 0, alloc_params,
+          wrapped_data, gl_handle, user_data, notify))
+    return FALSE;
+
+  params->renderbuffer_type = renderbuffer_type;
+  params->width = width;
+  params->height = height;
+
+  return TRUE;
+}
+
+/**
+ * gst_gl_renderbuffer_allocation_params_new:
+ * @context: a #GstGLContext
+ * @alloc_params: (allow-none): the #GstAllocationParams for sysmem mappings of the texture
+ * @width: the width of the renderbuffer
+ * @height: the height of the renderbuffer
+ * @renderbuffer_type: the #GstVideoGLTextureType for the created textures
+ *
+ * Returns: a new #GstGLRenderbufferAllocationParams for allocating #GstGLRenderbuffer's
+ *
+ * Since: 1.10
+ */
+GstGLRenderbufferAllocationParams *
+gst_gl_renderbuffer_allocation_params_new (GstGLContext * context,
+    GstAllocationParams * alloc_params, GstVideoGLTextureType renderbuffer_type,
+    guint width, guint height)
+{
+  GstGLRenderbufferAllocationParams *params =
+      g_new0 (GstGLRenderbufferAllocationParams, 1);
+
+  if (!_gst_gl_renderbuffer_allocation_params_init_full (params,
+          sizeof (GstGLRenderbufferAllocationParams),
+          GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_ALLOC |
+          GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_VIDEO,
+          (GstGLAllocationParamsCopyFunc) _gst_gl_rb_alloc_params_copy_data,
+          (GstGLAllocationParamsFreeFunc) _gst_gl_rb_alloc_params_free_data,
+          context, alloc_params, width, height, renderbuffer_type, NULL, 0,
+          NULL, NULL)) {
+    g_free (params);
+    return NULL;
+  }
+
+  return params;
+}
+
+/**
+ * gst_gl_renderbuffer_allocation_params_new_wrapped:
+ * @context: a #GstGLContext
+ * @alloc_params: (allow-none): the #GstAllocationParams for @tex_id
+ * @width: the width of the renderbuffer
+ * @height: the height of the renderbuffer
+ * @renderbuffer_type: the #GstVideoGLTextureType for @tex_id
+ * @gl_handle: the GL handle to wrap
+ * @user_data: (allow-none): user data to call @notify with
+ * @notify: (allow-none): a #GDestroyNotify
+ *
+ * Returns: a new #GstGLRenderbufferAllocationParams for wrapping @gl_handle as a
+ *          renderbuffer
+ *
+ * Since: 1.10
+ */
+GstGLRenderbufferAllocationParams *
+gst_gl_renderbuffer_allocation_params_new_wrapped (GstGLContext * context,
+    GstAllocationParams * alloc_params, GstVideoGLTextureType renderbuffer_type,
+    guint width, guint height, gpointer gl_handle, gpointer user_data,
+    GDestroyNotify notify)
+{
+  GstGLRenderbufferAllocationParams *params =
+      g_new0 (GstGLRenderbufferAllocationParams, 1);
+
+  if (!_gst_gl_renderbuffer_allocation_params_init_full (params,
+          sizeof (GstGLRenderbufferAllocationParams),
+          GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE |
+          GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_VIDEO,
+          (GstGLAllocationParamsCopyFunc) _gst_gl_rb_alloc_params_copy_data,
+          (GstGLAllocationParamsFreeFunc) _gst_gl_rb_alloc_params_free_data,
+          context, alloc_params, width, height, renderbuffer_type, NULL,
+          gl_handle, user_data, notify)) {
+    g_free (params);
+    return NULL;
+  }
+
+  return params;
+}
diff --git a/gst-libs/gst/gl/gstglrenderbuffer.h b/gst-libs/gst/gl/gstglrenderbuffer.h
new file mode 100644
index 0000000..5a9a1c0
--- /dev/null
+++ b/gst-libs/gst/gl/gstglrenderbuffer.h
@@ -0,0 +1,143 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _GST_GL_RENDERBUFFER_H_
+#define _GST_GL_RENDERBUFFER_H_
+
+#include <gst/gst.h>
+#include <gst/gstallocator.h>
+#include <gst/gstmemory.h>
+
+#include <gst/gl/gstglbasememory.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_GL_RENDERBUFFER_ALLOCATOR (gst_gl_renderbuffer_allocator_get_type())
+GType gst_gl_renderbuffer_allocator_get_type(void);
+
+#define GST_IS_GL_RENDERBUFFER_ALLOCATOR(obj)              (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_GL_RENDERBUFFER_ALLOCATOR))
+#define GST_IS_GL_RENDERBUFFER_ALLOCATOR_CLASS(klass)      (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_GL_RENDERBUFFER_ALLOCATOR))
+#define GST_GL_RENDERBUFFER_ALLOCATOR_GET_CLASS(obj)       (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_GL_RENDERBUFFER_ALLOCATOR, GstGLRenderbufferAllocatorClass))
+#define GST_GL_RENDERBUFFER_ALLOCATOR(obj)                 (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_GL_RENDERBUFFER_ALLOCATOR, GstGLRenderbufferAllocator))
+#define GST_GL_RENDERBUFFER_ALLOCATOR_CLASS(klass)         (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_GL_RENDERBUFFER_ALLOCATOR, GstGLRenderbufferAllocatorClass))
+#define GST_GL_RENDERBUFFER_ALLOCATOR_CAST(obj)            ((GstGLRenderbufferAllocator *)(obj))
+
+#define GST_GL_RENDERBUFFER_CAST(obj) ((GstGLRenderbuffer *) obj)
+
+/**
+ * GST_GL_RENDERBUFFER_ALLOCATOR_NAME:
+ *
+ * The name of the GL renderbuffer allocator
+ */
+#define GST_GL_RENDERBUFFER_ALLOCATOR_NAME   "GLRenderbuffer"
+
+/**
+ * GstGLRenderbuffer:
+ * @mem: the parent object
+ * @renderbuffer_id: the GL texture id for this memory
+ * @renderbuffer_type: the texture type
+ * @width: the width
+ * @height: the height
+ *
+ * Represents information about a GL renderbuffer
+ */
+struct _GstGLRenderbuffer
+{
+  GstGLBaseMemory           mem;
+
+  guint                     renderbuffer_id;
+  GstVideoGLTextureType     renderbuffer_type;
+  guint                     width;
+  guint                     height;
+
+  /* <protected> */
+  gboolean                  renderbuffer_wrapped;
+
+  /* <private> */
+  gpointer                  _padding[GST_PADDING];
+};
+
+/**
+ * GstGLRenderbufferAllocator
+ *
+ * Opaque #GstGLRenderbufferAllocator struct
+ */
+struct _GstGLRenderbufferAllocator
+{
+  GstGLBaseMemoryAllocator parent;
+
+  /* <private> */
+  gpointer                  _padding[GST_PADDING];
+};
+
+/**
+ * GstGLRenderbufferAllocatorClass:
+ *
+ * The #GstGLRenderbufferAllocatorClass only contains private data
+ */
+struct _GstGLRenderbufferAllocatorClass
+{
+  GstGLBaseMemoryAllocatorClass             parent_class;
+
+  /* <private> */
+  gpointer                  _padding[GST_PADDING];
+};
+
+#include <gst/gl/gstglbasememory.h>
+
+typedef struct
+{
+  GstGLAllocationParams parent;
+
+  GstVideoGLTextureType renderbuffer_type;
+  guint width;
+  guint height;
+
+  /* <private> */
+  gpointer _padding[GST_PADDING];
+} GstGLRenderbufferAllocationParams;
+
+GstGLRenderbufferAllocationParams *     gst_gl_renderbuffer_allocation_params_new           (GstGLContext * context,
+                                                                                             GstAllocationParams * alloc_params,
+                                                                                             GstVideoGLTextureType renderbuffer_type,
+                                                                                             guint width,
+                                                                                             guint height);
+
+GstGLRenderbufferAllocationParams *     gst_gl_renderbuffer_allocation_params_new_wrapped   (GstGLContext * context,
+                                                                                             GstAllocationParams * alloc_params,
+                                                                                             GstVideoGLTextureType renderbuffer_type,
+                                                                                             guint width,
+                                                                                             guint height,
+                                                                                             gpointer gl_handle,
+                                                                                             gpointer user_data,
+                                                                                             GDestroyNotify notify);
+
+void            gst_gl_renderbuffer_init_once   (void);
+gboolean        gst_is_gl_renderbuffer          (GstMemory * mem);
+
+/* accessors */
+gint                    gst_gl_renderbuffer_get_width     (GstGLRenderbuffer * gl_mem);
+gint                    gst_gl_renderbuffer_get_height    (GstGLRenderbuffer * gl_mem);
+GstVideoGLTextureType   gst_gl_renderbuffer_get_type      (GstGLRenderbuffer * gl_mem);
+guint                   gst_gl_renderbuffer_get_id        (GstGLRenderbuffer * gl_mem);
+
+G_END_DECLS
+
+#endif /* _GST_GL_RENDERBUFFER_H_ */
diff --git a/gst-libs/gst/gl/gstglshader.c b/gst-libs/gst/gl/gstglshader.c
index 9d96784..9f09236 100644
--- a/gst-libs/gst/gl/gstglshader.c
+++ b/gst-libs/gst/gl/gstglshader.c
@@ -1306,3 +1306,23 @@
 
   gl->BindAttribLocation (priv->program_handle, index, name);
 }
+
+void
+gst_gl_shader_bind_frag_data_location (GstGLShader * shader,
+    guint index, const gchar * name)
+{
+  GstGLShaderPrivate *priv;
+  GstGLFuncs *gl;
+
+  g_return_if_fail (shader != NULL);
+  if (!_ensure_program (shader))
+    g_return_if_fail (shader->priv->program_handle);
+  priv = shader->priv;
+  gl = shader->context->gl_vtable;
+  g_return_if_fail (gl->BindFragDataLocation);
+
+  GST_TRACE_OBJECT (shader, "binding program %i frag data \'%s\' location %i",
+      (int) priv->program_handle, name, index);
+
+  gl->BindFragDataLocation (priv->program_handle, index, name);
+}
diff --git a/gst-libs/gst/gl/gstglshader.h b/gst-libs/gst/gl/gstglshader.h
index 21410e2..2164f21 100644
--- a/gst-libs/gst/gl/gstglshader.h
+++ b/gst-libs/gst/gl/gstglshader.h
@@ -34,12 +34,13 @@
 #define GST_IS_GL_SHADER_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE((k), GST_GL_TYPE_SHADER))
 #define GST_GL_SHADER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS((o), GST_GL_TYPE_SHADER, GstGLShaderClass))
 
-struct _GstGLShader {
-  /*< private >*/
+struct _GstGLShader
+{
   GstObject parent;
 
   GstGLContext *context;
 
+  /*< private >*/
   GstGLShaderPrivate *priv;
 
   gpointer _padding[GST_PADDING];
@@ -104,6 +105,7 @@
 
 gint gst_gl_shader_get_attribute_location  (GstGLShader *shader, const gchar *name);
 void gst_gl_shader_bind_attribute_location (GstGLShader * shader, guint index, const gchar * name);
+void gst_gl_shader_bind_frag_data_location (GstGLShader * shader, guint index, const gchar * name);
 
 G_END_DECLS
 
diff --git a/gst-libs/gst/gl/gstglshaderstrings.c b/gst-libs/gst/gl/gstglshaderstrings.c
index 729be6f..e6bf5f3 100644
--- a/gst-libs/gst/gl/gstglshaderstrings.c
+++ b/gst-libs/gst/gl/gstglshaderstrings.c
@@ -46,6 +46,17 @@
     "   v_texcoord = (u_transformation * vec4(a_texcoord, 0, 1)).xy;\n"
     "}\n";
 
+const gchar *gst_gl_shader_string_vertex_mat4_vertex_transform =
+    "uniform mat4 u_transformation;\n"
+    "attribute vec4 a_position;\n"
+    "attribute vec2 a_texcoord;\n"
+    "varying vec2 v_texcoord;\n"
+    "void main()\n"
+    "{\n"
+    "   gl_Position = u_transformation * a_position;\n"
+    "   v_texcoord = a_texcoord;\n"
+    "}\n";
+
 const gchar *gst_gl_shader_string_fragment_default =
     "#ifdef GL_ES\n"
     "precision mediump float;\n"
diff --git a/gst-libs/gst/gl/gstglshaderstrings.h b/gst-libs/gst/gl/gstglshaderstrings.h
index 49ea8de..89d88b0 100644
--- a/gst-libs/gst/gl/gstglshaderstrings.h
+++ b/gst-libs/gst/gl/gstglshaderstrings.h
@@ -29,6 +29,7 @@
 extern const gchar *gst_gl_shader_string_fragment_default;
 
 extern const gchar *gst_gl_shader_string_vertex_mat4_texture_transform;
+extern const gchar *gst_gl_shader_string_vertex_mat4_vertex_transform;
 extern const gchar *gst_gl_shader_string_fragment_external_oes_default;
 
 G_END_DECLS
diff --git a/gst-libs/gst/gl/gstglsl.c b/gst-libs/gst/gl/gstglsl.c
index 5074552..e3fe9c5 100644
--- a/gst-libs/gst/gl/gstglsl.c
+++ b/gst-libs/gst/gl/gstglsl.c
@@ -33,6 +33,21 @@
  * @see_also: #GstGLSLStage, #GstGLShader
  */
 
+#define GST_CAT_DEFAULT gst_glsl_debug
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
+
+static void
+_init_debug (void)
+{
+  static volatile gsize _init = 0;
+
+  if (g_once_init_enter (&_init)) {
+    GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "glsl", 0,
+        "OpenGL Shading Language");
+    g_once_init_leave (&_init, 1);
+  }
+}
+
 GQuark
 gst_glsl_error_quark (void)
 {
@@ -255,6 +270,8 @@
   GstGLSLProfile profile = GST_GLSL_PROFILE_NONE;
   gint i;
 
+  _init_debug ();
+
   if (!string)
     goto error;
 
@@ -265,6 +282,7 @@
   if (str[0] == '#') {
     if (!(version_s =
             (gchar *) _check_valid_version_preprocessor_string (version_s))) {
+      GST_WARNING ("Invalid preprocesser directive detected: %s", version_s);
       g_free (str);
       goto error;
     }
@@ -277,6 +295,8 @@
     i++;
   /* wrong version length */
   if (i != 3) {
+    GST_WARNING ("version number has the wrong number of digits: %s",
+        version_s);
     g_free (str);
     goto error;
   }
@@ -293,13 +313,24 @@
   g_free (str);
 
   /* check whether the parsed data is valid */
-  if (!version)
+  if (!version) {
+    GST_WARNING ("Could not map the version number to a valid GLSL version:");
     goto error;
-  if (!_is_valid_version_profile (version, profile))
+  }
+  if (!_is_valid_version_profile (version, profile)) {
+    GST_WARNING ("Invalid version/profile combination specified: %s %s",
+        gst_glsl_version_to_string (version),
+        gst_glsl_profile_to_string (profile));
     goto error;
+  }
   /* got a profile when none was expected */
-  if (version <= GST_GLSL_VERSION_150 && profile != GST_GLSL_PROFILE_NONE)
+  if (version <= GST_GLSL_VERSION_150 && profile != GST_GLSL_PROFILE_NONE) {
+    GST_WARNING
+        ("Found a profile (%s) with a version (%s) that does not support "
+        "profiles", gst_glsl_version_to_string (version),
+        gst_glsl_profile_to_string (profile));
     goto error;
+  }
 
   _fixup_version_profile (&version, &profile);
 
@@ -329,6 +360,8 @@
   gboolean newline = TRUE;
   gint i = 0;
 
+  _init_debug ();
+
   /* search for #version while allowing for preceeding comments/whitespace as
    * permitted by the GLSL specification */
   while (str && str[i] != '\0' && i < 1024) {
@@ -366,8 +399,10 @@
     }
 
     if (str[i] == '#') {
-      if (newline && _check_valid_version_preprocessor_string (&str[i]))
+      if (newline && _check_valid_version_preprocessor_string (&str[i])) {
+        GST_DEBUG ("found #version declaration at index %i", i);
         return &str[i];
+      }
       break;
     }
 
@@ -376,6 +411,8 @@
     i++;
   }
 
+  GST_DEBUG ("no #version declaration found in the first 1K");
+
   return NULL;
 }
 
@@ -410,6 +447,8 @@
 {
   g_return_val_if_fail (gl_api != GST_GL_API_NONE, 0);
 
+  _init_debug ();
+
   if (gl_api & GST_GL_API_GLES2) {
     if (maj == 2 && min == 0)
       return 100;
@@ -417,6 +456,7 @@
     if (maj == 3 && min >= 0 && min <= 2)
       return maj * 100 + min * 10;
 
+    GST_WARNING ("unknown GLES version");
     return 0;
   }
 
@@ -436,9 +476,11 @@
     if (maj == 2 && min == 0)
       return 110;
 
+    GST_WARNING ("unknown GL version");
     return 0;
   }
 
+  GST_WARNING ("unknown GL API");
   return 0;
 }
 
@@ -551,3 +593,269 @@
   vtable->initialized = TRUE;
   return TRUE;
 }
+
+static gchar *
+_mangle_external_image_extension (const gchar * str, GstGLContext * context,
+    GstGLTextureTarget from, GstGLTextureTarget to, GstGLSLVersion version,
+    GstGLSLProfile profile)
+{
+  GST_DEBUG ("is oes? %d, profile == ES? %d, version >= 300? %d, "
+      "have essl3? %d", to == GST_GL_TEXTURE_TARGET_EXTERNAL_OES,
+      profile == GST_GLSL_PROFILE_ES, version >= GST_GLSL_VERSION_300,
+      gst_gl_context_check_feature (context,
+          "GL_OES_EGL_image_external_essl3"));
+
+  /* replace GL_OES_EGL_image_external with GL_OES_EGL_image_external_essl3 where supported */
+  if (to == GST_GL_TEXTURE_TARGET_EXTERNAL_OES && profile == GST_GLSL_PROFILE_ES
+      && version >= GST_GLSL_VERSION_300) {
+    if (gst_gl_context_check_feature (context,
+            "GL_OES_EGL_image_external_essl3")) {
+      GRegex *regex = g_regex_new (
+          /* '#extension ' with optional spacing */
+          "(#[ \\t]*extension[ \\t]+)"
+          /* what we're looking to replace */
+          "GL_OES_EGL_image_external"
+          /* ':' with optional spacing */
+          "([ \\t]*:[ \\t]*"
+          /* some word like require, disable, etc followed by spacing and a newline */
+          "\\S+[ \\t]*\\R)",
+          0, 0, NULL);
+      gchar *tmp = g_regex_replace (regex, str, -1, 0,
+          "\\1GL_OES_EGL_image_external_essl3\\2", 0, NULL);
+      g_regex_unref (regex);
+      return tmp;
+    } else {
+      GST_FIXME ("Undefined situation detected. GLES3 supported but "
+          "GL_OES_EGL_image_external_essl3 not supported.  Falling back to the "
+          "older GL_OES_EGL_image_external extension");
+      return g_strdup (str);
+    }
+  } else {
+    return g_strdup (str);
+  }
+}
+
+static gchar *
+_mangle_texture_access (const gchar * str, GstGLContext * context,
+    GstGLTextureTarget from, GstGLTextureTarget to, GstGLSLVersion version,
+    GstGLSLProfile profile)
+{
+  const gchar *from_str = NULL, *to_str = NULL;
+  gchar *ret, *tmp;
+  gchar *regex_find;
+  GRegex *regex;
+
+  if (from == GST_GL_TEXTURE_TARGET_2D)
+    from_str = "texture2D";
+  if (from == GST_GL_TEXTURE_TARGET_RECTANGLE)
+    from_str = "texture2DRect";
+  if (from == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
+    from_str = "texture2D";
+
+  /* GL3 || gles3 but not when external-oes unless the image_external_essl3 extension is supported */
+  if (profile == GST_GLSL_PROFILE_CORE || (profile == GST_GLSL_PROFILE_ES
+          && version >= GST_GLSL_VERSION_300
+          && (to != GST_GL_TEXTURE_TARGET_EXTERNAL_OES
+              || gst_gl_context_check_feature (context,
+                  "GL_OES_EGL_image_external_essl3")))) {
+    to_str = "texture";
+  } else {
+    if (to == GST_GL_TEXTURE_TARGET_2D)
+      to_str = "texture2D";
+    if (to == GST_GL_TEXTURE_TARGET_RECTANGLE)
+      to_str = "texture2DRect";
+    if (to == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
+      to_str = "texture2D";
+  }
+
+  /* followed by any amount of whitespace then a bracket */
+  regex_find = g_strdup_printf ("%s(?=\\s*\\()", from_str);
+  regex = g_regex_new (regex_find, 0, 0, NULL);
+  tmp = g_regex_replace_literal (regex, str, -1, 0, to_str, 0, NULL);
+  g_free (regex_find);
+  g_regex_unref (regex);
+
+  if (tmp) {
+    ret = tmp;
+  } else {
+    GST_FIXME ("Couldn't mangle texture access successfully from %s to %s",
+        from_str, to_str);
+    ret = g_strdup (str);
+  }
+
+  return ret;
+}
+
+static gchar *
+_mangle_sampler_type (const gchar * str, GstGLTextureTarget from,
+    GstGLTextureTarget to)
+{
+  const gchar *from_str = NULL, *to_str = NULL;
+  gchar *ret, *tmp;
+  gchar *regex_find;
+  GRegex *regex;
+
+  if (from == GST_GL_TEXTURE_TARGET_2D)
+    from_str = "sampler2D";
+  if (from == GST_GL_TEXTURE_TARGET_RECTANGLE)
+    from_str = "sampler2DRect";
+  if (from == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
+    from_str = "samplerExternalOES";
+
+  if (to == GST_GL_TEXTURE_TARGET_2D)
+    to_str = "sampler2D";
+  if (to == GST_GL_TEXTURE_TARGET_RECTANGLE)
+    to_str = "sampler2DRect";
+  if (to == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
+    to_str = "samplerExternalOES";
+
+  /* followed by some whitespace  */
+  regex_find = g_strdup_printf ("%s(?=\\s)", from_str);
+  regex = g_regex_new (regex_find, 0, 0, NULL);
+  tmp = g_regex_replace_literal (regex, str, -1, 0, to_str, 0, NULL);
+  g_free (regex_find);
+  g_regex_unref (regex);
+
+  if (tmp) {
+    ret = tmp;
+  } else {
+    GST_FIXME ("Couldn't mangle sampler type successfully from %s to %s",
+        from_str, to_str);
+    ret = g_strdup (str);
+  }
+
+  return ret;
+}
+
+static gchar *
+_mangle_varying_attribute (const gchar * str, guint shader_type,
+    GstGLSLVersion version, GstGLSLProfile profile)
+{
+  if (shader_type == GL_VERTEX_SHADER) {
+    if (profile == GST_GLSL_PROFILE_CORE || (profile == GST_GLSL_PROFILE_ES
+            && version >= GST_GLSL_VERSION_300)) {
+      gchar *tmp, *tmp2;
+      GRegex *regex;
+
+      /* followed by some whitespace  */
+      regex = g_regex_new ("varying(?=\\s)", 0, 0, NULL);
+      tmp = g_regex_replace_literal (regex, str, -1, 0, "out", 0, NULL);
+      g_regex_unref (regex);
+
+      /* followed by some whitespace  */
+      regex = g_regex_new ("attribute(?=\\s)", 0, 0, NULL);
+      tmp2 = g_regex_replace_literal (regex, tmp, -1, 0, "in", 0, NULL);
+      g_regex_unref (regex);
+
+      g_free (tmp);
+      return tmp2;
+    }
+  } else if (shader_type == GL_FRAGMENT_SHADER) {
+    if (profile == GST_GLSL_PROFILE_CORE || (profile == GST_GLSL_PROFILE_ES
+            && version >= GST_GLSL_VERSION_300)) {
+      gchar *tmp;
+      GRegex *regex;
+
+      /* followed by some whitespace  */
+      regex = g_regex_new ("varying(?=\\s)", 0, 0, NULL);
+      tmp = g_regex_replace_literal (regex, str, -1, 0, "in", 0, NULL);
+      g_regex_unref (regex);
+
+      return tmp;
+    }
+  }
+  return g_strdup (str);
+}
+
+static gchar *
+_mangle_frag_color_data (const gchar * str)
+{
+  GRegex *regex;
+  gchar *ret, *tmp;
+
+  regex = g_regex_new ("gl_FragColor", 0, 0, NULL);
+  ret = g_regex_replace_literal (regex, str, -1, 0, "fragColor", 0, NULL);
+  g_regex_unref (regex);
+
+  tmp = ret;
+  /* search and replace 'gl_FragData[NUM]' into fragColor_NUM */
+  regex = g_regex_new ("gl_FragData\\[(\\d+)\\]", 0, 0, NULL);
+  ret = g_regex_replace (regex, tmp, -1, 0, "fragColor_\\1", 0, NULL);
+  g_regex_unref (regex);
+  g_free (tmp);
+
+  return ret;
+}
+
+static void
+_mangle_version_profile_from_gl_api (GstGLContext * context,
+    GstGLTextureTarget from, GstGLTextureTarget to, GstGLSLVersion * version,
+    GstGLSLProfile * profile)
+{
+  GstGLAPI gl_api;
+  gint gl_major, gl_minor;
+
+  gl_api = gst_gl_context_get_gl_api (context);
+  gst_gl_context_get_gl_version (context, &gl_major, &gl_minor);
+
+  *version = GST_GLSL_VERSION_NONE;
+  *profile = GST_GLSL_PROFILE_NONE;
+
+  if (gl_api & GST_GL_API_OPENGL3) {
+    if (gl_major > 3 || gl_minor >= 3) {
+      *version = GST_GLSL_VERSION_330;
+      *profile = GST_GLSL_PROFILE_CORE;
+    } else {
+      *version = GST_GLSL_VERSION_150;
+      *profile = GST_GLSL_PROFILE_NONE;
+    }
+  } else if (gl_api & GST_GL_API_GLES2) {
+    /* We don't know which texture function to use if we have GLES3 and
+     * don't have the essl3 extension */
+    if (gl_major >= 3 && (to != GST_GL_TEXTURE_TARGET_EXTERNAL_OES
+            || gst_gl_context_check_feature (context,
+                "GL_OES_EGL_image_external_essl3"))) {
+      *version = GST_GLSL_VERSION_300;
+      *profile = GST_GLSL_PROFILE_ES;
+    } else if (gl_major >= 2) {
+      *version = GST_GLSL_VERSION_100;
+      *profile = GST_GLSL_PROFILE_ES;
+    }
+  } else if (gl_api & GST_GL_API_OPENGL) {
+    *version = GST_GLSL_VERSION_110;
+    *profile = GST_GLSL_PROFILE_COMPATIBILITY;
+  }
+}
+
+gchar *
+_gst_glsl_mangle_shader (const gchar * str, guint shader_type,
+    GstGLTextureTarget from, GstGLTextureTarget to, GstGLContext * context,
+    GstGLSLVersion * version, GstGLSLProfile * profile)
+{
+  gchar *tmp, *tmp2;
+
+  _init_debug ();
+
+  g_return_val_if_fail (GST_IS_GL_CONTEXT (context), NULL);
+
+  _mangle_version_profile_from_gl_api (context, from, to, version, profile);
+  tmp2 =
+      _mangle_external_image_extension (str, context, from, to, *version,
+      *profile);
+  tmp = _mangle_texture_access (tmp2, context, from, to, *version, *profile);
+  g_free (tmp2);
+  tmp2 = _mangle_sampler_type (tmp, from, to);
+  g_free (tmp);
+  tmp = _mangle_varying_attribute (tmp2, shader_type, *version, *profile);
+  g_free (tmp2);
+  if (shader_type == GL_FRAGMENT_SHADER) {
+    if ((*profile == GST_GLSL_PROFILE_ES && *version >= GST_GLSL_VERSION_300)
+        || (*profile == GST_GLSL_PROFILE_CORE
+            && *version >= GST_GLSL_VERSION_150)) {
+      tmp2 = _mangle_frag_color_data (tmp);
+      g_free (tmp);
+      tmp = tmp2;
+    }
+  }
+  return tmp;
+}
diff --git a/gst-libs/gst/gl/gstglsl_private.h b/gst-libs/gst/gl/gstglsl_private.h
index c1be677..755170d 100644
--- a/gst-libs/gst/gl/gstglsl_private.h
+++ b/gst-libs/gst/gl/gstglsl_private.h
@@ -58,6 +58,10 @@
 G_GNUC_INTERNAL gboolean _gst_glsl_funcs_fill (GstGLSLFuncs * vtable, GstGLContext * context);
 G_GNUC_INTERNAL const gchar * _gst_glsl_shader_string_find_version (const gchar * str);
 
+G_GNUC_INTERNAL gchar *
+_gst_glsl_mangle_shader (const gchar * str, guint shader_type, GstGLTextureTarget from,
+    GstGLTextureTarget to, GstGLContext * context, GstGLSLVersion * version, GstGLSLProfile * profile);
+
 G_END_DECLS
 
 #endif /* __GST_GLSL_PRIVATE_H__ */
diff --git a/gst-libs/gst/gl/gstglslstage.h b/gst-libs/gst/gl/gstglslstage.h
index 31dcbec..3521e22 100644
--- a/gst-libs/gst/gl/gstglslstage.h
+++ b/gst-libs/gst/gl/gstglslstage.h
@@ -39,11 +39,11 @@
  */
 struct _GstGLSLStage
 {
-  /*< private >*/
   GstObject parent;
 
   GstGLContext *context;
 
+  /*< private >*/
   GstGLSLStagePrivate *priv;
 
   gpointer _padding[GST_PADDING];
@@ -56,8 +56,10 @@
  */
 struct _GstGLSLStageClass
 {
-  /*< private >*/
   GstObjectClass parent;
+
+  /* <private> */
+  gpointer _padding[GST_PADDING];
 };
 
 GType          gst_glsl_stage_get_type          (void);
diff --git a/gst-libs/gst/gl/gstglupload.c b/gst-libs/gst/gl/gstglupload.c
index 32e6150..bfa5f22 100644
--- a/gst-libs/gst/gl/gstglupload.c
+++ b/gst-libs/gst/gl/gstglupload.c
@@ -28,7 +28,7 @@
 #include "gstglupload.h"
 
 #if GST_GL_HAVE_PLATFORM_EGL
-#include "egl/gsteglimagememory.h"
+#include "egl/gstglmemoryegl.h"
 #endif
 
 #if GST_GL_HAVE_DMABUF
@@ -189,7 +189,7 @@
   GstStaticCaps *input_template_caps;
 
     gpointer (*new) (GstGLUpload * upload);
-  GstCaps *(*transform_caps) (GstGLContext * context,
+  GstCaps *(*transform_caps) (gpointer impl, GstGLContext * context,
       GstPadDirection direction, GstCaps * caps);
     gboolean (*accept) (gpointer impl, GstBuffer * buffer, GstCaps * in_caps,
       GstCaps * out_caps);
@@ -203,6 +203,8 @@
 struct GLMemoryUpload
 {
   GstGLUpload *upload;
+  GstGLTextureTarget input_target;
+  GstGLTextureTarget output_target;
 };
 
 static gpointer
@@ -211,14 +213,17 @@
   struct GLMemoryUpload *mem = g_new0 (struct GLMemoryUpload, 1);
 
   mem->upload = upload;
+  mem->input_target = GST_GL_TEXTURE_TARGET_NONE;
+  mem->output_target = GST_GL_TEXTURE_TARGET_NONE;
 
   return mem;
 }
 
 static GstCaps *
-_gl_memory_upload_transform_caps (GstGLContext * context,
+_gl_memory_upload_transform_caps (gpointer impl, GstGLContext * context,
     GstPadDirection direction, GstCaps * caps)
 {
+  struct GLMemoryUpload *upload = impl;
   GstCapsFeatures *passthrough =
       gst_caps_features_from_string
       (GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION);
@@ -231,12 +236,17 @@
   gst_caps_features_free (passthrough);
 
   if (direction == GST_PAD_SINK) {
-    GstGLTextureTarget target_mask = 0;
     GstCaps *tmp;
+    GstGLTextureTarget target_mask;
 
-    target_mask |= 1 << GST_GL_TEXTURE_TARGET_2D;
-    target_mask |= 1 << GST_GL_TEXTURE_TARGET_RECTANGLE;
-    target_mask |= 1 << GST_GL_TEXTURE_TARGET_EXTERNAL_OES;
+    if (upload->input_target != GST_GL_TEXTURE_TARGET_NONE) {
+      target_mask = 1 << upload->input_target;
+    } else {
+      target_mask = 1 << GST_GL_TEXTURE_TARGET_2D |
+          1 << GST_GL_TEXTURE_TARGET_RECTANGLE |
+          1 << GST_GL_TEXTURE_TARGET_EXTERNAL_OES;
+    }
+
     tmp = _caps_intersect_texture_target (ret, target_mask);
     gst_caps_unref (ret);
     ret = tmp;
@@ -319,6 +329,17 @@
             upload->context));
     gst_query_add_allocation_param (query, allocator, &params);
     gst_object_unref (allocator);
+
+#if GST_GL_HAVE_PLATFORM_EGL
+    if (upload->upload->context
+        && gst_gl_context_get_gl_platform (upload->upload->context) ==
+        GST_GL_PLATFORM_EGL) {
+      allocator =
+          GST_ALLOCATOR (gst_allocator_find (GST_GL_MEMORY_EGL_ALLOCATOR_NAME));
+      gst_query_add_allocation_param (query, allocator, &params);
+      gst_object_unref (allocator);
+    }
+#endif
   }
 
   n_pools = gst_query_get_n_allocation_pools (query);
@@ -401,6 +422,21 @@
             gl_mem->mem.context))
       return GST_GL_UPLOAD_UNSHARED_GL_CONTEXT;
 
+    if (upload->output_target == GST_GL_TEXTURE_TARGET_NONE &&
+        upload->upload->priv->out_caps) {
+      upload->output_target =
+          _caps_get_texture_target (upload->upload->priv->out_caps,
+          GST_GL_TEXTURE_TARGET_NONE);
+    }
+
+    /* always track the last input texture target so ::transform_caps() can
+     * use it to build the output caps */
+    upload->input_target = gl_mem->tex_target;
+    if (upload->output_target != gl_mem->tex_target) {
+      *outbuf = NULL;
+      return GST_GL_UPLOAD_RECONFIGURE;
+    }
+
     if (gst_is_gl_memory_pbo (mem))
       gst_gl_memory_pbo_upload_transfer ((GstGLMemoryPBO *) mem);
   }
@@ -433,231 +469,12 @@
   &_gl_memory_upload_free
 };
 
-#if GST_GL_HAVE_PLATFORM_EGL
-struct EGLImageUpload
-{
-  GstGLUpload *upload;
-  GstBuffer *buffer;
-  GstBuffer **outbuf;
-  GstGLVideoAllocationParams *params;
-};
-
-static gpointer
-_egl_image_upload_new (GstGLUpload * upload)
-{
-  struct EGLImageUpload *image = g_new0 (struct EGLImageUpload, 1);
-
-  image->upload = upload;
-
-  return image;
-}
-
-static GstCaps *
-_egl_image_upload_transform_caps (GstGLContext * context,
-    GstPadDirection direction, GstCaps * caps)
-{
-  GstCapsFeatures *passthrough =
-      gst_caps_features_from_string
-      (GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION);
-  GstCaps *ret;
-
-  if (direction == GST_PAD_SINK) {
-    GstCaps *tmp;
-
-    ret =
-        _set_caps_features_with_passthrough (caps,
-        GST_CAPS_FEATURE_MEMORY_GL_MEMORY, passthrough);
-
-    tmp = _caps_intersect_texture_target (ret, 1 << GST_GL_TEXTURE_TARGET_2D);
-    gst_caps_unref (ret);
-    ret = tmp;
-  } else {
-    gint i, n;
-
-    ret =
-        _set_caps_features_with_passthrough (caps,
-        GST_CAPS_FEATURE_MEMORY_EGL_IMAGE, passthrough);
-    gst_caps_set_simple (ret, "format", G_TYPE_STRING, "RGBA", NULL);
-
-    n = gst_caps_get_size (ret);
-    for (i = 0; i < n; i++) {
-      GstStructure *s = gst_caps_get_structure (ret, i);
-
-      gst_structure_remove_fields (s, "texture-target", NULL);
-    }
-  }
-
-  gst_caps_features_free (passthrough);
-
-  return ret;
-}
-
-static gboolean
-_egl_image_upload_accept (gpointer impl, GstBuffer * buffer, GstCaps * in_caps,
-    GstCaps * out_caps)
-{
-  struct EGLImageUpload *image = impl;
-  GstCapsFeatures *features;
-  gboolean ret = TRUE;
-  int i;
-
-  features = gst_caps_get_features (in_caps, 0);
-  if (!gst_caps_features_contains (features, GST_CAPS_FEATURE_MEMORY_EGL_IMAGE))
-    ret = FALSE;
-
-  features = gst_caps_get_features (out_caps, 0);
-  if (!gst_caps_features_contains (features, GST_CAPS_FEATURE_MEMORY_GL_MEMORY))
-    ret = FALSE;
-
-  if (!ret)
-    return FALSE;
-
-  if (image->params)
-    gst_gl_allocation_params_free ((GstGLAllocationParams *) image->params);
-  if (!(image->params =
-          gst_gl_video_allocation_params_new (image->upload->context, NULL,
-              &image->upload->priv->in_info, -1, NULL,
-              GST_GL_TEXTURE_TARGET_2D)))
-    return FALSE;
-
-  if (buffer) {
-    GstVideoInfo *in_info = &image->upload->priv->in_info;
-    guint expected_memories = GST_VIDEO_INFO_N_PLANES (in_info);
-
-    /* Support stereo views for separated multiview mode */
-    if (GST_VIDEO_INFO_MULTIVIEW_MODE (in_info) ==
-        GST_VIDEO_MULTIVIEW_MODE_SEPARATED)
-      expected_memories *= GST_VIDEO_INFO_VIEWS (in_info);
-
-    if (gst_buffer_n_memory (buffer) != expected_memories)
-      return FALSE;
-
-    for (i = 0; i < expected_memories; i++) {
-      GstMemory *mem = gst_buffer_peek_memory (buffer, i);
-
-      if (!gst_is_egl_image_memory (mem))
-        return FALSE;
-    }
-  }
-
-  return TRUE;
-}
-
-static void
-_egl_image_upload_propose_allocation (gpointer impl, GstQuery * decide_query,
-    GstQuery * query)
-{
-  struct EGLImageUpload *image = impl;
-  GstCaps *caps;
-  GstCapsFeatures *features;
-
-  gst_query_parse_allocation (query, &caps, NULL);
-  features = gst_caps_get_features (caps, 0);
-
-  /* Only offer our custom allocator if that type of memory was negotiated. */
-  if (gst_caps_features_contains (features,
-          GST_CAPS_FEATURE_MEMORY_EGL_IMAGE) &&
-      gst_gl_context_check_feature (image->upload->context,
-          "EGL_KHR_image_base")) {
-    GstAllocationParams params;
-    GstAllocator *allocator;
-
-    gst_allocation_params_init (&params);
-
-    allocator = gst_allocator_find (GST_EGL_IMAGE_MEMORY_TYPE);
-    gst_query_add_allocation_param (query, allocator, &params);
-    gst_object_unref (allocator);
-  }
-}
-
-static void
-_egl_image_upload_perform_gl_thread (GstGLContext * context,
-    struct EGLImageUpload *image)
-{
-  GstGLMemoryAllocator *allocator;
-  guint i, n;
-
-  allocator =
-      GST_GL_MEMORY_ALLOCATOR (gst_allocator_find
-      (GST_GL_MEMORY_PBO_ALLOCATOR_NAME));
-
-  /* FIXME: buffer pool */
-  *image->outbuf = gst_buffer_new ();
-  gst_gl_memory_setup_buffer (allocator, *image->outbuf, image->params);
-  gst_object_unref (allocator);
-
-  n = gst_buffer_n_memory (image->buffer);
-  for (i = 0; i < n; i++) {
-    GstMemory *mem = gst_buffer_peek_memory (image->buffer, i);
-    GstGLMemory *out_gl_mem =
-        (GstGLMemory *) gst_buffer_peek_memory (*image->outbuf, i);
-    const GstGLFuncs *gl = NULL;
-
-    gl = GST_GL_CONTEXT (((GstEGLImageMemory *) mem)->context)->gl_vtable;
-
-    gl->ActiveTexture (GL_TEXTURE0 + i);
-    gl->BindTexture (GL_TEXTURE_2D, out_gl_mem->tex_id);
-    gl->EGLImageTargetTexture2D (GL_TEXTURE_2D,
-        gst_egl_image_memory_get_image (mem));
-  }
-
-  if (GST_IS_GL_BUFFER_POOL (image->buffer->pool))
-    gst_gl_buffer_pool_replace_last_buffer (GST_GL_BUFFER_POOL (image->
-            buffer->pool), image->buffer);
-}
-
-static GstGLUploadReturn
-_egl_image_upload_perform (gpointer impl, GstBuffer * buffer,
-    GstBuffer ** outbuf)
-{
-  struct EGLImageUpload *image = impl;
-
-  image->buffer = buffer;
-  image->outbuf = outbuf;
-
-  gst_gl_context_thread_add (image->upload->context,
-      (GstGLContextThreadFunc) _egl_image_upload_perform_gl_thread, image);
-
-  if (!*image->outbuf)
-    return GST_GL_UPLOAD_ERROR;
-
-  return GST_GL_UPLOAD_DONE;
-}
-
-static void
-_egl_image_upload_free (gpointer impl)
-{
-  struct EGLImageUpload *image = impl;
-
-  if (image->params)
-    gst_gl_allocation_params_free ((GstGLAllocationParams *) image->params);
-
-  g_free (impl);
-}
-
-static GstStaticCaps _egl_image_upload_caps =
-GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE_WITH_FEATURES
-    (GST_CAPS_FEATURE_MEMORY_EGL_IMAGE, "RGBA"));
-
-static const UploadMethod _egl_image_upload = {
-  "EGLImage",
-  0,
-  &_egl_image_upload_caps,
-  &_egl_image_upload_new,
-  &_egl_image_upload_transform_caps,
-  &_egl_image_upload_accept,
-  &_egl_image_upload_propose_allocation,
-  &_egl_image_upload_perform,
-  &_egl_image_upload_free
-};
-#endif /* GST_GL_HAVE_PLATFORM_EGL */
-
 #if GST_GL_HAVE_DMABUF
 struct DmabufUpload
 {
   GstGLUpload *upload;
 
-  GstMemory *eglimage[GST_VIDEO_MAX_PLANES];
+  GstEGLImage *eglimage[GST_VIDEO_MAX_PLANES];
   GstBuffer *outbuf;
   GstGLVideoAllocationParams *params;
 };
@@ -674,7 +491,7 @@
 }
 
 static GstCaps *
-_dma_buf_upload_transform_caps (GstGLContext * context,
+_dma_buf_upload_transform_caps (gpointer impl, GstGLContext * context,
     GstPadDirection direction, GstCaps * caps)
 {
   GstCapsFeatures *passthrough =
@@ -729,7 +546,7 @@
   return quark[plane];
 }
 
-static GstMemory *
+static GstEGLImage *
 _get_cached_eglimage (GstMemory * mem, gint plane)
 {
   return gst_mini_object_get_qdata (GST_MINI_OBJECT (mem),
@@ -737,10 +554,10 @@
 }
 
 static void
-_set_cached_eglimage (GstMemory * mem, GstMemory * eglimage, gint plane)
+_set_cached_eglimage (GstMemory * mem, GstEGLImage * eglimage, gint plane)
 {
   return gst_mini_object_set_qdata (GST_MINI_OBJECT (mem),
-      _eglimage_quark (plane), eglimage, (GDestroyNotify) gst_memory_unref);
+      _eglimage_quark (plane), eglimage, (GDestroyNotify) gst_egl_image_unref);
 }
 
 static gboolean
@@ -790,9 +607,9 @@
   if (dmabuf->params)
     gst_gl_allocation_params_free ((GstGLAllocationParams *) dmabuf->params);
   if (!(dmabuf->params =
-          gst_gl_video_allocation_params_new (dmabuf->upload->context, NULL,
-              &dmabuf->upload->priv->in_info, -1, NULL,
-              GST_GL_TEXTURE_TARGET_2D)))
+          gst_gl_video_allocation_params_new_wrapped_gl_handle (dmabuf->
+              upload->context, NULL, &dmabuf->upload->priv->in_info, -1, NULL,
+              GST_GL_TEXTURE_TARGET_2D, 0, NULL, NULL, NULL)))
     return FALSE;
 
   /* Find and validate all memories */
@@ -826,7 +643,7 @@
 
     /* otherwise create one and cache it */
     dmabuf->eglimage[i] =
-        gst_egl_image_memory_from_dmabuf (dmabuf->upload->context,
+        gst_egl_image_from_dmabuf (dmabuf->upload->context,
         gst_dmabuf_memory_get_fd (mems[i]), in_info, i, mems_skip[i]);
 
     if (!dmabuf->eglimage[i])
@@ -850,35 +667,16 @@
     struct DmabufUpload *dmabuf)
 {
   GstGLMemoryAllocator *allocator;
-  guint i, n;
 
   allocator =
       GST_GL_MEMORY_ALLOCATOR (gst_allocator_find
-      (GST_GL_MEMORY_PBO_ALLOCATOR_NAME));
+      (GST_GL_MEMORY_EGL_ALLOCATOR_NAME));
 
   /* FIXME: buffer pool */
   dmabuf->outbuf = gst_buffer_new ();
-  gst_gl_memory_setup_buffer (allocator, dmabuf->outbuf, dmabuf->params);
+  gst_gl_memory_setup_buffer (allocator, dmabuf->outbuf, dmabuf->params, NULL,
+      (gpointer *) dmabuf->eglimage, gst_buffer_n_memory (dmabuf->outbuf));
   gst_object_unref (allocator);
-
-  n = gst_buffer_n_memory (dmabuf->outbuf);
-  for (i = 0; i < n; i++) {
-    const GstGLFuncs *gl = NULL;
-    GstGLMemory *gl_mem =
-        (GstGLMemory *) gst_buffer_peek_memory (dmabuf->outbuf, i);
-
-    if (!dmabuf->eglimage[i]) {
-      g_clear_pointer (&dmabuf->outbuf, gst_buffer_unref);
-      return;
-    }
-
-    gl = GST_GL_CONTEXT (((GstEGLImageMemory *) gl_mem)->context)->gl_vtable;
-
-    gl->ActiveTexture (GL_TEXTURE0 + i);
-    gl->BindTexture (GL_TEXTURE_2D, gl_mem->tex_id);
-    gl->EGLImageTargetTexture2D (GL_TEXTURE_2D,
-        gst_egl_image_memory_get_image (dmabuf->eglimage[i]));
-  }
 }
 
 static GstGLUploadReturn
@@ -932,7 +730,7 @@
   gboolean result;
   GstVideoGLTextureUploadMeta *meta;
   guint texture_ids[GST_GL_UPLOAD_MAX_PLANES];
-  GstGLVideoAllocationParams *params;
+  GstBufferPool *pool;
 };
 
 static gpointer
@@ -941,12 +739,13 @@
   struct GLUploadMeta *meta = g_new0 (struct GLUploadMeta, 1);
 
   meta->upload = upload;
+  meta->pool = NULL;
 
   return meta;
 }
 
 static GstCaps *
-_upload_meta_upload_transform_caps (GstGLContext * context,
+_upload_meta_upload_transform_caps (gpointer impl, GstGLContext * context,
     GstPadDirection direction, GstCaps * caps)
 {
   GstCapsFeatures *passthrough =
@@ -993,6 +792,8 @@
   GstCapsFeatures *features;
   GstVideoGLTextureUploadMeta *meta;
   gboolean ret = TRUE;
+  GstStructure *config;
+  gsize size;
 
   features = gst_caps_get_features (in_caps, 0);
 
@@ -1007,13 +808,21 @@
   if (!ret)
     return ret;
 
-  if (upload->params)
-    gst_gl_allocation_params_free ((GstGLAllocationParams *) upload->params);
-  if (!(upload->params =
-          gst_gl_video_allocation_params_new (upload->upload->context, NULL,
-              &upload->upload->priv->in_info, -1, NULL,
-              GST_GL_TEXTURE_TARGET_2D)))
-    return FALSE;
+  if (upload->pool == NULL)
+    upload->pool = gst_gl_buffer_pool_new (upload->upload->context);
+
+  if (!gst_buffer_pool_is_active (upload->pool)) {
+    config = gst_buffer_pool_get_config (upload->pool);
+
+    size = upload->upload->priv->in_info.size;
+    gst_buffer_pool_config_set_params (config, in_caps, size, 0, 0);
+
+    if (!gst_buffer_pool_set_config (upload->pool, config)) {
+      GST_WARNING_OBJECT (upload->upload, "failed to set bufferpool config");
+      return FALSE;
+    }
+    gst_buffer_pool_set_active (upload->pool, TRUE);
+  }
 
   if (buffer) {
     if ((meta = gst_buffer_get_video_gl_texture_upload_meta (buffer)) == NULL)
@@ -1088,9 +897,6 @@
   int i;
   GstVideoInfo *in_info = &upload->upload->priv->in_info;
   guint max_planes = GST_VIDEO_INFO_N_PLANES (in_info);
-  GstGLMemoryAllocator *allocator;
-
-  allocator = gst_gl_memory_allocator_get_default (upload->upload->context);
 
   /* Support stereo views for separated multiview mode */
   if (GST_VIDEO_INFO_MULTIVIEW_MODE (in_info) ==
@@ -1101,10 +907,11 @@
 
   upload->meta = gst_buffer_get_video_gl_texture_upload_meta (buffer);
 
-  /* FIXME: buffer pool */
-  *outbuf = gst_buffer_new ();
-  gst_gl_memory_setup_buffer (allocator, *outbuf, upload->params);
-  gst_object_unref (allocator);
+  if (gst_buffer_pool_acquire_buffer (upload->pool, outbuf,
+          NULL) != GST_FLOW_OK) {
+    GST_WARNING_OBJECT (upload, "failed to acquire buffer from bufferpool");
+    return GST_GL_UPLOAD_ERROR;
+  }
 
   for (i = 0; i < GST_GL_UPLOAD_MAX_PLANES; i++) {
     guint tex_id = 0;
@@ -1137,18 +944,11 @@
 _upload_meta_upload_free (gpointer impl)
 {
   struct GLUploadMeta *upload = impl;
-  gint i;
 
   g_return_if_fail (impl != NULL);
 
-  for (i = 0; i < GST_GL_UPLOAD_MAX_PLANES; i++) {
-    if (upload->texture_ids[i])
-      gst_gl_context_del_texture (upload->upload->context,
-          &upload->texture_ids[i]);
-  }
-
-  if (upload->params)
-    gst_gl_allocation_params_free ((GstGLAllocationParams *) upload->params);
+  if (upload->pool)
+    gst_object_unref (upload->pool);
 
   g_free (upload);
 }
@@ -1240,7 +1040,7 @@
 }
 
 static GstCaps *
-_raw_data_upload_transform_caps (GstGLContext * context,
+_raw_data_upload_transform_caps (gpointer impl, GstGLContext * context,
     GstPadDirection direction, GstCaps * caps)
 {
   GstCapsFeatures *passthrough =
@@ -1301,7 +1101,7 @@
   if (!(raw->params =
           gst_gl_video_allocation_params_new_wrapped_data (raw->upload->context,
               NULL, &raw->upload->priv->in_info, -1, NULL,
-              GST_GL_TEXTURE_TARGET_2D, NULL, raw->in_frame,
+              GST_GL_TEXTURE_TARGET_2D, 0, NULL, raw->in_frame,
               (GDestroyNotify) _raw_upload_frame_unref)))
     return FALSE;
 
@@ -1337,6 +1137,9 @@
 
     raw->params->parent.wrapped_data = raw->in_frame->frame.data[i];
     raw->params->plane = i;
+    raw->params->tex_type =
+        gst_gl_texture_type_from_format (raw->upload->context,
+        GST_VIDEO_INFO_FORMAT (in_info), i);
 
     tex =
         gst_gl_base_memory_alloc (allocator,
@@ -1385,9 +1188,6 @@
 };
 
 static const UploadMethod *upload_methods[] = { &_gl_memory_upload,
-#if GST_GL_HAVE_PLATFORM_EGL
-  &_egl_image_upload,
-#endif
 #if GST_GL_HAVE_DMABUF
   &_dma_buf_upload,
 #endif
@@ -1444,7 +1244,10 @@
   GstGLUpload *upload = g_object_new (GST_TYPE_GL_UPLOAD, NULL);
   gint i, n;
 
-  upload->context = gst_object_ref (context);
+  if (context)
+    gst_gl_upload_set_context (upload, context);
+  else
+    upload->context = NULL;
 
   n = G_N_ELEMENTS (upload_methods);
   upload->priv->upload_impl = g_malloc (sizeof (gpointer) * n);
@@ -1458,6 +1261,14 @@
   return upload;
 }
 
+void
+gst_gl_upload_set_context (GstGLUpload * upload, GstGLContext * context)
+{
+  g_return_if_fail (upload != NULL);
+
+  gst_object_replace ((GstObject **) & upload->context, (GstObject *) context);
+}
+
 static void
 gst_gl_upload_finalize (GObject * object)
 {
@@ -1466,8 +1277,6 @@
 
   upload = GST_GL_UPLOAD (object);
 
-  if (upload->priv->method_impl)
-    upload->priv->method->free (upload->priv->method_impl);
   upload->priv->method_i = 0;
 
   if (upload->context) {
@@ -1496,8 +1305,8 @@
 }
 
 GstCaps *
-gst_gl_upload_transform_caps (GstGLContext * context, GstPadDirection direction,
-    GstCaps * caps, GstCaps * filter)
+gst_gl_upload_transform_caps (GstGLUpload * upload, GstGLContext * context,
+    GstPadDirection direction, GstCaps * caps, GstCaps * filter)
 {
   GstCaps *result, *tmp;
   gint i;
@@ -1507,7 +1316,9 @@
   for (i = 0; i < G_N_ELEMENTS (upload_methods); i++) {
     GstCaps *tmp2;
 
-    tmp2 = upload_methods[i]->transform_caps (context, direction, caps);
+    tmp2 =
+        upload_methods[i]->transform_caps (upload->priv->upload_impl[i],
+        context, direction, caps);
 
     if (tmp2)
       tmp = gst_caps_merge (tmp, tmp2);
@@ -1560,8 +1371,6 @@
   gst_video_info_from_caps (&upload->priv->in_info, in_caps);
   gst_video_info_from_caps (&upload->priv->out_info, out_caps);
 
-  if (upload->priv->method_impl)
-    upload->priv->method->free (upload->priv->method_impl);
   upload->priv->method_impl = NULL;
   upload->priv->method_i = 0;
 
@@ -1616,16 +1425,14 @@
 static gboolean
 _upload_find_method (GstGLUpload * upload)
 {
+  gint method_i;
+
   if (upload->priv->method_i >= G_N_ELEMENTS (upload_methods))
     return FALSE;
 
-  if (upload->priv->method_impl) {
-    upload->priv->method->free (upload->priv->method_impl);
-    upload->priv->method_impl = NULL;
-  }
-
-  upload->priv->method = upload_methods[upload->priv->method_i];
-  upload->priv->method_impl = upload->priv->method->new (upload);
+  method_i = upload->priv->method_i;
+  upload->priv->method = upload_methods[method_i];
+  upload->priv->method_impl = upload->priv->upload_impl[method_i];
 
   GST_DEBUG_OBJECT (upload, "attempting upload with uploader %s",
       upload->priv->method->name);
@@ -1680,19 +1487,24 @@
       upload->priv->method->perform (upload->priv->method_impl, buffer,
       &outbuf);
   if (ret == GST_GL_UPLOAD_UNSHARED_GL_CONTEXT) {
-    upload->priv->method->free (upload->priv->method_impl);
-    upload->priv->method = &_raw_data_upload;
-    upload->priv->method_impl = upload->priv->method->new (upload);
+    for (int i = 0; i < G_N_ELEMENTS (upload_methods); i++) {
+      if (upload_methods[i] == &_raw_data_upload) {
+        upload->priv->method = &_raw_data_upload;
+        upload->priv->method_impl = upload->priv->upload_impl[i];
+        upload->priv->method_i = i;
+
+        break;
+      }
+    }
     goto restart;
-  } else if (ret == GST_GL_UPLOAD_DONE) {
+  } else if (ret == GST_GL_UPLOAD_DONE || ret == GST_GL_UPLOAD_RECONFIGURE) {
     /* we are done */
   } else {
-    upload->priv->method->free (upload->priv->method_impl);
     upload->priv->method_impl = NULL;
     NEXT_METHOD;
   }
 
-  if (buffer != outbuf)
+  if (outbuf && buffer != outbuf)
     gst_buffer_copy_into (outbuf, buffer,
         GST_BUFFER_COPY_FLAGS | GST_BUFFER_COPY_TIMESTAMPS, 0, -1);
   *outbuf_ptr = outbuf;
diff --git a/gst-libs/gst/gl/gstglupload.h b/gst-libs/gst/gl/gstglupload.h
index 577c94b..3e00298 100644
--- a/gst-libs/gst/gl/gstglupload.h
+++ b/gst-libs/gst/gl/gstglupload.h
@@ -47,8 +47,9 @@
 
   GST_GL_UPLOAD_ERROR = -1,
   GST_GL_UPLOAD_UNSUPPORTED = -2,
+  GST_GL_UPLOAD_RECONFIGURE = -3,
   /* <private> */
-  GST_GL_UPLOAD_UNSHARED_GL_CONTEXT = -3,
+  GST_GL_UPLOAD_UNSHARED_GL_CONTEXT = -100,
 } GstGLUploadReturn;
 
 /**
@@ -58,11 +59,11 @@
  */
 struct _GstGLUpload
 {
-  /* <private> */
   GstObject        parent;
 
   GstGLContext    *context;
 
+  /* <private> */
   GstGLUploadPrivate *priv;
 
   gpointer _reserved[GST_PADDING];
@@ -76,13 +77,20 @@
 struct _GstGLUploadClass
 {
   GstObjectClass object_class;
+
+  /* <private> */
+  gpointer _padding[GST_PADDING];
 };
 
 GstCaps *     gst_gl_upload_get_input_template_caps (void);
 
 GstGLUpload * gst_gl_upload_new                    (GstGLContext * context);
 
-GstCaps *     gst_gl_upload_transform_caps         (GstGLContext * context,
+void          gst_gl_upload_set_context            (GstGLUpload * upload,
+                                                    GstGLContext * context);
+
+GstCaps *     gst_gl_upload_transform_caps         (GstGLUpload * upload,
+                                                    GstGLContext * context,
                                                     GstPadDirection direction,
                                                     GstCaps * caps,
                                                     GstCaps * filter);
diff --git a/gst-libs/gst/gl/gstglutils.c b/gst-libs/gst/gl/gstglutils.c
index e2e04e4..4a23914 100644
--- a/gst-libs/gst/gl/gstglutils.c
+++ b/gst-libs/gst/gl/gstglutils.c
@@ -36,345 +36,12 @@
 #include <gst/gl/wayland/gstgldisplay_wayland.h>
 #endif
 
-#ifndef GL_FRAMEBUFFER_UNDEFINED
-#define GL_FRAMEBUFFER_UNDEFINED          0x8219
-#endif
-#ifndef GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
-#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6
-#endif
-#ifndef GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT
-#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
-#endif
-#ifndef GL_FRAMEBUFFER_UNSUPPORTED
-#define GL_FRAMEBUFFER_UNSUPPORTED        0x8CDD
-#endif
-#ifndef GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS
-#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9
-#endif
-
 #define USING_OPENGL(context) (gst_gl_context_check_gl_version (context, GST_GL_API_OPENGL, 1, 0))
 #define USING_OPENGL3(context) (gst_gl_context_check_gl_version (context, GST_GL_API_OPENGL3, 3, 1))
 #define USING_GLES(context) (gst_gl_context_check_gl_version (context, GST_GL_API_GLES, 1, 0))
 #define USING_GLES2(context) (gst_gl_context_check_gl_version (context, GST_GL_API_GLES2, 2, 0))
 #define USING_GLES3(context) (gst_gl_context_check_gl_version (context, GST_GL_API_GLES2, 3, 0))
 
-static gchar *error_message;
-
-/* called in the gl thread */
-gboolean
-gst_gl_context_check_framebuffer_status (GstGLContext * context)
-{
-  GLenum status = 0;
-  status = context->gl_vtable->CheckFramebufferStatus (GL_FRAMEBUFFER);
-
-  switch (status) {
-    case GL_FRAMEBUFFER_COMPLETE:
-      return TRUE;
-      break;
-
-    case GL_FRAMEBUFFER_UNSUPPORTED:
-      GST_ERROR ("GL_FRAMEBUFFER_UNSUPPORTED");
-      break;
-
-    case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT:
-      GST_ERROR ("GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT");
-      break;
-
-    case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:
-      GST_ERROR ("GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT");
-      break;
-    case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS:
-      GST_ERROR ("GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS");
-      break;
-#if GST_GL_HAVE_OPENGL
-    case GL_FRAMEBUFFER_UNDEFINED:
-      GST_ERROR ("GL_FRAMEBUFFER_UNDEFINED");
-      break;
-#endif
-    default:
-      GST_ERROR ("General FBO error");
-  }
-
-  return FALSE;
-}
-
-typedef struct _GenTexture
-{
-  guint width, height;
-  GstVideoFormat format;
-  guint result;
-} GenTexture;
-
-static void
-_gen_texture (GstGLContext * context, GenTexture * data)
-{
-  const GstGLFuncs *gl = context->gl_vtable;
-  GLenum internal_format;
-
-  GST_TRACE ("Generating texture format:%u dimensions:%ux%u", data->format,
-      data->width, data->height);
-
-  gl->GenTextures (1, &data->result);
-  gl->BindTexture (GL_TEXTURE_2D, data->result);
-
-  internal_format =
-      gst_gl_sized_gl_format_from_gl_format_type (context, GL_RGBA,
-      GL_UNSIGNED_BYTE);
-  if (data->width > 0 && data->height > 0)
-    gl->TexImage2D (GL_TEXTURE_2D, 0, internal_format,
-        data->width, data->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
-
-  gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-  gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-  gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-  gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-
-  GST_LOG ("generated texture id:%d", data->result);
-}
-
-/* deprecated. replaced by GstGLMemory */
-void
-gst_gl_context_gen_texture (GstGLContext * context, GLuint * pTexture,
-    GstVideoFormat v_format, GLint width, GLint height)
-{
-  GenTexture data = { width, height, v_format, 0 };
-
-  gst_gl_context_thread_add (context, (GstGLContextThreadFunc) _gen_texture,
-      &data);
-
-  *pTexture = data.result;
-}
-
-static void
-_del_texture (GstGLContext * context, guint * texture)
-{
-  context->gl_vtable->DeleteTextures (1, texture);
-}
-
-/* deprecated. replaced by GstGLMemory */
-void
-gst_gl_context_del_texture (GstGLContext * context, GLuint * pTexture)
-{
-  gst_gl_context_thread_add (context, (GstGLContextThreadFunc) _del_texture,
-      pTexture);
-}
-
-typedef struct _GenTextureFull
-{
-  const GstVideoInfo *info;
-  const gint comp;
-  guint result;
-} GenTextureFull;
-
-static void
-_gen_texture_full (GstGLContext * context, GenTextureFull * data)
-{
-  const GstGLFuncs *gl = context->gl_vtable;
-  GstVideoGLTextureType tex_type;
-  GstVideoFormat v_format;
-  GLint glinternalformat = 0;
-  GLenum glformat = 0;
-  GLenum gltype = 0;
-
-  gl->GenTextures (1, &data->result);
-  gl->BindTexture (GL_TEXTURE_2D, data->result);
-
-  v_format = GST_VIDEO_INFO_FORMAT (data->info);
-  tex_type = gst_gl_texture_type_from_format (context, v_format, data->comp);
-  glformat = gst_gl_format_from_gl_texture_type (tex_type);
-  gltype = GL_UNSIGNED_BYTE;
-  if (v_format == GST_VIDEO_FORMAT_RGB16)
-    gltype = GL_UNSIGNED_SHORT_5_6_5;
-  glinternalformat = gst_gl_sized_gl_format_from_gl_format_type (context,
-      glformat, gltype);
-
-  gl->TexImage2D (GL_TEXTURE_2D, 0, glinternalformat,
-      GST_VIDEO_INFO_COMP_WIDTH (data->info, data->comp),
-      GST_VIDEO_INFO_COMP_HEIGHT (data->info, data->comp), 0, glformat, gltype,
-      NULL);
-
-  gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-  gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-  gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-  gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-}
-
-/* deprecated. replaced by GstGLMemory */
-void
-gst_gl_generate_texture_full (GstGLContext * context, const GstVideoInfo * info,
-    const guint comp, gint stride[], gsize offset[], gsize size[],
-    GLuint * pTexture)
-{
-  GenTextureFull data = { info, comp, 0 };
-
-  switch (GST_VIDEO_INFO_FORMAT (info)) {
-    case GST_VIDEO_FORMAT_RGB:
-    case GST_VIDEO_FORMAT_BGR:
-    {
-      stride[0] = GST_ROUND_UP_4 (GST_VIDEO_INFO_WIDTH (info) * 3);
-      offset[0] = 0;
-      size[0] = stride[0] * GST_VIDEO_INFO_HEIGHT (info);
-      break;
-    }
-    case GST_VIDEO_FORMAT_RGB16:
-    {
-      stride[0] = GST_ROUND_UP_4 (GST_VIDEO_INFO_WIDTH (info) * 2);
-      offset[0] = 0;
-      size[0] = stride[0] * GST_VIDEO_INFO_HEIGHT (info);
-      break;
-    }
-    case GST_VIDEO_FORMAT_RGBA:
-    case GST_VIDEO_FORMAT_BGRA:
-    case GST_VIDEO_FORMAT_ARGB:
-    case GST_VIDEO_FORMAT_ABGR:
-    case GST_VIDEO_FORMAT_RGBx:
-    case GST_VIDEO_FORMAT_BGRx:
-    case GST_VIDEO_FORMAT_xRGB:
-    case GST_VIDEO_FORMAT_xBGR:
-    case GST_VIDEO_FORMAT_AYUV:
-    {
-      stride[0] = GST_ROUND_UP_4 (GST_VIDEO_INFO_WIDTH (info) * 4);
-      offset[0] = 0;
-      size[0] = stride[0] * GST_VIDEO_INFO_HEIGHT (info);
-      break;
-    }
-    case GST_VIDEO_FORMAT_NV12:
-    case GST_VIDEO_FORMAT_NV21:
-    {
-      size[comp] = stride[comp] * GST_VIDEO_INFO_COMP_HEIGHT (info, comp);
-      if (comp == 0) {
-        stride[0] = GST_ROUND_UP_4 (GST_VIDEO_INFO_COMP_WIDTH (info, 1));
-        offset[0] = 0;
-      } else {
-        stride[1] = GST_ROUND_UP_4 (GST_VIDEO_INFO_COMP_WIDTH (info, 1) * 2);
-        offset[1] = size[0];
-      }
-      break;
-    }
-    case GST_VIDEO_FORMAT_I420:
-    case GST_VIDEO_FORMAT_YV12:
-    case GST_VIDEO_FORMAT_Y444:
-    case GST_VIDEO_FORMAT_Y42B:
-    case GST_VIDEO_FORMAT_Y41B:
-    {
-      stride[comp] = GST_ROUND_UP_4 (GST_VIDEO_INFO_COMP_WIDTH (info, comp));
-      size[comp] = stride[comp] * GST_VIDEO_INFO_COMP_HEIGHT (info, comp);
-      if (comp == 0)
-        offset[0] = 0;
-      else if (comp == 1)
-        offset[1] = size[0];
-      else
-        offset[2] = offset[1] + size[1];
-      break;
-    }
-    default:
-      GST_WARNING ("unsupported %s",
-          gst_video_format_to_string (GST_VIDEO_INFO_FORMAT (info)));
-      break;
-  }
-
-  gst_gl_context_thread_add (context,
-      (GstGLContextThreadFunc) _gen_texture_full, &data);
-
-  *pTexture = data.result;
-}
-
-typedef struct _GenFBO
-{
-  GstGLFramebuffer *frame;
-  gint width, height;
-  GLuint *fbo, *depth;
-} GenFBO;
-
-static void
-_gen_fbo (GstGLContext * context, GenFBO * data)
-{
-  gst_gl_framebuffer_generate (data->frame, data->width, data->height,
-      data->fbo, data->depth);
-}
-
-gboolean
-gst_gl_context_gen_fbo (GstGLContext * context, gint width, gint height,
-    GLuint * fbo, GLuint * depthbuffer)
-{
-  GstGLFramebuffer *frame = gst_gl_framebuffer_new (context);
-
-  GenFBO data = { frame, width, height, fbo, depthbuffer };
-
-  gst_gl_context_thread_add (context, (GstGLContextThreadFunc) _gen_fbo, &data);
-
-  gst_object_unref (frame);
-
-  return TRUE;
-}
-
-typedef struct _UseFBO2
-{
-  GstGLFramebuffer *frame;
-  gint texture_fbo_width;
-  gint texture_fbo_height;
-  GLuint fbo;
-  GLuint depth_buffer;
-  GLuint texture_fbo;
-  GLCB_V2 cb;
-  gpointer stuff;
-} UseFBO2;
-
-static void
-_use_fbo_v2 (GstGLContext * context, UseFBO2 * data)
-{
-  gst_gl_framebuffer_use_v2 (data->frame, data->texture_fbo_width,
-      data->texture_fbo_height, data->fbo, data->depth_buffer,
-      data->texture_fbo, data->cb, data->stuff);
-}
-
-gboolean
-gst_gl_context_use_fbo_v2 (GstGLContext * context, gint texture_fbo_width,
-    gint texture_fbo_height, GLuint fbo, GLuint depth_buffer,
-    GLuint texture_fbo, GLCB_V2 cb, gpointer stuff)
-{
-  GstGLFramebuffer *frame = gst_gl_framebuffer_new (context);
-
-  UseFBO2 data =
-      { frame, texture_fbo_width, texture_fbo_height, fbo, depth_buffer,
-    texture_fbo, cb, stuff
-  };
-
-  gst_gl_context_thread_add (context, (GstGLContextThreadFunc) _use_fbo_v2,
-      &data);
-
-  gst_object_unref (frame);
-
-  return TRUE;
-}
-
-typedef struct _DelFBO
-{
-  GstGLFramebuffer *frame;
-  GLuint fbo;
-  GLuint depth;
-} DelFBO;
-
-/* Called in the gl thread */
-static void
-_del_fbo (GstGLContext * context, DelFBO * data)
-{
-  gst_gl_framebuffer_delete (data->frame, data->fbo, data->depth);
-}
-
-/* Called by gltestsrc and glfilter */
-void
-gst_gl_context_del_fbo (GstGLContext * context, GLuint fbo, GLuint depth_buffer)
-{
-  GstGLFramebuffer *frame = gst_gl_framebuffer_new (context);
-
-  DelFBO data = { frame, fbo, depth_buffer };
-
-  gst_gl_context_thread_add (context, (GstGLContextThreadFunc) _del_fbo, &data);
-
-  gst_object_unref (frame);
-}
-
 struct _compile_shader
 {
   GstGLShader **shader;
@@ -456,26 +123,6 @@
   return *shader != NULL;
 }
 
-void
-gst_gl_context_set_error (GstGLContext * context, const char *format, ...)
-{
-  va_list args;
-
-  g_free (error_message);
-
-  va_start (args, format);
-  error_message = g_strdup_vprintf (format, args);
-  va_end (args);
-
-  GST_WARNING ("%s", error_message);
-}
-
-gchar *
-gst_gl_context_get_error (void)
-{
-  return error_message;
-}
-
 /* Called by glfilter */
 void
 gst_gl_context_del_shader (GstGLContext * context, GstGLShader * shader)
@@ -1067,3 +714,63 @@
     return ret;
   }
 }
+
+static const gfloat identity_matrix[] = {
+  1.0f, 0.0f, 0.0, 0.0f,
+  0.0f, 1.0f, 0.0, 0.0f,
+  0.0f, 0.0f, 1.0, 0.0f,
+  0.0f, 0.0f, 0.0, 1.0f,
+};
+
+static const gfloat from_ndc_matrix[] = {
+  0.5f, 0.0f, 0.0, 0.5f,
+  0.0f, 0.5f, 0.0, 0.5f,
+  0.0f, 0.0f, 0.5, 0.5f,
+  0.0f, 0.0f, 0.0, 1.0f,
+};
+
+static const gfloat to_ndc_matrix[] = {
+  2.0f, 0.0f, 0.0, -1.0f,
+  0.0f, 2.0f, 0.0, -1.0f,
+  0.0f, 0.0f, 2.0, -1.0f,
+  0.0f, 0.0f, 0.0, 1.0f,
+};
+
+void
+gst_gl_multiply_matrix4 (const gfloat * a, const gfloat * b, gfloat * result)
+{
+  int i, j, k;
+  gfloat tmp[16] = { 0.0f };
+
+  if (!a || !b || !result)
+    return;
+
+  for (i = 0; i < 4; i++) {
+    for (j = 0; j < 4; j++) {
+      for (k = 0; k < 4; k++) {
+        tmp[i + (j * 4)] += a[i + (k * 4)] * b[k + (j * 4)];
+      }
+    }
+  }
+
+  for (i = 0; i < 16; i++)
+    result[i] = tmp[i];
+}
+
+void
+gst_gl_get_affine_transformation_meta_as_ndc (GstVideoAffineTransformationMeta *
+    meta, gfloat * matrix)
+{
+  if (!meta) {
+    int i;
+
+    for (i = 0; i < 16; i++) {
+      matrix[i] = identity_matrix[i];
+    }
+  } else {
+    gfloat tmp[16] = { 0.0f };
+
+    gst_gl_multiply_matrix4 (from_ndc_matrix, meta->matrix, tmp);
+    gst_gl_multiply_matrix4 (tmp, to_ndc_matrix, matrix);
+  }
+}
diff --git a/gst-libs/gst/gl/gstglutils.h b/gst-libs/gst/gl/gstglutils.h
index 1c5ab12..a714759 100644
--- a/gst-libs/gst/gl/gstglutils.h
+++ b/gst-libs/gst/gl/gstglutils.h
@@ -22,79 +22,17 @@
 #define __GST_GL_UTILS_H__
 
 #include <gst/video/video.h>
+#include <gst/video/gstvideoaffinetransformationmeta.h>
 
 #include <gst/gl/gstgl_fwd.h>
 
 G_BEGIN_DECLS
 
-/**
- * GstGLContextProjection:
- *
- * %GST_GL_DISPLAY_PROJECTION_ORTHO2D: Orthogonal projection
- * %GST_GL_DISPLAY_CONVERSION_MATRIX: Perspective projection 
- */
-typedef enum
-{
-  GST_GL_DISPLAY_PROJECTION_ORTHO2D,
-  GST_GL_DISPLAY_PROJECTION_PERSPECTIVE
-} GstGLDisplayProjection;
-
-/**
- * CDCB:
- * @texture: texture to draw
- * @width: new width
- * @height: new height:
- * @data: user data
- *
- * client draw callback
- */
-typedef gboolean (*CDCB) (GLuint texture, GLuint width, GLuint height, gpointer data);
-/**
- * GLCB:
- * @width: the width
- * @height: the height
- * @texture: texture
- * @stuff: user data
- *
- * callback definition for operating on textures
- */
-typedef void (*GLCB) (gint, gint, guint, gpointer stuff);
-/**
- * GLCB_V2:
- * @stuff: user data
- *
- * callback definition for operating through a Framebuffer object
- */
-typedef void (*GLCB_V2) (gpointer stuff);
-
-/* deprecated. replaced by GstGLMemory */
-void gst_gl_context_gen_texture (GstGLContext * context, GLuint * pTexture,
-    GstVideoFormat v_format, GLint width, GLint height);
-/* deprecated. replaced by GstGLMemory */
-void gst_gl_context_del_texture (GstGLContext * context, GLuint * pTexture);
-
-/* deprecated. replaced by GstGLMemory */
-void gst_gl_generate_texture_full (GstGLContext * context, const GstVideoInfo * info,
-    const guint comp, gint stride[], gsize offset[], gsize size[], GLuint * pTexture);
-
-gboolean gst_gl_context_gen_fbo (GstGLContext * context, gint width, gint height,
-    GLuint * fbo, GLuint * depthbuffer);
-gboolean gst_gl_context_use_fbo_v2 (GstGLContext * context, gint texture_fbo_width,
-    gint texture_fbo_height, GLuint fbo, GLuint depth_buffer,
-    GLuint texture_fbo, GLCB_V2 cb, gpointer stuff);
-void gst_gl_context_del_fbo (GstGLContext * context, GLuint fbo,
-    GLuint depth_buffer);
-
 gboolean gst_gl_context_gen_shader (GstGLContext * context,
     const gchar * shader_vertex_source,
     const gchar * shader_fragment_source, GstGLShader ** shader);
 void gst_gl_context_del_shader (GstGLContext * context, GstGLShader * shader);
 
-gboolean gst_gl_context_check_framebuffer_status (GstGLContext * context);
-
-void gst_gl_context_set_error (GstGLContext * context, const char * format, ...);
-gchar *gst_gl_context_get_error (void);
-
 gboolean gst_gl_ensure_element_data (gpointer element,
     GstGLDisplay **display_ptr, GstGLContext ** other_context_ptr);
 gboolean gst_gl_handle_set_context (GstElement * element, GstContext * context, 
@@ -116,6 +54,10 @@
 gboolean gst_gl_value_set_texture_target (GValue * value, GstGLTextureTarget target);
 GstGLTextureTarget gst_gl_value_get_texture_target_mask (const GValue * value);
 
+void gst_gl_multiply_matrix4 (const gfloat * a, const gfloat * b, gfloat * result);
+void gst_gl_get_affine_transformation_meta_as_ndc (GstVideoAffineTransformationMeta *
+    meta, gfloat * matrix);
+
 G_END_DECLS
 
 #endif /* __GST_GL_UTILS_H__ */
diff --git a/gst-libs/gst/gl/gstglviewconvert.c b/gst-libs/gst/gl/gstglviewconvert.c
index 7d44860..c409e3a 100644
--- a/gst-libs/gst/gl/gstglviewconvert.c
+++ b/gst-libs/gst/gl/gstglviewconvert.c
@@ -31,6 +31,7 @@
 #endif
 
 #include "gstglviewconvert.h"
+#include "gstglsl_private.h"
 #include <gst/video/gstvideoaffinetransformationmeta.h>
 
 #define USING_OPENGL(context) (gst_gl_context_check_gl_version (context, GST_GL_API_OPENGL, 1, 0))
@@ -152,27 +153,20 @@
   0.0f, 0.0f, 0.0f, 1.0f,
 };
 
+#define glsl_OES_extension_string "#extension GL_OES_EGL_image_external : require \n"
+
 /* *INDENT-OFF* */
-static const gchar *fragment_source =
+static const gchar *fragment_header =
   "#ifdef GL_ES\n"
   "precision mediump float;\n"
   "#endif\n"
-  "varying vec2 v_texcoord;\n"
   "uniform sampler2D tex_l;\n"
   "uniform sampler2D tex_r;\n"
   "uniform float width;\n"
   "uniform float height;\n"
   "uniform mat3 downmix[2];\n"
   "uniform vec2 tex_scale[2];\n"
-  "uniform vec2 offsets[2];\n"
-  "void main () {\n"
-  "vec4 l, r;\n"
-  /* input */
-  "%s"
-  /* now have left and right pixel into l and r */
-  /* output */
-  "%s"
-  "}\n";
+  "uniform vec2 offsets[2];\n";
 
 static const gchar *frag_input =
   "  vec2 l_tex = v_texcoord * tex_scale[0] + offsets[0];\n"
@@ -1214,7 +1208,7 @@
     g_value_set_static_string (&item, GST_GL_TEXTURE_TARGET_EXTERNAL_OES_STR);
   }
 
-  gst_structure_set_value (s, "texture-target", &item);
+  gst_structure_set_value (s_other, "texture-target", &item);
 
   g_value_unset (&item);
 
@@ -1292,9 +1286,7 @@
     }
   }
 
-  tmp = _fixate_texture_target (viewconvert, direction, caps, othercaps);
-  gst_caps_unref (othercaps);
-  othercaps = tmp;
+  othercaps = _fixate_texture_target (viewconvert, direction, caps, othercaps);
 
 done:
   GST_DEBUG_OBJECT (viewconvert, "dir %s fixated to %" GST_PTR_FORMAT
@@ -1310,6 +1302,11 @@
   if (viewconvert->shader)
     gst_gl_context_del_shader (viewconvert->context, viewconvert->shader);
   viewconvert->shader = NULL;
+
+  if (viewconvert->fbo)
+    gst_object_unref (viewconvert->fbo);
+  viewconvert->fbo = NULL;
+
   viewconvert->initted = FALSE;
   viewconvert->reconfigure = FALSE;
 }
@@ -1389,181 +1386,29 @@
 static gboolean
 _init_view_convert_fbo (GstGLViewConvert * viewconvert)
 {
-  GstGLFuncs *gl;
   guint out_width, out_height;
-  GLuint fake_texture = 0;      /* a FBO must hava texture to init */
-  GLenum internal_format;
-  gboolean ret = TRUE;
 
-  gl = viewconvert->context->gl_vtable;
   out_width = GST_VIDEO_INFO_WIDTH (&viewconvert->out_info);
   out_height = GST_VIDEO_INFO_HEIGHT (&viewconvert->out_info);
-  if (!gl->GenFramebuffers) {
-    /* turn off the pipeline because Frame buffer object is a not present */
-    gst_gl_context_set_error (viewconvert->context,
-        "Frambuffer objects unsupported");
-    return FALSE;
-  }
 
-  /* setup FBO */
-  gl->GenFramebuffers (1, &viewconvert->fbo);
-  gl->BindFramebuffer (GL_FRAMEBUFFER, viewconvert->fbo);
-  /* setup the render buffer for depth */
-  gl->GenRenderbuffers (1, &viewconvert->depth_buffer);
-  gl->BindRenderbuffer (GL_RENDERBUFFER, viewconvert->depth_buffer);
-  if (USING_OPENGL (viewconvert->context)
-      || USING_OPENGL3 (viewconvert->context)) {
-    gl->RenderbufferStorage (GL_RENDERBUFFER, GL_DEPTH_COMPONENT, out_width,
-        out_height);
-    gl->RenderbufferStorage (GL_RENDERBUFFER, GL_DEPTH24_STENCIL8,
-        out_width, out_height);
-  }
-  if (USING_GLES2 (viewconvert->context)) {
-    gl->RenderbufferStorage (GL_RENDERBUFFER, GL_DEPTH_COMPONENT16,
-        out_width, out_height);
-  }
+  viewconvert->fbo =
+      gst_gl_framebuffer_new_with_default_depth (viewconvert->context,
+      out_width, out_height);
 
-  /* a fake texture is attached to the convert FBO (cannot init without it) */
-  gl->GenTextures (1, &fake_texture);
-  gl->BindTexture (GL_TEXTURE_2D, fake_texture);
-  internal_format =
-      gst_gl_sized_gl_format_from_gl_format_type (viewconvert->context, GL_RGBA,
-      GL_UNSIGNED_BYTE);
-  gl->TexImage2D (GL_TEXTURE_2D, 0, internal_format, out_width, out_height,
-      0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
-  gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-  gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-  gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-  gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-  /* attach the texture to the FBO to renderer to */
-  gl->FramebufferTexture2D (GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
-      GL_TEXTURE_2D, fake_texture, 0);
-  /* attach the depth render buffer to the FBO */
-  gl->FramebufferRenderbuffer (GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
-      GL_RENDERBUFFER, viewconvert->depth_buffer);
-  if (USING_OPENGL (viewconvert->context)) {
-    gl->FramebufferRenderbuffer (GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT,
-        GL_RENDERBUFFER, viewconvert->depth_buffer);
-  }
-
-  if (!gst_gl_context_check_framebuffer_status (viewconvert->context)) {
-    gst_gl_context_set_error (viewconvert->context,
-        "GL framebuffer status incomplete");
-    ret = FALSE;
-  }
-
-  /* unbind the FBO */
-  gl->BindTexture (GL_TEXTURE_2D, 0);
-  gl->BindFramebuffer (GL_FRAMEBUFFER, 0);
-  gl->DeleteTextures (1, &fake_texture);
-  return ret;
-}
-
-static gchar *
-_mangle_texture_access (const gchar * str, GstGLTextureTarget from,
-    GstGLTextureTarget to)
-{
-  const gchar *from_str = NULL, *to_str = NULL;
-  gchar *ret, *tmp;
-  gchar *regex_find;
-  GRegex *regex;
-
-  if (from == GST_GL_TEXTURE_TARGET_2D)
-    from_str = "texture2D";
-  if (from == GST_GL_TEXTURE_TARGET_RECTANGLE)
-    from_str = "texture2DRect";
-  if (from == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
-    from_str = "texture2D";
-
-  if (to == GST_GL_TEXTURE_TARGET_2D)
-    to_str = "texture2D";
-  if (to == GST_GL_TEXTURE_TARGET_RECTANGLE)
-    to_str = "texture2DRect";
-  if (to == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
-    to_str = "texture2D";
-
-  /* followed by any amount of whitespace then a bracket */
-  regex_find = g_strdup_printf ("%s(?=\\s*\\()", from_str);
-  regex = g_regex_new (regex_find, 0, 0, NULL);
-  tmp = g_regex_replace_literal (regex, str, -1, 0, to_str, 0, NULL);
-  g_free (regex_find);
-  g_regex_unref (regex);
-
-  if (tmp) {
-    ret = tmp;
-  } else {
-    GST_FIXME ("Couldn't mangle texture access successfully from %s to %s",
-        from_str, to_str);
-    ret = g_strdup (str);
-  }
-
-  return ret;
-}
-
-static gchar *
-_mangle_sampler_type (const gchar * str, GstGLTextureTarget from,
-    GstGLTextureTarget to)
-{
-  const gchar *from_str = NULL, *to_str = NULL;
-  gchar *ret, *tmp;
-  gchar *regex_find;
-  GRegex *regex;
-
-  if (from == GST_GL_TEXTURE_TARGET_2D)
-    from_str = "sampler2D";
-  if (from == GST_GL_TEXTURE_TARGET_RECTANGLE)
-    from_str = "sampler2DRect";
-  if (from == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
-    from_str = "samplerExternalOES";
-
-  if (to == GST_GL_TEXTURE_TARGET_2D)
-    to_str = "sampler2D";
-  if (to == GST_GL_TEXTURE_TARGET_RECTANGLE)
-    to_str = "sampler2DRect";
-  if (to == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
-    to_str = "samplerExternalOES";
-
-  /* followed by some whitespace  */
-  regex_find = g_strdup_printf ("%s(?=\\s)", from_str);
-  regex = g_regex_new (regex_find, 0, 0, NULL);
-  tmp = g_regex_replace_literal (regex, str, -1, 0, to_str, 0, NULL);
-  g_free (regex_find);
-  g_regex_unref (regex);
-
-  if (tmp) {
-    ret = tmp;
-  } else {
-    GST_FIXME ("Couldn't mangle sampler type successfully from %s to %s",
-        from_str, to_str);
-    ret = g_strdup (str);
-  }
-
-  return ret;
-}
-
-static gchar *
-_mangle_extensions (const gchar * str, GstGLTextureTarget from)
-{
-  const gchar *ext_str = NULL;
-
-  if (from == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
-    ext_str = "#extension GL_OES_EGL_image_external : require\n";
-
-  if (ext_str) {
-    return g_strdup_printf ("%s%s", ext_str, str);
-  } else {
-    return g_strdup (str);
-  }
+  return viewconvert->fbo != NULL;
 }
 
 /* free after use */
 static gchar *
-_get_shader_string (GstGLViewConvert * viewconvert,
-    GstVideoMultiviewMode in_mode, GstVideoMultiviewMode out_mode)
+_get_shader_string (GstGLViewConvert * viewconvert, GstGLShader * shader,
+    GstVideoMultiviewMode in_mode, GstVideoMultiviewMode out_mode,
+    GstGLSLVersion version, GstGLSLProfile profile)
 {
   const gchar *input_str, *output_str;
   gboolean mono_input = FALSE;
   gchar *tmp, *tmp2;
+  GString *str = g_string_new (NULL);
+  guint n_outputs = 1;
 
   switch (in_mode) {
     case GST_VIDEO_MULTIVIEW_MODE_NONE:
@@ -1601,6 +1446,7 @@
     case GST_VIDEO_MULTIVIEW_MODE_SEPARATED:
     case GST_VIDEO_MULTIVIEW_MODE_FRAME_BY_FRAME:
       output_str = frag_output_separated;
+      n_outputs = 2;
       break;
     case GST_VIDEO_MULTIVIEW_MODE_CHECKERBOARD:
       output_str = frag_output_checkerboard;
@@ -1615,15 +1461,65 @@
       break;
   }
 
-  tmp = g_strdup_printf (fragment_source, input_str, output_str);
-  tmp2 = _mangle_sampler_type (tmp, GST_GL_TEXTURE_TARGET_2D,
-      viewconvert->from_texture_target);
-  g_free (tmp);
-  tmp = _mangle_texture_access (tmp2, GST_GL_TEXTURE_TARGET_2D,
-      viewconvert->from_texture_target);
-  g_free (tmp2);
-  tmp2 = _mangle_extensions (tmp, viewconvert->from_texture_target);
-  g_free (tmp);
+  if (viewconvert->from_texture_target == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
+    g_string_append (str, glsl_OES_extension_string);
+
+  g_string_append (str, fragment_header);
+
+  /* GL 3.3+ and GL ES 3.x */
+  if ((profile == GST_GLSL_PROFILE_CORE && version >= GST_GLSL_VERSION_330)
+      || (profile == GST_GLSL_PROFILE_ES && version >= GST_GLSL_VERSION_300)) {
+    if (n_outputs > 1) {
+      gint i;
+
+      for (i = 0; i < n_outputs; i++) {
+        g_string_append_printf (str,
+            "layout(location = %d) out vec4 fragColor_%d;\n", i, i);
+      }
+    } else {
+      g_string_append (str, "layout (location = 0) out vec4 fragColor;\n");
+    }
+  } else if (profile == GST_GLSL_PROFILE_CORE
+      && version >= GST_GLSL_VERSION_150) {
+    /* no layout specifiers, use glBindFragDataLocation instead */
+    if (n_outputs > 1) {
+      gint i;
+
+      for (i = 0; i < n_outputs; i++) {
+        gchar *var_name = g_strdup_printf ("fragColor_%d", i);
+        g_string_append_printf (str, "out vec4 %s;\n", var_name);
+        gst_gl_shader_bind_frag_data_location (shader, i, var_name);
+        g_free (var_name);
+      }
+    } else {
+      g_string_append (str, "out vec4 fragColor;\n");
+      gst_gl_shader_bind_frag_data_location (shader, 0, "fragColor");
+    }
+  }
+
+  {
+    const gchar *varying = NULL;
+
+    if ((profile == GST_GLSL_PROFILE_ES && version >= GST_GLSL_VERSION_300)
+        || (profile == GST_GLSL_PROFILE_CORE
+            && version >= GST_GLSL_VERSION_150)) {
+      varying = "in";
+    } else {
+      varying = "varying";
+    }
+    g_string_append_printf (str,
+        "\n%s vec2 v_texcoord;\nvoid main() {\nvec4 l, r;\n", varying);
+  }
+
+  g_string_append (str, input_str);
+  g_string_append (str, output_str);
+  g_string_append (str, "\n}");
+  tmp = g_string_free (str, FALSE);
+
+  tmp2 =
+      _gst_glsl_mangle_shader (tmp, GL_FRAGMENT_SHADER,
+      GST_GL_TEXTURE_TARGET_2D, viewconvert->from_texture_target,
+      viewconvert->context, &version, &profile);
 
   return tmp2;
 }
@@ -1673,7 +1569,6 @@
   };
   gchar *fragment_source_str;
   GstGLFuncs *gl;
-  gboolean res;
   gint l_index, r_index;
 
   gl = viewconvert->context->gl_vtable;
@@ -1693,8 +1588,8 @@
       viewconvert->out_info.width, viewconvert->out_info.height);
 
   if (!gl->CreateProgramObject && !gl->CreateProgram) {
-    gst_gl_context_set_error (viewconvert->context,
-        "Cannot perform multiview conversion without OpenGL shaders");
+    GST_ERROR_OBJECT (viewconvert, "Cannot perform multiview conversion "
+        "without OpenGL shaders");
     goto error;
   }
 
@@ -1774,13 +1669,70 @@
       tex_scale[0][0], tex_scale[0][1],
       tex_scale[1][0], tex_scale[1][1],
       offsets[0][0], offsets[0][1], offsets[1][0], offsets[1][1]);
-  fragment_source_str = _get_shader_string (viewconvert, in_mode, out_mode);
-  res = gst_gl_context_gen_shader (viewconvert->context,
-      gst_gl_shader_string_vertex_mat4_texture_transform, fragment_source_str,
-      &viewconvert->shader);
-  g_free (fragment_source_str);
-  if (!res)
-    goto error;
+
+  viewconvert->shader = gst_gl_shader_new (viewconvert->context);
+  {
+    GstGLSLVersion version;
+    GstGLSLProfile profile;
+    GstGLSLStage *vert, *frag;
+    gchar *tmp, *tmp1, *version_str;
+    const gchar *strings[2];
+    GError *error = NULL;
+
+    tmp =
+        _gst_glsl_mangle_shader
+        (gst_gl_shader_string_vertex_mat4_vertex_transform, GL_VERTEX_SHADER,
+        GST_GL_TEXTURE_TARGET_2D, viewconvert->from_texture_target,
+        viewconvert->context, &version, &profile);
+
+    tmp1 = gst_glsl_version_profile_to_string (version, profile);
+    version_str = g_strdup_printf ("#version %s\n", tmp1);
+    g_free (tmp1);
+    strings[0] = version_str;
+
+    strings[1] = tmp;
+    vert =
+        gst_glsl_stage_new_with_strings (viewconvert->context,
+        GL_VERTEX_SHADER, version, profile, 2, strings);
+    g_free (tmp);
+
+    if (!gst_gl_shader_compile_attach_stage (viewconvert->shader, vert, &error)) {
+      GST_ERROR_OBJECT (viewconvert, "Failed to compile vertex stage %s",
+          error->message);
+      gst_object_unref (viewconvert->shader);
+      viewconvert->shader = NULL;
+      g_free (version_str);
+      goto error;
+    }
+
+    fragment_source_str = _get_shader_string (viewconvert, viewconvert->shader,
+        in_mode, out_mode, version, profile);
+    strings[1] = fragment_source_str;
+
+    frag =
+        gst_glsl_stage_new_with_strings (viewconvert->context,
+        GL_FRAGMENT_SHADER, version, profile, 2, strings);
+    g_free (version_str);
+
+    if (!gst_gl_shader_compile_attach_stage (viewconvert->shader, frag, &error)) {
+      GST_ERROR_OBJECT (viewconvert, "Failed to compile fragment stage %s",
+          error->message);
+      g_free (fragment_source_str);
+      gst_object_unref (viewconvert->shader);
+      viewconvert->shader = NULL;
+      goto error;
+    }
+    g_free (fragment_source_str);
+
+    if (!gst_gl_shader_link (viewconvert->shader, &error)) {
+      GST_ERROR_OBJECT (viewconvert, "Failed to link conversion shader %s",
+          error->message);
+      gst_object_unref (viewconvert->shader);
+      viewconvert->shader = NULL;
+      goto error;
+    }
+  }
+
   viewconvert->priv->attr_position =
       gst_gl_shader_get_attribute_location (viewconvert->shader, "a_position");
   viewconvert->priv->attr_texture =
@@ -1856,12 +1808,11 @@
   GstVideoMultiviewMode out_mode = priv->output_mode;
   guint from_gl_target =
       gst_gl_texture_target_to_gl (viewconvert->from_texture_target);
-  GstVideoAffineTransformationMeta *af_meta;
 
   gl = context->gl_vtable;
-  out_width = GST_VIDEO_INFO_WIDTH (&viewconvert->out_info);
-  out_height = GST_VIDEO_INFO_HEIGHT (&viewconvert->out_info);
-  gl->BindFramebuffer (GL_FRAMEBUFFER, viewconvert->fbo);
+
+  gst_gl_framebuffer_bind (viewconvert->fbo);
+
   if (out_mode == GST_VIDEO_MULTIVIEW_MODE_SEPARATED ||
       out_mode == GST_VIDEO_MULTIVIEW_MODE_FRAME_BY_FRAME) {
     out_views = viewconvert->out_info.views;
@@ -1869,34 +1820,42 @@
     out_views = 1;
   }
 
-  /* FIXME: the auxillary buffer could have a different transform matrix */
-  af_meta = gst_buffer_get_video_affine_transformation_meta (priv->primary_in);
-  if (af_meta)
-    gst_gl_shader_set_uniform_matrix_4fv (viewconvert->shader,
-        "u_transformation", 1, FALSE, af_meta->matrix);
-
   /* attach the texture to the FBO to renderer to */
   for (i = 0; i < out_views; i++) {
-    guint gl_target =
-        gst_gl_texture_target_to_gl (viewconvert->to_texture_target);
+    GstGLBaseMemory *tex = (GstGLBaseMemory *) priv->out_tex[i];
 
-    /* needed? */
-    gl->BindTexture (gl_target, priv->out_tex[i]->tex_id);
-    gl->FramebufferTexture2D (GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + i,
-        gl_target, priv->out_tex[i]->tex_id, 0);
+    gst_gl_framebuffer_attach (viewconvert->fbo, GL_COLOR_ATTACHMENT0 + i, tex);
   }
 
   if (gl->DrawBuffers)
     gl->DrawBuffers (out_views, multipleRT);
   else if (gl->DrawBuffer)
     gl->DrawBuffer (GL_COLOR_ATTACHMENT0);
+
+  gst_gl_framebuffer_get_effective_dimensions (viewconvert->fbo, &out_width,
+      &out_height);
   gl->GetIntegerv (GL_VIEWPORT, viewport_dim);
   gl->Viewport (0, 0, out_width, out_height);
+
   gst_gl_shader_use (viewconvert->shader);
+
+  /* FIXME: the auxillary buffer could have a different transform matrix */
+  {
+    GstVideoAffineTransformationMeta *af_meta;
+    gfloat matrix[16];
+
+    af_meta =
+        gst_buffer_get_video_affine_transformation_meta (priv->primary_in);
+    gst_gl_get_affine_transformation_meta_as_ndc (af_meta, matrix);
+    gst_gl_shader_set_uniform_matrix_4fv (viewconvert->shader,
+        "u_transformation", 1, FALSE, matrix);
+  }
+
   if (gl->BindVertexArray)
     gl->BindVertexArray (priv->vao);
   else
     _bind_buffer (viewconvert);
+
   if (in_mode == GST_VIDEO_MULTIVIEW_MODE_SEPARATED ||
       in_mode == GST_VIDEO_MULTIVIEW_MODE_FRAME_BY_FRAME) {
     if (priv->in_tex[1] == NULL) {
@@ -1910,7 +1869,9 @@
 
   gl->ActiveTexture (GL_TEXTURE0);
   gl->BindTexture (from_gl_target, priv->in_tex[0]->tex_id);
+
   gl->DrawElements (GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, NULL);
+
   if (gl->BindVertexArray)
     gl->BindVertexArray (0);
   else
@@ -1921,8 +1882,8 @@
   gst_gl_context_clear_shader (context);
   gl->Viewport (viewport_dim[0], viewport_dim[1], viewport_dim[2],
       viewport_dim[3]);
-  gst_gl_context_check_framebuffer_status (context);
-  gl->BindFramebuffer (GL_FRAMEBUFFER, 0);
+  gst_gl_context_clear_framebuffer (context);
+
   return TRUE;
 }
 
@@ -1940,9 +1901,10 @@
       (viewconvert->context));
   mem_allocator = GST_GL_MEMORY_ALLOCATOR (allocator);
   params = gst_gl_video_allocation_params_new (viewconvert->context, NULL,
-      &viewconvert->out_info, 0, NULL, viewconvert->to_texture_target);
+      &viewconvert->out_info, 0, NULL, viewconvert->to_texture_target, 0);
 
-  if (!gst_gl_memory_setup_buffer (mem_allocator, *target, params)) {
+  if (!gst_gl_memory_setup_buffer (mem_allocator, *target, params, NULL, NULL,
+          0)) {
     gst_gl_allocation_params_free ((GstGLAllocationParams *) params);
     gst_object_unref (allocator);
     return FALSE;
@@ -2081,7 +2043,8 @@
             GST_ALLOCATOR (gst_gl_memory_allocator_get_default (context));
         base_mem_allocator = GST_GL_BASE_MEMORY_ALLOCATOR (allocator);
         params = gst_gl_video_allocation_params_new (context, NULL, &temp_info,
-            0, NULL, viewconvert->to_texture_target);
+            0, NULL, viewconvert->to_texture_target,
+            GST_VIDEO_GL_TEXTURE_TYPE_RGBA);
 
         priv->out_tex[j] =
             (GstGLMemory *) gst_gl_base_memory_alloc (base_mem_allocator,
@@ -2128,15 +2091,13 @@
       GstMapInfo to_info, from_info;
       if (!gst_memory_map ((GstMemory *) priv->out_tex[j],
               &from_info, GST_MAP_READ | GST_MAP_GL)) {
-        gst_gl_context_set_error (viewconvert->context,
-            "Failed to map " "intermediate memory");
+        GST_ERROR_OBJECT (viewconvert, "Failed to map intermediate memory");
         res = FALSE;
         continue;
       }
       if (!gst_memory_map ((GstMemory *) out_tex, &to_info,
               GST_MAP_WRITE | GST_MAP_GL)) {
-        gst_gl_context_set_error (viewconvert->context, "Failed to map "
-            "intermediate memory");
+        GST_ERROR_OBJECT (viewconvert, "Failed to map intermediate memory");
         res = FALSE;
         continue;
       }
diff --git a/gst-libs/gst/gl/gstglviewconvert.h b/gst-libs/gst/gl/gstglviewconvert.h
index 8cfa1b2..4783dd1 100644
--- a/gst-libs/gst/gl/gstglviewconvert.h
+++ b/gst-libs/gst/gl/gstglviewconvert.h
@@ -68,15 +68,20 @@
   gboolean initted;
   gboolean reconfigure;
 
-  GLuint fbo;
-  GLuint depth_buffer;
+  GstGLFramebuffer *fbo;
 
+  /* <private> */
   GstGLViewConvertPrivate *priv;
+
+  gpointer _padding[GST_PADDING];
 };
 
 struct _GstGLViewConvertClass
 {
   GstObjectClass object_class;
+
+  /* <private> */
+  gpointer                  _padding[GST_PADDING];
 };
 
 GType gst_gl_view_convert_get_type (void);
diff --git a/gst-libs/gst/gl/gstglwindow.c b/gst-libs/gst/gl/gstglwindow.c
index 695f4c4..b74d397 100644
--- a/gst-libs/gst/gl/gstglwindow.c
+++ b/gst-libs/gst/gl/gstglwindow.c
@@ -102,6 +102,8 @@
   GMutex nav_lock;
   GCond nav_create_cond;
   gboolean nav_alive;
+  GMutex sync_message_lock;
+  GCond sync_message_cond;
 };
 
 static void gst_gl_window_finalize (GObject * object);
@@ -197,6 +199,9 @@
 
   g_weak_ref_init (&window->context_ref, NULL);
 
+  g_mutex_init (&window->priv->sync_message_lock);
+  g_cond_init (&window->priv->sync_message_cond);
+
   priv->main_context = g_main_context_new ();
   priv->loop = g_main_loop_new (priv->main_context, FALSE);
   priv->navigation_loop = NULL;
@@ -348,6 +353,8 @@
   g_mutex_clear (&window->lock);
   g_mutex_clear (&window->priv->nav_lock);
   g_cond_clear (&window->priv->nav_create_cond);
+  g_mutex_clear (&window->priv->sync_message_lock);
+  g_cond_clear (&window->priv->sync_message_cond);
   gst_object_unref (window->display);
 
   G_OBJECT_CLASS (gst_gl_window_parent_class)->finalize (object);
@@ -480,8 +487,6 @@
   }
 
   window_class->draw (window);
-
-  window->queue_resize = FALSE;
 }
 
 /**
@@ -590,8 +595,7 @@
 
 typedef struct _GstGLSyncMessage
 {
-  GMutex lock;
-  GCond cond;
+  GstGLWindow *window;
   gboolean fired;
 
   GstGLWindowCB callback;
@@ -601,14 +605,14 @@
 static void
 _run_message_sync (GstGLSyncMessage * message)
 {
-  g_mutex_lock (&message->lock);
 
   if (message->callback)
     message->callback (message->data);
 
+  g_mutex_lock (&message->window->priv->sync_message_lock);
   message->fired = TRUE;
-  g_cond_signal (&message->cond);
-  g_mutex_unlock (&message->lock);
+  g_cond_broadcast (&message->window->priv->sync_message_cond);
+  g_mutex_unlock (&message->window->priv->sync_message_lock);
 }
 
 void
@@ -617,24 +621,21 @@
 {
   GstGLSyncMessage message;
 
+  message.window = window;
   message.callback = callback;
   message.data = data;
   message.fired = FALSE;
-  g_mutex_init (&message.lock);
-  g_cond_init (&message.cond);
 
   gst_gl_window_send_message_async (window, (GstGLWindowCB) _run_message_sync,
       &message, NULL);
 
-  g_mutex_lock (&message.lock);
+  g_mutex_lock (&window->priv->sync_message_lock);
 
   /* block until opengl calls have been executed in the gl thread */
   while (!message.fired)
-    g_cond_wait (&message.cond, &message.lock);
-  g_mutex_unlock (&message.lock);
-
-  g_mutex_clear (&message.lock);
-  g_cond_clear (&message.cond);
+    g_cond_wait (&window->priv->sync_message_cond,
+        &window->priv->sync_message_lock);
+  g_mutex_unlock (&window->priv->sync_message_lock);
 }
 
 /**
@@ -1161,14 +1162,38 @@
     window_class->queue_resize (window);
 }
 
+struct resize_data
+{
+  GstGLWindow *window;
+  guint width, height;
+};
+
+static void
+_on_resize (gpointer data)
+{
+  struct resize_data *resize = data;
+
+  resize->window->resize (resize->window->resize_data, resize->width,
+      resize->height);
+}
+
 void
 gst_gl_window_resize (GstGLWindow * window, guint width, guint height)
 {
   g_return_if_fail (GST_IS_GL_WINDOW (window));
 
-  if (window->resize)
-    window->resize (window->resize_data, width, height);
+  if (window->resize) {
+    struct resize_data resize = { 0, };
+
+    resize.window = window;
+    resize.width = width;
+    resize.height = height;
+
+    gst_gl_window_send_message (window, (GstGLWindowCB) _on_resize, &resize);
+  }
 
   window->priv->surface_width = width;
   window->priv->surface_height = height;
+
+  window->queue_resize = FALSE;
 }
diff --git a/gst-libs/gst/gl/wayland/Makefile.in b/gst-libs/gst/gl/wayland/Makefile.in
index feaf1a8..4646c78 100644
--- a/gst-libs/gst/gl/wayland/Makefile.in
+++ b/gst-libs/gst/gl/wayland/Makefile.in
@@ -275,6 +275,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -296,6 +298,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -345,6 +349,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -490,6 +496,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -616,8 +624,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -660,8 +666,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/gl/wayland/gstgldisplay_wayland.c b/gst-libs/gst/gl/wayland/gstgldisplay_wayland.c
index c5c5094..6654280 100644
--- a/gst-libs/gst/gl/wayland/gstgldisplay_wayland.c
+++ b/gst-libs/gst/gl/wayland/gstgldisplay_wayland.c
@@ -117,7 +117,12 @@
   ret->display = wl_display_connect (name);
 
   if (!ret->display) {
-    GST_ERROR ("Failed to open X11 display connection with name, \'%s\'", name);
+    if (name != NULL) {
+      GST_ERROR ("Failed to open Wayland display connection with name \'%s\'",
+          name);
+    } else {
+      GST_ERROR ("Failed to open Wayland display connection.");
+    }
     return NULL;
   }
 
diff --git a/gst-libs/gst/gl/wayland/gstglwindow_wayland_egl.h b/gst-libs/gst/gl/wayland/gstglwindow_wayland_egl.h
index e0166da..a88955f 100644
--- a/gst-libs/gst/gl/wayland/gstglwindow_wayland_egl.h
+++ b/gst-libs/gst/gl/wayland/gstglwindow_wayland_egl.h
@@ -103,4 +103,4 @@
 
 G_END_DECLS
 
-#endif /* __GST_GL_WINDOW_X11_H__ */
+#endif /* __GST_GL_WINDOW_WAYLAND_EGL_H__ */
diff --git a/gst-libs/gst/gl/wayland/wayland_event_source.c b/gst-libs/gst/gl/wayland/wayland_event_source.c
index 114977a..ffb1503 100644
--- a/gst-libs/gst/gl/wayland/wayland_event_source.c
+++ b/gst-libs/gst/gl/wayland/wayland_event_source.c
@@ -51,19 +51,30 @@
   sync_callback
 };
 
+/* only thread safe iff called on the same thread @queue is being dispatched on */
 gint
 gst_gl_wl_display_roundtrip_queue (struct wl_display *display,
     struct wl_event_queue *queue)
 {
-  struct wl_callback *callback = wl_display_sync (display);
+  struct wl_callback *callback;
   gboolean done = FALSE;
   gint ret = 0;
 
-  if (callback == NULL)
+  if (queue) {
+    /* creating a wl_proxy and setting the queue is racy with the dispatching
+     * of the default queue */
+    while (wl_display_prepare_read_queue (display, queue) != 0) {
+      if ((ret = wl_display_dispatch_queue_pending (display, queue)) < 0)
+        return ret;
+    }
+  }
+  if (!(callback = wl_display_sync (display))) {
     return -1;
+  }
   wl_callback_add_listener (callback, &sync_listener, &done);
   if (queue) {
     wl_proxy_set_queue ((struct wl_proxy *) callback, queue);
+    wl_display_cancel_read (display);
     while (!done && ret >= 0)
       ret = wl_display_dispatch_queue (display, queue);
   } else {
@@ -84,6 +95,7 @@
   uint32_t mask;
   struct wl_display *display;
   struct wl_event_queue *queue;
+  gboolean reading;
 } WaylandEventSource;
 
 static gboolean
@@ -93,10 +105,29 @@
 
   *timeout = -1;
 
-  /* We have to add/remove the GPollFD if we want to update our
-   * poll event mask dynamically.  Instead, let's just flush all
-   * writes on idle */
-  wl_display_flush (source->display);
+  /* we may be called multiple times for prepare */
+  if (source->reading)
+    wl_display_cancel_read (source->display);
+
+  if (source->queue) {
+    while (wl_display_prepare_read_queue (source->display, source->queue) != 0) {
+      if (wl_display_dispatch_queue_pending (source->display,
+              source->queue) < 0) {
+        g_critical ("Failed to dispatch pending events\n");
+      }
+    }
+  } else {
+    while (wl_display_prepare_read (source->display) != 0) {
+      if (wl_display_dispatch_pending (source->display) < 0) {
+        g_critical ("Failed to dispatch pending events\n");
+      }
+    }
+  }
+  source->reading = TRUE;
+
+  /* FIXME: this may return EAGAIN if the fd is full */
+  if (wl_display_flush (source->display) < 0)
+    g_critical ("Failed to flush Wayland connection\n");
 
   return FALSE;
 }
@@ -109,6 +140,13 @@
 
   retval = source->pfd.revents;
 
+  if (source->pfd.revents & G_IO_IN) {
+    wl_display_read_events (source->display);
+  } else {
+    wl_display_cancel_read (source->display);
+  }
+  source->reading = FALSE;
+
   return retval;
 }
 
@@ -118,13 +156,11 @@
 {
   WaylandEventSource *source = (WaylandEventSource *) base;
 
-  if (source->pfd.revents) {
-    if (source->queue)
-      wl_display_dispatch_queue_pending (source->display, source->queue);
-    else
-      wl_display_dispatch_pending (source->display);
-    source->pfd.revents = 0;
-  }
+  if (source->queue)
+    wl_display_dispatch_queue_pending (source->display, source->queue);
+  else
+    wl_display_dispatch_pending (source->display);
+  source->pfd.revents = 0;
 
   if (callback)
     callback (data);
@@ -132,11 +168,22 @@
   return TRUE;
 }
 
+static void
+wayland_event_source_finalize (GSource * base)
+{
+  WaylandEventSource *source = (WaylandEventSource *) base;
+
+  if (source->reading) {
+    wl_display_cancel_read (source->display);
+  }
+  source->reading = FALSE;
+}
+
 static GSourceFuncs wayland_event_source_funcs = {
   wayland_event_source_prepare,
   wayland_event_source_check,
   wayland_event_source_dispatch,
-  NULL
+  wayland_event_source_finalize
 };
 
 GSource *
diff --git a/gst-libs/gst/gl/win32/Makefile.in b/gst-libs/gst/gl/win32/Makefile.in
index 079345d..9fc5848 100644
--- a/gst-libs/gst/gl/win32/Makefile.in
+++ b/gst-libs/gst/gl/win32/Makefile.in
@@ -280,6 +280,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -301,6 +303,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -350,6 +354,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -495,6 +501,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -621,8 +629,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -665,8 +671,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/gl/win32/gstglcontext_wgl.c b/gst-libs/gst/gl/win32/gstglcontext_wgl.c
index 3c2f34a..0961e40 100644
--- a/gst-libs/gst/gl/win32/gstglcontext_wgl.c
+++ b/gst-libs/gst/gl/win32/gstglcontext_wgl.c
@@ -40,6 +40,8 @@
   GstGLAPI context_api;
 };
 
+#define GST_CAT_DEFAULT gst_gl_context_debug
+
 #define gst_gl_context_wgl_parent_class parent_class
 G_DEFINE_TYPE (GstGLContextWGL, gst_gl_context_wgl, GST_GL_TYPE_CONTEXT);
 #define GST_GL_CONTEXT_WGL_GET_PRIVATE(o) \
@@ -221,23 +223,35 @@
   }
 
   if (!context_wgl->wgl_context) {
-    context_wgl->wgl_context = wglCreateContext (device);
 
-    if (!context_wgl->wgl_context) {
-      g_set_error (error, GST_GL_CONTEXT_ERROR,
-          GST_GL_CONTEXT_ERROR_CREATE_CONTEXT,
-          "Failed to create WGL context 0x%x", (unsigned int) GetLastError ());
-      goto failure;
+    if (context_wgl->priv->wglCreateContextAttribsARB && external_gl_context) {
+      context_wgl->wgl_context =
+          context_wgl->priv->wglCreateContextAttribsARB (device,
+          external_gl_context, 0);
     }
 
-    if (external_gl_context) {
-      if (!wglShareLists (external_gl_context, context_wgl->wgl_context)) {
+
+    if (!context_wgl->wgl_context) {
+
+      context_wgl->wgl_context = wglCreateContext (device);
+
+      if (!context_wgl->wgl_context) {
         g_set_error (error, GST_GL_CONTEXT_ERROR,
             GST_GL_CONTEXT_ERROR_CREATE_CONTEXT,
-            "failed to share contexts through wglShareLists 0x%x",
+            "Failed to create WGL context 0x%x",
             (unsigned int) GetLastError ());
         goto failure;
       }
+
+      if (external_gl_context) {
+        if (!wglShareLists (external_gl_context, context_wgl->wgl_context)) {
+          g_set_error (error, GST_GL_CONTEXT_ERROR,
+              GST_GL_CONTEXT_ERROR_CREATE_CONTEXT,
+              "failed to share contexts through wglShareLists 0x%x",
+              (unsigned int) GetLastError ());
+          goto failure;
+        }
+      }
     }
 
     context_wgl->priv->context_api = GST_GL_API_OPENGL;
diff --git a/gst-libs/gst/gl/x11/Makefile.in b/gst-libs/gst/gl/x11/Makefile.in
index 982e2ec..d2d059a 100644
--- a/gst-libs/gst/gl/x11/Makefile.in
+++ b/gst-libs/gst/gl/x11/Makefile.in
@@ -309,6 +309,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -330,6 +332,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -379,6 +383,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -524,6 +530,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -650,8 +658,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -694,8 +700,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/gl/x11/gstglwindow_x11.c b/gst-libs/gst/gl/x11/gstglwindow_x11.c
index a330825..d08b757 100644
--- a/gst-libs/gst/gl/x11/gstglwindow_x11.c
+++ b/gst-libs/gst/gl/x11/gstglwindow_x11.c
@@ -391,6 +391,7 @@
   GstGLWindow *window = GST_GL_WINDOW (window_x11);
 
   if (gst_gl_window_is_running (window)) {
+    guint width, height;
     XWindowAttributes attr;
 
     XGetWindowAttributes (window_x11->device, window_x11->internal_win_id,
@@ -414,13 +415,16 @@
       }
     }
 
-    if (window_x11->allow_extra_expose_events) {
-      if (window->queue_resize) {
-        guint width, height;
+    gst_gl_window_get_surface_dimensions (window, &width, &height);
+    if (attr.width != width || attr.height != height) {
+      width = attr.width;
+      height = attr.height;
+      gst_gl_window_queue_resize (window);
+    }
 
-        gst_gl_window_get_surface_dimensions (window, &width, &height);
+    if (window_x11->allow_extra_expose_events) {
+      if (window->queue_resize)
         gst_gl_window_resize (window, width, height);
-      }
 
       if (window->draw) {
         GstGLContext *context = gst_gl_window_get_context (window);
diff --git a/gst-libs/gst/insertbin/Makefile.in b/gst-libs/gst/insertbin/Makefile.in
index 234dd83..d81f7ee 100644
--- a/gst-libs/gst/insertbin/Makefile.in
+++ b/gst-libs/gst/insertbin/Makefile.in
@@ -292,6 +292,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -313,6 +315,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -362,6 +366,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -507,6 +513,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -633,8 +641,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -677,8 +683,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/insertbin/gstinsertbin.c b/gst-libs/gst/insertbin/gstinsertbin.c
index 57f030a..f200c28 100644
--- a/gst-libs/gst/insertbin/gstinsertbin.c
+++ b/gst-libs/gst/insertbin/gstinsertbin.c
@@ -132,13 +132,12 @@
 
   g_type_class_add_private (klass, sizeof (GstInsertBinPrivate));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_insert_bin_src_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_insert_bin_sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_insert_bin_src_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_insert_bin_sink_template);
   gst_element_class_set_static_metadata (gstelement_class, "Insert Bin",
-      "Generic/Bin/Filter",
-      "Auto-links filter style elements insertally",
+      "Generic/Bin/Filter", "Auto-links filter style elements insertally",
       "Olivier Crete <olivier.crete@collabora.com>");
 
   gobject_class->dispose = gst_insert_bin_dispose;
diff --git a/gst-libs/gst/interfaces/Makefile.in b/gst-libs/gst/interfaces/Makefile.in
index f04d68a..44e57bf 100644
--- a/gst-libs/gst/interfaces/Makefile.in
+++ b/gst-libs/gst/interfaces/Makefile.in
@@ -322,6 +322,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -343,6 +345,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -392,6 +396,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -537,6 +543,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -663,8 +671,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -707,8 +713,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/mpegts/Makefile.in b/gst-libs/gst/mpegts/Makefile.in
index 03e86ac..b3c79d9 100644
--- a/gst-libs/gst/mpegts/Makefile.in
+++ b/gst-libs/gst/mpegts/Makefile.in
@@ -330,6 +330,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -351,6 +353,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -400,6 +404,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -545,6 +551,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -671,8 +679,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -715,8 +721,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/mpegts/gstmpegtsdescriptor.c b/gst-libs/gst/mpegts/gstmpegtsdescriptor.c
index d4817d2..a49ce2a 100644
--- a/gst-libs/gst/mpegts/gstmpegtsdescriptor.c
+++ b/gst-libs/gst/mpegts/gstmpegtsdescriptor.c
@@ -1040,6 +1040,30 @@
 }
 
 /**
+ * gst_mpegts_descriptor_from_iso_639_language:
+ * @language: (transfer none): ISO-639-2 language 3-char code
+ *
+ * Creates a %GST_MTS_DESC_ISO_639_LANGUAGE #GstMpegtsDescriptor with
+ * a single language
+ *
+ * Return: #GstMpegtsDescriptor, %NULL on failure
+ */
+GstMpegtsDescriptor *
+gst_mpegts_descriptor_from_iso_639_language (const gchar * language)
+{
+  GstMpegtsDescriptor *descriptor;
+
+  g_return_val_if_fail (language != NULL, NULL);
+
+  descriptor = _new_descriptor (GST_MTS_DESC_ISO_639_LANGUAGE, 4 + 4);  /* a language takes 4 bytes */
+
+  memcpy (descriptor->data + 2, language, 3);
+  descriptor->data[2 + 3] = 0;  /* set audio type to undefined */
+
+  return descriptor;
+}
+
+/**
  * gst_mpegts_descriptor_parse_logical_channel:
  * @descriptor: a %GST_MTS_DESC_DTG_LOGICAL_CHANNEL #GstMpegtsDescriptor
  * @res: (out) (transfer none): the #GstMpegtsLogicalChannelDescriptor to fill
diff --git a/gst-libs/gst/mpegts/gstmpegtsdescriptor.h b/gst-libs/gst/mpegts/gstmpegtsdescriptor.h
index af56be0..33d46f5 100644
--- a/gst-libs/gst/mpegts/gstmpegtsdescriptor.h
+++ b/gst-libs/gst/mpegts/gstmpegtsdescriptor.h
@@ -313,6 +313,7 @@
                                                            guint idx, gchar **lang,
                                                            GstMpegtsIso639AudioType *audio_type);
 guint gst_mpegts_descriptor_parse_iso_639_language_nb (const GstMpegtsDescriptor *descriptor);
+GstMpegtsDescriptor * gst_mpegts_descriptor_from_iso_639_language (const gchar * language);
 
 
 
diff --git a/gst-libs/gst/player/Makefile.am b/gst-libs/gst/player/Makefile.am
index 042622b..f893375 100644
--- a/gst-libs/gst/player/Makefile.am
+++ b/gst-libs/gst/player/Makefile.am
@@ -69,9 +69,12 @@
 		--c-include "gst/player/player.h" \
 		--add-include-path=$(top_builddir)/gst-libs \
 		--add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-1.0` \
+		--add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-1.0` \
+		--add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-video-1.0` \
 		--library-path=$(top_builddir)/gst-libs \
 		--library=libgstplayer-@GST_API_VERSION@.la \
 		--include=Gst-@GST_API_VERSION@ \
+		--include=GstVideo-@GST_API_VERSION@ \
 		--libtool="${LIBTOOL}" \
 		--pkg gstreamer-@GST_API_VERSION@ \
 		--pkg gstreamer-audio-@GST_API_VERSION@ \
@@ -99,6 +102,8 @@
 		--includedir=$(srcdir)/gst-libs \
 		--includedir=$(builddir)/gst-libs \
 		--includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-1.0` \
+		--includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-1.0` \
+		--includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-video-1.0` \
 		$(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
 
 CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA)
diff --git a/gst-libs/gst/player/Makefile.in b/gst-libs/gst/player/Makefile.in
index a9e8ab1..fe0747b 100644
--- a/gst-libs/gst/player/Makefile.in
+++ b/gst-libs/gst/player/Makefile.in
@@ -315,6 +315,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -336,6 +338,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -385,6 +389,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -530,6 +536,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -656,8 +664,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -700,8 +706,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -1305,9 +1316,12 @@
 @HAVE_INTROSPECTION_TRUE@		--c-include "gst/player/player.h" \
 @HAVE_INTROSPECTION_TRUE@		--add-include-path=$(top_builddir)/gst-libs \
 @HAVE_INTROSPECTION_TRUE@		--add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-1.0` \
+@HAVE_INTROSPECTION_TRUE@		--add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-1.0` \
+@HAVE_INTROSPECTION_TRUE@		--add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-video-1.0` \
 @HAVE_INTROSPECTION_TRUE@		--library-path=$(top_builddir)/gst-libs \
 @HAVE_INTROSPECTION_TRUE@		--library=libgstplayer-@GST_API_VERSION@.la \
 @HAVE_INTROSPECTION_TRUE@		--include=Gst-@GST_API_VERSION@ \
+@HAVE_INTROSPECTION_TRUE@		--include=GstVideo-@GST_API_VERSION@ \
 @HAVE_INTROSPECTION_TRUE@		--libtool="${LIBTOOL}" \
 @HAVE_INTROSPECTION_TRUE@		--pkg gstreamer-@GST_API_VERSION@ \
 @HAVE_INTROSPECTION_TRUE@		--pkg gstreamer-audio-@GST_API_VERSION@ \
@@ -1326,6 +1340,8 @@
 @HAVE_INTROSPECTION_TRUE@		--includedir=$(srcdir)/gst-libs \
 @HAVE_INTROSPECTION_TRUE@		--includedir=$(builddir)/gst-libs \
 @HAVE_INTROSPECTION_TRUE@		--includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-1.0` \
+@HAVE_INTROSPECTION_TRUE@		--includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-1.0` \
+@HAVE_INTROSPECTION_TRUE@		--includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-video-1.0` \
 @HAVE_INTROSPECTION_TRUE@		$(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/gst-libs/gst/player/gstplayer-media-info-private.h b/gst-libs/gst/player/gstplayer-media-info-private.h
index b8757be..c5f6aad 100644
--- a/gst-libs/gst/player/gstplayer-media-info-private.h
+++ b/gst-libs/gst/player/gstplayer-media-info-private.h
@@ -96,7 +96,7 @@
   gchar *uri;
   gchar *title;
   gchar *container;
-  gboolean seekable;
+  gboolean seekable, is_live;
   GstTagList *tags;
   GstSample *image_sample;
 
diff --git a/gst-libs/gst/player/gstplayer-media-info.c b/gst-libs/gst/player/gstplayer-media-info.c
index 85a53d4..bba8ea6 100644
--- a/gst-libs/gst/player/gstplayer-media-info.c
+++ b/gst-libs/gst/player/gstplayer-media-info.c
@@ -410,6 +410,7 @@
 gst_player_media_info_init (GstPlayerMediaInfo * info)
 {
   info->duration = -1;
+  info->is_live = FALSE;
   info->seekable = FALSE;
 }
 
@@ -558,6 +559,7 @@
   info = gst_player_media_info_new (ref->uri);
   info->duration = ref->duration;
   info->seekable = ref->seekable;
+  info->is_live = ref->is_live;
   if (ref->tags)
     info->tags = gst_tag_list_ref (ref->tags);
   if (ref->title)
@@ -644,6 +646,20 @@
 }
 
 /**
+ * gst_player_media_info_is_live:
+ * @info: a #GstPlayerMediaInfo
+ *
+ * Returns: %TRUE if the media is live.
+ */
+gboolean
+gst_player_media_info_is_live (const GstPlayerMediaInfo * info)
+{
+  g_return_val_if_fail (GST_IS_PLAYER_MEDIA_INFO (info), FALSE);
+
+  return info->is_live;
+}
+
+/**
  * gst_player_media_info_get_stream_list:
  * @info: a #GstPlayerMediaInfo
  *
diff --git a/gst-libs/gst/player/gstplayer-media-info.h b/gst-libs/gst/player/gstplayer-media-info.h
index a458b75..7ffd6b4 100644
--- a/gst-libs/gst/player/gstplayer-media-info.h
+++ b/gst-libs/gst/player/gstplayer-media-info.h
@@ -169,6 +169,8 @@
                 (const GstPlayerMediaInfo *info);
 gboolean      gst_player_media_info_is_seekable
                 (const GstPlayerMediaInfo *info);
+gboolean      gst_player_media_info_is_live
+                (const GstPlayerMediaInfo *info);
 GstClockTime  gst_player_media_info_get_duration
                 (const GstPlayerMediaInfo *info);
 GList*        gst_player_media_info_get_stream_list
diff --git a/gst-libs/gst/player/gstplayer-video-overlay-video-renderer.c b/gst-libs/gst/player/gstplayer-video-overlay-video-renderer.c
index 72a35e0..7764d43 100644
--- a/gst-libs/gst/player/gstplayer-video-overlay-video-renderer.c
+++ b/gst-libs/gst/player/gstplayer-video-overlay-video-renderer.c
@@ -255,7 +255,7 @@
  * Configure a subregion as a video target within the window set by
  * gst_player_video_overlay_video_renderer_set_window_handle(). If this is not
  * used or not supported the video will fill the area of the window set as the
- * overlay to 100%. By specifying the rectangle, the video can be overlayed to
+ * overlay to 100%. By specifying the rectangle, the video can be overlaid to
  * a specific region of that window only. After setting the new rectangle one
  * should call gst_player_video_overlay_video_renderer_expose() to force a
  * redraw. To unset the region pass -1 for the @width and @height parameters.
diff --git a/gst-libs/gst/player/gstplayer.c b/gst-libs/gst/player/gstplayer.c
index 871ba43..62cd800 100644
--- a/gst-libs/gst/player/gstplayer.c
+++ b/gst-libs/gst/player/gstplayer.c
@@ -65,6 +65,7 @@
 #define DEFAULT_MUTE FALSE
 #define DEFAULT_RATE 1.0
 #define DEFAULT_POSITION_UPDATE_INTERVAL_MS 100
+#define DEFAULT_AUDIO_VIDEO_OFFSET 0
 
 GQuark
 gst_player_error_quark (void)
@@ -77,6 +78,26 @@
   return quark;
 }
 
+static GQuark QUARK_CONFIG;
+
+/* Keep ConfigQuarkId and _config_quark_strings ordered and synced */
+typedef enum
+{
+  CONFIG_QUARK_USER_AGENT = 0,
+  CONFIG_QUARK_POSITION_INTERVAL_UPDATE,
+
+  CONFIG_QUARK_MAX
+} ConfigQuarkId;
+
+static const gchar *_config_quark_strings[] = {
+  "user-agent",
+  "position-interval-update",
+};
+
+GQuark _config_quark_table[CONFIG_QUARK_MAX];
+
+#define CONFIG_QUARK(q) _config_quark_table[CONFIG_QUARK_##q]
+
 enum
 {
   PROP_0,
@@ -94,12 +115,15 @@
   PROP_MUTE,
   PROP_RATE,
   PROP_PIPELINE,
-  PROP_POSITION_UPDATE_INTERVAL,
+  PROP_VIDEO_MULTIVIEW_MODE,
+  PROP_VIDEO_MULTIVIEW_FLAGS,
+  PROP_AUDIO_VIDEO_OFFSET,
   PROP_LAST
 };
 
 enum
 {
+  SIGNAL_URI_LOADED,
   SIGNAL_POSITION_UPDATED,
   SIGNAL_DURATION_CHANGED,
   SIGNAL_STATE_CHANGED,
@@ -131,6 +155,7 @@
   GstPlayerSignalDispatcher *signal_dispatcher;
 
   gchar *uri;
+  gchar *redirect_uri;
   gchar *suburi;
 
   GThread *thread;
@@ -146,7 +171,6 @@
   GSource *tick_source, *ready_timeout_source;
 
   gdouble rate;
-  guint position_update_interval_ms;
 
   GstPlayerState app_state;
   gint buffering;
@@ -156,11 +180,17 @@
 
   GstElement *current_vis_element;
 
+  GstStructure *config;
+
   /* Protected by lock */
   gboolean seek_pending;        /* Only set from main context */
   GstClockTime last_seek_time;  /* Only set from main context */
   GSource *seek_source;
   GstClockTime seek_position;
+  /* If TRUE, all signals are inhibited except the
+   * state-changed:GST_PLAYER_STATE_STOPPED/PAUSED. This ensures that no signal
+   * is emitted after gst_player_stop/pause() has been called by the user. */
+  gboolean inhibit_sigs;
 };
 
 struct _GstPlayerClass
@@ -185,12 +215,11 @@
 static gpointer gst_player_main (gpointer data);
 
 static void gst_player_seek_internal_locked (GstPlayer * self);
-static gboolean gst_player_stop_internal (gpointer user_data);
+static void gst_player_stop_internal (GstPlayer * self, gboolean transient);
 static gboolean gst_player_pause_internal (gpointer user_data);
 static gboolean gst_player_play_internal (gpointer user_data);
-static gboolean gst_player_set_rate_internal (gpointer user_data);
-static gboolean gst_player_set_position_update_interval_internal (gpointer
-    user_data);
+static gboolean gst_player_seek_internal (gpointer user_data);
+static void gst_player_set_rate_internal (GstPlayer * self);
 static void change_state (GstPlayer * self, GstPlayerState state);
 
 static GstPlayerMediaInfo *gst_player_media_info_create (GstPlayer * self);
@@ -234,15 +263,38 @@
   self->context = g_main_context_new ();
   self->loop = g_main_loop_new (self->context, FALSE);
 
-  self->position_update_interval_ms = DEFAULT_POSITION_UPDATE_INTERVAL_MS;
+  /* *INDENT-OFF* */
+  self->config = gst_structure_new_id (QUARK_CONFIG,
+      CONFIG_QUARK (POSITION_INTERVAL_UPDATE), G_TYPE_UINT, DEFAULT_POSITION_UPDATE_INTERVAL_MS,
+      NULL);
+  /* *INDENT-ON* */
+
   self->seek_pending = FALSE;
   self->seek_position = GST_CLOCK_TIME_NONE;
   self->last_seek_time = GST_CLOCK_TIME_NONE;
+  self->inhibit_sigs = FALSE;
 
   GST_TRACE_OBJECT (self, "Initialized");
 }
 
 static void
+config_quark_initialize (void)
+{
+  gint i;
+
+  QUARK_CONFIG = g_quark_from_static_string ("player-config");
+
+  if (G_N_ELEMENTS (_config_quark_strings) != CONFIG_QUARK_MAX)
+    g_warning ("the quark table is not consistent! %d != %d",
+        (int) G_N_ELEMENTS (_config_quark_strings), CONFIG_QUARK_MAX);
+
+  for (i = 0; i < CONFIG_QUARK_MAX; i++) {
+    _config_quark_table[i] =
+        g_quark_from_static_string (_config_quark_strings[i]);
+  }
+}
+
+static void
 gst_player_class_init (GstPlayerClass * klass)
 {
   GObjectClass *gobject_class = (GObjectClass *) klass;
@@ -318,15 +370,33 @@
       g_param_spec_double ("rate", "rate", "Playback rate",
       -64.0, 64.0, DEFAULT_RATE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
 
-  param_specs[PROP_POSITION_UPDATE_INTERVAL] =
-      g_param_spec_uint ("position-update-interval", "Position update interval",
-      "Interval in milliseconds between two position-updated signals."
-      "Pass 0 to stop updating the position.",
-      0, 10000, DEFAULT_POSITION_UPDATE_INTERVAL_MS,
+  param_specs[PROP_VIDEO_MULTIVIEW_MODE] =
+      g_param_spec_enum ("video-multiview-mode",
+      "Multiview Mode Override",
+      "Re-interpret a video stream as one of several frame-packed stereoscopic modes.",
+      GST_TYPE_VIDEO_MULTIVIEW_FRAME_PACKING,
+      GST_VIDEO_MULTIVIEW_FRAME_PACKING_NONE,
       G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
 
+  param_specs[PROP_VIDEO_MULTIVIEW_FLAGS] =
+      g_param_spec_flags ("video-multiview-flags",
+      "Multiview Flags Override",
+      "Override details of the multiview frame layout",
+      GST_TYPE_VIDEO_MULTIVIEW_FLAGS, GST_VIDEO_MULTIVIEW_FLAGS_NONE,
+      G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+
+  param_specs[PROP_AUDIO_VIDEO_OFFSET] =
+      g_param_spec_int64 ("audio-video-offset", "Audio Video Offset",
+      "The synchronisation offset between audio and video in nanoseconds",
+      G_MININT64, G_MAXINT64, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+
   g_object_class_install_properties (gobject_class, PROP_LAST, param_specs);
 
+  signals[SIGNAL_URI_LOADED] =
+      g_signal_new ("uri-loaded", G_TYPE_FROM_CLASS (klass),
+      G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS, 0, NULL,
+      NULL, NULL, G_TYPE_NONE, 1, G_TYPE_STRING);
+
   signals[SIGNAL_POSITION_UPDATED] =
       g_signal_new ("position-updated", G_TYPE_FROM_CLASS (klass),
       G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS, 0, NULL,
@@ -386,6 +456,8 @@
       g_signal_new ("seek-done", G_TYPE_FROM_CLASS (klass),
       G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS, 0, NULL,
       NULL, NULL, G_TYPE_NONE, 1, GST_TYPE_CLOCK_TIME);
+
+  config_quark_initialize ();
 }
 
 static void
@@ -419,6 +491,7 @@
   GST_TRACE_OBJECT (self, "Finalizing");
 
   g_free (self->uri);
+  g_free (self->redirect_uri);
   g_free (self->suburi);
   if (self->global_tags)
     gst_tag_list_unref (self->global_tags);
@@ -428,6 +501,8 @@
     g_object_unref (self->signal_dispatcher);
   if (self->current_vis_element)
     gst_object_unref (self->current_vis_element);
+  if (self->config)
+    gst_structure_free (self->config);
   g_mutex_clear (&self->lock);
   g_cond_clear (&self->cond);
 
@@ -450,12 +525,34 @@
   G_OBJECT_CLASS (parent_class)->constructed (object);
 }
 
+typedef struct
+{
+  GstPlayer *player;
+  gchar *uri;
+} UriLoadedSignalData;
+
+static void
+uri_loaded_dispatch (gpointer user_data)
+{
+  UriLoadedSignalData *data = user_data;
+
+  g_signal_emit (data->player, signals[SIGNAL_URI_LOADED], 0, data->uri);
+}
+
+static void
+uri_loaded_signal_data_free (UriLoadedSignalData * data)
+{
+  g_object_unref (data->player);
+  g_free (data->uri);
+  g_free (data);
+}
+
 static gboolean
 gst_player_set_uri_internal (gpointer user_data)
 {
   GstPlayer *self = user_data;
 
-  gst_player_stop_internal (self);
+  gst_player_stop_internal (self, FALSE);
 
   g_mutex_lock (&self->lock);
 
@@ -463,6 +560,17 @@
 
   g_object_set (self->playbin, "uri", self->uri, NULL);
 
+  if (g_signal_handler_find (self, G_SIGNAL_MATCH_ID,
+          signals[SIGNAL_URI_LOADED], 0, NULL, NULL, NULL) != 0) {
+    UriLoadedSignalData *data = g_new (UriLoadedSignalData, 1);
+
+    data->player = g_object_ref (self);
+    data->uri = g_strdup (self->uri);
+    gst_player_signal_dispatcher_dispatch (self->signal_dispatcher, self,
+        uri_loaded_dispatch, data,
+        (GDestroyNotify) uri_loaded_signal_data_free);
+  }
+
   /* if have suburi from previous playback then free it */
   if (self->suburi) {
     g_free (self->suburi);
@@ -486,14 +594,15 @@
   target_state = self->target_state;
   position = gst_player_get_position (self);
 
-  gst_player_stop_internal (self);
+  gst_player_stop_internal (self, TRUE);
   g_mutex_lock (&self->lock);
 
   GST_DEBUG_OBJECT (self, "Changing SUBURI to '%s'",
       GST_STR_NULL (self->suburi));
 
   g_object_set (self->playbin, "suburi", self->suburi, NULL);
-  g_object_set (self->playbin, "uri", self->uri, NULL);
+  g_object_set (self->playbin, "uri",
+      self->redirect_uri ? self->redirect_uri : self->uri, NULL);
 
   g_mutex_unlock (&self->lock);
 
@@ -509,6 +618,26 @@
 }
 
 static void
+gst_player_set_rate_internal (GstPlayer * self)
+{
+  self->seek_position = gst_player_get_position (self);
+
+  /* If there is no seek being dispatch to the main context currently do that,
+   * otherwise we just updated the rate so that it will be taken by
+   * the seek handler from the main context instead of the old one.
+   */
+  if (!self->seek_source) {
+    /* If no seek is pending then create new seek source */
+    if (!self->seek_pending) {
+      self->seek_source = g_idle_source_new ();
+      g_source_set_callback (self->seek_source,
+          (GSourceFunc) gst_player_seek_internal, self, NULL);
+      g_source_attach (self->seek_source, self->context);
+    }
+  }
+}
+
+static void
 gst_player_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec)
 {
@@ -524,6 +653,8 @@
     case PROP_URI:{
       g_mutex_lock (&self->lock);
       g_free (self->uri);
+      g_free (self->redirect_uri);
+      self->redirect_uri = NULL;
 
       self->uri = g_value_dup_string (value);
       GST_DEBUG_OBJECT (self, "Set uri=%s", self->uri);
@@ -553,22 +684,27 @@
       g_mutex_lock (&self->lock);
       self->rate = g_value_get_double (value);
       GST_DEBUG_OBJECT (self, "Set rate=%lf", g_value_get_double (value));
-      g_mutex_unlock (&self->lock);
-
       gst_player_set_rate_internal (self);
+      g_mutex_unlock (&self->lock);
       break;
     case PROP_MUTE:
       GST_DEBUG_OBJECT (self, "Set mute=%d", g_value_get_boolean (value));
       g_object_set_property (G_OBJECT (self->playbin), "mute", value);
       break;
-    case PROP_POSITION_UPDATE_INTERVAL:
-      g_mutex_lock (&self->lock);
-      self->position_update_interval_ms = g_value_get_uint (value);
-      GST_DEBUG_OBJECT (self, "Set position update interval=%u ms",
-          g_value_get_uint (value));
-      g_mutex_unlock (&self->lock);
-
-      gst_player_set_position_update_interval_internal (self);
+    case PROP_VIDEO_MULTIVIEW_MODE:
+      GST_DEBUG_OBJECT (self, "Set multiview mode=%u",
+          g_value_get_enum (value));
+      g_object_set_property (G_OBJECT (self->playbin), "video-multiview-mode",
+          value);
+      break;
+    case PROP_VIDEO_MULTIVIEW_FLAGS:
+      GST_DEBUG_OBJECT (self, "Set multiview flags=%x",
+          g_value_get_flags (value));
+      g_object_set_property (G_OBJECT (self->playbin), "video-multiview-flags",
+          value);
+      break;
+    case PROP_AUDIO_VIDEO_OFFSET:
+      g_object_set_property (G_OBJECT (self->playbin), "av-offset", value);
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -647,7 +783,7 @@
       break;
     case PROP_RATE:
       g_mutex_lock (&self->lock);
-      g_value_set_double (value, gst_player_get_rate (self));
+      g_value_set_double (value, self->rate);
       g_mutex_unlock (&self->lock);
       break;
     case PROP_MUTE:
@@ -657,10 +793,22 @@
     case PROP_PIPELINE:
       g_value_set_object (value, self->playbin);
       break;
-    case PROP_POSITION_UPDATE_INTERVAL:
-      g_mutex_lock (&self->lock);
-      g_value_set_uint (value, gst_player_get_position_update_interval (self));
-      g_mutex_unlock (&self->lock);
+    case PROP_VIDEO_MULTIVIEW_MODE:{
+      g_object_get_property (G_OBJECT (self->playbin), "video-multiview-mode",
+          value);
+      GST_TRACE_OBJECT (self, "Return multiview mode=%d",
+          g_value_get_enum (value));
+      break;
+    }
+    case PROP_VIDEO_MULTIVIEW_FLAGS:{
+      g_object_get_property (G_OBJECT (self->playbin), "video-multiview-flags",
+          value);
+      GST_TRACE_OBJECT (self, "Return multiview flags=%x",
+          g_value_get_flags (value));
+      break;
+    }
+    case PROP_AUDIO_VIDEO_OFFSET:
+      g_object_get_property (G_OBJECT (self->playbin), "av-offset", value);
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -693,6 +841,10 @@
 {
   StateChangedSignalData *data = user_data;
 
+  if (data->player->inhibit_sigs && data->state != GST_PLAYER_STATE_STOPPED
+      && data->state != GST_PLAYER_STATE_PAUSED)
+    return;
+
   g_signal_emit (data->player, signals[SIGNAL_STATE_CHANGED], 0, data->state);
 }
 
@@ -737,6 +889,9 @@
 {
   PositionUpdatedSignalData *data = user_data;
 
+  if (data->player->inhibit_sigs)
+    return;
+
   if (data->player->target_state >= GST_STATE_PAUSED) {
     g_signal_emit (data->player, signals[SIGNAL_POSITION_UPDATED], 0,
         data->position);
@@ -782,13 +937,17 @@
 static void
 add_tick_source (GstPlayer * self)
 {
+  guint position_update_interval_ms;
+
   if (self->tick_source)
     return;
 
-  if (!self->position_update_interval_ms)
+  position_update_interval_ms =
+      gst_player_config_get_position_update_interval (self->config);
+  if (!position_update_interval_ms)
     return;
 
-  self->tick_source = g_timeout_source_new (self->position_update_interval_ms);
+  self->tick_source = g_timeout_source_new (position_update_interval_ms);
   g_source_set_callback (self->tick_source, (GSourceFunc) tick_cb, self, NULL);
   g_source_attach (self->tick_source, self->context);
 }
@@ -853,6 +1012,9 @@
 {
   ErrorSignalData *data = user_data;
 
+  if (data->player->inhibit_sigs)
+    return;
+
   g_signal_emit (data->player, signals[SIGNAL_ERROR], 0, data->err);
 }
 
@@ -939,6 +1101,9 @@
 {
   WarningSignalData *data = user_data;
 
+  if (data->player->inhibit_sigs)
+    return;
+
   g_signal_emit (data->player, signals[SIGNAL_WARNING], 0, data->err);
 }
 
@@ -1051,7 +1216,12 @@
 static void
 eos_dispatch (gpointer user_data)
 {
-  g_signal_emit (user_data, signals[SIGNAL_END_OF_STREAM], 0);
+  GstPlayer *player = user_data;
+
+  if (player->inhibit_sigs)
+    return;
+
+  g_signal_emit (player, signals[SIGNAL_END_OF_STREAM], 0);
 }
 
 static void
@@ -1086,6 +1256,9 @@
 {
   BufferingSignalData *data = user_data;
 
+  if (data->player->inhibit_sigs)
+    return;
+
   if (data->player->target_state >= GST_STATE_PAUSED) {
     g_signal_emit (data->player, signals[SIGNAL_BUFFERING], 0, data->percent);
   }
@@ -1201,6 +1374,9 @@
 {
   VideoDimensionsChangedSignalData *data = user_data;
 
+  if (data->player->inhibit_sigs)
+    return;
+
   if (data->player->target_state >= GST_STATE_PAUSED) {
     g_signal_emit (data->player, signals[SIGNAL_VIDEO_DIMENSIONS_CHANGED], 0,
         data->width, data->height);
@@ -1286,6 +1462,9 @@
 {
   DurationChangedSignalData *data = user_data;
 
+  if (data->player->inhibit_sigs)
+    return;
+
   if (data->player->target_state >= GST_STATE_PAUSED) {
     g_signal_emit (data->player, signals[SIGNAL_DURATION_CHANGED], 0,
         data->duration);
@@ -1330,6 +1509,9 @@
 {
   SeekDoneSignalData *data = user_data;
 
+  if (data->player->inhibit_sigs)
+    return;
+
   g_signal_emit (data->player, signals[SIGNAL_SEEK_DONE], 0, data->position);
 }
 
@@ -1408,8 +1590,10 @@
       }
 
       check_video_dimensions_changed (self);
-      gst_element_query_duration (self->playbin, GST_FORMAT_TIME, &duration);
-      emit_duration_changed (self, duration);
+      if (gst_element_query_duration (self->playbin, GST_FORMAT_TIME,
+              &duration)) {
+        emit_duration_changed (self, duration);
+      }
     }
 
     if (new_state == GST_STATE_PAUSED
@@ -1548,14 +1732,7 @@
 
   gst_message_parse_tag (msg, &tags);
 
-  /*
-   * NOTE: Inorder to get global tag you must apply the following patches in
-   * your gstreamer build.
-   *
-   * http://cgit.freedesktop.org/gstreamer/gst-plugins-good/commit/?id=9119fbd774093e3ae762c8652acd80d54b2c3b45
-   * http://cgit.freedesktop.org/gstreamer/gstreamer/commit/?id=18b058100940bdcaed86fa412e3582a02871f995
-   */
-  GST_DEBUG_OBJECT (self, "recieved %s tags",
+  GST_DEBUG_OBJECT (self, "received %s tags",
       gst_tag_list_get_scope (tags) ==
       GST_TAG_SCOPE_GLOBAL ? "global" : "stream");
 
@@ -1621,14 +1798,14 @@
       /* Remember target state and restore after setting the URI */
       target_state = self->target_state;
 
+      gst_player_stop_internal (self, TRUE);
+
       g_mutex_lock (&self->lock);
-      g_free (self->uri);
-
-      self->uri = g_strdup (new_location);
+      g_free (self->redirect_uri);
+      self->redirect_uri = g_strdup (new_location);
+      g_object_set (self->playbin, "uri", self->redirect_uri, NULL);
       g_mutex_unlock (&self->lock);
 
-      gst_player_set_uri_internal (self);
-
       if (target_state == GST_STATE_PAUSED)
         gst_player_pause_internal (self);
       else if (target_state == GST_STATE_PLAYING)
@@ -1672,6 +1849,9 @@
 {
   MediaInfoUpdatedSignalData *data = user_data;
 
+  if (data->player->inhibit_sigs)
+    return;
+
   if (data->player->target_state >= GST_STATE_PAUSED) {
     g_signal_emit (data->player, signals[SIGNAL_MEDIA_INFO_UPDATED], 0,
         data->info);
@@ -2235,6 +2415,7 @@
   media_info = gst_player_media_info_new (self->uri);
   media_info->duration = gst_player_get_duration (self);
   media_info->tags = self->global_tags;
+  media_info->is_live = self->is_live;
   self->global_tags = NULL;
 
   query = gst_query_new_seeking (GST_FORMAT_TIME);
@@ -2256,10 +2437,10 @@
   media_info->image_sample = get_from_tags (self, media_info, get_cover_sample);
 
   GST_DEBUG_OBJECT (self, "uri: %s title: %s duration: %" GST_TIME_FORMAT
-      " seekable: %s container: %s image_sample %p",
+      " seekable: %s live: %s container: %s image_sample %p",
       media_info->uri, media_info->title, GST_TIME_ARGS (media_info->duration),
-      media_info->seekable ? "yes" : "no", media_info->container,
-      media_info->image_sample);
+      media_info->seekable ? "yes" : "no", media_info->is_live ? "yes" : "no",
+      media_info->container, media_info->image_sample);
 
   GST_DEBUG_OBJECT (self, "end");
   return media_info;
@@ -2309,8 +2490,13 @@
 static void
 volume_changed_dispatch (gpointer user_data)
 {
-  g_signal_emit (user_data, signals[SIGNAL_VOLUME_CHANGED], 0);
-  g_object_notify_by_pspec (G_OBJECT (user_data), param_specs[PROP_VOLUME]);
+  GstPlayer *player = user_data;
+
+  if (player->inhibit_sigs)
+    return;
+
+  g_signal_emit (player, signals[SIGNAL_VOLUME_CHANGED], 0);
+  g_object_notify_by_pspec (G_OBJECT (player), param_specs[PROP_VOLUME]);
 }
 
 static void
@@ -2328,8 +2514,13 @@
 static void
 mute_changed_dispatch (gpointer user_data)
 {
-  g_signal_emit (user_data, signals[SIGNAL_MUTE_CHANGED], 0);
-  g_object_notify_by_pspec (G_OBJECT (user_data), param_specs[PROP_MUTE]);
+  GstPlayer *player = user_data;
+
+  if (player->inhibit_sigs)
+    return;
+
+  g_signal_emit (player, signals[SIGNAL_MUTE_CHANGED], 0);
+  g_object_notify_by_pspec (G_OBJECT (player), param_specs[PROP_MUTE]);
 }
 
 static void
@@ -2344,6 +2535,26 @@
   }
 }
 
+static void
+source_setup_cb (GstElement * playbin, GstElement * source, GstPlayer * self)
+{
+  gchar *user_agent;
+
+  user_agent = gst_player_config_get_user_agent (self->config);
+  if (user_agent) {
+    GParamSpec *prop;
+
+    prop = g_object_class_find_property (G_OBJECT_GET_CLASS (source),
+        "user-agent");
+    if (prop && prop->value_type == G_TYPE_STRING) {
+      GST_INFO_OBJECT (self, "Setting source user-agent: %s", user_agent);
+      g_object_set (source, "user-agent", user_agent, NULL);
+    }
+
+    g_free (user_agent);
+  }
+}
+
 static gpointer
 gst_player_main (gpointer data)
 {
@@ -2376,14 +2587,7 @@
 
   scaletempo = gst_element_factory_make ("scaletempo", NULL);
   if (scaletempo) {
-    if (gst_plugin_feature_check_version (GST_PLUGIN_FEATURE
-            (gst_element_get_factory (scaletempo)), 1, 6, 1)) {
-      g_object_set (self->playbin, "audio-filter", scaletempo, NULL);
-    } else {
-      gst_object_unref (scaletempo);
-      g_warning ("GstPlayer: scaletempo >= 1.6.1 is needed for preserving "
-          "audio pitch during trick modes");
-    }
+    g_object_set (self->playbin, "audio-filter", scaletempo, NULL);
   } else {
     g_warning ("GstPlayer: scaletempo element not available. Audio pitch "
         "will not be preserved during trick modes");
@@ -2433,6 +2637,8 @@
       G_CALLBACK (volume_notify_cb), self);
   g_signal_connect (self->playbin, "notify::mute",
       G_CALLBACK (mute_notify_cb), self);
+  g_signal_connect (self->playbin, "source-setup",
+      G_CALLBACK (source_setup_cb), self);
 
   self->target_state = GST_STATE_NULL;
   self->current_state = GST_STATE_NULL;
@@ -2440,6 +2646,7 @@
   self->buffering = 100;
   self->is_eos = FALSE;
   self->is_live = FALSE;
+  self->rate = 1.0;
 
   GST_TRACE_OBJECT (self, "Starting main loop");
   g_main_loop_run (self->loop);
@@ -2547,7 +2754,8 @@
     change_state (self, GST_PLAYER_STATE_BUFFERING);
 
   if (self->current_state >= GST_STATE_PAUSED && !self->is_eos
-      && self->buffering >= 100) {
+      && self->buffering >= 100 && !(self->seek_position != GST_CLOCK_TIME_NONE
+          || self->seek_pending)) {
     state_ret = gst_element_set_state (self->playbin, GST_STATE_PLAYING);
   } else {
     state_ret = gst_element_set_state (self->playbin, GST_STATE_PAUSED);
@@ -2577,7 +2785,7 @@
         GST_SEEK_FLAG_FLUSH, 0);
     if (!ret) {
       GST_ERROR_OBJECT (self, "Seek to beginning failed");
-      gst_player_stop_internal (self);
+      gst_player_stop_internal (self, TRUE);
       gst_player_play_internal (self);
     }
   }
@@ -2596,6 +2804,10 @@
 {
   g_return_if_fail (GST_IS_PLAYER (self));
 
+  g_mutex_lock (&self->lock);
+  self->inhibit_sigs = FALSE;
+  g_mutex_unlock (&self->lock);
+
   g_main_context_invoke_full (self->context, G_PRIORITY_DEFAULT,
       gst_player_play_internal, self, NULL);
 }
@@ -2644,7 +2856,7 @@
         GST_SEEK_FLAG_FLUSH, 0);
     if (!ret) {
       GST_ERROR_OBJECT (self, "Seek to beginning failed");
-      gst_player_stop_internal (self);
+      gst_player_stop_internal (self, TRUE);
       gst_player_pause_internal (self);
     }
   }
@@ -2663,16 +2875,18 @@
 {
   g_return_if_fail (GST_IS_PLAYER (self));
 
+  g_mutex_lock (&self->lock);
+  self->inhibit_sigs = FALSE;
+  g_mutex_unlock (&self->lock);
+
   g_main_context_invoke_full (self->context, G_PRIORITY_DEFAULT,
       gst_player_pause_internal, self, NULL);
 }
 
-static gboolean
-gst_player_stop_internal (gpointer user_data)
+static void
+gst_player_stop_internal (GstPlayer * self, gboolean transient)
 {
-  GstPlayer *self = GST_PLAYER (user_data);
-
-  GST_DEBUG_OBJECT (self, "Stop");
+  GST_DEBUG_OBJECT (self, "Stop (transient %d)", transient);
 
   tick_cb (self);
   remove_tick_source (self);
@@ -2686,7 +2900,10 @@
   gst_bus_set_flushing (self->bus, TRUE);
   gst_element_set_state (self->playbin, GST_STATE_READY);
   gst_bus_set_flushing (self->bus, FALSE);
-  change_state (self, GST_PLAYER_STATE_STOPPED);
+  change_state (self, transient
+      && self->app_state !=
+      GST_PLAYER_STATE_STOPPED ? GST_PLAYER_STATE_BUFFERING :
+      GST_PLAYER_STATE_STOPPED);
   self->buffering = 100;
   g_mutex_lock (&self->lock);
   if (self->media_info) {
@@ -2707,10 +2924,19 @@
   self->last_seek_time = GST_CLOCK_TIME_NONE;
   self->rate = 1.0;
   g_mutex_unlock (&self->lock);
+}
+
+static gboolean
+gst_player_stop_internal_dispatch (gpointer user_data)
+{
+  GstPlayer *self = GST_PLAYER (user_data);
+
+  gst_player_stop_internal (self, FALSE);
 
   return G_SOURCE_REMOVE;
 }
 
+
 /**
  * gst_player_stop:
  * @player: #GstPlayer instance
@@ -2723,8 +2949,12 @@
 {
   g_return_if_fail (GST_IS_PLAYER (self));
 
+  g_mutex_lock (&self->lock);
+  self->inhibit_sigs = TRUE;
+  g_mutex_unlock (&self->lock);
+
   g_main_context_invoke_full (self->context, G_PRIORITY_DEFAULT,
-      gst_player_stop_internal, self, NULL);
+      gst_player_stop_internal_dispatch, self, NULL);
 }
 
 /* Must be called with lock from main context, releases lock! */
@@ -2772,11 +3002,9 @@
 
   flags |= GST_SEEK_FLAG_FLUSH;
 
-#if GST_CHECK_VERSION(1,5,0)
   if (rate != 1.0) {
     flags |= GST_SEEK_FLAG_TRICKMODE;
   }
-#endif
 
   if (rate >= 0.0) {
     s_event = gst_event_new_seek (rate, GST_FORMAT_TIME, flags,
@@ -2809,34 +3037,6 @@
   return G_SOURCE_REMOVE;
 }
 
-static gboolean
-gst_player_set_rate_internal (gpointer user_data)
-{
-  GstPlayer *self = user_data;
-
-  g_mutex_lock (&self->lock);
-
-  self->seek_position = gst_player_get_position (self);
-
-  /* If there is no seek being dispatch to the main context currently do that,
-   * otherwise we just updated the rate so that it will be taken by
-   * the seek handler from the main context instead of the old one.
-   */
-  if (!self->seek_source) {
-    /* If no seek is pending then create new seek source */
-    if (!self->seek_pending) {
-      self->seek_source = g_idle_source_new ();
-      g_source_set_callback (self->seek_source,
-          (GSourceFunc) gst_player_seek_internal, self, NULL);
-      g_source_attach (self->seek_source, self->context);
-    }
-  }
-
-  g_mutex_unlock (&self->lock);
-
-  return G_SOURCE_REMOVE;
-}
-
 /**
  * gst_player_set_rate:
  * @player: #GstPlayer instance
@@ -2850,11 +3050,7 @@
   g_return_if_fail (GST_IS_PLAYER (self));
   g_return_if_fail (rate != 0.0);
 
-  g_mutex_lock (&self->lock);
-  self->rate = rate;
-  g_mutex_unlock (&self->lock);
-
-  gst_player_set_rate_internal (self);
+  g_object_set (self, "rate", rate, NULL);
 }
 
 /**
@@ -2866,62 +3062,13 @@
 gdouble
 gst_player_get_rate (GstPlayer * self)
 {
+  gdouble val;
+
   g_return_val_if_fail (GST_IS_PLAYER (self), DEFAULT_RATE);
 
-  return self->rate;
-}
+  g_object_get (self, "rate", &val, NULL);
 
-static gboolean
-gst_player_set_position_update_interval_internal (gpointer user_data)
-{
-  GstPlayer *self = user_data;
-
-  g_mutex_lock (&self->lock);
-
-  if (self->tick_source) {
-    remove_tick_source (self);
-    add_tick_source (self);
-  }
-
-  g_mutex_unlock (&self->lock);
-
-  return G_SOURCE_REMOVE;
-}
-
-/**
- * gst_player_set_position_update_interval:
- * @player: #GstPlayer instance
- * @interval: interval in ms
- *
- * Set interval in milliseconds between two position-updated signals.
- * Pass 0 to stop updating the position.
- */
-void
-gst_player_set_position_update_interval (GstPlayer * self, guint interval)
-{
-  g_return_if_fail (GST_IS_PLAYER (self));
-  g_return_if_fail (interval <= 10000);
-
-  g_mutex_lock (&self->lock);
-  self->position_update_interval_ms = interval;
-  g_mutex_unlock (&self->lock);
-
-  gst_player_set_position_update_interval_internal (self);
-}
-
-/**
- * gst_player_get_position_update_interval:
- * @player: #GstPlayer instance
- *
- * Returns: current position update interval in milliseconds
- */
-guint
-gst_player_get_position_update_interval (GstPlayer * self)
-{
-  g_return_val_if_fail (GST_IS_PLAYER (self),
-      DEFAULT_POSITION_UPDATE_INTERVAL_MS);
-
-  return self->position_update_interval_ms;
+  return val;
 }
 
 /**
@@ -3018,6 +3165,44 @@
 }
 
 /**
+ * gst_player_set_subtitle_uri:
+ * @player: #GstPlayer instance
+ * @uri: subtitle URI
+ *
+ * Returns: %TRUE or %FALSE
+ *
+ * Sets the external subtitle URI.
+ */
+void
+gst_player_set_subtitle_uri (GstPlayer * self, const gchar * suburi)
+{
+  g_return_if_fail (GST_IS_PLAYER (self));
+
+  g_object_set (self, "suburi", suburi, NULL);
+}
+
+/**
+ * gst_player_get_subtitle_uri:
+ * @player: #GstPlayer instance
+ *
+ * current subtitle URI
+ *
+ * Returns: (transfer full): URI of the current external subtitle.
+ *   g_free() after usage.
+ */
+gchar *
+gst_player_get_subtitle_uri (GstPlayer * self)
+{
+  gchar *val = NULL;
+
+  g_return_val_if_fail (GST_IS_PLAYER (self), NULL);
+
+  g_object_get (self, "suburi", &val, NULL);
+
+  return val;
+}
+
+/**
  * gst_player_get_position:
  * @player: #GstPlayer instance
  *
@@ -3397,46 +3582,6 @@
 }
 
 /**
- * gst_player_set_subtitle_uri:
- * @player: #GstPlayer instance
- * @uri: subtitle URI
- *
- * Returns: %TRUE or %FALSE
- *
- * Sets the external subtitle URI.
- */
-gboolean
-gst_player_set_subtitle_uri (GstPlayer * self, const gchar * suburi)
-{
-  g_return_val_if_fail (GST_IS_PLAYER (self), FALSE);
-
-  g_object_set (self, "suburi", suburi, NULL);
-
-  return TRUE;
-}
-
-/**
- * gst_player_get_subtitle_uri:
- * @player: #GstPlayer instance
- *
- * current subtitle URI
- *
- * Returns: (transfer full): URI of the current external subtitle.
- *   g_free() after usage.
- */
-gchar *
-gst_player_get_subtitle_uri (GstPlayer * self)
-{
-  gchar *val = NULL;
-
-  g_return_val_if_fail (GST_IS_PLAYER (self), NULL);
-
-  g_object_get (self, "suburi", &val, NULL);
-
-  return val;
-}
-
-/**
  * gst_player_set_visualization:
  * @player: #GstPlayer instance
  * @name: visualization element obtained from
@@ -3656,6 +3801,125 @@
       (gdouble) channel->min_value);
 }
 
+/**
+ * gst_player_get_multiview_mode:
+ * @player: #GstPlayer instance
+ *
+ * Retrieve the current value of the indicated @type.
+ *
+ * Returns: The current value of @type, Default: -1 "none"
+ *
+ * Since: 1.10
+ */
+GstVideoMultiviewMode
+gst_player_get_multiview_mode (GstPlayer * self)
+{
+  GstVideoMultiviewMode val = GST_VIDEO_MULTIVIEW_MODE_NONE;
+
+  g_return_val_if_fail (GST_IS_PLAYER (self), GST_VIDEO_MULTIVIEW_MODE_NONE);
+
+  g_object_get (self, "video-multiview-mode", &val, NULL);
+
+  return val;
+}
+
+/**
+ * gst_player_set_multiview_mode:
+ * @player: #GstPlayer instance
+ * @mode: The new value for the @type
+ *
+ * Sets the current value of the indicated mode @type to the passed
+ * value.
+ *
+ * Since: 1.10
+ */
+void
+gst_player_set_multiview_mode (GstPlayer * self, GstVideoMultiviewMode mode)
+{
+  g_return_if_fail (GST_IS_PLAYER (self));
+
+  g_object_set (self, "video-multiview-mode", mode, NULL);
+}
+
+/**
+ * gst_player_get_multiview_flags:
+ * @player: #GstPlayer instance
+ *
+ * Retrieve the current value of the indicated @type.
+ *
+ * Returns: The current value of @type, Default: 0x00000000 "none
+ *
+ * Since: 1.10
+ */
+GstVideoMultiviewFlags
+gst_player_get_multiview_flags (GstPlayer * self)
+{
+  GstVideoMultiviewFlags val = GST_VIDEO_MULTIVIEW_FLAGS_NONE;
+
+  g_return_val_if_fail (GST_IS_PLAYER (self), val);
+
+  g_object_get (self, "video-multiview-flags", &val, NULL);
+
+  return val;
+}
+
+/**
+ * gst_player_set_multiview_flags:
+ * @player: #GstPlayer instance
+ * @flags: The new value for the @type
+ *
+ * Sets the current value of the indicated mode @type to the passed
+ * value.
+ *
+ * Since: 1.10
+ */
+void
+gst_player_set_multiview_flags (GstPlayer * self, GstVideoMultiviewFlags flags)
+{
+  g_return_if_fail (GST_IS_PLAYER (self));
+
+  g_object_set (self, "video-multiview-flags", flags, NULL);
+}
+
+/**
+ * gst_player_get_audio_video_offset:
+ * @player: #GstPlayer instance
+ *
+ * Retrieve the current value of audio-video-offset property
+ *
+ * Returns: The current value of audio-video-offset in nanoseconds
+ *
+ * Since 1.10
+ */
+gint64
+gst_player_get_audio_video_offset (GstPlayer * self)
+{
+  gint64 val = 0;
+
+  g_return_val_if_fail (GST_IS_PLAYER (self), DEFAULT_AUDIO_VIDEO_OFFSET);
+
+  g_object_get (self, "audio-video-offset", &val, NULL);
+
+  return val;
+}
+
+/**
+ * gst_player_set_audio_video_offset:
+ * @player: #GstPlayer instance
+ * @offset: #gint64 in nanoseconds
+ *
+ * Sets audio-video-offset property by value of @offset
+ *
+ * Since 1.10
+ */
+void
+gst_player_set_audio_video_offset (GstPlayer * self, gint64 offset)
+{
+  g_return_if_fail (GST_IS_PLAYER (self));
+
+  g_object_set (self, "audio-video-offset", offset, NULL);
+}
+
 #define C_ENUM(v) ((gint) v)
 #define C_FLAGS(v) ((guint) v)
 
@@ -3784,3 +4048,156 @@
   g_assert_not_reached ();
   return NULL;
 }
+
+/**
+ * gst_player_set_config:
+ * @player: #GstPlayer instance
+ * @config: (transfer full): a #GstStructure
+ *
+ * Set the configuration of the player. If the player is already configured, and
+ * the configuration haven't change, this function will return %TRUE. If the
+ * player is not in the GST_PLAYER_STATE_STOPPED, this method will return %FALSE
+ * and active configuration will remain.
+ *
+ * @config is a #GstStructure that contains the configuration parameters for
+ * the player.
+ *
+ * This function takes ownership of @config.
+ *
+ * Returns: %TRUE when the configuration could be set.
+ * Since 1.10
+ */
+gboolean
+gst_player_set_config (GstPlayer * self, GstStructure * config)
+{
+  g_return_val_if_fail (GST_IS_PLAYER (self), FALSE);
+  g_return_val_if_fail (config != NULL, FALSE);
+
+  g_mutex_lock (&self->lock);
+
+  if (self->app_state != GST_PLAYER_STATE_STOPPED) {
+    GST_INFO_OBJECT (self, "can't change config while player is %s",
+        gst_player_state_get_name (self->app_state));
+    g_mutex_unlock (&self->lock);
+    return FALSE;
+  }
+
+  if (self->config)
+    gst_structure_free (self->config);
+  self->config = config;
+  g_mutex_unlock (&self->lock);
+
+  return TRUE;
+}
+
+/**
+ * gst_player_get_config:
+ * @player: #GstPlayer instance
+ *
+ * Get a copy of the current configuration of the player. This configuration
+ * can either be modified and used for the gst_player_set_config() call
+ * or it must be freed after usage.
+ *
+ * Returns: (transfer full): a copy of the current configuration of @player. Use
+ * gst_structure_free() after usage or gst_player_set_config().
+ *
+ * Since 1.10
+ */
+GstStructure *
+gst_player_get_config (GstPlayer * self)
+{
+  GstStructure *ret;
+
+  g_return_val_if_fail (GST_IS_PLAYER (self), NULL);
+
+  g_mutex_lock (&self->lock);
+  ret = gst_structure_copy (self->config);
+  g_mutex_unlock (&self->lock);
+
+  return ret;
+}
+
+/**
+ * gst_player_config_set_user_agent:
+ * @config: a #GstPlayer configuration
+ * @agent: the string to use as user agent
+ *
+ * Set the user agent to pass to the server if @player needs to connect
+ * to a server during playback. This is typically used when playing HTTP
+ * or RTSP streams.
+ *
+ * Since 1.10
+ */
+void
+gst_player_config_set_user_agent (GstStructure * config, const gchar * agent)
+{
+  g_return_if_fail (config != NULL);
+  g_return_if_fail (agent != NULL);
+
+  gst_structure_id_set (config,
+      CONFIG_QUARK (USER_AGENT), G_TYPE_STRING, agent, NULL);
+}
+
+/**
+ * gst_player_config_get_user_agent:
+ * @config: a #GstPlayer configuration
+ *
+ * Return the user agent which has been configured using
+ * gst_player_config_set_user_agent() if any.
+ *
+ * Returns: (transfer full): the configured agent, or %NULL
+ * Since 1.10
+ */
+gchar *
+gst_player_config_get_user_agent (const GstStructure * config)
+{
+  gchar *agent = NULL;
+
+  g_return_val_if_fail (config != NULL, NULL);
+
+  gst_structure_id_get (config,
+      CONFIG_QUARK (USER_AGENT), G_TYPE_STRING, &agent, NULL);
+
+  return agent;
+}
+
+/**
+ * gst_player_config_set_position_update_interval:
+ * @config: a #GstPlayer configuration
+ * @interval: interval in ms
+ *
+ * set interval in milliseconds between two position-updated signals.
+ * pass 0 to stop updating the position.
+ * Since 1.10
+ */
+void
+gst_player_config_set_position_update_interval (GstStructure * config,
+    guint interval)
+{
+  g_return_if_fail (config != NULL);
+  g_return_if_fail (interval <= 10000);
+
+  gst_structure_id_set (config,
+      CONFIG_QUARK (POSITION_INTERVAL_UPDATE), G_TYPE_UINT, interval, NULL);
+}
+
+/**
+ * gst_player_config_get_position_update_interval:
+ * @config: a #GstPlayer configuration
+ *
+ * Returns: current position update interval in milliseconds
+ *
+ * Since 1.10
+ */
+guint
+gst_player_config_get_position_update_interval (const GstStructure * config)
+{
+  guint interval = DEFAULT_POSITION_UPDATE_INTERVAL_MS;
+
+  g_return_val_if_fail (config != NULL, DEFAULT_POSITION_UPDATE_INTERVAL_MS);
+
+  gst_structure_id_get (config,
+      CONFIG_QUARK (POSITION_INTERVAL_UPDATE), G_TYPE_UINT, &interval, NULL);
+
+  return interval;
+}
diff --git a/gst-libs/gst/player/gstplayer.h b/gst-libs/gst/player/gstplayer.h
index 3391b0f..0ac66be 100644
--- a/gst-libs/gst/player/gstplayer.h
+++ b/gst-libs/gst/player/gstplayer.h
@@ -22,6 +22,7 @@
 #define __GST_PLAYER_H__
 
 #include <gst/gst.h>
+#include <gst/video/video.h>
 #include <gst/player/gstplayer-types.h>
 #include <gst/player/gstplayer-signal-dispatcher.h>
 #include <gst/player/gstplayer-video-renderer.h>
@@ -109,14 +110,14 @@
                                                        gdouble        rate);
 gdouble      gst_player_get_rate                      (GstPlayer    * player);
 
-void         gst_player_set_position_update_interval  (GstPlayer    * player,
-                                                       guint          interval);
-guint        gst_player_get_position_update_interval  (GstPlayer    * player);
-
 gchar *      gst_player_get_uri                       (GstPlayer    * player);
 void         gst_player_set_uri                       (GstPlayer    * player,
                                                        const gchar  * uri);
 
+gchar *      gst_player_get_subtitle_uri              (GstPlayer    * player);
+void         gst_player_set_subtitle_uri              (GstPlayer    * player,
+                                                       const gchar *uri);
+
 GstClockTime gst_player_get_position                  (GstPlayer    * player);
 GstClockTime gst_player_get_duration                  (GstPlayer    * player);
 
@@ -159,10 +160,6 @@
 GstPlayerSubtitleInfo * gst_player_get_current_subtitle_track
                                                       (GstPlayer    * player);
 
-gboolean     gst_player_set_subtitle_uri              (GstPlayer    * player,
-                                                       const gchar *uri);
-gchar *      gst_player_get_subtitle_uri              (GstPlayer    * player);
-
 gboolean     gst_player_set_visualization             (GstPlayer    * player,
                                                        const gchar *name);
 
@@ -178,6 +175,33 @@
 gdouble      gst_player_get_color_balance             (GstPlayer    * player,
                                                        GstPlayerColorBalanceType type);
 
+
+GstVideoMultiviewMode	 gst_player_get_multiview_mode (GstPlayer    * player);
+void                     gst_player_set_multiview_mode (GstPlayer    * player,
+                                                        GstVideoMultiviewMode mode);
+
+GstVideoMultiviewFlags  gst_player_get_multiview_flags  (GstPlayer  * player);
+void                    gst_player_set_multiview_flags  (GstPlayer  * player,
+                                                         GstVideoMultiviewFlags flags);
+
+gint64       gst_player_get_audio_video_offset        (GstPlayer    * player);
+void         gst_player_set_audio_video_offset        (GstPlayer    * player,
+                                                       gint64 offset);
+
+gboolean       gst_player_set_config                  (GstPlayer * player,
+                                                       GstStructure * config);
+GstStructure * gst_player_get_config                  (GstPlayer * player);
+
+/* helpers for configuring the config structure */
+
+void           gst_player_config_set_user_agent       (GstStructure * config,
+                                                       const gchar * agent);
+gchar *        gst_player_config_get_user_agent       (const GstStructure * config);
+
+void           gst_player_config_set_position_update_interval  (GstStructure * config,
+                                                                guint          interval);
+guint          gst_player_config_get_position_update_interval  (const GstStructure * config);
+
 G_END_DECLS
 
 #endif /* __GST_PLAYER_H__ */
diff --git a/gst-libs/gst/uridownloader/Makefile.in b/gst-libs/gst/uridownloader/Makefile.in
index daf72b3..7747e94 100644
--- a/gst-libs/gst/uridownloader/Makefile.in
+++ b/gst-libs/gst/uridownloader/Makefile.in
@@ -290,6 +290,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -311,6 +313,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -360,6 +364,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -505,6 +511,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -631,8 +639,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -675,8 +681,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/uridownloader/gsturidownloader.c b/gst-libs/gst/uridownloader/gsturidownloader.c
index 72e5e79..47b6f29 100644
--- a/gst-libs/gst/uridownloader/gsturidownloader.c
+++ b/gst-libs/gst/uridownloader/gsturidownloader.c
@@ -58,6 +58,10 @@
 static GstBusSyncReply gst_uri_downloader_bus_handler (GstBus * bus,
     GstMessage * message, gpointer data);
 
+static gboolean gst_uri_downloader_ensure_src (GstUriDownloader * downloader,
+    const gchar * uri);
+static void gst_uri_downloader_destroy_src (GstUriDownloader * downloader);
+
 static GstStaticPadTemplate sinkpadtemplate = GST_STATIC_PAD_TEMPLATE ("sink",
     GST_PAD_SINK,
     GST_PAD_ALWAYS,
@@ -112,11 +116,7 @@
 {
   GstUriDownloader *downloader = GST_URI_DOWNLOADER (object);
 
-  if (downloader->priv->urisrc != NULL) {
-    gst_element_set_state (downloader->priv->urisrc, GST_STATE_NULL);
-    gst_object_unref (downloader->priv->urisrc);
-    downloader->priv->urisrc = NULL;
-  }
+  gst_uri_downloader_destroy_src (downloader);
 
   if (downloader->priv->bus != NULL) {
     gst_object_unref (downloader->priv->bus);
@@ -347,16 +347,8 @@
 }
 
 static gboolean
-gst_uri_downloader_set_uri (GstUriDownloader * downloader, const gchar * uri,
-    const gchar * referer, gboolean compress, gboolean refresh,
-    gboolean allow_cache)
+gst_uri_downloader_ensure_src (GstUriDownloader * downloader, const gchar * uri)
 {
-  GstPad *pad;
-  GObjectClass *gobject_class;
-
-  if (!gst_uri_is_valid (uri))
-    return FALSE;
-
   if (downloader->priv->urisrc) {
     gchar *old_protocol, *new_protocol;
     gchar *old_uri;
@@ -367,22 +359,18 @@
     new_protocol = gst_uri_get_protocol (uri);
 
     if (!g_str_equal (old_protocol, new_protocol)) {
-      gst_element_set_state (downloader->priv->urisrc, GST_STATE_NULL);
-      gst_object_unref (downloader->priv->urisrc);
-      downloader->priv->urisrc = NULL;
+      gst_uri_downloader_destroy_src (downloader);
       GST_DEBUG_OBJECT (downloader, "Can't re-use old source element");
     } else {
       GError *err = NULL;
 
       GST_DEBUG_OBJECT (downloader, "Re-using old source element");
-      if (!gst_uri_handler_set_uri (GST_URI_HANDLER (downloader->priv->urisrc),
-              uri, &err)) {
-        GST_DEBUG_OBJECT (downloader, "Failed to re-use old source element: %s",
-            err->message);
+      if (!gst_uri_handler_set_uri
+          (GST_URI_HANDLER (downloader->priv->urisrc), uri, &err)) {
+        GST_DEBUG_OBJECT (downloader,
+            "Failed to re-use old source element: %s", err->message);
         g_clear_error (&err);
-        gst_element_set_state (downloader->priv->urisrc, GST_STATE_NULL);
-        gst_object_unref (downloader->priv->urisrc);
-        downloader->priv->urisrc = NULL;
+        gst_uri_downloader_destroy_src (downloader);
       }
     }
     g_free (old_uri);
@@ -395,10 +383,43 @@
         uri);
     downloader->priv->urisrc =
         gst_element_make_from_uri (GST_URI_SRC, uri, NULL, NULL);
-    if (!downloader->priv->urisrc)
-      return FALSE;
+    if (downloader->priv->urisrc) {
+      /* gst_element_make_from_uri returns a floating reference
+       * and we are not going to transfer the ownership, so we
+       * should take it.
+       */
+      gst_object_ref_sink (downloader->priv->urisrc);
+    }
   }
 
+  return downloader->priv->urisrc != NULL;
+}
+
+static void
+gst_uri_downloader_destroy_src (GstUriDownloader * downloader)
+{
+  if (!downloader->priv->urisrc)
+    return;
+
+  gst_element_set_state (downloader->priv->urisrc, GST_STATE_NULL);
+  gst_object_unref (downloader->priv->urisrc);
+  downloader->priv->urisrc = NULL;
+}
+
+static gboolean
+gst_uri_downloader_set_uri (GstUriDownloader * downloader, const gchar * uri,
+    const gchar * referer, gboolean compress,
+    gboolean refresh, gboolean allow_cache)
+{
+  GstPad *pad;
+  GObjectClass *gobject_class;
+
+  if (!gst_uri_is_valid (uri))
+    return FALSE;
+
+  if (!gst_uri_downloader_ensure_src (downloader, uri))
+    return FALSE;
+
   gobject_class = G_OBJECT_GET_CLASS (downloader->priv->urisrc);
   if (g_object_class_find_property (gobject_class, "compress"))
     g_object_set (downloader->priv->urisrc, "compress", compress, NULL);
diff --git a/gst-libs/gst/video/Makefile.in b/gst-libs/gst/video/Makefile.in
index 6fb5acd..24b7fc8 100644
--- a/gst-libs/gst/video/Makefile.in
+++ b/gst-libs/gst/video/Makefile.in
@@ -294,6 +294,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -315,6 +317,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -364,6 +368,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -509,6 +515,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -635,8 +643,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -679,8 +685,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/video/gstvideoaggregator.c b/gst-libs/gst/video/gstvideoaggregator.c
index 1254e2e..cd42d7e 100644
--- a/gst-libs/gst/video/gstvideoaggregator.c
+++ b/gst-libs/gst/video/gstvideoaggregator.c
@@ -43,11 +43,11 @@
 #include "gstvideoaggregator.h"
 #include "gstvideoaggregatorpad.h"
 
-GST_DEBUG_CATEGORY_STATIC (gst_videoaggregator_debug);
-#define GST_CAT_DEFAULT gst_videoaggregator_debug
+GST_DEBUG_CATEGORY_STATIC (gst_video_aggregator_debug);
+#define GST_CAT_DEFAULT gst_video_aggregator_debug
 
 /* Needed prototypes */
-static void gst_videoaggregator_reset_qos (GstVideoAggregator * vagg);
+static void gst_video_aggregator_reset_qos (GstVideoAggregator * vagg);
 
 /****************************************
  * GstVideoAggregatorPad implementation *
@@ -77,11 +77,11 @@
 };
 
 
-G_DEFINE_TYPE (GstVideoAggregatorPad, gst_videoaggregator_pad,
+G_DEFINE_TYPE (GstVideoAggregatorPad, gst_video_aggregator_pad,
     GST_TYPE_AGGREGATOR_PAD);
 
 static void
-gst_videoaggregator_pad_get_property (GObject * object, guint prop_id,
+gst_video_aggregator_pad_get_property (GObject * object, guint prop_id,
     GValue * value, GParamSpec * pspec)
 {
   GstVideoAggregatorPad *pad = GST_VIDEO_AGGREGATOR_PAD (object);
@@ -107,7 +107,7 @@
 }
 
 static void
-gst_videoaggregator_pad_set_property (GObject * object, guint prop_id,
+gst_video_aggregator_pad_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec)
 {
   GstVideoAggregatorPad *pad = GST_VIDEO_AGGREGATOR_PAD (object);
@@ -133,18 +133,18 @@
   gst_object_unref (vagg);
 }
 
-static gboolean
+static GstFlowReturn
 _flush_pad (GstAggregatorPad * aggpad, GstAggregator * aggregator)
 {
   GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (aggregator);
   GstVideoAggregatorPad *pad = GST_VIDEO_AGGREGATOR_PAD (aggpad);
 
-  gst_videoaggregator_reset_qos (vagg);
+  gst_video_aggregator_reset_qos (vagg);
   gst_buffer_replace (&pad->buffer, NULL);
   pad->priv->start_time = -1;
   pad->priv->end_time = -1;
 
-  return TRUE;
+  return GST_FLOW_OK;
 }
 
 static gboolean
@@ -217,7 +217,7 @@
 }
 
 static void
-gst_videoaggregator_pad_finalize (GObject * o)
+gst_video_aggregator_pad_finalize (GObject * o)
 {
   GstVideoAggregatorPad *vaggpad = GST_VIDEO_AGGREGATOR_PAD (o);
 
@@ -225,7 +225,7 @@
     gst_video_converter_free (vaggpad->priv->convert);
   vaggpad->priv->convert = NULL;
 
-  G_OBJECT_CLASS (gst_videoaggregator_pad_parent_class)->finalize (o);
+  G_OBJECT_CLASS (gst_video_aggregator_pad_parent_class)->finalize (o);
 }
 
 static gboolean
@@ -300,14 +300,14 @@
 }
 
 static void
-gst_videoaggregator_pad_class_init (GstVideoAggregatorPadClass * klass)
+gst_video_aggregator_pad_class_init (GstVideoAggregatorPadClass * klass)
 {
   GObjectClass *gobject_class = (GObjectClass *) klass;
   GstAggregatorPadClass *aggpadclass = (GstAggregatorPadClass *) klass;
 
-  gobject_class->set_property = gst_videoaggregator_pad_set_property;
-  gobject_class->get_property = gst_videoaggregator_pad_get_property;
-  gobject_class->finalize = gst_videoaggregator_pad_finalize;
+  gobject_class->set_property = gst_video_aggregator_pad_set_property;
+  gobject_class->get_property = gst_video_aggregator_pad_get_property;
+  gobject_class->finalize = gst_video_aggregator_pad_finalize;
 
   g_object_class_install_property (gobject_class, PROP_PAD_ZORDER,
       g_param_spec_uint ("zorder", "Z-Order", "Z Order of the picture",
@@ -329,7 +329,7 @@
 }
 
 static void
-gst_videoaggregator_pad_init (GstVideoAggregatorPad * vaggpad)
+gst_video_aggregator_pad_init (GstVideoAggregatorPad * vaggpad)
 {
   vaggpad->priv =
       G_TYPE_INSTANCE_GET_PRIVATE (vaggpad, GST_TYPE_VIDEO_AGGREGATOR_PAD,
@@ -347,8 +347,8 @@
  * GstChildProxy implementation  *
  *********************************/
 static GObject *
-gst_videoaggregator_child_proxy_get_child_by_index (GstChildProxy * child_proxy,
-    guint index)
+gst_video_aggregator_child_proxy_get_child_by_index (GstChildProxy *
+    child_proxy, guint index)
 {
   GObject *obj;
   GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (child_proxy);
@@ -362,7 +362,8 @@
 }
 
 static guint
-gst_videoaggregator_child_proxy_get_children_count (GstChildProxy * child_proxy)
+gst_video_aggregator_child_proxy_get_children_count (GstChildProxy *
+    child_proxy)
 {
   guint count = 0;
 
@@ -376,15 +377,15 @@
 }
 
 static void
-gst_videoaggregator_child_proxy_init (gpointer g_iface, gpointer iface_data)
+gst_video_aggregator_child_proxy_init (gpointer g_iface, gpointer iface_data)
 {
   GstChildProxyInterface *iface = g_iface;
 
   GST_INFO ("intializing child proxy interface");
   iface->get_child_by_index =
-      gst_videoaggregator_child_proxy_get_child_by_index;
+      gst_video_aggregator_child_proxy_get_child_by_index;
   iface->get_children_count =
-      gst_videoaggregator_child_proxy_get_children_count;
+      gst_video_aggregator_child_proxy_get_children_count;
 }
 
 /**************************************
@@ -434,13 +435,13 @@
  * videoaggregator class in the _init to be able to set
  * the sink pad non-alpha caps. Using the G_DEFINE_TYPE there
  * seems to be no way of getting the real class being initialized */
-static void gst_videoaggregator_init (GstVideoAggregator * self,
+static void gst_video_aggregator_init (GstVideoAggregator * self,
     GstVideoAggregatorClass * klass);
-static void gst_videoaggregator_class_init (GstVideoAggregatorClass * klass);
-static gpointer gst_videoaggregator_parent_class = NULL;
+static void gst_video_aggregator_class_init (GstVideoAggregatorClass * klass);
+static gpointer gst_video_aggregator_parent_class = NULL;
 
 GType
-gst_videoaggregator_get_type (void)
+gst_video_aggregator_get_type (void)
 {
   static volatile gsize g_define_type_id_volatile = 0;
 
@@ -448,13 +449,13 @@
     GType g_define_type_id = g_type_register_static_simple (GST_TYPE_AGGREGATOR,
         g_intern_static_string ("GstVideoAggregator"),
         sizeof (GstVideoAggregatorClass),
-        (GClassInitFunc) gst_videoaggregator_class_init,
+        (GClassInitFunc) gst_video_aggregator_class_init,
         sizeof (GstVideoAggregator),
-        (GInstanceInitFunc) gst_videoaggregator_init,
+        (GInstanceInitFunc) gst_video_aggregator_init,
         (GTypeFlags) G_TYPE_FLAG_ABSTRACT);
     {
       G_IMPLEMENT_INTERFACE (GST_TYPE_CHILD_PROXY,
-          gst_videoaggregator_child_proxy_init);
+          gst_video_aggregator_child_proxy_init);
     }
     g_once_init_leave (&g_define_type_id_volatile, g_define_type_id);
   }
@@ -462,7 +463,7 @@
 }
 
 static void
-gst_videoaggreagator_find_best_format (GstVideoAggregator * vagg,
+gst_video_aggregator_find_best_format (GstVideoAggregator * vagg,
     GstCaps * downstream_caps, GstVideoInfo * best_info,
     gboolean * at_least_one_alpha)
 {
@@ -534,7 +535,7 @@
 
 /* WITH GST_VIDEO_AGGREGATOR_LOCK TAKEN */
 static gboolean
-gst_videoaggregator_src_setcaps (GstVideoAggregator * vagg, GstCaps * caps)
+gst_video_aggregator_src_setcaps (GstVideoAggregator * vagg, GstCaps * caps)
 {
   GstAggregator *agg = GST_AGGREGATOR (vagg);
   gboolean ret = FALSE;
@@ -558,7 +559,7 @@
       GST_DEBUG_OBJECT (vagg,
           "Resetting frame counter because of framerate change");
     }
-    gst_videoaggregator_reset_qos (vagg);
+    gst_video_aggregator_reset_qos (vagg);
   }
 
   vagg->info = info;
@@ -583,7 +584,7 @@
 }
 
 static GstCaps *
-gst_videoaggregator_default_fixate_caps (GstVideoAggregator * vagg,
+gst_video_aggregator_default_fixate_caps (GstVideoAggregator * vagg,
     GstCaps * caps)
 {
   gint best_width = -1, best_height = -1;
@@ -644,7 +645,7 @@
 }
 
 static GstCaps *
-gst_videoaggregator_default_update_caps (GstVideoAggregator * vagg,
+gst_video_aggregator_default_update_caps (GstVideoAggregator * vagg,
     GstCaps * caps, GstCaps * filter)
 {
   GstVideoAggregatorClass *vagg_klass = GST_VIDEO_AGGREGATOR_GET_CLASS (vagg);
@@ -680,9 +681,10 @@
   ret = gst_caps_merge (best_format_caps, gst_caps_ref (caps));
 
   if (filter) {
-    ret = gst_caps_intersect (ret, filter);
-  } else {
-    gst_caps_ref (ret);
+    GstCaps *tmp;
+    tmp = gst_caps_intersect (ret, filter);
+    gst_caps_unref (ret);
+    ret = tmp;
   }
 
   return ret;
@@ -690,7 +692,7 @@
 
 /* WITH GST_VIDEO_AGGREGATOR_LOCK TAKEN */
 static gboolean
-gst_videoaggregator_update_src_caps (GstVideoAggregator * vagg)
+gst_video_aggregator_update_src_caps (GstVideoAggregator * vagg)
 {
   GstVideoAggregatorClass *vagg_klass = GST_VIDEO_AGGREGATOR_GET_CLASS (vagg);
   GstVideoAggregatorPadClass *vaggpad_klass = g_type_class_peek
@@ -735,7 +737,8 @@
     GST_DEBUG_OBJECT (vagg, "updating caps from %" GST_PTR_FORMAT,
         downstream_caps);
     GST_DEBUG_OBJECT (vagg, "       with filter %" GST_PTR_FORMAT, peercaps);
-    if (!(caps = vagg_klass->update_caps (vagg, downstream_caps, peercaps))) {
+    if (!(caps = vagg_klass->update_caps (vagg, downstream_caps, peercaps)) ||
+        gst_caps_is_empty (caps)) {
       GST_WARNING_OBJECT (vagg, "Subclass failed to update provided caps");
       gst_caps_unref (downstream_caps);
       if (peercaps)
@@ -800,7 +803,7 @@
       }
     }
 
-    if (gst_videoaggregator_src_setcaps (vagg, caps)) {
+    if (gst_video_aggregator_src_setcaps (vagg, caps)) {
       if (vagg_klass->negotiated_caps)
         ret =
             GST_VIDEO_AGGREGATOR_GET_CLASS (vagg)->negotiated_caps (vagg, caps);
@@ -820,7 +823,27 @@
 }
 
 static gboolean
-gst_videoaggregator_pad_sink_setcaps (GstPad * pad, GstObject * parent,
+gst_video_aggregator_get_sinkpads_interlace_mode (GstVideoAggregator * vagg,
+    GstVideoAggregatorPad * skip_pad, GstVideoInterlaceMode * mode)
+{
+  GList *walk;
+
+  for (walk = GST_ELEMENT (vagg)->sinkpads; walk; walk = g_list_next (walk)) {
+    GstVideoAggregatorPad *vaggpad = walk->data;
+
+    if (skip_pad && vaggpad == skip_pad)
+      continue;
+    if (vaggpad->info.finfo
+        && GST_VIDEO_INFO_FORMAT (&vaggpad->info) != GST_VIDEO_FORMAT_UNKNOWN) {
+      *mode = GST_VIDEO_INFO_INTERLACE_MODE (&vaggpad->info);
+      return TRUE;
+    }
+  }
+  return FALSE;
+}
+
+static gboolean
+gst_video_aggregator_pad_sink_setcaps (GstPad * pad, GstObject * parent,
     GstCaps * caps)
 {
   GstVideoAggregator *vagg;
@@ -839,14 +862,28 @@
   }
 
   GST_VIDEO_AGGREGATOR_LOCK (vagg);
-  if (GST_VIDEO_INFO_FORMAT (&vagg->info) != GST_VIDEO_FORMAT_UNKNOWN) {
-    if (GST_VIDEO_INFO_INTERLACE_MODE (&vagg->info) !=
-        GST_VIDEO_INFO_INTERLACE_MODE (&info)) {
-      GST_ERROR_OBJECT (pad,
-          "got input caps %" GST_PTR_FORMAT ", but " "current caps are %"
-          GST_PTR_FORMAT, caps, vagg->priv->current_caps);
-      GST_VIDEO_AGGREGATOR_UNLOCK (vagg);
-      return FALSE;
+  {
+    GstVideoInterlaceMode pads_mode = GST_VIDEO_INTERLACE_MODE_PROGRESSIVE;
+    gboolean has_mode = FALSE;
+
+    /* get the current output setting or fallback to other pads settings */
+    if (GST_VIDEO_INFO_FORMAT (&vagg->info) != GST_VIDEO_FORMAT_UNKNOWN) {
+      pads_mode = GST_VIDEO_INFO_INTERLACE_MODE (&vagg->info);
+      has_mode = TRUE;
+    } else {
+      has_mode =
+          gst_video_aggregator_get_sinkpads_interlace_mode (vagg, vaggpad,
+          &pads_mode);
+    }
+
+    if (has_mode) {
+      if (pads_mode != GST_VIDEO_INFO_INTERLACE_MODE (&info)) {
+        GST_ERROR_OBJECT (pad,
+            "got input caps %" GST_PTR_FORMAT ", but current caps are %"
+            GST_PTR_FORMAT, caps, vagg->priv->current_caps);
+        GST_VIDEO_AGGREGATOR_UNLOCK (vagg);
+        return FALSE;
+      }
     }
   }
 
@@ -861,7 +898,7 @@
 }
 
 static gboolean
-gst_videoaggregator_caps_has_alpha (GstCaps * caps)
+gst_video_aggregator_caps_has_alpha (GstCaps * caps)
 {
   guint size = gst_caps_get_size (caps);
   guint i;
@@ -907,7 +944,7 @@
 }
 
 static GstCaps *
-gst_videoaggregator_pad_sink_getcaps (GstPad * pad, GstVideoAggregator * vagg,
+gst_video_aggregator_pad_sink_getcaps (GstPad * pad, GstVideoAggregator * vagg,
     GstCaps * filter)
 {
   GstCaps *srccaps;
@@ -918,6 +955,8 @@
   GstAggregator *agg = GST_AGGREGATOR (vagg);
   GstPad *srcpad = GST_PAD (agg->srcpad);
   gboolean has_alpha;
+  GstVideoInterlaceMode interlace_mode;
+  gboolean has_interlace_mode;
 
   template_caps = gst_pad_get_pad_template_caps (srcpad);
 
@@ -925,7 +964,11 @@
 
   srccaps = gst_pad_peer_query_caps (srcpad, template_caps);
   srccaps = gst_caps_make_writable (srccaps);
-  has_alpha = gst_videoaggregator_caps_has_alpha (srccaps);
+  has_alpha = gst_video_aggregator_caps_has_alpha (srccaps);
+
+  has_interlace_mode =
+      gst_video_aggregator_get_sinkpads_interlace_mode (vagg, NULL,
+      &interlace_mode);
 
   n = gst_caps_get_size (srccaps);
   for (i = 0; i < n; i++) {
@@ -936,6 +979,9 @@
 
     gst_structure_remove_fields (s, "colorimetry", "chroma-site", "format",
         "pixel-aspect-ratio", NULL);
+    if (has_interlace_mode)
+      gst_structure_set (s, "interlace-mode", G_TYPE_STRING,
+          gst_video_interlace_mode_to_string (interlace_mode), NULL);
   }
 
   if (filter) {
@@ -967,7 +1013,7 @@
 }
 
 static void
-gst_videoaggregator_update_qos (GstVideoAggregator * vagg, gdouble proportion,
+gst_video_aggregator_update_qos (GstVideoAggregator * vagg, gdouble proportion,
     GstClockTimeDiff diff, GstClockTime timestamp)
 {
   gboolean live;
@@ -999,14 +1045,14 @@
 }
 
 static void
-gst_videoaggregator_reset_qos (GstVideoAggregator * vagg)
+gst_video_aggregator_reset_qos (GstVideoAggregator * vagg)
 {
-  gst_videoaggregator_update_qos (vagg, 0.5, 0, GST_CLOCK_TIME_NONE);
+  gst_video_aggregator_update_qos (vagg, 0.5, 0, GST_CLOCK_TIME_NONE);
   vagg->priv->qos_processed = vagg->priv->qos_dropped = 0;
 }
 
 static void
-gst_videoaggregator_read_qos (GstVideoAggregator * vagg, gdouble * proportion,
+gst_video_aggregator_read_qos (GstVideoAggregator * vagg, gdouble * proportion,
     GstClockTime * time)
 {
   GST_OBJECT_LOCK (vagg);
@@ -1016,7 +1062,7 @@
 }
 
 static void
-gst_videoaggregator_reset (GstVideoAggregator * vagg)
+gst_video_aggregator_reset (GstVideoAggregator * vagg)
 {
   GstAggregator *agg = GST_AGGREGATOR (vagg);
   GList *l;
@@ -1028,7 +1074,7 @@
 
   agg->segment.position = -1;
 
-  gst_videoaggregator_reset_qos (vagg);
+  gst_video_aggregator_reset_qos (vagg);
 
   GST_OBJECT_LOCK (vagg);
   for (l = GST_ELEMENT (vagg)->sinkpads; l; l = l->next) {
@@ -1045,7 +1091,7 @@
 
 #define GST_FLOW_NEEDS_DATA GST_FLOW_CUSTOM_ERROR
 static gint
-gst_videoaggregator_fill_queues (GstVideoAggregator * vagg,
+gst_video_aggregator_fill_queues (GstVideoAggregator * vagg,
     GstClockTime output_start_running_time,
     GstClockTime output_end_running_time)
 {
@@ -1286,7 +1332,7 @@
 }
 
 static GstFlowReturn
-gst_videoaggregator_do_aggregate (GstVideoAggregator * vagg,
+gst_video_aggregator_do_aggregate (GstVideoAggregator * vagg,
     GstClockTime output_start_time, GstClockTime output_end_time,
     GstBuffer ** outbuf)
 {
@@ -1333,7 +1379,7 @@
 /* Perform qos calculations before processing the next frame. Returns TRUE if
  * the frame should be processed, FALSE if the frame can be dropped entirely */
 static gint64
-gst_videoaggregator_do_qos (GstVideoAggregator * vagg, GstClockTime timestamp)
+gst_video_aggregator_do_qos (GstVideoAggregator * vagg, GstClockTime timestamp)
 {
   GstAggregator *agg = GST_AGGREGATOR (vagg);
   GstClockTime qostime, earliest_time;
@@ -1347,7 +1393,7 @@
   }
 
   /* get latest QoS observation values */
-  gst_videoaggregator_read_qos (vagg, &proportion, &earliest_time);
+  gst_video_aggregator_read_qos (vagg, &proportion, &earliest_time);
 
   /* skip qos if we have no observation (yet) => process frame */
   if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (earliest_time))) {
@@ -1374,7 +1420,7 @@
 }
 
 static GstClockTime
-gst_videoaggregator_get_next_time (GstAggregator * agg)
+gst_video_aggregator_get_next_time (GstAggregator * agg)
 {
   GstClockTime next_time;
 
@@ -1395,7 +1441,7 @@
 }
 
 static GstFlowReturn
-gst_videoaggregator_check_reconfigure (GstVideoAggregator * vagg,
+gst_video_aggregator_check_reconfigure (GstVideoAggregator * vagg,
     gboolean timeout)
 {
   GstAggregator *agg = (GstAggregator *) vagg;
@@ -1404,7 +1450,7 @@
       || gst_pad_check_reconfigure (GST_AGGREGATOR_SRC_PAD (vagg))) {
     gboolean ret;
 
-    ret = gst_videoaggregator_update_src_caps (vagg);
+    ret = gst_video_aggregator_update_src_caps (vagg);
     if (!ret) {
       if (timeout && gst_pad_needs_reconfigure (GST_AGGREGATOR_SRC_PAD (vagg))) {
         guint64 frame_duration;
@@ -1445,7 +1491,7 @@
 }
 
 static GstFlowReturn
-gst_videoaggregator_aggregate (GstAggregator * agg, gboolean timeout)
+gst_video_aggregator_aggregate (GstAggregator * agg, gboolean timeout)
 {
   GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (agg);
   GstClockTime output_start_time, output_end_time;
@@ -1456,7 +1502,7 @@
 
   GST_VIDEO_AGGREGATOR_LOCK (vagg);
 
-  flow_ret = gst_videoaggregator_check_reconfigure (vagg, timeout);
+  flow_ret = gst_video_aggregator_check_reconfigure (vagg, timeout);
   if (flow_ret != GST_FLOW_OK) {
     if (flow_ret == GST_FLOW_NEEDS_DATA)
       flow_ret = GST_FLOW_OK;
@@ -1497,7 +1543,7 @@
     flow_ret = GST_FLOW_EOS;
   } else {
     flow_ret =
-        gst_videoaggregator_fill_queues (vagg, output_start_running_time,
+        gst_video_aggregator_fill_queues (vagg, output_start_running_time,
         output_end_running_time);
   }
 
@@ -1521,9 +1567,9 @@
       GST_TIME_ARGS (output_start_running_time),
       GST_TIME_ARGS (output_end_running_time));
 
-  jitter = gst_videoaggregator_do_qos (vagg, output_start_time);
+  jitter = gst_video_aggregator_do_qos (vagg, output_start_time);
   if (jitter <= 0) {
-    flow_ret = gst_videoaggregator_do_aggregate (vagg, output_start_time,
+    flow_ret = gst_video_aggregator_do_aggregate (vagg, output_start_time,
         output_end_time, &outbuf);
     if (flow_ret != GST_FLOW_OK)
       goto done;
@@ -1588,7 +1634,8 @@
  * cases work at least somewhat.
  */
 static gboolean
-gst_videoaggregator_query_duration (GstVideoAggregator * vagg, GstQuery * query)
+gst_video_aggregator_query_duration (GstVideoAggregator * vagg,
+    GstQuery * query)
 {
   GValue item = { 0 };
   gint64 max;
@@ -1659,7 +1706,7 @@
 }
 
 static gboolean
-gst_videoaggregator_src_query (GstAggregator * agg, GstQuery * query)
+gst_video_aggregator_src_query (GstAggregator * agg, GstQuery * query)
 {
   GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (agg);
   gboolean res = FALSE;
@@ -1684,11 +1731,11 @@
       break;
     }
     case GST_QUERY_DURATION:
-      res = gst_videoaggregator_query_duration (vagg, query);
+      res = gst_video_aggregator_query_duration (vagg, query);
       break;
     case GST_QUERY_LATENCY:
       res =
-          GST_AGGREGATOR_CLASS (gst_videoaggregator_parent_class)->src_query
+          GST_AGGREGATOR_CLASS (gst_video_aggregator_parent_class)->src_query
           (agg, query);
 
       if (res) {
@@ -1697,7 +1744,7 @@
       break;
     default:
       res =
-          GST_AGGREGATOR_CLASS (gst_videoaggregator_parent_class)->src_query
+          GST_AGGREGATOR_CLASS (gst_video_aggregator_parent_class)->src_query
           (agg, query);
       break;
   }
@@ -1705,7 +1752,7 @@
 }
 
 static gboolean
-gst_videoaggregator_src_event (GstAggregator * agg, GstEvent * event)
+gst_video_aggregator_src_event (GstAggregator * agg, GstEvent * event)
 {
   GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (agg);
 
@@ -1718,7 +1765,7 @@
       gdouble proportion;
 
       gst_event_parse_qos (event, &type, &proportion, &diff, &timestamp);
-      gst_videoaggregator_update_qos (vagg, proportion, diff, timestamp);
+      gst_video_aggregator_update_qos (vagg, proportion, diff, timestamp);
       break;
     }
     case GST_EVENT_SEEK:
@@ -1730,12 +1777,12 @@
   }
 
   return
-      GST_AGGREGATOR_CLASS (gst_videoaggregator_parent_class)->src_event (agg,
+      GST_AGGREGATOR_CLASS (gst_video_aggregator_parent_class)->src_event (agg,
       event);
 }
 
 static GstFlowReturn
-gst_videoaggregator_flush (GstAggregator * agg)
+gst_video_aggregator_flush (GstAggregator * agg)
 {
   GList *l;
   gdouble abs_rate;
@@ -1765,12 +1812,12 @@
   vagg->priv->ts_offset = 0;
   vagg->priv->nframes = 0;
 
-  gst_videoaggregator_reset_qos (vagg);
+  gst_video_aggregator_reset_qos (vagg);
   return GST_FLOW_OK;
 }
 
 static gboolean
-gst_videoaggregator_sink_event (GstAggregator * agg, GstAggregatorPad * bpad,
+gst_video_aggregator_sink_event (GstAggregator * agg, GstAggregatorPad * bpad,
     GstEvent * event)
 {
   GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (agg);
@@ -1787,7 +1834,7 @@
 
       gst_event_parse_caps (event, &caps);
       ret =
-          gst_videoaggregator_pad_sink_setcaps (GST_PAD (pad),
+          gst_video_aggregator_pad_sink_setcaps (GST_PAD (pad),
           GST_OBJECT (vagg), caps);
       gst_event_unref (event);
       event = NULL;
@@ -1798,7 +1845,7 @@
       gst_event_copy_segment (event, &seg);
 
       g_assert (seg.format == GST_FORMAT_TIME);
-      gst_videoaggregator_reset_qos (vagg);
+      gst_video_aggregator_reset_qos (vagg);
       break;
     }
     default:
@@ -1806,14 +1853,14 @@
   }
 
   if (event != NULL)
-    return GST_AGGREGATOR_CLASS (gst_videoaggregator_parent_class)->sink_event
+    return GST_AGGREGATOR_CLASS (gst_video_aggregator_parent_class)->sink_event
         (agg, bpad, event);
 
   return ret;
 }
 
 static gboolean
-gst_videoaggregator_start (GstAggregator * agg)
+gst_video_aggregator_start (GstAggregator * agg)
 {
   GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (agg);
 
@@ -1823,18 +1870,18 @@
 }
 
 static gboolean
-gst_videoaggregator_stop (GstAggregator * agg)
+gst_video_aggregator_stop (GstAggregator * agg)
 {
   GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (agg);
 
-  gst_videoaggregator_reset (vagg);
+  gst_video_aggregator_reset (vagg);
 
   return TRUE;
 }
 
 /* GstElement vmethods */
 static GstPad *
-gst_videoaggregator_request_new_pad (GstElement * element,
+gst_video_aggregator_request_new_pad (GstElement * element,
     GstPadTemplate * templ, const gchar * req_name, const GstCaps * caps)
 {
   GstVideoAggregator *vagg;
@@ -1843,7 +1890,7 @@
   vagg = GST_VIDEO_AGGREGATOR (element);
 
   vaggpad = (GstVideoAggregatorPad *)
-      GST_ELEMENT_CLASS (gst_videoaggregator_parent_class)->request_new_pad
+      GST_ELEMENT_CLASS (gst_video_aggregator_parent_class)->request_new_pad
       (element, templ, req_name, caps);
 
   if (vaggpad == NULL)
@@ -1864,7 +1911,7 @@
 }
 
 static void
-gst_videoaggregator_release_pad (GstElement * element, GstPad * pad)
+gst_video_aggregator_release_pad (GstElement * element, GstPad * pad)
 {
   GstVideoAggregator *vagg = NULL;
   GstVideoAggregatorPad *vaggpad;
@@ -1880,15 +1927,15 @@
   GST_OBJECT_UNLOCK (vagg);
 
   if (last_pad)
-    gst_videoaggregator_reset (vagg);
+    gst_video_aggregator_reset (vagg);
 
   gst_buffer_replace (&vaggpad->buffer, NULL);
 
   gst_child_proxy_child_removed (GST_CHILD_PROXY (vagg), G_OBJECT (vaggpad),
       GST_OBJECT_NAME (vaggpad));
 
-  GST_ELEMENT_CLASS (gst_videoaggregator_parent_class)->release_pad (GST_ELEMENT
-      (vagg), pad);
+  GST_ELEMENT_CLASS (gst_video_aggregator_parent_class)->release_pad
+      (GST_ELEMENT (vagg), pad);
 
   gst_pad_mark_reconfigure (GST_AGGREGATOR_SRC_PAD (vagg));
 
@@ -1897,7 +1944,7 @@
 }
 
 static GstFlowReturn
-gst_videoaggregator_get_output_buffer (GstVideoAggregator * videoaggregator,
+gst_video_aggregator_get_output_buffer (GstVideoAggregator * videoaggregator,
     GstBuffer ** outbuf)
 {
   guint outsize;
@@ -1915,7 +1962,7 @@
 }
 
 static gboolean
-gst_videoaggregator_pad_sink_acceptcaps (GstPad * pad,
+gst_video_aggregator_pad_sink_acceptcaps (GstPad * pad,
     GstVideoAggregator * vagg, GstCaps * caps)
 {
   gboolean ret;
@@ -1966,7 +2013,7 @@
 }
 
 static gboolean
-gst_videoaggregator_sink_query (GstAggregator * agg, GstAggregatorPad * bpad,
+gst_video_aggregator_sink_query (GstAggregator * agg, GstAggregatorPad * bpad,
     GstQuery * query)
 {
   GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (agg);
@@ -1979,7 +2026,8 @@
       GstCaps *filter, *caps;
 
       gst_query_parse_caps (query, &filter);
-      caps = gst_videoaggregator_pad_sink_getcaps (GST_PAD (pad), vagg, filter);
+      caps =
+          gst_video_aggregator_pad_sink_getcaps (GST_PAD (pad), vagg, filter);
       gst_query_set_caps_result (query, caps);
       gst_caps_unref (caps);
       ret = TRUE;
@@ -1990,14 +2038,15 @@
       GstCaps *caps;
 
       gst_query_parse_accept_caps (query, &caps);
-      ret = gst_videoaggregator_pad_sink_acceptcaps (GST_PAD (pad), vagg, caps);
+      ret =
+          gst_video_aggregator_pad_sink_acceptcaps (GST_PAD (pad), vagg, caps);
       gst_query_set_accept_caps_result (query, ret);
       ret = TRUE;
       break;
     }
     default:
       ret =
-          GST_AGGREGATOR_CLASS (gst_videoaggregator_parent_class)->sink_query
+          GST_AGGREGATOR_CLASS (gst_video_aggregator_parent_class)->sink_query
           (agg, bpad, query);
       break;
   }
@@ -2006,27 +2055,27 @@
 
 /* GObject vmethods */
 static void
-gst_videoaggregator_finalize (GObject * o)
+gst_video_aggregator_finalize (GObject * o)
 {
   GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (o);
 
   g_mutex_clear (&vagg->priv->lock);
 
-  G_OBJECT_CLASS (gst_videoaggregator_parent_class)->finalize (o);
+  G_OBJECT_CLASS (gst_video_aggregator_parent_class)->finalize (o);
 }
 
 static void
-gst_videoaggregator_dispose (GObject * o)
+gst_video_aggregator_dispose (GObject * o)
 {
   GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (o);
 
   gst_caps_replace (&vagg->priv->current_caps, NULL);
 
-  G_OBJECT_CLASS (gst_videoaggregator_parent_class)->dispose (o);
+  G_OBJECT_CLASS (gst_video_aggregator_parent_class)->dispose (o);
 }
 
 static void
-gst_videoaggregator_get_property (GObject * object,
+gst_video_aggregator_get_property (GObject * object,
     guint prop_id, GValue * value, GParamSpec * pspec)
 {
   switch (prop_id) {
@@ -2037,7 +2086,7 @@
 }
 
 static void
-gst_videoaggregator_set_property (GObject * object,
+gst_video_aggregator_set_property (GObject * object,
     guint prop_id, const GValue * value, GParamSpec * pspec)
 {
   switch (prop_id) {
@@ -2049,45 +2098,45 @@
 
 /* GObject boilerplate */
 static void
-gst_videoaggregator_class_init (GstVideoAggregatorClass * klass)
+gst_video_aggregator_class_init (GstVideoAggregatorClass * klass)
 {
   GObjectClass *gobject_class = (GObjectClass *) klass;
   GstElementClass *gstelement_class = (GstElementClass *) klass;
   GstAggregatorClass *agg_class = (GstAggregatorClass *) klass;
 
-  GST_DEBUG_CATEGORY_INIT (gst_videoaggregator_debug, "videoaggregator", 0,
+  GST_DEBUG_CATEGORY_INIT (gst_video_aggregator_debug, "videoaggregator", 0,
       "base video aggregator");
 
-  gst_videoaggregator_parent_class = g_type_class_peek_parent (klass);
+  gst_video_aggregator_parent_class = g_type_class_peek_parent (klass);
 
   g_type_class_add_private (klass, sizeof (GstVideoAggregatorPrivate));
 
-  gobject_class->finalize = gst_videoaggregator_finalize;
-  gobject_class->dispose = gst_videoaggregator_dispose;
+  gobject_class->finalize = gst_video_aggregator_finalize;
+  gobject_class->dispose = gst_video_aggregator_dispose;
 
-  gobject_class->get_property = gst_videoaggregator_get_property;
-  gobject_class->set_property = gst_videoaggregator_set_property;
+  gobject_class->get_property = gst_video_aggregator_get_property;
+  gobject_class->set_property = gst_video_aggregator_set_property;
 
   gstelement_class->request_new_pad =
-      GST_DEBUG_FUNCPTR (gst_videoaggregator_request_new_pad);
+      GST_DEBUG_FUNCPTR (gst_video_aggregator_request_new_pad);
   gstelement_class->release_pad =
-      GST_DEBUG_FUNCPTR (gst_videoaggregator_release_pad);
+      GST_DEBUG_FUNCPTR (gst_video_aggregator_release_pad);
 
   agg_class->sinkpads_type = GST_TYPE_VIDEO_AGGREGATOR_PAD;
-  agg_class->start = gst_videoaggregator_start;
-  agg_class->stop = gst_videoaggregator_stop;
-  agg_class->sink_query = gst_videoaggregator_sink_query;
-  agg_class->sink_event = gst_videoaggregator_sink_event;
-  agg_class->flush = gst_videoaggregator_flush;
-  agg_class->aggregate = gst_videoaggregator_aggregate;
-  agg_class->src_event = gst_videoaggregator_src_event;
-  agg_class->src_query = gst_videoaggregator_src_query;
-  agg_class->get_next_time = gst_videoaggregator_get_next_time;
+  agg_class->start = gst_video_aggregator_start;
+  agg_class->stop = gst_video_aggregator_stop;
+  agg_class->sink_query = gst_video_aggregator_sink_query;
+  agg_class->sink_event = gst_video_aggregator_sink_event;
+  agg_class->flush = gst_video_aggregator_flush;
+  agg_class->aggregate = gst_video_aggregator_aggregate;
+  agg_class->src_event = gst_video_aggregator_src_event;
+  agg_class->src_query = gst_video_aggregator_src_query;
+  agg_class->get_next_time = gst_video_aggregator_get_next_time;
 
-  klass->find_best_format = gst_videoaggreagator_find_best_format;
-  klass->get_output_buffer = gst_videoaggregator_get_output_buffer;
-  klass->update_caps = gst_videoaggregator_default_update_caps;
-  klass->fixate_caps = gst_videoaggregator_default_fixate_caps;
+  klass->find_best_format = gst_video_aggregator_find_best_format;
+  klass->get_output_buffer = gst_video_aggregator_get_output_buffer;
+  klass->update_caps = gst_video_aggregator_default_update_caps;
+  klass->fixate_caps = gst_video_aggregator_default_fixate_caps;
 
   /* Register the pad class */
   g_type_class_ref (GST_TYPE_VIDEO_AGGREGATOR_PAD);
@@ -2166,7 +2215,7 @@
 static GMutex sink_caps_mutex;
 
 static void
-gst_videoaggregator_init (GstVideoAggregator * vagg,
+gst_video_aggregator_init (GstVideoAggregator * vagg,
     GstVideoAggregatorClass * klass)
 {
 
@@ -2182,8 +2231,12 @@
   g_mutex_lock (&sink_caps_mutex);
   if (klass->sink_non_alpha_caps == NULL) {
     klass->sink_non_alpha_caps = _get_non_alpha_caps_from_template (klass);
+
+    /* The caps is cached */
+    GST_MINI_OBJECT_FLAG_SET (klass->sink_non_alpha_caps,
+        GST_MINI_OBJECT_FLAG_MAY_BE_LEAKED);
   }
   g_mutex_unlock (&sink_caps_mutex);
 
-  gst_videoaggregator_reset (vagg);
+  gst_video_aggregator_reset (vagg);
 }
diff --git a/gst-libs/gst/video/gstvideoaggregator.h b/gst-libs/gst/video/gstvideoaggregator.h
index 86df0b6..6204bdd 100644
--- a/gst-libs/gst/video/gstvideoaggregator.h
+++ b/gst-libs/gst/video/gstvideoaggregator.h
@@ -32,7 +32,7 @@
 
 G_BEGIN_DECLS
 
-#define GST_TYPE_VIDEO_AGGREGATOR (gst_videoaggregator_get_type())
+#define GST_TYPE_VIDEO_AGGREGATOR (gst_video_aggregator_get_type())
 #define GST_VIDEO_AGGREGATOR(obj) \
         (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_VIDEO_AGGREGATOR, GstVideoAggregator))
 #define GST_VIDEO_AGGREGATOR_CLASS(klass) \
@@ -118,7 +118,7 @@
   gpointer            _gst_reserved[GST_PADDING_LARGE];
 };
 
-GType gst_videoaggregator_get_type       (void);
+GType gst_video_aggregator_get_type       (void);
 
 G_END_DECLS
 #endif /* __GST_VIDEO_AGGREGATOR_H__ */
diff --git a/gst-libs/gst/video/gstvideoaggregatorpad.h b/gst-libs/gst/video/gstvideoaggregatorpad.h
index 4302aa3..3360b53 100644
--- a/gst-libs/gst/video/gstvideoaggregatorpad.h
+++ b/gst-libs/gst/video/gstvideoaggregatorpad.h
@@ -29,7 +29,7 @@
 
 G_BEGIN_DECLS
 
-#define GST_TYPE_VIDEO_AGGREGATOR_PAD (gst_videoaggregator_pad_get_type())
+#define GST_TYPE_VIDEO_AGGREGATOR_PAD (gst_video_aggregator_pad_get_type())
 #define GST_VIDEO_AGGREGATOR_PAD(obj) \
         (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_VIDEO_AGGREGATOR_PAD, GstVideoAggregatorPad))
 #define GST_VIDEO_AGGREGATOR_PAD_CLASS(klass) \
@@ -106,7 +106,7 @@
   gpointer          _gst_reserved[GST_PADDING_LARGE];
 };
 
-GType gst_videoaggregator_pad_get_type (void);
+GType gst_video_aggregator_pad_get_type (void);
 
 G_END_DECLS
 #endif /* __GST_VIDEO_AGGREGATOR_PAD_H__ */
diff --git a/gst-libs/gst/wayland/Makefile.am b/gst-libs/gst/wayland/Makefile.am
index 0344598..743a489 100644
--- a/gst-libs/gst/wayland/Makefile.am
+++ b/gst-libs/gst/wayland/Makefile.am
@@ -12,6 +12,7 @@
 	$(WAYLAND_CFLAGS)
 
 libgstwayland_@GST_API_VERSION@_la_LIBADD = \
+	$(GST_PLUGINS_BASE_LIBS) \
 	$(GST_LIBS) \
 	$(WAYLAND_LIBS) \
 	-lgstvideo-$(GST_API_VERSION)
diff --git a/gst-libs/gst/wayland/Makefile.in b/gst-libs/gst/wayland/Makefile.in
index b2be04e..35fb584 100644
--- a/gst-libs/gst/wayland/Makefile.in
+++ b/gst-libs/gst/wayland/Makefile.in
@@ -164,7 +164,8 @@
 LTLIBRARIES = $(lib_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 libgstwayland_@GST_API_VERSION@_la_DEPENDENCIES =  \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1)
 am_libgstwayland_@GST_API_VERSION@_la_OBJECTS =  \
 	libgstwayland_@GST_API_VERSION@_la-wayland.lo
 libgstwayland_@GST_API_VERSION@_la_OBJECTS =  \
@@ -304,6 +305,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +328,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +379,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +526,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +654,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +696,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -791,6 +803,7 @@
 	$(WAYLAND_CFLAGS)
 
 libgstwayland_@GST_API_VERSION@_la_LIBADD = \
+	$(GST_PLUGINS_BASE_LIBS) \
 	$(GST_LIBS) \
 	$(WAYLAND_LIBS) \
 	-lgstvideo-$(GST_API_VERSION)
diff --git a/gst-plugins-bad.doap b/gst-plugins-bad.doap
index 83ba7e7..ec65d38 100644
--- a/gst-plugins-bad.doap
+++ b/gst-plugins-bad.doap
@@ -35,31 +35,31 @@
 
  <release>
   <Version>
-   <revision>1.8.3</revision>
-   <branch>1.8</branch>
+   <revision>1.9.90</revision>
+   <branch>master</branch>
    <name></name>
-   <created>2016-08-19</created>
-   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.8.3.tar.xz" />
+   <created>2016-09-30</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.9.90.tar.xz" />
   </Version>
  </release>
 
  <release>
   <Version>
-   <revision>1.8.2</revision>
-   <branch>1.8</branch>
+   <revision>1.9.2</revision>
+   <branch>master</branch>
    <name></name>
-   <created>2016-06-09</created>
-   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.8.2.tar.xz" />
+   <created>2016-09-01</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.9.2.tar.xz" />
   </Version>
  </release>
 
  <release>
   <Version>
-   <revision>1.8.1</revision>
-   <branch>1.8</branch>
+   <revision>1.9.1</revision>
+   <branch>master</branch>
    <name></name>
-   <created>2016-04-20</created>
-   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.8.1.tar.xz" />
+   <created>2016-06-06</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.9.1.tar.xz" />
   </Version>
  </release>
 
diff --git a/gst-plugins-bad.spec b/gst-plugins-bad.spec
index c0c21a1..2ee8b4d 100644
--- a/gst-plugins-bad.spec
+++ b/gst-plugins-bad.spec
@@ -6,7 +6,7 @@
 
 Summary: GStreamer streaming media framework "bad" plug-ins
 Name: %{gstreamer}-plugins-bad
-Version: 1.8.3
+Version: 1.9.90
 Release: 1.gst
 # The freeze and nfs plugins are LGPLv2 (only)
 License: LGPLv2+ and LGPLv2
diff --git a/gst/Makefile.in b/gst/Makefile.in
index 2a090e4..fbff90f 100644
--- a/gst/Makefile.in
+++ b/gst/Makefile.in
@@ -281,6 +281,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -302,6 +304,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -351,6 +355,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -496,6 +502,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -622,8 +630,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -666,8 +672,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/accurip/Makefile.in b/gst/accurip/Makefile.in
index df7b44a..327137f 100644
--- a/gst/accurip/Makefile.in
+++ b/gst/accurip/Makefile.in
@@ -302,6 +302,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -323,6 +325,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -372,6 +376,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -517,6 +523,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -643,8 +651,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,8 +693,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/adpcmdec/Makefile.in b/gst/adpcmdec/Makefile.in
index 95d425a..86f2770 100644
--- a/gst/adpcmdec/Makefile.in
+++ b/gst/adpcmdec/Makefile.in
@@ -299,6 +299,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -320,6 +322,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -369,6 +373,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -514,6 +520,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -640,8 +648,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -684,8 +690,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/adpcmdec/adpcmdec.c b/gst/adpcmdec/adpcmdec.c
index 83289ba..3cfa820 100644
--- a/gst/adpcmdec/adpcmdec.c
+++ b/gst/adpcmdec/adpcmdec.c
@@ -467,13 +467,12 @@
   GstElementClass *element_class = (GstElementClass *) klass;
   GstAudioDecoderClass *base_class = (GstAudioDecoderClass *) klass;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&adpcmdec_sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&adpcmdec_src_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &adpcmdec_sink_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &adpcmdec_src_template);
   gst_element_class_set_static_metadata (element_class, "ADPCM decoder",
-      "Codec/Decoder/Audio",
-      "Decode MS and IMA ADPCM audio",
+      "Codec/Decoder/Audio", "Decode MS and IMA ADPCM audio",
       "Pioneers of the Inevitable <songbird@songbirdnest.com>");
 
   base_class->start = GST_DEBUG_FUNCPTR (adpcmdec_start);
diff --git a/gst/adpcmenc/Makefile.in b/gst/adpcmenc/Makefile.in
index 1cede6e..6c7a7fd 100644
--- a/gst/adpcmenc/Makefile.in
+++ b/gst/adpcmenc/Makefile.in
@@ -299,6 +299,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -320,6 +322,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -369,6 +373,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -514,6 +520,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -640,8 +648,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -684,8 +690,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/adpcmenc/adpcmenc.c b/gst/adpcmenc/adpcmenc.c
index def90cf..8391b08 100644
--- a/gst/adpcmenc/adpcmenc.c
+++ b/gst/adpcmenc/adpcmenc.c
@@ -438,13 +438,12 @@
   gobjectclass->set_property = adpcmenc_set_property;
   gobjectclass->get_property = adpcmenc_get_property;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&adpcmenc_sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&adpcmenc_src_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &adpcmenc_sink_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &adpcmenc_src_template);
   gst_element_class_set_static_metadata (element_class, "ADPCM encoder",
-      "Codec/Encoder/Audio",
-      "Encode ADPCM audio",
+      "Codec/Encoder/Audio", "Encode ADPCM audio",
       "Pioneers of the Inevitable <songbird@songbirdnest.com>");
 
   base_class->start = GST_DEBUG_FUNCPTR (adpcmenc_start);
diff --git a/gst/aiff/Makefile.am b/gst/aiff/Makefile.am
index ebe4230..ee13fcf 100644
--- a/gst/aiff/Makefile.am
+++ b/gst/aiff/Makefile.am
@@ -9,7 +9,7 @@
 	$(GST_BASE_CFLAGS) \
 	$(GST_CFLAGS)
 libgstaiff_la_LIBADD = \
-	$(GST_PLUGINS_BASE_LIBS) -lgsttag-$(GST_API_VERSION) -lgstaudio-$(GST_API_VERSION)\
+	$(GST_PLUGINS_BASE_LIBS) -lgsttag-$(GST_API_VERSION) -lgstaudio-$(GST_API_VERSION) -lgstpbutils-$(GST_API_VERSION) \
 	$(GST_BASE_LIBS) \
 	$(LIBM)
 libgstaiff_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
diff --git a/gst/aiff/Makefile.in b/gst/aiff/Makefile.in
index e0b3060..235647d 100644
--- a/gst/aiff/Makefile.in
+++ b/gst/aiff/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -788,7 +799,7 @@
 	$(GST_CFLAGS)
 
 libgstaiff_la_LIBADD = \
-	$(GST_PLUGINS_BASE_LIBS) -lgsttag-$(GST_API_VERSION) -lgstaudio-$(GST_API_VERSION)\
+	$(GST_PLUGINS_BASE_LIBS) -lgsttag-$(GST_API_VERSION) -lgstaudio-$(GST_API_VERSION) -lgstpbutils-$(GST_API_VERSION) \
 	$(GST_BASE_LIBS) \
 	$(LIBM)
 
diff --git a/gst/aiff/aiffmux.c b/gst/aiff/aiffmux.c
index 5d5fded..0f6d330 100644
--- a/gst/aiff/aiffmux.c
+++ b/gst/aiff/aiffmux.c
@@ -113,10 +113,8 @@
       "AIFF audio muxer", "Muxer/Audio", "Multiplex raw audio into AIFF",
       "Robert Swain <robert.swain@gmail.com>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
 
   gstelement_class->change_state =
       GST_DEBUG_FUNCPTR (gst_aiff_mux_change_state);
diff --git a/gst/aiff/aiffparse.c b/gst/aiff/aiffparse.c
index aba4f0f..faa2647 100644
--- a/gst/aiff/aiffparse.c
+++ b/gst/aiff/aiffparse.c
@@ -59,6 +59,7 @@
 #include "aiffparse.h"
 #include <gst/audio/audio.h>
 #include <gst/tag/tag.h>
+#include <gst/pbutils/descriptions.h>
 #include <gst/gst-i18n-plugin.h>
 
 GST_DEBUG_CATEGORY (aiffparse_debug);
@@ -120,10 +121,10 @@
 
   object_class->dispose = gst_aiff_parse_dispose;
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_template_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_template_factory));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &sink_template_factory);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &src_template_factory);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "AIFF audio demuxer", "Codec/Demuxer/Audio",
@@ -995,6 +996,32 @@
         aiff->bytes_per_sample = aiff->channels * aiff->width / 8;
         aiff->bps = aiff->bytes_per_sample * aiff->rate;
 
+        if (!aiff->tags)
+          aiff->tags = gst_tag_list_new_empty ();
+
+        {
+          GstCaps *templ_caps = gst_pad_get_pad_template_caps (aiff->sinkpad);
+          gst_pb_utils_add_codec_description_to_tag_list (aiff->tags,
+              GST_TAG_CONTAINER_FORMAT, templ_caps);
+          gst_caps_unref (templ_caps);
+        }
+
+        if (aiff->bps) {
+          guint bitrate = aiff->bps * 8;
+
+          GST_DEBUG_OBJECT (aiff, "adding bitrate of %u bps to tag list",
+              bitrate);
+
+          /* At the moment, aiffparse only supports uncompressed PCM data.
+           * Therefore, nominal, actual, minimum, maximum bitrate are the same.
+           * XXX: If AIFF-C support is extended to include compression,
+           * make sure that aiff->bps is set properly. */
+          gst_tag_list_add (aiff->tags, GST_TAG_MERGE_REPLACE,
+              GST_TAG_BITRATE, bitrate, GST_TAG_NOMINAL_BITRATE, bitrate,
+              GST_TAG_MINIMUM_BITRATE, bitrate, GST_TAG_MAXIMUM_BITRATE,
+              bitrate, NULL);
+        }
+
         if (aiff->bytes_per_sample <= 0)
           goto no_bytes_per_sample;
 
@@ -1500,9 +1527,7 @@
     } else if (ret < GST_FLOW_EOS || ret == GST_FLOW_NOT_LINKED) {
       /* for fatal errors we post an error message, post the error
        * first so the app knows about the error first. */
-      GST_ELEMENT_ERROR (aiff, STREAM, FAILED,
-          (_("Internal data flow error.")),
-          ("streaming task paused, reason %s (%d)", reason, ret));
+      GST_ELEMENT_FLOW_ERROR (aiff, ret);
       gst_pad_push_event (aiff->srcpad, gst_event_new_eos ());
     }
     return;
diff --git a/gst/asfmux/Makefile.in b/gst/asfmux/Makefile.in
index 60fa5b4..3cf2159 100644
--- a/gst/asfmux/Makefile.in
+++ b/gst/asfmux/Makefile.in
@@ -307,6 +307,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -328,6 +330,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -377,6 +381,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -522,6 +528,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -648,8 +656,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -692,8 +698,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/asfmux/gstasfmux.c b/gst/asfmux/gstasfmux.c
index 45617be..3579a55 100644
--- a/gst/asfmux/gstasfmux.c
+++ b/gst/asfmux/gstasfmux.c
@@ -270,12 +270,11 @@
       GST_DEBUG_FUNCPTR (gst_asf_mux_request_new_pad);
   gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_asf_mux_change_state);
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&audio_sink_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&video_sink_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &audio_sink_factory);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &video_sink_factory);
 
   gst_element_class_set_static_metadata (gstelement_class, "ASF muxer",
       "Codec/Muxer",
diff --git a/gst/asfmux/gstasfparse.c b/gst/asfmux/gstasfparse.c
index c288266..6cc75b6 100644
--- a/gst/asfmux/gstasfparse.c
+++ b/gst/asfmux/gstasfparse.c
@@ -400,10 +400,8 @@
   gstbaseparse_class->stop = gst_asf_parse_stop;
   gstbaseparse_class->handle_frame = gst_asf_parse_handle_frame;
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
 
   gst_element_class_set_static_metadata (gstelement_class, "ASF parser",
       "Parser", "Parses ASF", "Thiago Santos <thiagoss@embedded.ufcg.edu.br>");
diff --git a/gst/asfmux/gstrtpasfpay.c b/gst/asfmux/gstrtpasfpay.c
index e5ff0de..9b1e032 100644
--- a/gst/asfmux/gstrtpasfpay.c
+++ b/gst/asfmux/gstrtpasfpay.c
@@ -96,10 +96,10 @@
   gstbasertppayload_class->handle_buffer = gst_rtp_asf_pay_handle_buffer;
   gstbasertppayload_class->set_caps = gst_rtp_asf_pay_set_caps;
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_rtp_asf_pay_sink_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_rtp_asf_pay_src_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_rtp_asf_pay_sink_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_rtp_asf_pay_src_template);
   gst_element_class_set_static_metadata (gstelement_class, "RTP ASF payloader",
       "Codec/Payloader/Network",
       "Payload-encodes ASF into RTP packets (MS_RTSP)",
diff --git a/gst/audiofxbad/Makefile.in b/gst/audiofxbad/Makefile.in
index 7d065d2..8a36765 100644
--- a/gst/audiofxbad/Makefile.in
+++ b/gst/audiofxbad/Makefile.in
@@ -301,6 +301,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -322,6 +324,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -371,6 +375,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -516,6 +522,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -642,8 +650,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -686,8 +692,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/audiofxbad/gstaudiochannelmix.c b/gst/audiofxbad/gstaudiochannelmix.c
index aebe84a..7d92a5b 100644
--- a/gst/audiofxbad/gstaudiochannelmix.c
+++ b/gst/audiofxbad/gstaudiochannelmix.c
@@ -102,10 +102,10 @@
 
   /* Setting up pads and setting metadata should be moved to
      base_class_init if you intend to subclass this class. */
-  gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
-      gst_static_pad_template_get (&gst_audio_channel_mix_src_template));
-  gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
-      gst_static_pad_template_get (&gst_audio_channel_mix_sink_template));
+  gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+      &gst_audio_channel_mix_src_template);
+  gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+      &gst_audio_channel_mix_sink_template);
 
   gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass),
       "Simple stereo audio mixer", "Audio/Mixer", "Mixes left/right channels "
diff --git a/gst/audiomixer/Makefile.in b/gst/audiomixer/Makefile.in
index db32131..51745cd 100644
--- a/gst/audiomixer/Makefile.in
+++ b/gst/audiomixer/Makefile.in
@@ -332,6 +332,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -353,6 +355,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -402,6 +406,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -547,6 +553,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -673,8 +681,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -717,8 +723,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/audiomixer/gstaudiointerleave.c b/gst/audiomixer/gstaudiointerleave.c
index 39b86e8..e91b645 100644
--- a/gst/audiomixer/gstaudiointerleave.c
+++ b/gst/audiomixer/gstaudiointerleave.c
@@ -566,13 +566,12 @@
   gobject_class->get_property = gst_audio_interleave_get_property;
   gobject_class->finalize = gst_audio_interleave_finalize;
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_audio_interleave_src_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_audio_interleave_sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_audio_interleave_src_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_audio_interleave_sink_template);
   gst_element_class_set_static_metadata (gstelement_class, "AudioInterleave",
-      "Generic/Audio",
-      "Mixes multiple audio streams",
+      "Generic/Audio", "Mixes multiple audio streams",
       "Olivier Crete <olivier.crete@collabora.com>");
 
   gstelement_class->request_new_pad =
diff --git a/gst/audiomixer/gstaudiomixer.c b/gst/audiomixer/gstaudiomixer.c
index b211f7d..de539db 100644
--- a/gst/audiomixer/gstaudiomixer.c
+++ b/gst/audiomixer/gstaudiomixer.c
@@ -485,13 +485,12 @@
           "Setting this property takes a reference to the supplied GstCaps "
           "object", GST_TYPE_CAPS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_audiomixer_src_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_audiomixer_sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_audiomixer_src_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_audiomixer_sink_template);
   gst_element_class_set_static_metadata (gstelement_class, "AudioMixer",
-      "Generic/Audio",
-      "Mixes multiple audio streams",
+      "Generic/Audio", "Mixes multiple audio streams",
       "Sebastian Dröge <sebastian@centricular.com>");
 
   gstelement_class->request_new_pad =
diff --git a/gst/audiovisualizers/Makefile.in b/gst/audiovisualizers/Makefile.in
index 08ab702..057e21e 100644
--- a/gst/audiovisualizers/Makefile.in
+++ b/gst/audiovisualizers/Makefile.in
@@ -310,6 +310,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -331,6 +333,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -380,6 +384,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -525,6 +531,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -651,8 +659,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -695,8 +701,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/audiovisualizers/gstspacescope.c b/gst/audiovisualizers/gstspacescope.c
index 6cde066..5071dc8 100644
--- a/gst/audiovisualizers/gstspacescope.c
+++ b/gst/audiovisualizers/gstspacescope.c
@@ -39,15 +39,17 @@
 #include <stdlib.h>
 #include "gstspacescope.h"
 
+#if G_BYTE_ORDER == G_BIG_ENDIAN
+#define RGB_ORDER "xRGB"
+#else
+#define RGB_ORDER "BGRx"
+#endif
+
 static GstStaticPadTemplate gst_space_scope_src_template =
 GST_STATIC_PAD_TEMPLATE ("src",
     GST_PAD_SRC,
     GST_PAD_ALWAYS,
-#if G_BYTE_ORDER == G_BIG_ENDIAN
-    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("xRGB"))
-#else
-    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("BGRx"))
-#endif
+    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE (RGB_ORDER))
     );
 
 static GstStaticPadTemplate gst_space_scope_sink_template =
@@ -131,10 +133,10 @@
       "Visualization",
       "Simple stereo visualizer", "Stefan Kost <ensonic@users.sf.net>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_space_scope_src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_space_scope_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_space_scope_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_space_scope_sink_template);
 
   gobject_class->set_property = gst_space_scope_set_property;
   gobject_class->get_property = gst_space_scope_get_property;
diff --git a/gst/audiovisualizers/gstspectrascope.c b/gst/audiovisualizers/gstspectrascope.c
index 297d3ef..10aa7d2 100644
--- a/gst/audiovisualizers/gstspectrascope.c
+++ b/gst/audiovisualizers/gstspectrascope.c
@@ -40,15 +40,17 @@
 
 #include "gstspectrascope.h"
 
+#if G_BYTE_ORDER == G_BIG_ENDIAN
+#define RGB_ORDER "xRGB"
+#else
+#define RGB_ORDER "BGRx"
+#endif
+
 static GstStaticPadTemplate gst_spectra_scope_src_template =
 GST_STATIC_PAD_TEMPLATE ("src",
     GST_PAD_SRC,
     GST_PAD_ALWAYS,
-#if G_BYTE_ORDER == G_BIG_ENDIAN
-    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("xRGB"))
-#else
-    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("BGRx"))
-#endif
+    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE (RGB_ORDER))
     );
 
 static GstStaticPadTemplate gst_spectra_scope_sink_template =
@@ -88,10 +90,10 @@
       "Frequency spectrum scope", "Visualization",
       "Simple frequency spectrum scope", "Stefan Kost <ensonic@users.sf.net>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_spectra_scope_src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_spectra_scope_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_spectra_scope_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_spectra_scope_sink_template);
 
   scope_class->setup = GST_DEBUG_FUNCPTR (gst_spectra_scope_setup);
   scope_class->render = GST_DEBUG_FUNCPTR (gst_spectra_scope_render);
diff --git a/gst/audiovisualizers/gstsynaescope.c b/gst/audiovisualizers/gstsynaescope.c
index dfadf09..f99a753 100644
--- a/gst/audiovisualizers/gstsynaescope.c
+++ b/gst/audiovisualizers/gstsynaescope.c
@@ -38,15 +38,17 @@
 
 #include "gstsynaescope.h"
 
+#if G_BYTE_ORDER == G_BIG_ENDIAN
+#define RGB_ORDER "xRGB"
+#else
+#define RGB_ORDER "BGRx"
+#endif
+
 static GstStaticPadTemplate gst_synae_scope_src_template =
 GST_STATIC_PAD_TEMPLATE ("src",
     GST_PAD_SRC,
     GST_PAD_ALWAYS,
-#if G_BYTE_ORDER == G_BIG_ENDIAN
-    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("xRGB"))
-#else
-    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("BGRx"))
-#endif
+    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE (RGB_ORDER))
     );
 
 static GstStaticPadTemplate gst_synae_scope_sink_template =
@@ -87,10 +89,10 @@
       "Creates video visualizations of audio input, using stereo and pitch information",
       "Stefan Kost <ensonic@users.sf.net>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_synae_scope_src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_synae_scope_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_synae_scope_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_synae_scope_sink_template);
 
   scope_class->setup = GST_DEBUG_FUNCPTR (gst_synae_scope_setup);
   scope_class->render = GST_DEBUG_FUNCPTR (gst_synae_scope_render);
diff --git a/gst/audiovisualizers/gstwavescope.c b/gst/audiovisualizers/gstwavescope.c
index ad125b0..e4eb8c2 100644
--- a/gst/audiovisualizers/gstwavescope.c
+++ b/gst/audiovisualizers/gstwavescope.c
@@ -39,15 +39,17 @@
 #include <stdlib.h>
 #include "gstwavescope.h"
 
+#if G_BYTE_ORDER == G_BIG_ENDIAN
+#define RGB_ORDER "xRGB"
+#else
+#define RGB_ORDER "BGRx"
+#endif
+
 static GstStaticPadTemplate gst_wave_scope_src_template =
 GST_STATIC_PAD_TEMPLATE ("src",
     GST_PAD_SRC,
     GST_PAD_ALWAYS,
-#if G_BYTE_ORDER == G_BIG_ENDIAN
-    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("xRGB"))
-#else
-    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("BGRx"))
-#endif
+    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE (RGB_ORDER))
     );
 
 static GstStaticPadTemplate gst_wave_scope_sink_template =
@@ -146,10 +148,10 @@
       "Waveform oscilloscope", "Visualization", "Simple waveform oscilloscope",
       "Stefan Kost <ensonic@users.sf.net>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_wave_scope_src_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_wave_scope_sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_wave_scope_src_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_wave_scope_sink_template);
 }
 
 static void
diff --git a/gst/autoconvert/Makefile.in b/gst/autoconvert/Makefile.in
index a951011..4f0081f 100644
--- a/gst/autoconvert/Makefile.in
+++ b/gst/autoconvert/Makefile.in
@@ -304,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/autoconvert/gstautoconvert.c b/gst/autoconvert/gstautoconvert.c
index b5a1035..77e095a 100644
--- a/gst/autoconvert/gstautoconvert.c
+++ b/gst/autoconvert/gstautoconvert.c
@@ -159,10 +159,8 @@
   parent_quark = g_quark_from_static_string ("parent");
 
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&srctemplate));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sinktemplate));
+  gst_element_class_add_static_pad_template (gstelement_class, &srctemplate);
+  gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "Select convertor based on caps", "Generic/Bin",
diff --git a/gst/autoconvert/gstautovideoconvert.c b/gst/autoconvert/gstautovideoconvert.c
index 11fc974..7e0ea9e 100644
--- a/gst/autoconvert/gstautovideoconvert.c
+++ b/gst/autoconvert/gstautovideoconvert.c
@@ -140,10 +140,8 @@
   GST_DEBUG_CATEGORY_INIT (autovideoconvert_debug, "autovideoconvert", 0,
       "Auto color space converter");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&srctemplate));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sinktemplate));
+  gst_element_class_add_static_pad_template (gstelement_class, &srctemplate);
+  gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "Select color space convertor based on caps", "Generic/Bin",
diff --git a/gst/bayer/Makefile.in b/gst/bayer/Makefile.in
index bc71546..898a1b1 100644
--- a/gst/bayer/Makefile.in
+++ b/gst/bayer/Makefile.in
@@ -326,6 +326,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -349,6 +351,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -398,6 +402,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -543,6 +549,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -669,8 +677,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -713,8 +719,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/bayer/gstbayer2rgb.c b/gst/bayer/gstbayer2rgb.c
index e159ca2..0b6f232 100644
--- a/gst/bayer/gstbayer2rgb.c
+++ b/gst/bayer/gstbayer2rgb.c
@@ -80,7 +80,11 @@
 #include <gst/video/video.h>
 #include <string.h>
 #include <stdlib.h>
-#include <_stdint.h>
+
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
+
 #include "gstbayerorc.h"
 
 #define GST_CAT_DEFAULT gst_bayer2rgb_debug
diff --git a/gst/bayer/gstbayerorc-dist.c b/gst/bayer/gstbayerorc-dist.c
index e79862f..1bc39a6 100644
--- a/gst/bayer/gstbayerorc-dist.c
+++ b/gst/bayer/gstbayerorc-dist.c
@@ -336,7 +336,7 @@
       static const orc_uint8 bc[] = {
         1, 9, 34, 98, 97, 121, 101, 114, 95, 111, 114, 99, 95, 104, 111, 114,
         105, 122, 95, 117, 112, 115, 97, 109, 112, 108, 101, 95, 117, 110, 97,
-        108,
+            108,
         105, 103, 110, 101, 100, 11, 2, 2, 11, 2, 2, 12, 2, 2, 14, 4,
         1, 0, 0, 0, 20, 2, 20, 1, 20, 1, 20, 1, 20, 1, 199, 34,
         33, 4, 83, 32, 4, 16, 199, 36, 35, 32, 39, 36, 34, 36, 196, 0,
diff --git a/gst/bayer/gstrgb2bayer.c b/gst/bayer/gstrgb2bayer.c
index 495f151..9ef5c89 100644
--- a/gst/bayer/gstrgb2bayer.c
+++ b/gst/bayer/gstrgb2bayer.c
@@ -87,10 +87,10 @@
 
   gobject_class->finalize = gst_rgb2bayer_finalize;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_rgb2bayer_src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_rgb2bayer_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_rgb2bayer_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_rgb2bayer_sink_template);
 
   gst_element_class_set_static_metadata (element_class,
       "RGB to Bayer converter",
diff --git a/gst/camerabin2/Makefile.in b/gst/camerabin2/Makefile.in
index 0caf788..1341ce1 100644
--- a/gst/camerabin2/Makefile.in
+++ b/gst/camerabin2/Makefile.in
@@ -310,6 +310,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -331,6 +333,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -380,6 +384,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -525,6 +531,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -651,8 +659,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -695,8 +701,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/camerabin2/gstcamerabin2.c b/gst/camerabin2/gstcamerabin2.c
index d0876d5..24bb4fb 100644
--- a/gst/camerabin2/gstcamerabin2.c
+++ b/gst/camerabin2/gstcamerabin2.c
@@ -17,17 +17,16 @@
  * Boston, MA 02110-1301, USA.
  */
 /**
- * SECTION:element-camerabin2
+ * SECTION:element-camerabin
  *
- * CameraBin2 is a high-level camera object that encapsulates gstreamer
+ * CameraBin is a high-level camera object that encapsulates gstreamer
  * elements, providing an API for controlling a digital camera.
  *
  * <note>
- * Note that camerabin2 is still UNSTABLE and under
- * development.
+ * Note that camerabin is still UNSTABLE and under development.
  * </note>
  *
- * CameraBin2 has the following main features:
+ * CameraBin has the following main features:
  * <itemizedlist>
  * <listitem>
  * Record videos
@@ -46,12 +45,12 @@
  * <refsect2>
  * <title>Usage</title>
  * <para>
- * Camerabin2 can be created using gst_element_factory_make() just like
+ * Camerabin can be created using gst_element_factory_make() just like
  * any other element. Video or image capture mode can be selected using
  * the #GstCameraBin:mode property and the file to save the capture is
  * selected using #GstCameraBin:location property.
  *
- * After creating camerabin2, applications might want to do some
+ * After creating camerabin, applications might want to do some
  * customization (there's a section about this below), then select
  * the desired mode and start capturing.
  *
@@ -76,11 +75,11 @@
  * <refsect2>
  * <title>Customization</title>
  * <para>
- * Camerabin2 provides various customization properties, allowing the user
+ * Camerabin provides various customization properties, allowing the user
  * to set custom filters, selecting the viewfinder sink and formats to
  * use to encode the captured images/videos.
  *
- * #GstEncodingProfile<!-- -->s are used to tell camerabin2 which formats it
+ * #GstEncodingProfile<!-- -->s are used to tell camerabin which formats it
  * should encode the captures to, those should be set to
  * #GstCameraBin:image-profile and #GstCameraBin:video-profile. Default is
  * jpeg for images, and ogg (theora and vorbis) for video. If a profile without
@@ -89,7 +88,7 @@
  * #GstCameraBin:preview-caps can be used to select which format preview
  * images should be posted on the #GstBus. It has to be a raw video format.
  *
- * Camerabin2 has a #GstCameraBin:camera-source property so applications can
+ * Camerabin has a #GstCameraBin:camera-source property so applications can
  * set their source that will provide buffers for the viewfinder and for
  * captures. This camera source is a special type of source that has 3 pads.
  * To use a 'regular' source with a single pad you should use
@@ -103,7 +102,7 @@
  * #GstCameraBin:viewfinder-caps, these #GstCaps should be a subset of
  * #GstCameraBin:viewfinder-supported-caps.
  *
- * To select the desired resolution for captures, camerabin2 provides
+ * To select the desired resolution for captures, camerabin provides
  * #GstCameraBin:image-capture-caps and #GstCameraBin:video-capture-caps,
  * these caps must be a subset of what the source can produce. The allowed
  * caps can be probed using #GstCameraBin:image-capture-supported-caps and
@@ -121,8 +120,8 @@
  * <refsect2>
  * <title>Example launch line</title>
  * <para>
- * Unfortunately, camerabin can't be really used from gst-launch-1.0, as you need
- * to send signals to control it. The following pipeline might be able
+ * Unfortunately, camerabin can't be really used from gst-launch-1.0, as you
+ * need to send signals to control it. The following pipeline might be able
  * to show the viewfinder using all the default elements.
  * |[
  * gst-launch-1.0 -v -m camerabin
diff --git a/gst/camerabin2/gstdigitalzoom.c b/gst/camerabin2/gstdigitalzoom.c
index 20c01be..b936fe4 100644
--- a/gst/camerabin2/gstdigitalzoom.c
+++ b/gst/camerabin2/gstdigitalzoom.c
@@ -376,10 +376,8 @@
   GST_DEBUG_CATEGORY_INIT (digital_zoom_debug, "digitalzoom",
       0, "digital zoom");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_template);
+  gst_element_class_add_static_pad_template (gstelement_class, &src_template);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "Digital zoom bin", "Generic/Video",
diff --git a/gst/camerabin2/gstviewfinderbin.c b/gst/camerabin2/gstviewfinderbin.c
index 3ae6c31..7ff7bd5 100644
--- a/gst/camerabin2/gstviewfinderbin.c
+++ b/gst/camerabin2/gstviewfinderbin.c
@@ -122,8 +122,7 @@
           DEFAULT_DISABLE_CONVERTERS,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
 
   gst_element_class_set_static_metadata (element_class, "Viewfinder Bin",
       "Sink/Video", "Viewfinder Bin used in camerabin2",
diff --git a/gst/camerabin2/gstwrappercamerabinsrc.c b/gst/camerabin2/gstwrappercamerabinsrc.c
index 7796107..4c2d8ec 100644
--- a/gst/camerabin2/gstwrappercamerabinsrc.c
+++ b/gst/camerabin2/gstwrappercamerabinsrc.c
@@ -1123,14 +1123,13 @@
   GST_DEBUG_CATEGORY_INIT (wrapper_camera_bin_src_debug, "wrappercamerabinsrc",
       0, "wrapper camera src");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&vfsrc_template));
+  gst_element_class_add_static_pad_template (gstelement_class, &vfsrc_template);
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&imgsrc_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &imgsrc_template);
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&vidsrc_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &vidsrc_template);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "Wrapper camera src element for camerabin2", "Source/Video",
diff --git a/gst/cdxaparse/Makefile.in b/gst/cdxaparse/Makefile.in
index 3f2b137..3035dd9 100644
--- a/gst/cdxaparse/Makefile.in
+++ b/gst/cdxaparse/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/cdxaparse/gstcdxaparse.c b/gst/cdxaparse/gstcdxaparse.c
index cf0d08f..4334362 100644
--- a/gst/cdxaparse/gstcdxaparse.c
+++ b/gst/cdxaparse/gstcdxaparse.c
@@ -76,10 +76,10 @@
       "Wim Taymans <wim.taymans@tvd.be>");
 
   /* register src pads */
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template_factory));
+  gst_element_class_add_static_pad_template (element_class,
+      &sink_template_factory);
+  gst_element_class_add_static_pad_template (element_class,
+      &src_template_factory);
 }
 
 static void
diff --git a/gst/cdxaparse/gstvcdparse.c b/gst/cdxaparse/gstvcdparse.c
index 4a3a7e7..424e839 100644
--- a/gst/cdxaparse/gstvcdparse.c
+++ b/gst/cdxaparse/gstvcdparse.c
@@ -55,10 +55,8 @@
 {
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
 
   gst_element_class_set_static_metadata (element_class, "(S)VCD stream parser",
       "Codec/Parser", "Strip (S)VCD stream from its sync headers",
diff --git a/gst/coloreffects/Makefile.in b/gst/coloreffects/Makefile.in
index 793eb5a..d8d3a8f 100644
--- a/gst/coloreffects/Makefile.in
+++ b/gst/coloreffects/Makefile.in
@@ -304,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/coloreffects/gstchromahold.c b/gst/coloreffects/gstchromahold.c
index 097312a..011c401 100644
--- a/gst/coloreffects/gstchromahold.c
+++ b/gst/coloreffects/gstchromahold.c
@@ -153,10 +153,10 @@
       "Removes all color information except for one color",
       "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_chroma_hold_sink_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_chroma_hold_src_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_chroma_hold_sink_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_chroma_hold_src_template);
 
   GST_DEBUG_CATEGORY_INIT (gst_chroma_hold_debug, "chromahold", 0,
       "chromahold - Removes all color information except for one color");
diff --git a/gst/coloreffects/gstcoloreffects.c b/gst/coloreffects/gstcoloreffects.c
index a62a45d..5a1aea1 100644
--- a/gst/coloreffects/gstcoloreffects.c
+++ b/gst/coloreffects/gstcoloreffects.c
@@ -590,10 +590,10 @@
       "Color Look-up Table filter",
       "Filippo Argiolas <filippo.argiolas@gmail.com>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_color_effects_sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_color_effects_src_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_color_effects_sink_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_color_effects_src_template);
 }
 
 static void
diff --git a/gst/compositor/Makefile.in b/gst/compositor/Makefile.in
index b00c88d..0b87e2c 100644
--- a/gst/compositor/Makefile.in
+++ b/gst/compositor/Makefile.in
@@ -333,6 +333,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -354,6 +356,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -403,6 +407,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -548,6 +554,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -674,8 +682,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -718,8 +724,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/compositor/compositor.c b/gst/compositor/compositor.c
index eced976..c9fd3fc 100644
--- a/gst/compositor/compositor.c
+++ b/gst/compositor/compositor.c
@@ -75,7 +75,7 @@
  * ]| A pipeline to demonstrate compositor used together with videobox.
  * This should show a 320x240 pixels video test source with some transparency
  * showing the background checker pattern. Another video test source with just
- * the snow pattern of 100x100 pixels is overlayed on top of the first one on
+ * the snow pattern of 100x100 pixels is overlaid on top of the first one on
  * the left vertically centered with a small transparency showing the first
  * video test source behind and the checker pattern under it. Note that the
  * framerate of the output video is 10 frames per second.
@@ -239,9 +239,12 @@
       comp_pad->height <=
       0 ? GST_VIDEO_INFO_HEIGHT (&vagg_pad->info) : comp_pad->height;
 
-  gst_video_calculate_display_ratio (&dar_n, &dar_d, pad_width, pad_height,
-      GST_VIDEO_INFO_PAR_N (&vagg_pad->info),
-      GST_VIDEO_INFO_PAR_D (&vagg_pad->info), out_par_n, out_par_d);
+  if (!gst_video_calculate_display_ratio (&dar_n, &dar_d, pad_width, pad_height,
+          GST_VIDEO_INFO_PAR_N (&vagg_pad->info),
+          GST_VIDEO_INFO_PAR_D (&vagg_pad->info), out_par_n, out_par_d)) {
+    GST_WARNING_OBJECT (comp_pad, "Cannot calculate display aspect ratio");
+    *width = *height = 0;
+  }
   GST_LOG_OBJECT (comp_pad, "scaling %ux%u by %u/%u (%u/%u / %u/%u)", pad_width,
       pad_height, dar_n, dar_d, GST_VIDEO_INFO_PAR_N (&vagg_pad->info),
       GST_VIDEO_INFO_PAR_D (&vagg_pad->info), out_par_n, out_par_d);
@@ -254,10 +257,8 @@
     pad_width = gst_util_uint64_scale_int (pad_height, dar_n, dar_d);
   }
 
-  if (width)
-    *width = pad_width;
-  if (height)
-    *height = pad_height;
+  *width = pad_width;
+  *height = pad_height;
 }
 
 static gboolean
@@ -1112,10 +1113,8 @@
           GST_TYPE_COMPOSITOR_BACKGROUND,
           DEFAULT_BACKGROUND, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
 
   gst_element_class_set_static_metadata (gstelement_class, "Compositor",
       "Filter/Editor/Video/Compositor",
diff --git a/gst/dataurisrc/Makefile.in b/gst/dataurisrc/Makefile.in
index 8756410..9e6681b 100644
--- a/gst/dataurisrc/Makefile.in
+++ b/gst/dataurisrc/Makefile.in
@@ -299,6 +299,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -320,6 +322,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -369,6 +373,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -514,6 +520,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -640,8 +648,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -684,8 +690,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/dataurisrc/gstdataurisrc.c b/gst/dataurisrc/gstdataurisrc.c
index fe018b0..84ec894 100644
--- a/gst/dataurisrc/gstdataurisrc.c
+++ b/gst/dataurisrc/gstdataurisrc.c
@@ -99,8 +99,7 @@
           "URI that should be used",
           NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (element_class, &src_template);
   gst_element_class_set_static_metadata (element_class,
       "data: URI source element", "Source", "Handles data: uris",
       "Philippe Normand <pnormand@igalia.com>, "
diff --git a/gst/dccp/Makefile.in b/gst/dccp/Makefile.in
index 2b8fc41..6248784 100644
--- a/gst/dccp/Makefile.in
+++ b/gst/dccp/Makefile.in
@@ -309,6 +309,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -330,6 +332,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -379,6 +383,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -524,6 +530,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -650,8 +658,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -694,8 +700,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/dccp/gstdccp_common.h b/gst/dccp/gstdccp_common.h
index 3851e51..c88f8ef 100644
--- a/gst/dccp/gstdccp_common.h
+++ b/gst/dccp/gstdccp_common.h
@@ -38,9 +38,19 @@
 #define socklen_t int
 #endif
 #endif
+
+#ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
-#include <_stdint.h>
+#endif
+
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
+
+#ifdef HAVE_UNISTD_H
 #include <unistd.h>
+#endif
+
 #include <string.h>
 
 #endif /* __GST_DCCP_NET_H__ */
diff --git a/gst/dccp/gstdccpclientsink.c b/gst/dccp/gstdccpclientsink.c
index 9e1f999..058db2b 100644
--- a/gst/dccp/gstdccpclientsink.c
+++ b/gst/dccp/gstdccpclientsink.c
@@ -239,8 +239,7 @@
 {
   GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sinktemplate));
+  gst_element_class_add_static_pad_template (element_class, &sinktemplate);
 
   gst_element_class_set_static_metadata (element_class, "DCCP client sink",
       "Sink/Network",
diff --git a/gst/dccp/gstdccpclientsrc.c b/gst/dccp/gstdccpclientsrc.c
index a467a87..21ac8e2 100644
--- a/gst/dccp/gstdccpclientsrc.c
+++ b/gst/dccp/gstdccpclientsrc.c
@@ -272,8 +272,7 @@
 {
   GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&srctemplate));
+  gst_element_class_add_static_pad_template (element_class, &srctemplate);
 
   gst_element_class_set_static_metadata (element_class, "DCCP client source",
       "Source/Network",
diff --git a/gst/dccp/gstdccpserversink.c b/gst/dccp/gstdccpserversink.c
index 98e0960..7623523 100644
--- a/gst/dccp/gstdccpserversink.c
+++ b/gst/dccp/gstdccpserversink.c
@@ -336,8 +336,7 @@
 {
   GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sinktemplate));
+  gst_element_class_add_static_pad_template (element_class, &sinktemplate);
 
   gst_element_class_set_static_metadata (element_class, "DCCP server sink",
       "Sink/Network",
diff --git a/gst/dccp/gstdccpserversrc.c b/gst/dccp/gstdccpserversrc.c
index d8e231d..357a8d1 100644
--- a/gst/dccp/gstdccpserversrc.c
+++ b/gst/dccp/gstdccpserversrc.c
@@ -262,8 +262,7 @@
 {
   GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&srctemplate));
+  gst_element_class_add_static_pad_template (element_class, &srctemplate);
 
   gst_element_class_set_static_metadata (element_class, "DCCP server source",
       "Source/Network",
diff --git a/gst/debugutils/Makefile.in b/gst/debugutils/Makefile.in
index e5ad858..bb1c977 100644
--- a/gst/debugutils/Makefile.in
+++ b/gst/debugutils/Makefile.in
@@ -310,6 +310,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -331,6 +333,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -380,6 +384,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -525,6 +531,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -651,8 +659,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -695,8 +701,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/debugutils/fpsdisplaysink.c b/gst/debugutils/fpsdisplaysink.c
index 92b3201..00f89a3 100644
--- a/gst/debugutils/fpsdisplaysink.c
+++ b/gst/debugutils/fpsdisplaysink.c
@@ -205,8 +205,8 @@
 
   gstelement_klass->change_state = fps_display_sink_change_state;
 
-  gst_element_class_add_pad_template (gstelement_klass,
-      gst_static_pad_template_get (&fps_display_sink_template));
+  gst_element_class_add_static_pad_template (gstelement_klass,
+      &fps_display_sink_template);
 
   gst_element_class_set_static_metadata (gstelement_klass,
       "Measure and show framerate on videosink", "Sink/Video",
diff --git a/gst/debugutils/gstchecksumsink.c b/gst/debugutils/gstchecksumsink.c
index dd55d30..5560a14 100644
--- a/gst/debugutils/gstchecksumsink.c
+++ b/gst/debugutils/gstchecksumsink.c
@@ -25,6 +25,10 @@
 #include <gst/base/gstbasesink.h>
 #include "gstchecksumsink.h"
 
+static void gst_checksum_sink_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_checksum_sink_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
 static void gst_checksum_sink_dispose (GObject * object);
 static void gst_checksum_sink_finalize (GObject * object);
 
@@ -33,6 +37,12 @@
 static GstFlowReturn
 gst_checksum_sink_render (GstBaseSink * sink, GstBuffer * buffer);
 
+enum
+{
+  PROP_0,
+  PROP_HASH,
+};
+
 static GstStaticPadTemplate gst_checksum_sink_sink_template =
 GST_STATIC_PAD_TEMPLATE ("sink",
     GST_PAD_SINK,
@@ -47,6 +57,26 @@
 
 /* class initialization */
 
+#define GST_TYPE_CHECKSUM_SINK_HASH (gst_checksum_sink_hash_get_type ())
+static GType
+gst_checksum_sink_hash_get_type (void)
+{
+  static GType gtype = 0;
+
+  if (gtype == 0) {
+    static const GEnumValue values[] = {
+      {G_CHECKSUM_MD5, "MD5", "md5"},
+      {G_CHECKSUM_SHA1, "SHA-1", "sha1"},
+      {G_CHECKSUM_SHA256, "SHA-256", "sha256"},
+      {G_CHECKSUM_SHA512, "SHA-512", "sha512"},
+      {0, NULL, NULL},
+    };
+
+    gtype = g_enum_register_static ("GstChecksumSinkHash", values);
+  }
+  return gtype;
+}
+
 #define gst_checksum_sink_parent_class parent_class
 G_DEFINE_TYPE (GstChecksumSink, gst_checksum_sink, GST_TYPE_BASE_SINK);
 
@@ -57,16 +87,23 @@
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
   GstBaseSinkClass *base_sink_class = GST_BASE_SINK_CLASS (klass);
 
+  gobject_class->set_property = gst_checksum_sink_set_property;
+  gobject_class->get_property = gst_checksum_sink_get_property;
   gobject_class->dispose = gst_checksum_sink_dispose;
   gobject_class->finalize = gst_checksum_sink_finalize;
   base_sink_class->start = GST_DEBUG_FUNCPTR (gst_checksum_sink_start);
   base_sink_class->stop = GST_DEBUG_FUNCPTR (gst_checksum_sink_stop);
   base_sink_class->render = GST_DEBUG_FUNCPTR (gst_checksum_sink_render);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_checksum_sink_src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_checksum_sink_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_checksum_sink_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_checksum_sink_sink_template);
+
+  g_object_class_install_property (gobject_class, PROP_HASH,
+      g_param_spec_enum ("hash", "Hash", "Checksum type",
+          gst_checksum_sink_hash_get_type (), G_CHECKSUM_SHA1,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   gst_element_class_set_static_metadata (element_class, "Checksum sink",
       "Debug/Sink", "Calculates a checksum for buffers",
@@ -77,15 +114,48 @@
 gst_checksum_sink_init (GstChecksumSink * checksumsink)
 {
   gst_base_sink_set_sync (GST_BASE_SINK (checksumsink), FALSE);
+  checksumsink->hash = G_CHECKSUM_SHA1;
 }
 
-void
+static void
+gst_checksum_sink_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstChecksumSink *checksumsink = GST_CHECKSUM_SINK (object);
+
+  switch (prop_id) {
+    case PROP_HASH:
+      checksumsink->hash = g_value_get_enum (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_checksum_sink_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstChecksumSink *checksumsink = GST_CHECKSUM_SINK (object);
+
+  switch (prop_id) {
+    case PROP_HASH:
+      g_value_set_enum (value, checksumsink->hash);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
 gst_checksum_sink_dispose (GObject * object)
 {
   G_OBJECT_CLASS (parent_class)->dispose (object);
 }
 
-void
+static void
 gst_checksum_sink_finalize (GObject * object)
 {
   G_OBJECT_CLASS (parent_class)->finalize (object);
@@ -108,9 +178,11 @@
 {
   gchar *s;
   GstMapInfo map;
+  GstChecksumSink *checksumsink;
 
+  checksumsink = GST_CHECKSUM_SINK (sink);
   gst_buffer_map (buffer, &map, GST_MAP_READ);
-  s = g_compute_checksum_for_data (G_CHECKSUM_SHA1, map.data, map.size);
+  s = g_compute_checksum_for_data (checksumsink->hash, map.data, map.size);
   gst_buffer_unmap (buffer, &map);
   g_print ("%" GST_TIME_FORMAT " %s\n",
       GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buffer)), s);
diff --git a/gst/debugutils/gstchecksumsink.h b/gst/debugutils/gstchecksumsink.h
index d714628..d86ced4 100644
--- a/gst/debugutils/gstchecksumsink.h
+++ b/gst/debugutils/gstchecksumsink.h
@@ -37,7 +37,7 @@
 struct _GstChecksumSink
 {
   GstBaseSink base_checksumsink;
-
+  GChecksumType hash;
 };
 
 struct _GstChecksumSinkClass
diff --git a/gst/debugutils/gstchopmydata.c b/gst/debugutils/gstchopmydata.c
index ceff7e5..c382d32 100644
--- a/gst/debugutils/gstchopmydata.c
+++ b/gst/debugutils/gstchopmydata.c
@@ -121,10 +121,10 @@
           "Step increment for random buffer sizes", 1, G_MAXINT,
           DEFAULT_MAX_SIZE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_chop_my_data_src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_chop_my_data_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_chop_my_data_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_chop_my_data_sink_template);
 
   gst_element_class_set_static_metadata (element_class, "FIXME",
       "Generic", "FIXME", "David Schleef <ds@schleef.org>");
diff --git a/gst/debugutils/gstcompare.c b/gst/debugutils/gstcompare.c
index 3d52615..777a8d8 100644
--- a/gst/debugutils/gstcompare.c
+++ b/gst/debugutils/gstcompare.c
@@ -169,12 +169,10 @@
           "Whether threshold value is upper bound or lower bound for difference measure",
           DEFAULT_UPPER, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&check_sink_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &check_sink_factory);
   gst_element_class_set_static_metadata (gstelement_class, "Compare buffers",
       "Filter/Debug", "Compares incoming buffers",
       "Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>");
diff --git a/gst/debugutils/gstdebugspy.c b/gst/debugutils/gstdebugspy.c
index 19e7cf2..fed2db1 100644
--- a/gst/debugutils/gstdebugspy.c
+++ b/gst/debugutils/gstdebugspy.c
@@ -139,10 +139,8 @@
       "DebugSpy provides information on buffers with bus messages",
       "Guillaume Emont <gemont@igalia.com>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
 
   GST_DEBUG_CATEGORY_INIT (gst_debug_spy_debug, "debugspy", 0, "debugspy");
 }
diff --git a/gst/debugutils/gsterrorignore.c b/gst/debugutils/gsterrorignore.c
index 3c19ed5..ed42a05 100644
--- a/gst/debugutils/gsterrorignore.c
+++ b/gst/debugutils/gsterrorignore.c
@@ -92,10 +92,8 @@
       "Pass through all packets but ignore some GstFlowReturn types",
       "Vivia Nikolaidou <vivia@toolsonair.com>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_template);
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_template);
 
   gstelement_class->change_state = gst_error_ignore_change_state;
 
diff --git a/gst/dvbsuboverlay/Makefile.in b/gst/dvbsuboverlay/Makefile.in
index 0f1fc17..c3cd836 100644
--- a/gst/dvbsuboverlay/Makefile.in
+++ b/gst/dvbsuboverlay/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/dvbsuboverlay/gstdvbsuboverlay.c b/gst/dvbsuboverlay/gstdvbsuboverlay.c
index 3658201..0b0062b 100644
--- a/gst/dvbsuboverlay/gstdvbsuboverlay.c
+++ b/gst/dvbsuboverlay/gstdvbsuboverlay.c
@@ -162,12 +162,11 @@
   gstelement_class->change_state =
       GST_DEBUG_FUNCPTR (gst_dvbsub_overlay_change_state);
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&video_sink_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&text_sink_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &video_sink_factory);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &text_sink_factory);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "DVB Subtitles Overlay",
@@ -1129,7 +1128,7 @@
           overlay->current_comp);
     } else {
       GST_DEBUG_OBJECT (overlay, "Blending overlay image to video buffer");
-      gst_video_frame_map (&frame, &overlay->info, buffer, GST_MAP_WRITE);
+      gst_video_frame_map (&frame, &overlay->info, buffer, GST_MAP_READWRITE);
       gst_video_overlay_composition_blend (overlay->current_comp, &frame);
       gst_video_frame_unmap (&frame);
     }
diff --git a/gst/dvdspu/Makefile.in b/gst/dvdspu/Makefile.in
index 009b2f6..040bf04 100644
--- a/gst/dvdspu/Makefile.in
+++ b/gst/dvdspu/Makefile.in
@@ -306,6 +306,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -327,6 +329,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -376,6 +380,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -521,6 +527,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -647,8 +655,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,8 +697,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/dvdspu/gstdvdspu.c b/gst/dvdspu/gstdvdspu.c
index 84f5ba8..fb21748 100644
--- a/gst/dvdspu/gstdvdspu.c
+++ b/gst/dvdspu/gstdvdspu.c
@@ -131,12 +131,11 @@
 
   gstelement_class->change_state = gst_dvd_spu_change_state;
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&video_sink_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&subpic_sink_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &video_sink_factory);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &subpic_sink_factory);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "Sub-picture Overlay", "Mixer/Video/Overlay/SubPicture/DVD/Bluray",
diff --git a/gst/faceoverlay/Makefile.in b/gst/faceoverlay/Makefile.in
index db2a418..755a258 100644
--- a/gst/faceoverlay/Makefile.in
+++ b/gst/faceoverlay/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/faceoverlay/gstfaceoverlay.c b/gst/faceoverlay/gstfaceoverlay.c
index 2a84b54..19006f3 100644
--- a/gst/faceoverlay/gstfaceoverlay.c
+++ b/gst/faceoverlay/gstfaceoverlay.c
@@ -286,10 +286,8 @@
       "Overlays SVG graphics over a detected face in a video stream",
       "Laura Lucas Alday <lauralucas@gmail.com>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
 }
 
 static void
diff --git a/gst/festival/Makefile.in b/gst/festival/Makefile.in
index 1140829..a4fe21f 100644
--- a/gst/festival/Makefile.in
+++ b/gst/festival/Makefile.in
@@ -302,6 +302,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -323,6 +325,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -372,6 +376,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -517,6 +523,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -643,8 +651,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,8 +693,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/festival/gstfestival.c b/gst/festival/gstfestival.c
index 00ef82d..981ec61 100644
--- a/gst/festival/gstfestival.c
+++ b/gst/festival/gstfestival.c
@@ -163,10 +163,10 @@
       GST_DEBUG_FUNCPTR (gst_festival_change_state);
 
   /* register pads */
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_template_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_template_factory));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &sink_template_factory);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &src_template_factory);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "Festival Text-to-Speech synthesizer", "Filter/Effect/Audio",
diff --git a/gst/fieldanalysis/Makefile.in b/gst/fieldanalysis/Makefile.in
index 2f77894..63b63d4 100644
--- a/gst/fieldanalysis/Makefile.in
+++ b/gst/fieldanalysis/Makefile.in
@@ -331,6 +331,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -352,6 +354,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -401,6 +405,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -546,6 +552,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -672,8 +680,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -716,8 +722,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/fieldanalysis/gstfieldanalysis.c b/gst/fieldanalysis/gstfieldanalysis.c
index 260eaf3..ac6bf60 100644
--- a/gst/fieldanalysis/gstfieldanalysis.c
+++ b/gst/fieldanalysis/gstfieldanalysis.c
@@ -284,10 +284,8 @@
       "Analyse fields from video frames to identify if they are progressive/telecined/interlaced",
       "Robert Swain <robert.swain@collabora.co.uk>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
 
 }
 
diff --git a/gst/fieldanalysis/gstfieldanalysisorc-dist.c b/gst/fieldanalysis/gstfieldanalysisorc-dist.c
index 1ae0143..7d00a73 100644
--- a/gst/fieldanalysis/gstfieldanalysisorc-dist.c
+++ b/gst/fieldanalysis/gstfieldanalysisorc-dist.c
@@ -283,7 +283,7 @@
       static const orc_uint8 bc[] = {
         1, 9, 44, 102, 105, 101, 108, 100, 97, 110, 97, 108, 121, 115, 105, 115,
         95, 111, 114, 99, 95, 115, 97, 109, 101, 95, 112, 97, 114, 105, 116,
-        121,
+            121,
         95, 115, 97, 100, 95, 112, 108, 97, 110, 97, 114, 95, 121, 117, 118, 12,
         1, 1, 12, 1, 1, 13, 4, 16, 4, 20, 2, 20, 2, 20, 4, 20,
         4, 150, 32, 4, 150, 33, 5, 98, 32, 32, 33, 69, 32, 32, 154, 34,
@@ -466,9 +466,9 @@
       static const orc_uint8 bc[] = {
         1, 9, 44, 102, 105, 101, 108, 100, 97, 110, 97, 108, 121, 115, 105, 115,
         95, 111, 114, 99, 95, 115, 97, 109, 101, 95, 112, 97, 114, 105, 116,
-        121,
+            121,
         95, 115, 115, 100, 95, 112, 108, 97, 110, 97, 114, 95, 121, 117, 118,
-        12,
+            12,
         1, 1, 12, 1, 1, 13, 4, 16, 4, 20, 2, 20, 2, 20, 4, 20,
         4, 150, 32, 4, 150, 33, 5, 98, 32, 32, 33, 176, 34, 32, 32, 111,
         35, 34, 24, 106, 34, 34, 35, 181, 12, 34, 2, 0,
@@ -758,7 +758,7 @@
       static const orc_uint8 bc[] = {
         1, 9, 46, 102, 105, 101, 108, 100, 97, 110, 97, 108, 121, 115, 105, 115,
         95, 111, 114, 99, 95, 115, 97, 109, 101, 95, 112, 97, 114, 105, 116,
-        121,
+            121,
         95, 51, 95, 116, 97, 112, 95, 112, 108, 97, 110, 97, 114, 95, 121, 117,
         118, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1,
         12, 1, 1, 13, 4, 14, 2, 2, 0, 0, 0, 16, 4, 20, 2, 20,
@@ -1085,7 +1085,7 @@
       static const orc_uint8 bc[] = {
         1, 9, 50, 102, 105, 101, 108, 100, 97, 110, 97, 108, 121, 115, 105, 115,
         95, 111, 114, 99, 95, 111, 112, 112, 111, 115, 105, 116, 101, 95, 112,
-        97,
+            97,
         114, 105, 116, 121, 95, 53, 95, 116, 97, 112, 95, 112, 108, 97, 110, 97,
         114, 95, 121, 117, 118, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1,
         1, 12, 1, 1, 13, 4, 14, 2, 2, 0, 0, 0, 14, 2, 3, 0,
diff --git a/gst/freeverb/Makefile.in b/gst/freeverb/Makefile.in
index ee24cd9..5ac2dbc 100644
--- a/gst/freeverb/Makefile.in
+++ b/gst/freeverb/Makefile.in
@@ -305,6 +305,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -326,6 +328,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -375,6 +379,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -520,6 +526,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -646,8 +654,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,8 +696,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/freeverb/gstfreeverb.c b/gst/freeverb/gstfreeverb.c
index 9500334..e4263e5 100644
--- a/gst/freeverb/gstfreeverb.c
+++ b/gst/freeverb/gstfreeverb.c
@@ -424,10 +424,8 @@
       "Add reverberation to audio streams",
       "Stefan Sauer <ensonic@users.sf.net>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (element_class, &src_template);
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
 
   GST_BASE_TRANSFORM_CLASS (klass)->get_unit_size =
       GST_DEBUG_FUNCPTR (gst_freeverb_get_unit_size);
diff --git a/gst/frei0r/Makefile.in b/gst/frei0r/Makefile.in
index f91296e..53b2744 100644
--- a/gst/frei0r/Makefile.in
+++ b/gst/frei0r/Makefile.in
@@ -306,6 +306,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -327,6 +329,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -376,6 +380,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -521,6 +527,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -647,8 +655,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,8 +697,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/gaudieffects/Makefile.in b/gst/gaudieffects/Makefile.in
index cee102b..67e58cb 100644
--- a/gst/gaudieffects/Makefile.in
+++ b/gst/gaudieffects/Makefile.in
@@ -337,6 +337,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -358,6 +360,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -407,6 +411,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -552,6 +558,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -678,8 +686,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -722,8 +728,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/gaudieffects/gstburn.c b/gst/gaudieffects/gstburn.c
index a3a3c55..ee44875 100644
--- a/gst/gaudieffects/gstburn.c
+++ b/gst/gaudieffects/gstburn.c
@@ -138,10 +138,10 @@
       "Burn adjusts the colors in the video signal.",
       "Luis de Bethencourt <luis@debethencourt.com>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_burn_sink_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_burn_src_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_burn_sink_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_burn_src_template);
 
   gobject_class->set_property = gst_burn_set_property;
   gobject_class->get_property = gst_burn_get_property;
diff --git a/gst/gaudieffects/gstchromium.c b/gst/gaudieffects/gstchromium.c
index 264bb65..65ac5b5 100644
--- a/gst/gaudieffects/gstchromium.c
+++ b/gst/gaudieffects/gstchromium.c
@@ -152,10 +152,10 @@
       "Chromium breaks the colors of the video signal.",
       "Luis de Bethencourt <luis@debethencourt.com>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_chromium_sink_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_chromium_src_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_chromium_sink_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_chromium_src_template);
 
   gobject_class->set_property = gst_chromium_set_property;
   gobject_class->get_property = gst_chromium_get_property;
diff --git a/gst/gaudieffects/gstchromium.h b/gst/gaudieffects/gstchromium.h
index 4d54e2a..8c3b4a0 100644
--- a/gst/gaudieffects/gstchromium.h
+++ b/gst/gaudieffects/gstchromium.h
@@ -62,10 +62,10 @@
 #define GST_IS_CHROMIUM_CLASS(klass) \
   (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_CHROMIUM))
 
-typedef struct GstChromium      GstChromium;
-typedef struct GstChromiumClass GstChromiumClass;
+typedef struct _GstChromium      GstChromium;
+typedef struct _GstChromiumClass GstChromiumClass;
 
-struct GstChromium
+struct _GstChromium
 {
   GstVideoFilter videofilter;
 
@@ -73,7 +73,7 @@
   gint edge_a, edge_b;
 };
 
-struct GstChromiumClass
+struct _GstChromiumClass
 {
   GstVideoFilterClass parent_class;
 };
diff --git a/gst/gaudieffects/gstdilate.c b/gst/gaudieffects/gstdilate.c
index 83a3513..301135d 100644
--- a/gst/gaudieffects/gstdilate.c
+++ b/gst/gaudieffects/gstdilate.c
@@ -140,10 +140,10 @@
       "Dilate copies the brightest pixel around.",
       "Luis de Bethencourt <luis@debethencourt.com>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_dilate_sink_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_dilate_src_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_dilate_sink_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_dilate_src_template);
 
   gobject_class->set_property = gst_dilate_set_property;
   gobject_class->get_property = gst_dilate_get_property;
diff --git a/gst/gaudieffects/gstdodge.c b/gst/gaudieffects/gstdodge.c
index 996d894..eb5019e 100644
--- a/gst/gaudieffects/gstdodge.c
+++ b/gst/gaudieffects/gstdodge.c
@@ -135,10 +135,10 @@
       "Dodge saturates the colors in the video signal.",
       "Luis de Bethencourt <luis@debethencourt.com>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_dodge_sink_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_dodge_src_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_dodge_sink_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_dodge_src_template);
 
   gobject_class->set_property = gst_dodge_set_property;
   gobject_class->get_property = gst_dodge_get_property;
diff --git a/gst/gaudieffects/gstexclusion.c b/gst/gaudieffects/gstexclusion.c
index a723f69..6ebe825 100644
--- a/gst/gaudieffects/gstexclusion.c
+++ b/gst/gaudieffects/gstexclusion.c
@@ -140,10 +140,10 @@
       "Exclusion exclodes the colors in the video signal.",
       "Luis de Bethencourt <luis@debethencourt.com>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_exclusion_sink_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_exclusion_src_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_exclusion_sink_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_exclusion_src_template);
 
   gobject_class->set_property = gst_exclusion_set_property;
   gobject_class->get_property = gst_exclusion_get_property;
diff --git a/gst/gaudieffects/gstgaussblur.c b/gst/gaudieffects/gstgaussblur.c
index 6ba9b84..4e3dc59 100644
--- a/gst/gaudieffects/gstgaussblur.c
+++ b/gst/gaudieffects/gstgaussblur.c
@@ -137,10 +137,10 @@
       "Perform Gaussian blur/sharpen on a video",
       "Jan Schmidt <thaytan@noraisin.net>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_gaussianblur_sink_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_gaussianblur_src_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_gaussianblur_sink_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_gaussianblur_src_template);
 
   gobject_class->set_property = gst_gaussianblur_set_property;
   gobject_class->get_property = gst_gaussianblur_get_property;
diff --git a/gst/gaudieffects/gstgaussblur.h b/gst/gaudieffects/gstgaussblur.h
index 84688b9..33cbb02 100644
--- a/gst/gaudieffects/gstgaussblur.h
+++ b/gst/gaudieffects/gstgaussblur.h
@@ -58,10 +58,10 @@
 #define GST_GAUSSIANBLUR(obj) \
     (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_GAUSSIANBLUR, GstGaussianBlur))
 
-typedef struct GstGaussianBlur GstGaussianBlur;
-typedef struct GstGaussianBlurClass GstGaussianBlurClass;
+typedef struct _GstGaussianBlur GstGaussianBlur;
+typedef struct _GstGaussianBlurClass GstGaussianBlurClass;
 
-struct GstGaussianBlur
+struct _GstGaussianBlur
 {
   GstVideoFilter videofilter;
   gint width, height, stride;
@@ -75,7 +75,7 @@
   gint16 *smoothedim;
 };
 
-struct GstGaussianBlurClass
+struct _GstGaussianBlurClass
 {
   GstVideoFilterClass parent_class;
 };
diff --git a/gst/gaudieffects/gstsolarize.c b/gst/gaudieffects/gstsolarize.c
index f5d98b8..0710d0f 100644
--- a/gst/gaudieffects/gstsolarize.c
+++ b/gst/gaudieffects/gstsolarize.c
@@ -143,10 +143,10 @@
       "Solarize tunable inverse in the video signal.",
       "Luis de Bethencourt <luis@debethencourt.com>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_solarize_sink_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_solarize_src_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_solarize_sink_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_solarize_src_template);
 
   gobject_class->set_property = gst_solarize_set_property;
   gobject_class->get_property = gst_solarize_get_property;
diff --git a/gst/gdp/Makefile.in b/gst/gdp/Makefile.in
index cf4631a..592ead1 100644
--- a/gst/gdp/Makefile.in
+++ b/gst/gdp/Makefile.in
@@ -304,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/gdp/dataprotocol.c b/gst/gdp/dataprotocol.c
index fbb46a6..d6534ba 100644
--- a/gst/gdp/dataprotocol.c
+++ b/gst/gdp/dataprotocol.c
@@ -477,6 +477,8 @@
  * gst_dp_buffer_from_header:
  * @header_length: the length of the packet header
  * @header: the byte array of the packet header
+ * @allocator: the allocator used to allocate the new #GstBuffer
+ * @allocation_params: the allocations parameters used to allocate the new #GstBuffer
  *
  * Creates a newly allocated #GstBuffer from the given header.
  * The buffer data needs to be copied into it before validating.
@@ -490,7 +492,8 @@
  * Returns: A #GstBuffer if the buffer was successfully created, or NULL.
  */
 GstBuffer *
-gst_dp_buffer_from_header (guint header_length, const guint8 * header)
+gst_dp_buffer_from_header (guint header_length, const guint8 * header,
+    GstAllocator * allocator, GstAllocationParams * allocation_params)
 {
   GstBuffer *buffer;
 
@@ -500,8 +503,8 @@
       GST_DP_PAYLOAD_BUFFER, NULL);
 
   buffer =
-      gst_buffer_new_allocate (NULL,
-      (guint) GST_DP_HEADER_PAYLOAD_LENGTH (header), NULL);
+      gst_buffer_new_allocate (allocator,
+      (guint) GST_DP_HEADER_PAYLOAD_LENGTH (header), allocation_params);
 
   GST_BUFFER_TIMESTAMP (buffer) = GST_DP_HEADER_TIMESTAMP (header);
   GST_BUFFER_DTS (buffer) = GST_DP_HEADER_DTS (header);
diff --git a/gst/gdp/dataprotocol.h b/gst/gdp/dataprotocol.h
index ac1d010..397bf43 100644
--- a/gst/gdp/dataprotocol.h
+++ b/gst/gdp/dataprotocol.h
@@ -78,7 +78,9 @@
 
 /* converting to GstBuffer/GstEvent/GstCaps */
 GstBuffer *     gst_dp_buffer_from_header       (guint header_length,
-                                                const guint8 * header);
+                                                const guint8 * header,
+                                                GstAllocator * allocator,
+                                                GstAllocationParams * allocation_params);
 GstCaps *       gst_dp_caps_from_packet         (guint header_length,
                                                 const guint8 * header,
                                                 const guint8 * payload);
diff --git a/gst/gdp/gstgdpdepay.c b/gst/gdp/gstgdpdepay.c
index b779a85..b7269bd 100644
--- a/gst/gdp/gstgdpdepay.c
+++ b/gst/gdp/gstgdpdepay.c
@@ -86,6 +86,7 @@
     const GValue * value, GParamSpec * pspec);
 static void gst_gdp_depay_get_property (GObject * object, guint prop_id,
     GValue * value, GParamSpec * pspec);
+static void gst_gdp_depay_decide_allocation (GstGDPDepay * depay);
 
 static void
 gst_gdp_depay_class_init (GstGDPDepayClass * klass)
@@ -110,10 +111,10 @@
       "Depayloads GStreamer Data Protocol buffers",
       "Thomas Vander Stichele <thomas at apestaart dot org>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gdp_depay_sink_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gdp_depay_src_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gdp_depay_sink_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gdp_depay_src_template);
 
   gstelement_class->change_state =
       GST_DEBUG_FUNCPTR (gst_gdp_depay_change_state);
@@ -140,6 +141,9 @@
   gst_element_add_pad (GST_ELEMENT (gdpdepay), gdpdepay->srcpad);
 
   gdpdepay->adapter = gst_adapter_new ();
+
+  gdpdepay->allocator = NULL;
+  gst_allocation_params_init (&gdpdepay->allocation_params);
 }
 
 static void
@@ -153,6 +157,8 @@
   g_free (this->header);
   gst_adapter_clear (this->adapter);
   g_object_unref (this->adapter);
+  if (this->allocator)
+    gst_object_unref (this->allocator);
 
   GST_CALL_PARENT (G_OBJECT_CLASS, finalize, (gobject));
 }
@@ -265,6 +271,10 @@
 
   this = GST_GDP_DEPAY (parent);
 
+  if (gst_pad_check_reconfigure (this->srcpad)) {
+    gst_gdp_depay_decide_allocation (this);
+  }
+
   /* On DISCONT, get rid of accumulated data. We assume a buffer after the
    * DISCONT contains (part of) a new valid header, if not we error because we
    * lost sync */
@@ -352,7 +362,9 @@
           goto no_caps;
 
         GST_LOG_OBJECT (this, "reading GDP buffer from adapter");
-        buf = gst_dp_buffer_from_header (GST_DP_HEADER_LENGTH, this->header);
+        buf =
+            gst_dp_buffer_from_header (GST_DP_HEADER_LENGTH, this->header,
+            this->allocator, &this->allocation_params);
         if (!buf)
           goto buffer_failed;
 
@@ -411,6 +423,7 @@
         GST_DEBUG_OBJECT (this, "deserialized caps %" GST_PTR_FORMAT, caps);
         gst_caps_replace (&(this->caps), caps);
         gst_pad_set_caps (this->srcpad, caps);
+        gst_gdp_depay_decide_allocation (this);
         /* drop the creation ref we still have */
         gst_caps_unref (caps);
 
@@ -521,6 +534,10 @@
         this->caps = NULL;
       }
       gst_adapter_clear (this->adapter);
+      if (this->allocator)
+        gst_object_unref (this->allocator);
+      this->allocator = NULL;
+      gst_allocation_params_init (&this->allocation_params);
       break;
     default:
       break;
@@ -528,6 +545,43 @@
   return ret;
 }
 
+static void
+gst_gdp_depay_decide_allocation (GstGDPDepay * gdpdepay)
+{
+  GstAllocator *allocator;
+  GstAllocationParams params;
+  GstQuery *query = NULL;
+  GstCaps *caps;
+
+  caps = gst_pad_query_caps (gdpdepay->srcpad, NULL);
+  if (!caps) {
+    GST_LOG_OBJECT (gdpdepay,
+        "No peer pad caps found. Using default allocator.");
+    return;
+  }
+
+  query = gst_query_new_allocation (caps, TRUE);
+  if (!gst_pad_peer_query (gdpdepay->srcpad, query)) {
+    GST_WARNING_OBJECT (gdpdepay, "Peer allocation query failed.");
+  }
+
+  if (gst_query_get_n_allocation_params (query) > 0) {
+    gst_query_parse_nth_allocation_param (query, 0, &allocator, &params);
+  } else {
+    allocator = NULL;
+    gst_allocation_params_init (&params);
+  }
+
+  if (gdpdepay->allocator)
+    gst_object_unref (gdpdepay->allocator);
+
+  gdpdepay->allocator = allocator;
+  gdpdepay->allocation_params = params;
+
+  gst_caps_unref (caps);
+  gst_query_unref (query);
+}
+
 gboolean
 gst_gdp_depay_plugin_init (GstPlugin * plugin)
 {
diff --git a/gst/gdp/gstgdpdepay.h b/gst/gdp/gstgdpdepay.h
index 43bbf9d..c21f302 100644
--- a/gst/gdp/gstgdpdepay.h
+++ b/gst/gdp/gstgdpdepay.h
@@ -68,6 +68,9 @@
   GstDPPayloadType payload_type;
 
   gint64 ts_offset;
+
+  GstAllocator *allocator;
+  GstAllocationParams allocation_params;
 };
 
 struct _GstGDPDepayClass
diff --git a/gst/gdp/gstgdppay.c b/gst/gdp/gstgdppay.c
index b428462..6b55895 100644
--- a/gst/gdp/gstgdppay.c
+++ b/gst/gdp/gstgdppay.c
@@ -117,10 +117,10 @@
       "Payloads GStreamer Data Protocol buffers",
       "Thomas Vander Stichele <thomas at apestaart dot org>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gdp_pay_sink_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gdp_pay_src_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gdp_pay_sink_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gdp_pay_src_template);
 
   gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_gdp_pay_change_state);
 }
diff --git a/gst/geometrictransform/Makefile.in b/gst/geometrictransform/Makefile.in
index a1b5f61..b5a8c51 100644
--- a/gst/geometrictransform/Makefile.in
+++ b/gst/geometrictransform/Makefile.in
@@ -325,6 +325,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -346,6 +348,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -395,6 +399,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -540,6 +546,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -666,8 +674,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -710,8 +716,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/geometrictransform/gstgeometrictransform.c b/gst/geometrictransform/gstgeometrictransform.c
index 94910ed..a6c00a8 100644
--- a/gst/geometrictransform/gstgeometrictransform.c
+++ b/gst/geometrictransform/gstgeometrictransform.c
@@ -352,10 +352,10 @@
 {
   GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_geometric_transform_sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_geometric_transform_src_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_geometric_transform_sink_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_geometric_transform_src_template);
 }
 
 static void
diff --git a/gst/hdvparse/Makefile.in b/gst/hdvparse/Makefile.in
index de0f5e0..05f1297 100644
--- a/gst/hdvparse/Makefile.in
+++ b/gst/hdvparse/Makefile.in
@@ -302,6 +302,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -323,6 +325,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -372,6 +376,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -517,6 +523,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -643,8 +651,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,8 +693,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/hdvparse/gsthdvparse.c b/gst/hdvparse/gsthdvparse.c
index 837c74e..b899e95 100644
--- a/gst/hdvparse/gsthdvparse.c
+++ b/gst/hdvparse/gsthdvparse.c
@@ -116,10 +116,8 @@
 
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (element_class, &src_template);
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
   gst_element_class_set_static_metadata (element_class, "HDVParser",
       "Data/Parser",
       "HDV private stream Parser", "Edward Hervey <bilboed@bilboed.com>");
diff --git a/gst/id3tag/Makefile.in b/gst/id3tag/Makefile.in
index ef09091..9c9e3c4 100644
--- a/gst/id3tag/Makefile.in
+++ b/gst/id3tag/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/id3tag/gstid3mux.c b/gst/id3tag/gstid3mux.c
index 6417538..37c7a49 100644
--- a/gst/id3tag/gstid3mux.c
+++ b/gst/id3tag/gstid3mux.c
@@ -129,11 +129,8 @@
       "Michael Smith <msmith@songbirdnest.com>, "
       "Tim-Philipp Müller <tim centricular net>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
-
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
+  gst_element_class_add_static_pad_template (element_class, &src_template);
 }
 
 static void
diff --git a/gst/inter/Makefile.in b/gst/inter/Makefile.in
index fdec405..e00e5e1 100644
--- a/gst/inter/Makefile.in
+++ b/gst/inter/Makefile.in
@@ -319,6 +319,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -340,6 +342,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -389,6 +393,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -534,6 +540,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -660,8 +668,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -704,8 +710,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/inter/gstinteraudiosink.c b/gst/inter/gstinteraudiosink.c
index 261ed25..19fc5d2 100644
--- a/gst/inter/gstinteraudiosink.c
+++ b/gst/inter/gstinteraudiosink.c
@@ -99,8 +99,8 @@
 
   GST_DEBUG_CATEGORY_INIT (gst_inter_audio_sink_debug_category,
       "interaudiosink", 0, "debug category for interaudiosink element");
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_inter_audio_sink_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_inter_audio_sink_sink_template);
 
   gst_element_class_set_static_metadata (element_class,
       "Internal audio sink",
diff --git a/gst/inter/gstinteraudiosrc.c b/gst/inter/gstinteraudiosrc.c
index 1d4b68b..10581ba 100644
--- a/gst/inter/gstinteraudiosrc.c
+++ b/gst/inter/gstinteraudiosrc.c
@@ -106,8 +106,8 @@
   GST_DEBUG_CATEGORY_INIT (gst_inter_audio_src_debug_category, "interaudiosrc",
       0, "debug category for interaudiosrc element");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_inter_audio_src_src_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_inter_audio_src_src_template);
 
   gst_element_class_set_static_metadata (element_class,
       "Internal audio source",
diff --git a/gst/inter/gstintersubsink.c b/gst/inter/gstintersubsink.c
index 77bc484..038acbb 100644
--- a/gst/inter/gstintersubsink.c
+++ b/gst/inter/gstintersubsink.c
@@ -91,8 +91,8 @@
   GST_DEBUG_CATEGORY_INIT (gst_inter_sub_sink_debug_category, "intersubsink", 0,
       "debug category for intersubsink element");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_inter_sub_sink_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_inter_sub_sink_sink_template);
 
   gst_element_class_set_static_metadata (element_class,
       "Internal subtitle sink",
diff --git a/gst/inter/gstintersubsrc.c b/gst/inter/gstintersubsrc.c
index 482a20f..ac49265 100644
--- a/gst/inter/gstintersubsrc.c
+++ b/gst/inter/gstintersubsrc.c
@@ -93,8 +93,8 @@
   GST_DEBUG_CATEGORY_INIT (gst_inter_sub_src_debug_category, "intersubsrc", 0,
       "debug category for intersubsrc element");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_inter_sub_src_src_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_inter_sub_src_src_template);
 
   gst_element_class_set_static_metadata (element_class,
       "Internal subtitle source",
diff --git a/gst/inter/gstintervideosink.c b/gst/inter/gstintervideosink.c
index ca357d6..edee11d 100644
--- a/gst/inter/gstintervideosink.c
+++ b/gst/inter/gstintervideosink.c
@@ -94,8 +94,8 @@
   GST_DEBUG_CATEGORY_INIT (gst_inter_video_sink_debug_category,
       "intervideosink", 0, "debug category for intervideosink element");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_inter_video_sink_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_inter_video_sink_sink_template);
 
   gst_element_class_set_static_metadata (element_class,
       "Internal video sink",
diff --git a/gst/inter/gstintervideosrc.c b/gst/inter/gstintervideosrc.c
index 8cab648..fd41d50 100644
--- a/gst/inter/gstintervideosrc.c
+++ b/gst/inter/gstintervideosrc.c
@@ -100,8 +100,8 @@
   GST_DEBUG_CATEGORY_INIT (gst_inter_video_src_debug_category, "intervideosrc",
       0, "debug category for intervideosrc element");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_inter_video_src_src_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_inter_video_src_src_template);
 
   gst_element_class_set_static_metadata (element_class,
       "Internal video source",
diff --git a/gst/interlace/Makefile.in b/gst/interlace/Makefile.in
index 0753198..aaffb82 100644
--- a/gst/interlace/Makefile.in
+++ b/gst/interlace/Makefile.in
@@ -299,6 +299,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -320,6 +322,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -369,6 +373,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -514,6 +520,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -640,8 +648,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -684,8 +690,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/interlace/gstinterlace.c b/gst/interlace/gstinterlace.c
index ae9f2de..88e68c0 100644
--- a/gst/interlace/gstinterlace.c
+++ b/gst/interlace/gstinterlace.c
@@ -104,6 +104,7 @@
   GstClockTime timebase;
   int fields_since_timebase;
   guint pattern_offset;         /* initial offset into the pattern */
+  gboolean passthrough;
 };
 
 struct _GstInterlaceClass
@@ -182,7 +183,7 @@
     GST_PAD_ALWAYS,
     GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE
         ("{AYUV,YUY2,UYVY,I420,YV12,Y42B,Y444,NV12,NV21}")
-        ",interlace-mode=progressive")
+    )
     );
 
 GType gst_interlace_get_type (void);
@@ -247,10 +248,10 @@
       "Creates an interlaced video from progressive frames",
       "David Schleef <ds@schleef.org>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_interlace_sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_interlace_src_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_interlace_sink_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_interlace_src_template);
 
   element_class->change_state = gst_interlace_change_state;
 }
@@ -267,6 +268,7 @@
   interlace->phase_index = interlace->pattern_offset;
   interlace->timebase = GST_CLOCK_TIME_NONE;
   interlace->field_index = 0;
+  interlace->passthrough = FALSE;
   if (interlace->stored_frame) {
     gst_buffer_unref (interlace->stored_frame);
     interlace->stored_frame = NULL;
@@ -392,8 +394,21 @@
     gst_caps_set_simple (othercaps, "interlace-mode", G_TYPE_STRING,
         "interleaved", NULL);
   }
-  gst_caps_set_simple (othercaps, "framerate", GST_TYPE_FRACTION,
-      interlace->src_fps_n, interlace->src_fps_d, NULL);
+
+  if (gst_caps_can_intersect (caps, othercaps)) {
+    interlace->passthrough = TRUE;
+  } else {
+    if (GST_VIDEO_INFO_IS_INTERLACED (&info)) {
+      GST_ERROR_OBJECT (interlace,
+          "Caps %" GST_PTR_FORMAT " not compatible with %" GST_PTR_FORMAT, caps,
+          othercaps);
+      gst_caps_unref (othercaps);
+      goto caps_error;
+    }
+    interlace->passthrough = FALSE;
+    gst_caps_set_simple (othercaps, "framerate", GST_TYPE_FRACTION,
+        interlace->src_fps_n, interlace->src_fps_d, NULL);
+  }
 
   ret = gst_pad_set_caps (interlace->srcpad, othercaps);
   gst_caps_unref (othercaps);
@@ -686,6 +701,7 @@
   }
 
   icaps = gst_caps_make_writable (icaps);
+  tcaps = gst_caps_copy (icaps);
   if (interlace->pattern > GST_INTERLACE_PATTERN_2_2) {
     mode = "mixed";
   } else {
@@ -693,6 +709,13 @@
   }
   gst_caps_set_simple (icaps, "interlace-mode", G_TYPE_STRING,
       pad == interlace->srcpad ? mode : "progressive", NULL);
+  if (pad == interlace->sinkpad) {
+    gst_caps_set_simple (tcaps, "interlace-mode", G_TYPE_STRING, mode, NULL);
+    icaps = gst_caps_merge (icaps, tcaps);
+    tcaps = NULL;
+  } else {
+    gst_caps_unref (tcaps);
+  }
 
   icaps =
       gst_interlace_caps_double_framerate (icaps, (pad == interlace->srcpad));
@@ -837,6 +860,10 @@
       (GST_BUFFER_FLAGS (buffer) & GST_VIDEO_BUFFER_FLAG_ONEFIELD) ? "onefield"
       : "");
 
+  if (interlace->passthrough) {
+    return gst_pad_push (interlace->srcpad, buffer);
+  }
+
   if (GST_BUFFER_FLAGS (buffer) & GST_BUFFER_FLAG_DISCONT) {
     GST_DEBUG ("discont");
 
diff --git a/gst/ivfparse/Makefile.in b/gst/ivfparse/Makefile.in
index 8739814..fd7eaa1 100644
--- a/gst/ivfparse/Makefile.in
+++ b/gst/ivfparse/Makefile.in
@@ -302,6 +302,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -323,6 +325,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -372,6 +376,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -517,6 +523,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -643,8 +651,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,8 +693,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/ivfparse/gstivfparse.c b/gst/ivfparse/gstivfparse.c
index bea1e19..e0e8401 100644
--- a/gst/ivfparse/gstivfparse.c
+++ b/gst/ivfparse/gstivfparse.c
@@ -99,10 +99,8 @@
   gstbaseparse_class->stop = gst_ivf_parse_stop;
   gstbaseparse_class->handle_frame = gst_ivf_parse_handle_frame;
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "IVF parser", "Codec/Demuxer",
diff --git a/gst/ivtc/Makefile.in b/gst/ivtc/Makefile.in
index adbee9e..4e559ff 100644
--- a/gst/ivtc/Makefile.in
+++ b/gst/ivtc/Makefile.in
@@ -300,6 +300,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -321,6 +323,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -370,6 +374,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -515,6 +521,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -641,8 +649,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -685,8 +691,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/ivtc/gstcombdetect.c b/gst/ivtc/gstcombdetect.c
index 2356b96..210d39c 100644
--- a/gst/ivtc/gstcombdetect.c
+++ b/gst/ivtc/gstcombdetect.c
@@ -103,10 +103,10 @@
 
   /* Setting up pads and setting metadata should be moved to
      base_class_init if you intend to subclass this class. */
-  gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
-      gst_static_pad_template_get (&gst_comb_detect_sink_template));
-  gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
-      gst_static_pad_template_get (&gst_comb_detect_src_template));
+  gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+      &gst_comb_detect_sink_template);
+  gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+      &gst_comb_detect_src_template);
 
   gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass),
       "Comb Detect", "Video/Filter", "Detect combing artifacts in video stream",
diff --git a/gst/ivtc/gstivtc.c b/gst/ivtc/gstivtc.c
index 6dd0c8d..09b02a5 100644
--- a/gst/ivtc/gstivtc.c
+++ b/gst/ivtc/gstivtc.c
@@ -119,10 +119,10 @@
 
   /* Setting up pads and setting metadata should be moved to
      base_class_init if you intend to subclass this class. */
-  gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
-      gst_static_pad_template_get (&gst_ivtc_sink_template));
-  gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
-      gst_static_pad_template_get (&gst_ivtc_src_template));
+  gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+      &gst_ivtc_sink_template);
+  gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+      &gst_ivtc_src_template);
 
   gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass),
       "Inverse Telecine", "Video/Filter", "Inverse Telecine Filter",
diff --git a/gst/jp2kdecimator/Makefile.in b/gst/jp2kdecimator/Makefile.in
index 7d1b517..7773514 100644
--- a/gst/jp2kdecimator/Makefile.in
+++ b/gst/jp2kdecimator/Makefile.in
@@ -304,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/jp2kdecimator/gstjp2kdecimator.c b/gst/jp2kdecimator/gstjp2kdecimator.c
index cb95cc0..75ee746 100644
--- a/gst/jp2kdecimator/gstjp2kdecimator.c
+++ b/gst/jp2kdecimator/gstjp2kdecimator.c
@@ -92,10 +92,10 @@
       "Removes information from JPEG2000 streams without recompression",
       "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_pad_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_pad_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &sink_pad_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &src_pad_template);
 
   gobject_class->set_property = gst_jp2k_decimator_set_property;
   gobject_class->get_property = gst_jp2k_decimator_get_property;
diff --git a/gst/jpegformat/Makefile.in b/gst/jpegformat/Makefile.in
index 2bb807d..2999ea3 100644
--- a/gst/jpegformat/Makefile.in
+++ b/gst/jpegformat/Makefile.in
@@ -304,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/jpegformat/gstjifmux.c b/gst/jpegformat/gstjifmux.c
index 3a6b6fd..b1ba175 100644
--- a/gst/jpegformat/gstjifmux.c
+++ b/gst/jpegformat/gstjifmux.c
@@ -136,10 +136,10 @@
 
   gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_jif_mux_change_state);
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_jif_mux_src_pad_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_jif_mux_sink_pad_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_jif_mux_src_pad_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_jif_mux_sink_pad_template);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "JPEG stream muxer",
diff --git a/gst/jpegformat/gstjpegparse.c b/gst/jpegformat/gstjpegparse.c
index 77e53a6..c127d6e 100644
--- a/gst/jpegformat/gstjpegparse.c
+++ b/gst/jpegformat/gstjpegparse.c
@@ -144,10 +144,10 @@
   gstbaseparse_class->handle_frame = gst_jpeg_parse_handle_frame;
   gstbaseparse_class->pre_push_frame = gst_jpeg_parse_pre_push_frame;
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_jpeg_parse_src_pad_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_jpeg_parse_sink_pad_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_jpeg_parse_src_pad_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_jpeg_parse_sink_pad_template);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "JPEG stream parser",
diff --git a/gst/librfb/Makefile.am b/gst/librfb/Makefile.am
index d542ffc..b69ee8c 100644
--- a/gst/librfb/Makefile.am
+++ b/gst/librfb/Makefile.am
@@ -1,27 +1,25 @@
 # please keep librfb easily extractable
 
-noinst_LTLIBRARIES = librfb.la
 plugin_LTLIBRARIES = libgstrfbsrc.la
 
-libgstrfbsrc_la_SOURCES = gstrfbsrc.c
-libgstrfbsrc_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(X11_CFLAGS) -I$(srcdir)/..
-libgstrfbsrc_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
-	$(GST_BASE_LIBS) $(GST_LIBS) $(X11_LIBS) librfb.la
-libgstrfbsrc_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstrfbsrc_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-
-librfb_la_SOURCES = \
-	rfbbuffer.c \
+libgstrfbsrc_la_SOURCES = gstrfbsrc.c \
 	rfbdecoder.c \
 	d3des.c
-librfb_la_CFLAGS = $(GST_CFLAGS) $(GIO_CFLAGS) -I$(srcdir)/..
-librfb_la_LIBADD = $(GST_LIBS) $(GIO_LIBS)
+libgstrfbsrc_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) \
+                         $(GST_BASE_CFLAGS) \
+                         $(GST_CFLAGS) \
+                         $(X11_CFLAGS) \
+                         $(GIO_CFLAGS)
+libgstrfbsrc_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
+                         -lgstvideo-$(GST_API_VERSION) \
+                         $(GST_BASE_LIBS) \
+                         $(GST_LIBS) \
+                         $(X11_LIBS) \
+                         $(GIO_LIBS)
+libgstrfbsrc_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) $(GIO_LDFLAGS)
+libgstrfbsrc_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
 
 noinst_HEADERS = \
-	rfb.h \
 	rfbdecoder.h \
-	rfbbuffer.h \
-	rfbcontext.h \
-	rfbutil.h \
 	gstrfbsrc.h \
 	d3des.h
diff --git a/gst/librfb/Makefile.in b/gst/librfb/Makefile.in
index 8b8047f..b8f39f1 100644
--- a/gst/librfb/Makefile.in
+++ b/gst/librfb/Makefile.in
@@ -163,12 +163,13 @@
          $(am__cd) "$$dir" && rm -f $$files; }; \
   }
 am__installdirs = "$(DESTDIR)$(plugindir)"
-LTLIBRARIES = $(noinst_LTLIBRARIES) $(plugin_LTLIBRARIES)
+LTLIBRARIES = $(plugin_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 libgstrfbsrc_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) librfb.la
-am_libgstrfbsrc_la_OBJECTS = libgstrfbsrc_la-gstrfbsrc.lo
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am_libgstrfbsrc_la_OBJECTS = libgstrfbsrc_la-gstrfbsrc.lo \
+	libgstrfbsrc_la-rfbdecoder.lo libgstrfbsrc_la-d3des.lo
 libgstrfbsrc_la_OBJECTS = $(am_libgstrfbsrc_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -178,13 +179,6 @@
 	$(libgstrfbsrc_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
 	$(CCLD) $(libgstrfbsrc_la_CFLAGS) $(CFLAGS) \
 	$(libgstrfbsrc_la_LDFLAGS) $(LDFLAGS) -o $@
-librfb_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-am_librfb_la_OBJECTS = librfb_la-rfbbuffer.lo librfb_la-rfbdecoder.lo \
-	librfb_la-d3des.lo
-librfb_la_OBJECTS = $(am_librfb_la_OBJECTS)
-librfb_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(librfb_la_CFLAGS) \
-	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -219,8 +213,8 @@
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = $(libgstrfbsrc_la_SOURCES) $(librfb_la_SOURCES)
-DIST_SOURCES = $(libgstrfbsrc_la_SOURCES) $(librfb_la_SOURCES)
+SOURCES = $(libgstrfbsrc_la_SOURCES)
+DIST_SOURCES = $(libgstrfbsrc_la_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -312,6 +306,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -333,6 +329,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -382,6 +380,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -527,6 +527,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -653,8 +655,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -697,8 +697,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -787,28 +792,28 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 wayland_scanner = @wayland_scanner@
-noinst_LTLIBRARIES = librfb.la
 plugin_LTLIBRARIES = libgstrfbsrc.la
-libgstrfbsrc_la_SOURCES = gstrfbsrc.c
-libgstrfbsrc_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(X11_CFLAGS) -I$(srcdir)/..
-libgstrfbsrc_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
-	$(GST_BASE_LIBS) $(GST_LIBS) $(X11_LIBS) librfb.la
-
-libgstrfbsrc_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstrfbsrc_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-librfb_la_SOURCES = \
-	rfbbuffer.c \
+libgstrfbsrc_la_SOURCES = gstrfbsrc.c \
 	rfbdecoder.c \
 	d3des.c
 
-librfb_la_CFLAGS = $(GST_CFLAGS) $(GIO_CFLAGS) -I$(srcdir)/..
-librfb_la_LIBADD = $(GST_LIBS) $(GIO_LIBS)
+libgstrfbsrc_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) \
+                         $(GST_BASE_CFLAGS) \
+                         $(GST_CFLAGS) \
+                         $(X11_CFLAGS) \
+                         $(GIO_CFLAGS)
+
+libgstrfbsrc_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
+                         -lgstvideo-$(GST_API_VERSION) \
+                         $(GST_BASE_LIBS) \
+                         $(GST_LIBS) \
+                         $(X11_LIBS) \
+                         $(GIO_LIBS)
+
+libgstrfbsrc_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) $(GIO_LDFLAGS)
+libgstrfbsrc_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
 noinst_HEADERS = \
-	rfb.h \
 	rfbdecoder.h \
-	rfbbuffer.h \
-	rfbcontext.h \
-	rfbutil.h \
 	gstrfbsrc.h \
 	d3des.h
 
@@ -846,17 +851,6 @@
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 
-clean-noinstLTLIBRARIES:
-	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
-	@list='$(noinst_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
 install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
 	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
@@ -895,19 +889,15 @@
 libgstrfbsrc.la: $(libgstrfbsrc_la_OBJECTS) $(libgstrfbsrc_la_DEPENDENCIES) $(EXTRA_libgstrfbsrc_la_DEPENDENCIES) 
 	$(AM_V_CCLD)$(libgstrfbsrc_la_LINK) -rpath $(plugindir) $(libgstrfbsrc_la_OBJECTS) $(libgstrfbsrc_la_LIBADD) $(LIBS)
 
-librfb.la: $(librfb_la_OBJECTS) $(librfb_la_DEPENDENCIES) $(EXTRA_librfb_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(librfb_la_LINK)  $(librfb_la_OBJECTS) $(librfb_la_LIBADD) $(LIBS)
-
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
 
 distclean-compile:
 	-rm -f *.tab.c
 
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrfbsrc_la-d3des.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrfbsrc_la-gstrfbsrc.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/librfb_la-d3des.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/librfb_la-rfbbuffer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/librfb_la-rfbdecoder.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrfbsrc_la-rfbdecoder.Plo@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -940,26 +930,19 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrfbsrc_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrfbsrc_la_CFLAGS) $(CFLAGS) -c -o libgstrfbsrc_la-gstrfbsrc.lo `test -f 'gstrfbsrc.c' || echo '$(srcdir)/'`gstrfbsrc.c
 
-librfb_la-rfbbuffer.lo: rfbbuffer.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librfb_la_CFLAGS) $(CFLAGS) -MT librfb_la-rfbbuffer.lo -MD -MP -MF $(DEPDIR)/librfb_la-rfbbuffer.Tpo -c -o librfb_la-rfbbuffer.lo `test -f 'rfbbuffer.c' || echo '$(srcdir)/'`rfbbuffer.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/librfb_la-rfbbuffer.Tpo $(DEPDIR)/librfb_la-rfbbuffer.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rfbbuffer.c' object='librfb_la-rfbbuffer.lo' libtool=yes @AMDEPBACKSLASH@
+libgstrfbsrc_la-rfbdecoder.lo: rfbdecoder.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrfbsrc_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrfbsrc_la_CFLAGS) $(CFLAGS) -MT libgstrfbsrc_la-rfbdecoder.lo -MD -MP -MF $(DEPDIR)/libgstrfbsrc_la-rfbdecoder.Tpo -c -o libgstrfbsrc_la-rfbdecoder.lo `test -f 'rfbdecoder.c' || echo '$(srcdir)/'`rfbdecoder.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrfbsrc_la-rfbdecoder.Tpo $(DEPDIR)/libgstrfbsrc_la-rfbdecoder.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rfbdecoder.c' object='libgstrfbsrc_la-rfbdecoder.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librfb_la_CFLAGS) $(CFLAGS) -c -o librfb_la-rfbbuffer.lo `test -f 'rfbbuffer.c' || echo '$(srcdir)/'`rfbbuffer.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrfbsrc_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrfbsrc_la_CFLAGS) $(CFLAGS) -c -o libgstrfbsrc_la-rfbdecoder.lo `test -f 'rfbdecoder.c' || echo '$(srcdir)/'`rfbdecoder.c
 
-librfb_la-rfbdecoder.lo: rfbdecoder.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librfb_la_CFLAGS) $(CFLAGS) -MT librfb_la-rfbdecoder.lo -MD -MP -MF $(DEPDIR)/librfb_la-rfbdecoder.Tpo -c -o librfb_la-rfbdecoder.lo `test -f 'rfbdecoder.c' || echo '$(srcdir)/'`rfbdecoder.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/librfb_la-rfbdecoder.Tpo $(DEPDIR)/librfb_la-rfbdecoder.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rfbdecoder.c' object='librfb_la-rfbdecoder.lo' libtool=yes @AMDEPBACKSLASH@
+libgstrfbsrc_la-d3des.lo: d3des.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrfbsrc_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrfbsrc_la_CFLAGS) $(CFLAGS) -MT libgstrfbsrc_la-d3des.lo -MD -MP -MF $(DEPDIR)/libgstrfbsrc_la-d3des.Tpo -c -o libgstrfbsrc_la-d3des.lo `test -f 'd3des.c' || echo '$(srcdir)/'`d3des.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrfbsrc_la-d3des.Tpo $(DEPDIR)/libgstrfbsrc_la-d3des.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='d3des.c' object='libgstrfbsrc_la-d3des.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librfb_la_CFLAGS) $(CFLAGS) -c -o librfb_la-rfbdecoder.lo `test -f 'rfbdecoder.c' || echo '$(srcdir)/'`rfbdecoder.c
-
-librfb_la-d3des.lo: d3des.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librfb_la_CFLAGS) $(CFLAGS) -MT librfb_la-d3des.lo -MD -MP -MF $(DEPDIR)/librfb_la-d3des.Tpo -c -o librfb_la-d3des.lo `test -f 'd3des.c' || echo '$(srcdir)/'`d3des.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/librfb_la-d3des.Tpo $(DEPDIR)/librfb_la-d3des.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='d3des.c' object='librfb_la-d3des.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librfb_la_CFLAGS) $(CFLAGS) -c -o librfb_la-d3des.lo `test -f 'd3des.c' || echo '$(srcdir)/'`d3des.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrfbsrc_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrfbsrc_la_CFLAGS) $(CFLAGS) -c -o libgstrfbsrc_la-d3des.lo `test -f 'd3des.c' || echo '$(srcdir)/'`d3des.c
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -1088,8 +1071,8 @@
 	@echo "it deletes files that may require special tools to rebuild."
 clean: clean-am
 
-clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
-	clean-pluginLTLIBRARIES mostlyclean-am
+clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
+	mostlyclean-am
 
 distclean: distclean-am
 	-rm -rf ./$(DEPDIR)
@@ -1160,19 +1143,19 @@
 .MAKE: install-am install-strip
 
 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstLTLIBRARIES clean-pluginLTLIBRARIES \
-	cscopelist-am ctags ctags-am distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-pluginLTLIBRARIES install-ps \
-	install-ps-am install-strip installcheck installcheck-am \
-	installdirs maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
-	uninstall-am uninstall-pluginLTLIBRARIES
+	clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-pluginLTLIBRARIES install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+	uninstall-pluginLTLIBRARIES
 
 .PRECIOUS: Makefile
 
diff --git a/gst/librfb/d3des.c b/gst/librfb/d3des.c
index c05fea3..377670e 100644
--- a/gst/librfb/d3des.c
+++ b/gst/librfb/d3des.c
@@ -26,8 +26,13 @@
  * (GEnie : OUTER; CIS : [71755,204]) Graven Imagery, 1992.
  */
 
+#ifdef HAVE_CONFIG_H
 #include "config.h"
-#include "_stdint.h"
+#endif
+
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
 
 #include "d3des.h"
 
diff --git a/gst/librfb/gstrfbsrc.c b/gst/librfb/gstrfbsrc.c
index 7f9e591..786d32d 100644
--- a/gst/librfb/gstrfbsrc.c
+++ b/gst/librfb/gstrfbsrc.c
@@ -72,12 +72,13 @@
 static void gst_rfb_src_get_property (GObject * object, guint prop_id,
     GValue * value, GParamSpec * pspec);
 
-static GstCaps *gst_rfb_src_fixate (GstBaseSrc * bsrc, GstCaps * caps);
-static gboolean gst_rfb_src_start (GstBaseSrc * bsrc);
+static gboolean gst_rfb_src_negotiate (GstBaseSrc * bsrc);
 static gboolean gst_rfb_src_stop (GstBaseSrc * bsrc);
 static gboolean gst_rfb_src_event (GstBaseSrc * bsrc, GstEvent * event);
-static GstFlowReturn gst_rfb_src_create (GstPushSrc * psrc,
-    GstBuffer ** outbuf);
+static gboolean gst_rfb_src_unlock (GstBaseSrc * bsrc);
+static gboolean gst_rfb_src_decide_allocation (GstBaseSrc * bsrc,
+    GstQuery * query);
+static GstFlowReturn gst_rfb_src_fill (GstPushSrc * psrc, GstBuffer * outbuf);
 
 #define gst_rfb_src_parent_class parent_class
 G_DEFINE_TYPE (GstRfbSrc, gst_rfb_src, GST_TYPE_PUSH_SRC);
@@ -146,16 +147,19 @@
       g_param_spec_boolean ("view-only", "Only view the desktop",
           "only view the desktop", FALSE,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-  gstbasesrc_class->fixate = GST_DEBUG_FUNCPTR (gst_rfb_src_fixate);
-  gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_rfb_src_start);
+
+  gstbasesrc_class->negotiate = GST_DEBUG_FUNCPTR (gst_rfb_src_negotiate);
   gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_rfb_src_stop);
   gstbasesrc_class->event = GST_DEBUG_FUNCPTR (gst_rfb_src_event);
-  gstpushsrc_class->create = GST_DEBUG_FUNCPTR (gst_rfb_src_create);
+  gstbasesrc_class->unlock = GST_DEBUG_FUNCPTR (gst_rfb_src_unlock);
+  gstpushsrc_class->fill = GST_DEBUG_FUNCPTR (gst_rfb_src_fill);
+  gstbasesrc_class->decide_allocation =
+      GST_DEBUG_FUNCPTR (gst_rfb_src_decide_allocation);
 
   gstelement_class = GST_ELEMENT_CLASS (klass);
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_rfb_src_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_rfb_src_template);
 
   gst_element_class_set_static_metadata (gstelement_class, "Rfb source",
       "Source/Video",
@@ -183,10 +187,7 @@
 
   src->view_only = FALSE;
 
-  src->pool = NULL;
-
   src->decoder = rfb_decoder_new ();
-
 }
 
 static void
@@ -195,10 +196,7 @@
   GstRfbSrc *src = GST_RFB_SRC (object);
 
   g_free (src->host);
-  if (src->pool) {
-    gst_object_unref (src->pool);
-    src->pool = NULL;
-  }
+
   if (src->decoder) {
     rfb_decoder_free (src->decoder);
     src->decoder = NULL;
@@ -340,84 +338,54 @@
   }
 }
 
-static GstCaps *
-gst_rfb_src_fixate (GstBaseSrc * bsrc, GstCaps * caps)
+static gboolean
+gst_rfb_src_decide_allocation (GstBaseSrc * bsrc, GstQuery * query)
 {
-  GstRfbSrc *src = GST_RFB_SRC (bsrc);
-  RfbDecoder *decoder;
-  GstStructure *structure;
-  guint i;
-
-  decoder = src->decoder;
-
-  GST_DEBUG_OBJECT (src, "fixating caps %" GST_PTR_FORMAT, caps);
-
-  caps = gst_caps_make_writable (caps);
-
-  for (i = 0; i < gst_caps_get_size (caps); ++i) {
-    structure = gst_caps_get_structure (caps, i);
-
-    gst_structure_fixate_field_nearest_int (structure,
-        "width", decoder->rect_width);
-    gst_structure_fixate_field_nearest_int (structure,
-        "height", decoder->rect_height);
-    gst_structure_fixate_field (structure, "format");
-  }
-
-  GST_DEBUG_OBJECT (src, "fixated caps %" GST_PTR_FORMAT, caps);
-
-  caps = GST_BASE_SRC_CLASS (parent_class)->fixate (bsrc, caps);
-
-  return caps;
-}
-
-static void
-gst_rfb_negotiate_pool (GstRfbSrc * src, GstCaps * caps)
-{
-  GstQuery *query;
   GstBufferPool *pool = NULL;
-  guint size, min, max;
+  guint size, min = 1, max = 0;
   GstStructure *config;
+  GstCaps *caps;
+  GstVideoInfo info;
+  gboolean ret;
 
-  /* find a pool for the negotiated caps now */
-  query = gst_query_new_allocation (caps, TRUE);
+  gst_query_parse_allocation (query, &caps, NULL);
 
-  if (!gst_pad_peer_query (GST_BASE_SRC_PAD (src), query)) {
-    /* not a problem, we use the defaults of query */
-    GST_DEBUG_OBJECT (src, "could not get downstream ALLOCATION hints");
-  }
+  if (!caps || !gst_video_info_from_caps (&info, caps))
+    return FALSE;
 
-  if (gst_query_get_n_allocation_pools (query) > 0) {
-    /* we got configuration from our peer, parse them */
+  while (gst_query_get_n_allocation_pools (query) > 0) {
     gst_query_parse_nth_allocation_pool (query, 0, &pool, &size, &min, &max);
-  } else {
-    GST_DEBUG_OBJECT (src, "didn't get downstream pool hints");
-    size = GST_BASE_SRC (src)->blocksize;
-    min = max = 0;
+
+    /* TODO We restrict to the exact size as we don't support strides or
+     * special padding */
+    if (size == info.size)
+      break;
+
+    gst_query_remove_nth_allocation_pool (query, 0);
+    gst_object_unref (pool);
+    pool = NULL;
   }
 
   if (pool == NULL) {
     /* we did not get a pool, make one ourselves then */
     pool = gst_video_buffer_pool_new ();
+    size = info.size;
+    min = 1;
+    max = 0;
+    gst_query_add_allocation_pool (query, pool, size, min, max);
   }
 
-  if (src->pool)
-    gst_object_unref (src->pool);
-  src->pool = pool;
-
   config = gst_buffer_pool_get_config (pool);
   gst_buffer_pool_config_set_params (config, caps, size, min, max);
-  gst_buffer_pool_config_add_option (config, GST_BUFFER_POOL_OPTION_VIDEO_META);
 
-  gst_buffer_pool_set_config (pool, config);
-  // and activate
-  gst_buffer_pool_set_active (pool, TRUE);
+  ret = gst_buffer_pool_set_config (pool, config);
+  gst_object_unref (pool);
 
-  gst_query_unref (query);
+  return ret;
 }
 
 static gboolean
-gst_rfb_src_start (GstBaseSrc * bsrc)
+gst_rfb_src_negotiate (GstBaseSrc * bsrc)
 {
   GstRfbSrc *src = GST_RFB_SRC (bsrc);
   RfbDecoder *decoder;
@@ -430,6 +398,9 @@
 
   decoder = src->decoder;
 
+  if (decoder->inited)
+    return TRUE;
+
   GST_DEBUG_OBJECT (src, "connecting to host %s on port %d",
       src->host, src->port);
   if (!rfb_decoder_connect_tcp (decoder, src->host, src->port)) {
@@ -471,13 +442,6 @@
   decoder->rect_height =
       (decoder->rect_height ? decoder->rect_height : decoder->height);
 
-  g_object_set (bsrc, "blocksize",
-      src->decoder->width * src->decoder->height * (decoder->bpp / 8), NULL);
-
-  decoder->frame = g_malloc (bsrc->blocksize);
-  if (decoder->use_copyrect) {
-    decoder->prev_frame = g_malloc (bsrc->blocksize);
-  }
   decoder->decoder_private = src;
 
   /* calculate some many used values */
@@ -500,11 +464,13 @@
   gst_video_info_set_format (&vinfo, vformat, decoder->rect_width,
       decoder->rect_height);
 
+  decoder->frame = g_malloc (vinfo.size);
+  if (decoder->use_copyrect)
+    decoder->prev_frame = g_malloc (vinfo.size);
+
   caps = gst_video_info_to_caps (&vinfo);
 
-  gst_pad_set_caps (GST_BASE_SRC_PAD (bsrc), caps);
-
-  gst_rfb_negotiate_pool (src, caps);
+  gst_base_src_set_caps (bsrc, caps);
 
   gst_caps_unref (caps);
 
@@ -516,10 +482,7 @@
 {
   GstRfbSrc *src = GST_RFB_SRC (bsrc);
 
-  if (src->decoder->socket) {
-    g_object_unref (src->decoder->socket);
-    src->decoder->socket = NULL;
-  }
+  rfb_decoder_disconnect (src->decoder);
 
   if (src->decoder->frame) {
     g_free (src->decoder->frame);
@@ -535,12 +498,11 @@
 }
 
 static GstFlowReturn
-gst_rfb_src_create (GstPushSrc * psrc, GstBuffer ** outbuf)
+gst_rfb_src_fill (GstPushSrc * psrc, GstBuffer * outbuf)
 {
   GstRfbSrc *src = GST_RFB_SRC (psrc);
   RfbDecoder *decoder = src->decoder;
   GstMapInfo info;
-  GstFlowReturn ret;
 
   rfb_decoder_send_update_request (decoder, src->incremental_update,
       decoder->offset_x, decoder->offset_y, decoder->rect_width,
@@ -557,25 +519,23 @@
             ("Error on setup VNC connection to host %s on port %d", src->host,
                 src->port), (NULL));
       }
+      return GST_FLOW_ERROR;
     }
   }
 
-  /* Create the buffer. */
-  ret = gst_buffer_pool_acquire_buffer (src->pool, outbuf, NULL);
-
-  if (G_UNLIKELY (ret != GST_FLOW_OK)) {
+  if (!gst_buffer_map (outbuf, &info, GST_MAP_WRITE)) {
+    GST_ELEMENT_ERROR (src, RESOURCE, WRITE,
+        ("Could not map the output frame"), (NULL));
     return GST_FLOW_ERROR;
   }
 
-  gst_buffer_map (*outbuf, &info, GST_MAP_WRITE);
-
   memcpy (info.data, decoder->frame, info.size);
 
-  GST_BUFFER_PTS (*outbuf) =
+  GST_BUFFER_PTS (outbuf) =
       gst_clock_get_time (GST_ELEMENT_CLOCK (src)) -
       GST_ELEMENT_CAST (src)->base_time;
 
-  gst_buffer_unmap (*outbuf, &info);
+  gst_buffer_unmap (outbuf, &info);
 
   return GST_FLOW_OK;
 }
@@ -658,6 +618,14 @@
 }
 
 static gboolean
+gst_rfb_src_unlock (GstBaseSrc * bsrc)
+{
+  GstRfbSrc *src = GST_RFB_SRC (bsrc);
+  g_cancellable_cancel (src->decoder->cancellable);
+  return TRUE;
+}
+
+static gboolean
 plugin_init (GstPlugin * plugin)
 {
   return gst_element_register (plugin, "rfbsrc", GST_RANK_NONE,
diff --git a/gst/librfb/gstrfbsrc.h b/gst/librfb/gstrfbsrc.h
index a85dc6e..81ebd45 100644
--- a/gst/librfb/gstrfbsrc.h
+++ b/gst/librfb/gstrfbsrc.h
@@ -25,7 +25,8 @@
 #include <gst/gst.h>
 #include <gst/base/gstpushsrc.h>
 #include <gst/video/gstvideopool.h>
-#include <librfb/rfb.h>
+
+#include "rfbdecoder.h"
 
 G_BEGIN_DECLS
 #define GST_TYPE_RFB_SRC \
@@ -60,8 +61,6 @@
 
   guint button_mask;
 
-  GstBufferPool *pool;
-
   /* protocol version */
   guint version_major;
   guint version_minor;
diff --git a/gst/librfb/rfb.h b/gst/librfb/rfb.h
deleted file mode 100644
index 89a4be9..0000000
--- a/gst/librfb/rfb.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _RFB_RFB_H_
-#define _RFB_RFB_H_
-
-#include <librfb/rfbdecoder.h>
-#include <librfb/rfbbuffer.h>
-
-#endif
diff --git a/gst/librfb/rfbbuffer.c b/gst/librfb/rfbbuffer.c
deleted file mode 100644
index d8ca081..0000000
--- a/gst/librfb/rfbbuffer.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "rfbbuffer.h"
-
-RfbBuffer *
-rfb_buffer_new (void)
-{
-  return g_new0 (RfbBuffer, 1);
-}
-
-RfbBuffer *
-rfb_buffer_new_and_alloc (int len)
-{
-  RfbBuffer *buffer = g_new0 (RfbBuffer, 1);
-
-  buffer->data = g_malloc (len);
-  buffer->free_data = (RfbBufferFreeFunc) g_free;
-
-  return buffer;
-}
-
-void
-rfb_buffer_free (RfbBuffer * buffer)
-{
-  g_return_if_fail (buffer != NULL);
-
-  buffer->free_data (buffer->data, buffer->buffer_private);
-}
diff --git a/gst/librfb/rfbbuffer.h b/gst/librfb/rfbbuffer.h
deleted file mode 100644
index 6250ad4..0000000
--- a/gst/librfb/rfbbuffer.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef _LIBRFB_BUFFER_H_
-#define _LIBRFB_BUFFER_H_
-
-#include <glib.h>
-
-G_BEGIN_DECLS typedef struct _RfbBuffer RfbBuffer;
-typedef void (*RfbBufferFreeFunc) (guint8 * data, gpointer priv);
-
-struct _RfbBuffer
-{
-  RfbBufferFreeFunc free_data;
-  gpointer buffer_private;
-
-  guint8 *data;
-  gint length;
-};
-
-RfbBuffer *rfb_buffer_new (void);
-RfbBuffer *rfb_buffer_new_and_alloc (gint len);
-void rfb_buffer_free (RfbBuffer * buffer);
-
-G_END_DECLS
-#endif
diff --git a/gst/librfb/rfbcontext.h b/gst/librfb/rfbcontext.h
deleted file mode 100644
index 4c72bc6..0000000
--- a/gst/librfb/rfbcontext.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#ifndef _LIBRFB_RFBCONTEXT_H_
-#define _LIBRFB_RFBCONTEXT_H_
-
-#include <glib.h>
-
-G_BEGIN_DECLS typedef struct _RfbContext
-{
-  RfbConnection *connection;
-
-  guint8 *buffer1;
-  gpointer buffer1_alloc;
-  guint buffer1_len;
-
-  guint8 *buffer2;
-  gpointer buffer2_alloc;
-  guint buffer2_len;
-
-  gchar *name;
-} RfbContext;
-
-typedef struct _RfbRect
-{
-  RfbContext *context;
-
-  guint x_pos;
-  guint y_pos;
-  guint width;
-  guint height;
-  guint encoding_type;
-
-  gchar *data;
-} RfbRect;
-
-G_END_DECLS
-#endif
diff --git a/gst/librfb/rfbdecoder.c b/gst/librfb/rfbdecoder.c
index bd225ad..e6eb701 100644
--- a/gst/librfb/rfbdecoder.c
+++ b/gst/librfb/rfbdecoder.c
@@ -2,7 +2,7 @@
 #include "config.h"
 #endif
 
-#include "rfb.h"
+#include "rfbdecoder.h"
 #include "d3des.h"
 #include <gst/gst.h>
 
@@ -35,23 +35,24 @@
     decoder);
 static gboolean rfb_decoder_state_set_colour_map_entries (RfbDecoder * decoder);
 static gboolean rfb_decoder_state_server_cut_text (RfbDecoder * decoder);
-static void rfb_decoder_raw_encoding (RfbDecoder * decoder, gint start_x,
+static gboolean rfb_decoder_raw_encoding (RfbDecoder * decoder, gint start_x,
     gint start_y, gint rect_w, gint rect_h);
-static void rfb_decoder_copyrect_encoding (RfbDecoder * decoder, gint start_x,
+static gboolean rfb_decoder_copyrect_encoding (RfbDecoder * decoder,
+    gint start_x, gint start_y, gint rect_w, gint rect_h);
+static gboolean rfb_decoder_rre_encoding (RfbDecoder * decoder, gint start_x,
     gint start_y, gint rect_w, gint rect_h);
-static void rfb_decoder_rre_encoding (RfbDecoder * decoder, gint start_x,
+static gboolean rfb_decoder_corre_encoding (RfbDecoder * decoder, gint start_x,
     gint start_y, gint rect_w, gint rect_h);
-static void rfb_decoder_corre_encoding (RfbDecoder * decoder, gint start_x,
-    gint start_y, gint rect_w, gint rect_h);
-static void rfb_decoder_hextile_encoding (RfbDecoder * decoder, gint start_x,
-    gint start_y, gint rect_w, gint rect_h);
+static gboolean rfb_decoder_hextile_encoding (RfbDecoder * decoder,
+    gint start_x, gint start_y, gint rect_w, gint rect_h);
 
 RfbDecoder *
 rfb_decoder_new (void)
 {
   RfbDecoder *decoder = g_new0 (RfbDecoder, 1);
 
-  decoder->socket = NULL;
+  decoder->socket_client = g_socket_client_new ();
+  decoder->connection = NULL;
   decoder->cancellable = g_cancellable_new ();
 
   decoder->password = NULL;
@@ -63,11 +64,12 @@
   decoder->rect_width = 0;
   decoder->rect_height = 0;
   decoder->shared_flag = TRUE;
-  decoder->disconnected = FALSE;
   decoder->data = NULL;
   decoder->data_len = 0;
   decoder->error = NULL;
 
+  g_mutex_init (&decoder->write_lock);
+
   return decoder;
 }
 
@@ -76,21 +78,11 @@
 {
   g_return_if_fail (decoder != NULL);
 
-  if (decoder->cancellable) {
-    g_cancellable_cancel (decoder->cancellable);
-    g_object_unref (decoder->cancellable);
-    decoder->cancellable = NULL;
-  }
+  rfb_decoder_disconnect (decoder);
 
-  if (decoder->socket) {
-    g_object_unref (decoder->socket);
-    decoder->socket = NULL;
-  }
-
-  g_clear_error (&decoder->error);
-
-  g_free (decoder->data);
-
+  g_clear_object (&decoder->socket_client);
+  g_clear_object (&decoder->cancellable);
+  g_mutex_clear (&decoder->write_lock);
   g_free (decoder);
 }
 
@@ -98,78 +90,27 @@
 rfb_decoder_connect_tcp (RfbDecoder * decoder, gchar * host, guint port)
 {
   GError *err = NULL;
-  GInetAddress *addr;
-  GSocketAddress *saddr;
-  GResolver *resolver;
+  GSocketConnection *connection;
 
   GST_DEBUG ("connecting to the rfb server");
 
   g_return_val_if_fail (decoder != NULL, FALSE);
-  g_return_val_if_fail (decoder->socket == NULL, FALSE);
+  g_return_val_if_fail (decoder->connection == NULL, FALSE);
   g_return_val_if_fail (host != NULL, FALSE);
 
-  /* look up name if we need to */
-  addr = g_inet_address_new_from_string (host);
-  if (!addr) {
-    GList *results;
+  g_cancellable_reset (decoder->cancellable);
 
-    resolver = g_resolver_get_default ();
+  connection =
+      g_socket_client_connect_to_host (decoder->socket_client, host, port,
+      decoder->cancellable, &err);
 
-    results =
-        g_resolver_lookup_by_name (resolver, host, decoder->cancellable, &err);
-    if (!results)
-      goto name_resolve;
-    addr = G_INET_ADDRESS (g_object_ref (results->data));
-
-    g_resolver_free_addresses (results);
-    g_object_unref (resolver);
-  }
-
-  saddr = g_inet_socket_address_new (addr, port);
-
-  decoder->socket =
-      g_socket_new (g_socket_address_get_family (saddr), G_SOCKET_TYPE_STREAM,
-      G_SOCKET_PROTOCOL_TCP, &err);
-
-  if (!decoder->socket)
-    goto no_socket;
-
-  GST_DEBUG ("opened receiving client socket");
-
-  if (!g_socket_connect (decoder->socket, saddr, decoder->cancellable, &err))
+  if (!connection)
     goto connect_failed;
 
-  g_object_unref (saddr);
-
-  decoder->disconnected = FALSE;
+  decoder->connection = connection;
 
   return TRUE;
 
-no_socket:
-  {
-    GST_WARNING ("Failed to create socket: %s", err->message);
-    if (decoder->error == NULL)
-      decoder->error = err;
-    else
-      g_clear_error (&err);
-    g_object_unref (saddr);
-    return FALSE;
-  }
-name_resolve:
-  {
-    if (g_error_matches (err, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
-      GST_DEBUG ("Cancelled name resolval");
-    } else {
-      GST_WARNING ("Failed to resolve host '%s': %s", host, err->message);
-      if (decoder->error == NULL) {
-        decoder->error = err;
-        err = NULL;
-      }
-    }
-    g_clear_error (&err);
-    g_object_unref (resolver);
-    return FALSE;
-  }
 connect_failed:
   {
     if (g_error_matches (err, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
@@ -183,11 +124,31 @@
       }
     }
     g_clear_error (&err);
-    g_object_unref (saddr);
     return FALSE;
   }
 }
 
+void
+rfb_decoder_disconnect (RfbDecoder * decoder)
+{
+  GST_DEBUG ("Disconnecting from the rfb server");
+
+  g_return_if_fail (decoder);
+  g_return_if_fail (decoder->cancellable);
+
+  g_cancellable_cancel (decoder->cancellable);
+
+  /* Make sure threaded write a done first, this avoids race condition,
+   * specially when the decoder is freed */
+  g_mutex_lock (&decoder->write_lock);
+
+  g_clear_object (&decoder->connection);
+  g_clear_error (&decoder->error);
+  g_clear_pointer (&decoder->data, g_free);
+
+  g_mutex_unlock (&decoder->write_lock);
+}
+
 /**
  * rfb_decoder_iterate:
  * @decoder: The rfb context
@@ -202,7 +163,7 @@
   gboolean ret;
 
   g_return_val_if_fail (decoder != NULL, FALSE);
-  g_return_val_if_fail (decoder->socket != NULL, FALSE);
+  g_return_val_if_fail (decoder->connection != NULL, FALSE);
 
   if (decoder->state == NULL) {
     GST_DEBUG ("First iteration: set state to -> wait for protocol version");
@@ -225,28 +186,35 @@
 static guint8 *
 rfb_decoder_read (RfbDecoder * decoder, guint32 len)
 {
-  guint32 total = 0;
-  gssize now = 0;
+  GInputStream *in;
   GError *err = NULL;
+  gsize count = 0;
 
-  g_return_val_if_fail (decoder->socket != NULL, NULL);
+  if (!decoder->connection)
+    return FALSE;
+
   g_return_val_if_fail (len > 0, NULL);
 
+  in = g_io_stream_get_input_stream (G_IO_STREAM (decoder->connection));
+
+  g_return_val_if_fail (in != NULL, NULL);
+
   if (G_UNLIKELY (len > decoder->data_len)) {
     g_free (decoder->data);
     decoder->data = g_malloc (len);
     decoder->data_len = len;
   }
 
-  while (total < len) {
-    now = g_socket_receive (decoder->socket, (gchar *) decoder->data + total,
-        len - total, decoder->cancellable, &err);
+  if (!g_input_stream_read_all (in, decoder->data, len, &count,
+          decoder->cancellable, &err))
+    goto recv_error;
 
-    if (now < 0)
-      goto recv_error;
-
-    total += now;
+  if (count == 0) {
+    g_set_error_literal (&err, G_IO_ERROR, G_IO_ERROR_BROKEN_PIPE,
+        "Connection was closed.");
+    goto recv_error;
   }
+
   return decoder->data;
 
 recv_error:
@@ -261,29 +229,33 @@
       }
     }
     g_clear_error (&err);
-    decoder->disconnected = TRUE;
     return NULL;
   }
 }
 
-static gint
+static gboolean
 rfb_decoder_send (RfbDecoder * decoder, guint8 * buffer, guint len)
 {
-  gssize now = 0;
+  GOutputStream *out;
   GError *err = NULL;
 
-  g_return_val_if_fail (decoder->socket != NULL, 0);
+  if (!decoder->connection)
+    return FALSE;
+
   g_return_val_if_fail (buffer != NULL, 0);
   g_return_val_if_fail (len > 0, 0);
 
-  now = g_socket_send (decoder->socket, (gchar *) buffer, len,
-      decoder->cancellable, &err);
+  g_mutex_lock (&decoder->write_lock);
 
-  if (now < 0)
+  out = g_io_stream_get_output_stream (G_IO_STREAM (decoder->connection));
+
+  if (!g_output_stream_write_all (out, buffer, len, NULL, decoder->cancellable,
+          &err))
     goto send_error;
 
-done:
-  return now;
+  g_mutex_unlock (&decoder->write_lock);
+
+  return TRUE;
 
 send_error:
   {
@@ -297,7 +269,8 @@
       }
     }
     g_clear_error (&err);
-    goto done;
+    g_mutex_unlock (&decoder->write_lock);
+    return FALSE;
   }
 }
 
@@ -308,7 +281,7 @@
   guint8 data[10];
 
   g_return_if_fail (decoder != NULL);
-  g_return_if_fail (decoder->socket != NULL);
+  g_return_if_fail (decoder->connection != NULL);
 
   data[0] = 3;
   data[1] = incremental;
@@ -334,7 +307,7 @@
   guint8 data[8];
 
   g_return_if_fail (decoder != NULL);
-  g_return_if_fail (decoder->socket != NULL);
+  g_return_if_fail (decoder->connection != NULL);
 
   data[0] = 4;
   data[1] = down_flag;
@@ -351,7 +324,7 @@
   guint8 data[6];
 
   g_return_if_fail (decoder != NULL);
-  g_return_if_fail (decoder->socket != NULL);
+  g_return_if_fail (decoder->connection != NULL);
 
   data[0] = 5;
   data[1] = button_mask;
@@ -365,13 +338,14 @@
  * rfb_decoder_state_wait_for_protocol_version:
  *
  * Negotiate the rfb version used
- *
- * \TODO Support for versions 3.7 and 3.8
  */
 static gboolean
 rfb_decoder_state_wait_for_protocol_version (RfbDecoder * decoder)
 {
-  rfb_decoder_read (decoder, 12);
+  gchar version_str[] = "RFB 003.003\n";
+
+  if (!rfb_decoder_read (decoder, 12))
+    return FALSE;
 
   g_return_val_if_fail (memcmp (decoder->data, "RFB 003.00", 10) == 0, FALSE);
   g_return_val_if_fail (*(decoder->data + 11) == 0x0a, FALSE);
@@ -389,16 +363,23 @@
         ("A major protocol version of %d is not supported, falling back to 3",
         decoder->protocol_major);
     decoder->protocol_major = 3;
+    decoder->protocol_minor = 3;
   }
   switch (decoder->protocol_minor) {
     case 3:
+    case 7:
+    case 8:
       break;
     default:
       GST_INFO ("Minor version %d is not supported, using 3",
           decoder->protocol_minor);
       decoder->protocol_minor = 3;
   }
-  rfb_decoder_send (decoder, (guint8 *) "RFB 003.003\n", 12);
+
+  version_str[10] = '0' + decoder->protocol_minor;
+
+  if (!rfb_decoder_send (decoder, (guint8 *) version_str, 12))
+    return FALSE;
 
   decoder->state = rfb_decoder_state_wait_for_security;
   return TRUE;
@@ -413,10 +394,14 @@
 {
   gint reason_length;
 
-  rfb_decoder_read (decoder, 4);
+  if (!rfb_decoder_read (decoder, 4))
+    return FALSE;
 
   reason_length = RFB_GET_UINT32 (decoder->data);
-  rfb_decoder_read (decoder, reason_length);
+
+  if (!rfb_decoder_read (decoder, reason_length))
+    return FALSE;
+
   GST_WARNING ("Reason by server: %s", decoder->data);
 
   if (decoder->error == NULL) {
@@ -438,17 +423,60 @@
    * above.
    */
   if (IS_VERSION_3_3 (decoder)) {
-    rfb_decoder_read (decoder, 4);
+    if (!rfb_decoder_read (decoder, 4))
+      return FALSE;
 
     decoder->security_type = RFB_GET_UINT32 (decoder->data);
     GST_DEBUG ("security = %d", decoder->security_type);
 
     g_return_val_if_fail (decoder->security_type < 3, FALSE);
-    g_return_val_if_fail (decoder->security_type != SECURITY_FAIL,
-        rfb_decoder_state_reason (decoder));
+
+    if (decoder->security_type == SECURITY_FAIL) {
+      decoder->state = rfb_decoder_state_reason;
+      return TRUE;
+    }
   } else {
-    /* \TODO Add behavior for the rfb 3.7 and 3.8 servers */
-    GST_WARNING ("Other versions are not yet supported");
+    guint8 num_type;
+    gint i;
+    guint8 *type = NULL;
+
+    if (!rfb_decoder_read (decoder, 1))
+      return FALSE;
+
+    num_type = RFB_GET_UINT8 (decoder->data);
+    if (num_type == 0) {
+      decoder->state = rfb_decoder_state_reason;
+      return TRUE;
+    }
+
+    if (!rfb_decoder_read (decoder, num_type))
+      return FALSE;
+
+    decoder->security_type = SECURITY_FAIL;
+
+    /* For now, simply pick the first support security method */
+    for (i = 0; i < num_type; i++) {
+      guint val = RFB_GET_UINT8 (decoder->data + i);
+
+      GST_DEBUG ("Server supports security type %u", val);
+
+      if (val == SECURITY_NONE || val == SECURITY_VNC) {
+        decoder->security_type = val;
+        type = decoder->data + i;
+        break;
+      }
+    }
+
+    if (!type) {
+      GST_WARNING ("Security type negotiation failed.");
+      decoder->error = g_error_new (GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_READ,
+          "VNC server requires unsupported security method.");
+      return FALSE;
+    }
+
+    GST_DEBUG ("security = %d", decoder->security_type);
+    if (!rfb_decoder_send (decoder, type, 1))
+      return FALSE;
   }
 
   switch (decoder->security_type) {
@@ -497,7 +525,8 @@
       des (&des_ctx, challenge + 8, challenge + 8);
 
       /* .. and send back to server */
-      rfb_decoder_send (decoder, challenge, 16);
+      if (!rfb_decoder_send (decoder, challenge, 16))
+        return FALSE;
 
       GST_DEBUG ("Encrypted challenge sent to server");
 
@@ -519,7 +548,9 @@
 static gboolean
 rfb_decoder_state_security_result (RfbDecoder * decoder)
 {
-  rfb_decoder_read (decoder, 4);
+  if (!rfb_decoder_read (decoder, 4))
+    return FALSE;
+
   if (RFB_GET_UINT32 (decoder->data) != 0) {
     GST_WARNING ("Security handshaking failed");
     if (IS_VERSION_3_8 (decoder)) {
@@ -593,7 +624,11 @@
 
   message = rfb_decoder_message_set_encodings (encoder_list);
 
-  rfb_decoder_send (decoder, message, 4 + 4 * g_slist_length (encoder_list));
+  if (!rfb_decoder_send (decoder, message,
+          4 + 4 * g_slist_length (encoder_list))) {
+    g_free (message);
+    return FALSE;
+  }
 
   g_free (message);
 
@@ -609,7 +644,10 @@
   guint8 shared_flag;
 
   shared_flag = decoder->shared_flag;
-  rfb_decoder_send (decoder, &shared_flag, 1);
+
+  if (!rfb_decoder_send (decoder, &shared_flag, 1))
+    return FALSE;
+
   GST_DEBUG ("shared_flag is %d", shared_flag);
 
   decoder->state = rfb_decoder_state_wait_for_server_initialisation;
@@ -621,7 +659,8 @@
 {
   guint32 name_length;
 
-  rfb_decoder_read (decoder, 24);
+  if (!rfb_decoder_read (decoder, 24))
+    return FALSE;
 
   decoder->width = RFB_GET_UINT16 (decoder->data + 0);
   decoder->height = RFB_GET_UINT16 (decoder->data + 2);
@@ -652,7 +691,8 @@
 
   name_length = RFB_GET_UINT32 (decoder->data + 20);
 
-  rfb_decoder_read (decoder, name_length);
+  if (!rfb_decoder_read (decoder, name_length))
+    return FALSE;
 
   decoder->name = g_strndup ((gchar *) (decoder->data), name_length);
   GST_DEBUG ("name       = %s", decoder->name);
@@ -709,7 +749,9 @@
 
   GST_DEBUG ("decoder_state_normal");
 
-  rfb_decoder_read (decoder, 1);
+  if (!rfb_decoder_read (decoder, 1))
+    return FALSE;
+
   message_type = RFB_GET_UINT8 (decoder->data);
 
   switch (message_type) {
@@ -738,7 +780,8 @@
 rfb_decoder_state_framebuffer_update (RfbDecoder * decoder)
 {
 
-  rfb_decoder_read (decoder, 3);
+  if (!rfb_decoder_read (decoder, 3))
+    return FALSE;
 
   decoder->n_rects = RFB_GET_UINT16 (decoder->data + 1);
   GST_DEBUG ("Number of rectangles : %d", decoder->n_rects);
@@ -753,8 +796,10 @@
 {
   gint x, y, w, h;
   gint encoding;
+  gboolean ret = FALSE;
 
-  rfb_decoder_read (decoder, 12);
+  if (!rfb_decoder_read (decoder, 12))
+    return FALSE;
 
   x = RFB_GET_UINT16 (decoder->data + 0) - decoder->offset_x;
   y = RFB_GET_UINT16 (decoder->data + 2) - decoder->offset_y;
@@ -770,40 +815,44 @@
   if (((w * h) + (x * y)) > (decoder->width * decoder->height)) {
     GST_ERROR ("Desktop resize is unsupported.");
     decoder->state = NULL;
-    decoder->disconnected = TRUE;
     return TRUE;
   }
 
   switch (encoding) {
     case ENCODING_TYPE_RAW:
-      rfb_decoder_raw_encoding (decoder, x, y, w, h);
+      ret = rfb_decoder_raw_encoding (decoder, x, y, w, h);
       break;
     case ENCODING_TYPE_COPYRECT:
-      rfb_decoder_copyrect_encoding (decoder, x, y, w, h);
+      ret = rfb_decoder_copyrect_encoding (decoder, x, y, w, h);
       break;
     case ENCODING_TYPE_RRE:
-      rfb_decoder_rre_encoding (decoder, x, y, w, h);
+      ret = rfb_decoder_rre_encoding (decoder, x, y, w, h);
       break;
     case ENCODING_TYPE_CORRE:
-      rfb_decoder_corre_encoding (decoder, x, y, w, h);
+      ret = rfb_decoder_corre_encoding (decoder, x, y, w, h);
       break;
     case ENCODING_TYPE_HEXTILE:
-      rfb_decoder_hextile_encoding (decoder, x, y, w, h);
+      ret = rfb_decoder_hextile_encoding (decoder, x, y, w, h);
       break;
     default:
       g_critical ("unimplemented encoding\n");
       break;
   }
+
+  if (!ret)
+    return FALSE;
+
   decoder->n_rects--;
-  if (decoder->n_rects == 0 || decoder->disconnected) {
+  if (decoder->n_rects == 0) {
     decoder->state = NULL;
   } else {
     decoder->state = rfb_decoder_state_framebuffer_update_rectangle;
   }
+
   return TRUE;
 }
 
-static void
+static gboolean
 rfb_decoder_raw_encoding (RfbDecoder * decoder, gint start_x, gint start_y,
     gint rect_w, gint rect_h)
 {
@@ -813,8 +862,11 @@
 
   raw_line_size = rect_w * decoder->bytespp;
   size = rect_h * raw_line_size;
+
   GST_DEBUG ("Reading %d bytes (%dx%d)", size, rect_w, rect_h);
-  rfb_decoder_read (decoder, size);
+
+  if (!rfb_decoder_read (decoder, size))
+    return FALSE;
 
   frame =
       decoder->frame + (((start_y * decoder->rect_width) +
@@ -826,9 +878,11 @@
     p += raw_line_size;
     frame += decoder->line_size;
   }
+
+  return TRUE;
 }
 
-static void
+static gboolean
 rfb_decoder_copyrect_encoding (RfbDecoder * decoder, gint start_x, gint start_y,
     gint rect_w, gint rect_h)
 {
@@ -836,7 +890,8 @@
   gint line_width, copyrect_width;
   guint8 *src, *dst;
 
-  rfb_decoder_read (decoder, 4);
+  if (!rfb_decoder_read (decoder, 4))
+    return FALSE;
 
   /* don't forget the offset */
   src_x = RFB_GET_UINT16 (decoder->data) - decoder->offset_x;
@@ -857,6 +912,8 @@
     src += line_width;
     dst += line_width;
   }
+
+  return TRUE;
 }
 
 static void
@@ -878,14 +935,16 @@
   }
 }
 
-static void
+static gboolean
 rfb_decoder_rre_encoding (RfbDecoder * decoder, gint start_x, gint start_y,
     gint rect_w, gint rect_h)
 {
   guint32 number_of_rectangles, color;
   guint16 x, y, w, h;
 
-  rfb_decoder_read (decoder, 4 + decoder->bytespp);
+  if (!rfb_decoder_read (decoder, 4 + decoder->bytespp))
+    return FALSE;
+
   number_of_rectangles = RFB_GET_UINT32 (decoder->data);
   color = GUINT32_SWAP_LE_BE ((RFB_GET_UINT32 (decoder->data + 4)));
 
@@ -896,7 +955,9 @@
 
   while (number_of_rectangles--) {
 
-    rfb_decoder_read (decoder, decoder->bytespp + 8);
+    if (!rfb_decoder_read (decoder, decoder->bytespp + 8))
+      return FALSE;
+
     color = GUINT32_SWAP_LE_BE ((RFB_GET_UINT32 (decoder->data)));
     x = RFB_GET_UINT16 (decoder->data + decoder->bytespp);
     y = RFB_GET_UINT16 (decoder->data + decoder->bytespp + 2);
@@ -906,16 +967,20 @@
     /* draw the rectangle in the foreground */
     rfb_decoder_fill_rectangle (decoder, start_x + x, start_y + y, w, h, color);
   }
+
+  return TRUE;
 }
 
-static void
+static gboolean
 rfb_decoder_corre_encoding (RfbDecoder * decoder, gint start_x, gint start_y,
     gint rect_w, gint rect_h)
 {
   guint32 number_of_rectangles, color;
   guint8 x, y, w, h;
 
-  rfb_decoder_read (decoder, 4 + decoder->bytespp);
+  if (!rfb_decoder_read (decoder, 4 + decoder->bytespp))
+    return FALSE;
+
   number_of_rectangles = RFB_GET_UINT32 (decoder->data);
   color = GUINT32_SWAP_LE_BE ((RFB_GET_UINT32 (decoder->data + 4)));
   g_free (decoder->data);
@@ -927,7 +992,9 @@
 
   while (number_of_rectangles--) {
 
-    rfb_decoder_read (decoder, decoder->bytespp + 4);
+    if (!rfb_decoder_read (decoder, decoder->bytespp + 4))
+      return FALSE;
+
     color = GUINT32_SWAP_LE_BE ((RFB_GET_UINT32 (decoder->data)));
     x = RFB_GET_UINT8 (decoder->data + decoder->bytespp);
     y = RFB_GET_UINT8 (decoder->data + decoder->bytespp + 1);
@@ -939,9 +1006,11 @@
 
     g_free (decoder->data);
   }
+
+  return TRUE;
 }
 
-static void
+static gboolean
 rfb_decoder_hextile_encoding (RfbDecoder * decoder, gint start_x, gint start_y,
     gint rect_w, gint rect_h)
 {
@@ -963,7 +1032,9 @@
   for (y = start_y; y < y_max; y += 16) {
     for (x = start_x; x < x_max; x += 16) {
 
-      rfb_decoder_read (decoder, 1);
+      if (!rfb_decoder_read (decoder, 1))
+        return FALSE;
+
       subencoding = RFB_GET_UINT8 (decoder->data);
 
       if (subencoding & SUBENCODING_RAW) {
@@ -973,7 +1044,9 @@
       }
 
       if (subencoding & SUBENCODING_BACKGROUND) {
-        rfb_decoder_read (decoder, decoder->bytespp);
+        if (!rfb_decoder_read (decoder, decoder->bytespp))
+          return FALSE;
+
         background = GUINT32_SWAP_LE_BE ((RFB_GET_UINT32 (decoder->data)));
       }
       rfb_decoder_fill_rectangle (decoder, x, y,
@@ -981,12 +1054,16 @@
           background);
 
       if (subencoding & SUBENCODING_FOREGROUND) {
-        rfb_decoder_read (decoder, decoder->bytespp);
+        if (!rfb_decoder_read (decoder, decoder->bytespp))
+          return FALSE;
+
         foreground = GUINT32_SWAP_LE_BE ((RFB_GET_UINT32 (decoder->data)));
       }
 
       if (subencoding & SUBENCODING_ANYSUBRECTS) {
-        rfb_decoder_read (decoder, 1);
+        if (!rfb_decoder_read (decoder, 1))
+          return FALSE;
+
         nr_subrect = RFB_GET_UINT8 (decoder->data);
       } else {
         continue;
@@ -995,7 +1072,8 @@
       if (subencoding & SUBENCODING_SUBRECTSCOLORED) {
         guint offset = 0;
 
-        rfb_decoder_read (decoder, nr_subrect * (2 + decoder->bytespp));
+        if (!rfb_decoder_read (decoder, nr_subrect * (2 + decoder->bytespp)))
+          return FALSE;
 
         while (nr_subrect--) {
           foreground =
@@ -1009,7 +1087,8 @@
       } else {
         guint offset = 0;
 
-        rfb_decoder_read (decoder, 2 * nr_subrect);
+        if (!rfb_decoder_read (decoder, 2 * nr_subrect))
+          return FALSE;
 
         while (nr_subrect--) {
           xy = RFB_GET_UINT8 (decoder->data + offset++);
@@ -1020,6 +1099,8 @@
       }
     }
   }
+
+  return TRUE;
 }
 
 static gboolean
@@ -1036,13 +1117,18 @@
   gint cut_text_length;
 
   /* 3 bytes padding, 4 bytes cut_text_length */
-  rfb_decoder_read (decoder, 7);
+  if (!rfb_decoder_read (decoder, 7))
+    return FALSE;
+
   cut_text_length = RFB_GET_UINT32 (decoder->data + 3);
 
-  rfb_decoder_read (decoder, cut_text_length);
+  if (!rfb_decoder_read (decoder, cut_text_length))
+    return FALSE;
+
   GST_DEBUG ("rfb_decoder_state_server_cut_text: throw away '%s'",
       decoder->data);
 
   decoder->state = rfb_decoder_state_normal;
+
   return TRUE;
 }
diff --git a/gst/librfb/rfbdecoder.h b/gst/librfb/rfbdecoder.h
index 00a8520..0f3f5af 100644
--- a/gst/librfb/rfbdecoder.h
+++ b/gst/librfb/rfbdecoder.h
@@ -42,7 +42,8 @@
 
   gpointer buffer_handler_data;
 
-  GSocket *socket;
+  GSocketClient *socket_client;
+  GSocketConnection *connection;
   GCancellable *cancellable;
 
   guint8 *data;
@@ -55,7 +56,6 @@
 
   /* settable properties */
   gboolean shared_flag;
-  gboolean disconnected;
 
   /* readable properties */
   gboolean inited;
@@ -93,27 +93,16 @@
   /* some many used values */
   guint bytespp;
   guint line_size;
+
+  /* Seriliaze writes operations */
+  GMutex write_lock;
 };
 
-#if 0
-typedef struct _RfbRect
-{
-  RfbConnection *connection;
-
-  guint x_pos;
-  guint y_pos;
-  guint width;
-  guint height;
-  guint encoding_type;
-
-  gchar *data;
-} RfbRect;
-#endif
-
 RfbDecoder *rfb_decoder_new (void);
 void rfb_decoder_free (RfbDecoder * decoder);
 gboolean rfb_decoder_connect_tcp (RfbDecoder * decoder,
     gchar * host, guint port);
+void rfb_decoder_disconnect (RfbDecoder * decoder);
 gboolean rfb_decoder_iterate (RfbDecoder * decoder);
 void rfb_decoder_send_update_request (RfbDecoder * decoder,
     gboolean incremental, gint x, gint y, gint width, gint height);
diff --git a/gst/librfb/rfbutil.h b/gst/librfb/rfbutil.h
deleted file mode 100644
index b1ac946..0000000
--- a/gst/librfb/rfbutil.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _LIBRFB_UTIL_H_
-#define _LIBRFB_UTIL_H_
-
-#include <glib.h>
-
-G_BEGIN_DECLS G_END_DECLS
-#endif
diff --git a/gst/midi/Makefile.in b/gst/midi/Makefile.in
index 512252a..070af53 100644
--- a/gst/midi/Makefile.in
+++ b/gst/midi/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/midi/midiparse.c b/gst/midi/midiparse.c
index 2f817c7..d58ea3f 100644
--- a/gst/midi/midiparse.c
+++ b/gst/midi/midiparse.c
@@ -133,10 +133,8 @@
   gobject_class->set_property = gst_midi_parse_set_property;
   gobject_class->get_property = gst_midi_parse_get_property;
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
   gst_element_class_set_static_metadata (gstelement_class, "MidiParse",
       "Codec/Demuxer/Audio",
       "Midi Parser Element", "Wim Taymans <wim.taymans@gmail.com>");
@@ -1284,9 +1282,7 @@
       event = gst_event_new_eos ();
       /* for fatal errors we post an error message, post the error
        * first so the app knows about the error first. */
-      GST_ELEMENT_ERROR (midiparse, STREAM, FAILED,
-          ("Internal data flow error."),
-          ("streaming task paused, reason %s (%d)", reason, ret));
+      GST_ELEMENT_FLOW_ERROR (midiparse, ret);
       gst_pad_push_event (midiparse->srcpad, event);
     }
   }
diff --git a/gst/mpegdemux/Makefile.in b/gst/mpegdemux/Makefile.in
index dbe2b80..23727f4 100644
--- a/gst/mpegdemux/Makefile.in
+++ b/gst/mpegdemux/Makefile.in
@@ -304,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/mpegdemux/gstmpegdemux.c b/gst/mpegdemux/gstmpegdemux.c
index eb2848b..b608db8 100644
--- a/gst/mpegdemux/gstmpegdemux.c
+++ b/gst/mpegdemux/gstmpegdemux.c
@@ -228,7 +228,7 @@
   gst_element_class_add_pad_template (element_class, klass->sink_template);
 
   gst_element_class_set_static_metadata (element_class,
-      "The Fluendo MPEG Program Stream Demuxer", "Codec/Demuxer",
+      "MPEG Program Stream Demuxer", "Codec/Demuxer",
       "Demultiplexes MPEG Program Streams", "Wim Taymans <wim@fluendo.com>");
 }
 
@@ -1274,7 +1274,7 @@
   }
 
   /* check the limits */
-  if (seeksegment.rate > 0.0) {
+  if (seeksegment.rate > 0.0 && first_pts != G_MAXUINT64) {
     if (seeksegment.start < first_pts - demux->base_time) {
       seeksegment.start = first_pts - demux->base_time;
       seeksegment.position = seeksegment.start;
@@ -2401,13 +2401,14 @@
 
 static inline gboolean
 gst_ps_demux_scan_ts (GstPsDemux * demux, const guint8 * data,
-    SCAN_MODE mode, guint64 * rts)
+    SCAN_MODE mode, guint64 * rts, const guint8 * end)
 {
   gboolean ret = FALSE;
   guint32 scr1, scr2;
   guint64 scr;
   guint64 pts, dts;
   guint32 code;
+  guint16 len;
 
   /* read the 4 bytes for the sync code */
   code = GST_READ_UINT32_BE (data);
@@ -2422,6 +2423,7 @@
 
   /* start parsing the stream */
   if ((*data & 0xc0) == 0x40) {
+    /* MPEG-2 PACK header */
     guint32 scr_ext;
     guint32 next32;
     guint8 stuffing_bytes;
@@ -2461,6 +2463,7 @@
         goto beach;
     }
   } else {
+    /* MPEG-1 pack header */
     /* check markers */
     if ((scr1 & 0xf1000100) != 0x21000100)
       goto beach;
@@ -2482,8 +2485,27 @@
     goto beach;
   }
 
-  /* read the 4 bytes for the PES sync code */
+  /* Possible optional System header here */
   code = GST_READ_UINT32_BE (data);
+  len = GST_READ_UINT16_BE (data + 4);
+
+  if (code == ID_PS_SYSTEM_HEADER_START_CODE) {
+    /* Found a system header, skip it */
+    /* Check for sufficient data - system header, plus enough
+     * left over for the PES packet header */
+    if (data + 6 + len + 6 > end)
+      return FALSE;
+    data += len + 6;
+
+    /* read the 4 bytes for the PES sync code */
+    code = GST_READ_UINT32_BE (data);
+    len = GST_READ_UINT16_BE (data + 4);
+  }
+
+  /* Check we have enough data left for reading the PES packet */
+  if (data + 6 + len > end)
+    return FALSE;
+
   if (!gst_ps_demux_is_pes_sync (code))
     goto beach;
 
@@ -2597,9 +2619,11 @@
   GstMapInfo map;
 
   do {
+    /* Check we can get at least scan_sz bytes */
     if (offset + scan_sz > demux->sink_segment.stop)
       return FALSE;
 
+    /* Don't go further than 'limit' bytes */
     if (limit && offset > *pos + limit)
       return FALSE;
 
@@ -2624,7 +2648,8 @@
 
     /* scan the block */
     for (cursor = 0; !found && cursor <= end_scan; cursor++) {
-      found = gst_ps_demux_scan_ts (demux, map.data + cursor, mode, &ts);
+      found = gst_ps_demux_scan_ts (demux, map.data + cursor, mode, &ts,
+          map.data + map.size);
     }
 
     /* done with the buffer, unref it */
@@ -2658,10 +2683,12 @@
   GstMapInfo map;
 
   do {
+    /* Check we have at least scan_sz bytes available */
     if (offset < scan_sz - 1)
       return FALSE;
 
-    if (limit && offset < *pos - limit)
+    /* Don't go backward past the start or 'limit' bytes */
+    if (limit && offset + limit < *pos)
       return FALSE;
 
     if (offset > BLOCK_SZ)
@@ -2690,7 +2717,8 @@
 
     /* scan the block */
     for (cursor = (start_scan + 1); !found && cursor > 0; cursor--) {
-      found = gst_ps_demux_scan_ts (demux, data--, mode, &ts);
+      found = gst_ps_demux_scan_ts (demux, data--, mode, &ts,
+          map.data + map.size);
     }
 
     /* done with the buffer, unref it */
@@ -2750,7 +2778,8 @@
   demux->first_scr_offset = offset;
   /* scan for last SCR in the stream */
   offset = demux->sink_segment.stop;
-  gst_ps_demux_scan_backward_ts (demux, &offset, SCAN_SCR, &demux->last_scr, 0);
+  gst_ps_demux_scan_backward_ts (demux, &offset, SCAN_SCR, &demux->last_scr,
+      DURATION_SCAN_LIMIT);
   GST_DEBUG_OBJECT (demux, "Last SCR: %" G_GINT64_FORMAT " %" GST_TIME_FORMAT
       " in packet starting at %" G_GUINT64_FORMAT,
       demux->last_scr, GST_TIME_ARGS (MPEGTIME_TO_GSTTIME (demux->last_scr)),
@@ -2976,9 +3005,7 @@
         }
       }
     } else if (ret == GST_FLOW_NOT_LINKED || ret < GST_FLOW_EOS) {
-      GST_ELEMENT_ERROR (demux, STREAM, FAILED,
-          ("Internal data stream error."),
-          ("stream stopped, reason %s", reason));
+      GST_ELEMENT_FLOW_ERROR (demux, ret);
       gst_ps_demux_send_event (demux, gst_event_new_eos ());
     }
 
diff --git a/gst/mpegpsmux/Makefile.in b/gst/mpegpsmux/Makefile.in
index ec13c2a..1c89d5a 100644
--- a/gst/mpegpsmux/Makefile.in
+++ b/gst/mpegpsmux/Makefile.in
@@ -305,6 +305,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -326,6 +328,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -375,6 +379,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -520,6 +526,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -646,8 +654,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,8 +696,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/mpegpsmux/mpegpsmux.c b/gst/mpegpsmux/mpegpsmux.c
index 2b96fc1..fdd1c14 100644
--- a/gst/mpegpsmux/mpegpsmux.c
+++ b/gst/mpegpsmux/mpegpsmux.c
@@ -127,10 +127,10 @@
           "Whether to aggregate GOPs and push them out as buffer lists",
           DEFAULT_AGGREGATE_GOPS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&mpegpsmux_sink_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&mpegpsmux_src_factory));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &mpegpsmux_sink_factory);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &mpegpsmux_src_factory);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "MPEG Program Stream Muxer", "Codec/Muxer",
diff --git a/gst/mpegtsdemux/Makefile.in b/gst/mpegtsdemux/Makefile.in
index 0ca9693..40d9134 100644
--- a/gst/mpegtsdemux/Makefile.in
+++ b/gst/mpegtsdemux/Makefile.in
@@ -310,6 +310,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -331,6 +333,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -380,6 +384,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -525,6 +531,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -651,8 +659,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -695,8 +701,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/mpegtsdemux/gstmpegdefs.h b/gst/mpegtsdemux/gstmpegdefs.h
index e179f7d..f0a225b 100644
--- a/gst/mpegtsdemux/gstmpegdefs.h
+++ b/gst/mpegtsdemux/gstmpegdefs.h
@@ -48,6 +48,8 @@
 /* private stream types */
 #define ST_PS_VIDEO_MPEG2_DCII          0x80
 #define ST_PS_AUDIO_AC3                 0x81
+#define ST_PS_AUDIO_EAC3                0x87
+#define ST_PS_AUDIO_LPCM2               0x83
 #define ST_PS_AUDIO_DTS                 0x8a
 #define ST_PS_AUDIO_LPCM                0x8b
 #define ST_PS_DVD_SUBPICTURE            0xff
diff --git a/gst/mpegtsdemux/mpegtsbase.c b/gst/mpegtsdemux/mpegtsbase.c
index 4aee084..659faad 100644
--- a/gst/mpegtsdemux/mpegtsbase.c
+++ b/gst/mpegtsdemux/mpegtsbase.c
@@ -125,8 +125,7 @@
   element_class = GST_ELEMENT_CLASS (klass);
   element_class->change_state = mpegts_base_change_state;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
 
   gobject_class = G_OBJECT_CLASS (klass);
   gobject_class->dispose = mpegts_base_dispose;
@@ -1024,14 +1023,24 @@
         if ((desc =
                 gst_mpegts_find_descriptor (event->descriptors,
                     GST_MTS_DESC_DVB_SHORT_EVENT))) {
-          gchar *name;
+          gchar *name = NULL, *text = NULL;
+
           if (gst_mpegts_descriptor_parse_dvb_short_event (desc, NULL, &name,
-                  NULL)) {
+                  &text)) {
+            program->tags = gst_tag_list_new_empty ();
+            if (name) {
+              gst_tag_list_add (program->tags, GST_TAG_MERGE_APPEND,
+                  GST_TAG_TITLE, name, NULL);
+              g_free (name);
+            }
+            if (text) {
+              gst_tag_list_add (program->tags, GST_TAG_MERGE_APPEND,
+                  GST_TAG_DESCRIPTION, text, NULL);
+              g_free (text);
+            }
             /* FIXME : Is it correct to post an event duration as a GST_TAG_DURATION ??? */
-            program->tags =
-                gst_tag_list_new (GST_TAG_TITLE, name, GST_TAG_DURATION,
-                event->duration * GST_SECOND, NULL);
-            g_free (name);
+            gst_tag_list_add (program->tags, GST_TAG_MERGE_APPEND,
+                GST_TAG_DURATION, event->duration * GST_SECOND, NULL);
             return TRUE;
           }
         }
@@ -1327,7 +1336,7 @@
   mpegts_packetizer_clear (base->packetizer);
   GST_WARNING_OBJECT (base, "Couldn't find any PCR within the first %d bytes",
       10 * 65536);
-  return GST_FLOW_ERROR;
+  return GST_FLOW_OK;
 }
 
 
@@ -1383,9 +1392,7 @@
             (_("Internal data stream error.")),
             ("No program activated before EOS"));
     } else if (ret == GST_FLOW_NOT_LINKED || ret < GST_FLOW_EOS) {
-      GST_ELEMENT_ERROR (base, STREAM, FAILED,
-          (_("Internal data stream error.")),
-          ("stream stopped, reason %s", reason));
+      GST_ELEMENT_FLOW_ERROR (base, ret);
       GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base, gst_event_new_eos ());
     }
     gst_pad_pause_task (base->sinkpad);
diff --git a/gst/mpegtsdemux/mpegtsbase.h b/gst/mpegtsdemux/mpegtsbase.h
index fc0c651..ecb15ac 100644
--- a/gst/mpegtsdemux/mpegtsbase.h
+++ b/gst/mpegtsdemux/mpegtsbase.h
@@ -141,11 +141,6 @@
   /* Whether we saw a PAT yet */
   gboolean seen_pat;
 
-  /* Whether upstream is live or not */
-  gboolean upstream_live;
-  /* Whether we queried the upstream latency or not */
-  gboolean queried_latency;
-
   /* Upstream segment */
   GstSegment segment;
 
diff --git a/gst/mpegtsdemux/mpegtspacketizer.c b/gst/mpegtsdemux/mpegtspacketizer.c
index a7e0798..16fb8ff 100644
--- a/gst/mpegtsdemux/mpegtspacketizer.c
+++ b/gst/mpegtsdemux/mpegtspacketizer.c
@@ -557,6 +557,7 @@
 mpegts_packetizer_clear (MpegTSPacketizer2 * packetizer)
 {
   guint i;
+  MpegTSPCR *pcrtable;
 
   packetizer->packet_size = 0;
 
@@ -579,6 +580,10 @@
   packetizer->map_offset = 0;
   packetizer->last_in_time = GST_CLOCK_TIME_NONE;
 
+  pcrtable = packetizer->observations[packetizer->pcrtablelut[0x1fff]];
+  if (pcrtable)
+    pcrtable->base_time = GST_CLOCK_TIME_NONE;
+
   /* Close current PCR group */
   PACKETIZER_GROUP_LOCK (packetizer);
 
@@ -595,6 +600,7 @@
 mpegts_packetizer_flush (MpegTSPacketizer2 * packetizer, gboolean hard)
 {
   guint i;
+  MpegTSPCR *pcrtable;
   GST_DEBUG ("Flushing");
 
   if (packetizer->streams) {
@@ -614,6 +620,10 @@
   packetizer->map_offset = 0;
   packetizer->last_in_time = GST_CLOCK_TIME_NONE;
 
+  pcrtable = packetizer->observations[packetizer->pcrtablelut[0x1fff]];
+  if (pcrtable)
+    pcrtable->base_time = GST_CLOCK_TIME_NONE;
+
   /* Close current PCR group */
   PACKETIZER_GROUP_LOCK (packetizer);
   for (i = 0; i < MAX_PCR_OBS_CHANNELS; i++) {
@@ -2189,6 +2199,12 @@
   PACKETIZER_GROUP_LOCK (packetizer);
   pcrtable = get_pcr_table (packetizer, pcr_pid);
 
+  if (!GST_CLOCK_TIME_IS_VALID (pcrtable->base_time) && pcr_pid == 0x1fff &&
+      GST_CLOCK_TIME_IS_VALID (packetizer->last_in_time)) {
+    pcrtable->base_time = packetizer->last_in_time;
+    pcrtable->base_pcrtime = pts;
+  }
+
   /* Use clock skew if present */
   if (packetizer->calculate_skew
       && GST_CLOCK_TIME_IS_VALID (pcrtable->base_time)) {
@@ -2206,7 +2222,8 @@
      * That being said, this will only happen for the small interval of time
      * where PTS/DTS are wrapping just before we see the first reset/wrap PCR
      */
-    if (G_UNLIKELY (ABSDIFF (res, pcrtable->last_pcrtime) > 15 * GST_SECOND))
+    if (G_UNLIKELY (pcr_pid != 0x1fff &&
+            ABSDIFF (res, pcrtable->last_pcrtime) > 15 * GST_SECOND))
       res = GST_CLOCK_TIME_NONE;
     else {
       GstClockTime tmp = pcrtable->base_time + pcrtable->skew;
diff --git a/gst/mpegtsdemux/mpegtsparse.c b/gst/mpegtsdemux/mpegtsparse.c
index 6ab2e7d..7bf8fc4 100644
--- a/gst/mpegtsdemux/mpegtsparse.c
+++ b/gst/mpegtsdemux/mpegtsparse.c
@@ -165,10 +165,8 @@
   element_class->request_new_pad = mpegts_parse_request_new_pad;
   element_class->release_pad = mpegts_parse_release_pad;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&program_template));
+  gst_element_class_add_static_pad_template (element_class, &src_template);
+  gst_element_class_add_static_pad_template (element_class, &program_template);
 
   gst_element_class_set_static_metadata (element_class,
       "MPEG transport stream parser", "Codec/Parser",
diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c
index 8a41f90..0ac95bd 100644
--- a/gst/mpegtsdemux/tsdemux.c
+++ b/gst/mpegtsdemux/tsdemux.c
@@ -246,24 +246,24 @@
     GST_STATIC_CAPS ("subpicture/x-pgs; subpicture/x-dvd; subpicture/x-dvb")
 
 static GstStaticPadTemplate video_template =
-GST_STATIC_PAD_TEMPLATE ("video_%04x", GST_PAD_SRC,
+GST_STATIC_PAD_TEMPLATE ("video_%01x_%05x", GST_PAD_SRC,
     GST_PAD_SOMETIMES,
     VIDEO_CAPS);
 
 static GstStaticPadTemplate audio_template =
-GST_STATIC_PAD_TEMPLATE ("audio_%04x",
+GST_STATIC_PAD_TEMPLATE ("audio_%01x_%05x",
     GST_PAD_SRC,
     GST_PAD_SOMETIMES,
     AUDIO_CAPS);
 
 static GstStaticPadTemplate subpicture_template =
-GST_STATIC_PAD_TEMPLATE ("subpicture_%04x",
+GST_STATIC_PAD_TEMPLATE ("subpicture_%01x_%05x",
     GST_PAD_SRC,
     GST_PAD_SOMETIMES,
     SUBPICTURE_CAPS);
 
 static GstStaticPadTemplate private_template =
-GST_STATIC_PAD_TEMPLATE ("private_%04x",
+GST_STATIC_PAD_TEMPLATE ("private_%01x_%05x",
     GST_PAD_SRC,
     GST_PAD_SOMETIMES,
     GST_STATIC_CAPS_ANY);
@@ -305,7 +305,8 @@
     GValue * value, GParamSpec * pspec);
 static void gst_ts_demux_flush_streams (GstTSDemux * tsdemux, gboolean hard);
 static GstFlowReturn
-gst_ts_demux_push_pending_data (GstTSDemux * demux, TSDemuxStream * stream);
+gst_ts_demux_push_pending_data (GstTSDemux * demux, TSDemuxStream * stream,
+    MpegTSBaseProgram * program);
 static void gst_ts_demux_stream_flush (TSDemuxStream * stream,
     GstTSDemux * demux, gboolean hard);
 
@@ -418,6 +419,7 @@
   demux->group_id = G_MAXUINT;
 
   demux->last_seek_offset = -1;
+  demux->program_generation = 0;
 }
 
 static void
@@ -971,7 +973,7 @@
       /* If we are pushing out EOS, flush out pending data first */
       if (GST_EVENT_TYPE (event) == GST_EVENT_EOS &&
           gst_pad_is_active (stream->pad))
-        gst_ts_demux_push_pending_data (demux, stream);
+        gst_ts_demux_push_pending_data (demux, stream, NULL);
 
       gst_event_ref (event);
       gst_pad_push_event (stream->pad, event);
@@ -1504,6 +1506,15 @@
       is_audio = TRUE;
       caps = gst_caps_new_empty_simple ("audio/x-ac3");
       break;
+    case ST_PS_AUDIO_EAC3:
+      /* ATSC_ENHANCED_AC3 */
+      is_audio = TRUE;
+      caps = gst_caps_new_empty_simple ("audio/x-eac3");
+      break;
+    case ST_PS_AUDIO_LPCM2:
+      is_audio = TRUE;
+      caps = gst_caps_new_empty_simple ("audio/x-private2-lpcm");
+      break;
     case ST_PS_AUDIO_DTS:
       is_audio = TRUE;
       caps = gst_caps_new_empty_simple ("audio/x-dts");
@@ -1533,16 +1544,24 @@
   if (caps) {
     if (is_audio) {
       template = gst_static_pad_template_get (&audio_template);
-      name = g_strdup_printf ("audio_%04x", bstream->pid);
+      name =
+          g_strdup_printf ("audio_%01x_%04x", demux->program_generation,
+          bstream->pid);
     } else if (is_video) {
       template = gst_static_pad_template_get (&video_template);
-      name = g_strdup_printf ("video_%04x", bstream->pid);
+      name =
+          g_strdup_printf ("video_%01x_%04x", demux->program_generation,
+          bstream->pid);
     } else if (is_private) {
       template = gst_static_pad_template_get (&private_template);
-      name = g_strdup_printf ("private_%04x", bstream->pid);
+      name =
+          g_strdup_printf ("private_%01x_%04x", demux->program_generation,
+          bstream->pid);
     } else if (is_subpicture) {
       template = gst_static_pad_template_get (&subpicture_template);
-      name = g_strdup_printf ("subpicture_%04x", bstream->pid);
+      name =
+          g_strdup_printf ("subpicture_%01x_%04x", demux->program_generation,
+          bstream->pid);
     } else
       g_assert_not_reached ();
 
@@ -1638,6 +1657,8 @@
     stream->nb_out_buffers = 0;
     stream->gap_ref_buffers = 0;
     stream->gap_ref_pts = GST_CLOCK_TIME_NONE;
+    /* Only wait for a valid timestamp if we have a PCR_PID */
+    stream->pending_ts = program->pcr_pid < 0x1fff;
     stream->continuity_counter = CONTINUITY_UNSET;
   }
 }
@@ -1668,7 +1689,7 @@
       if (gst_pad_is_active (stream->pad)) {
         /* Flush out all data */
         GST_DEBUG_OBJECT (stream->pad, "Flushing out pending data");
-        gst_ts_demux_push_pending_data ((GstTSDemux *) base, stream);
+        gst_ts_demux_push_pending_data ((GstTSDemux *) base, stream, NULL);
 
         GST_DEBUG_OBJECT (stream->pad, "Pushing out EOS");
         gst_pad_push_event (stream->pad, gst_event_new_eos ());
@@ -1799,6 +1820,9 @@
     demux->program_number = program->program_number;
     demux->program = program;
 
+    /* Increment the program_generation counter */
+    demux->program_generation = (demux->program_generation + 1) & 0xf;
+
     /* If this is not the initial program, we need to calculate
      * a new segment */
     if (demux->segment_event) {
@@ -1813,7 +1837,8 @@
       for (tmp = demux->previous_program->stream_list; tmp; tmp = tmp->next) {
         TSDemuxStream *stream = (TSDemuxStream *) tmp->data;
         if (stream->pad)
-          gst_ts_demux_push_pending_data (demux, stream);
+          gst_ts_demux_push_pending_data (demux, stream,
+              demux->previous_program);
       }
     }
 
@@ -2213,7 +2238,8 @@
 }
 
 static void
-calculate_and_push_newsegment (GstTSDemux * demux, TSDemuxStream * stream)
+calculate_and_push_newsegment (GstTSDemux * demux, TSDemuxStream * stream,
+    MpegTSBaseProgram * target_program)
 {
   MpegTSBase *base = (MpegTSBase *) demux;
   GstClockTime lowest_pts = GST_CLOCK_TIME_NONE;
@@ -2222,12 +2248,15 @@
 
   GST_DEBUG ("Creating new newsegment for stream %p", stream);
 
+  if (target_program == NULL)
+    target_program = demux->program;
+
   /* Speedup : if we don't need to calculate anything, go straight to pushing */
   if (demux->segment_event)
     goto push_new_segment;
 
   /* Calculate the 'new_start' value, used for newsegment */
-  for (tmp = demux->program->stream_list; tmp; tmp = tmp->next) {
+  for (tmp = target_program->stream_list; tmp; tmp = tmp->next) {
     TSDemuxStream *pstream = (TSDemuxStream *) tmp->data;
 
     if (GST_CLOCK_TIME_IS_VALID (pstream->first_pts)) {
@@ -2276,7 +2305,7 @@
   }
 
 push_new_segment:
-  for (tmp = demux->program->stream_list; tmp; tmp = tmp->next) {
+  for (tmp = target_program->stream_list; tmp; tmp = tmp->next) {
     stream = (TSDemuxStream *) tmp->data;
     if (stream->pad == NULL)
       continue;
@@ -2351,7 +2380,7 @@
           "Stream needs update. Pushing GAP event to TS %" GST_TIME_FORMAT,
           GST_TIME_ARGS (time));
       if (G_UNLIKELY (ps->need_newsegment))
-        calculate_and_push_newsegment (demux, ps);
+        calculate_and_push_newsegment (demux, ps, NULL);
 
       /* Now send gap event */
       gst_pad_push_event (ps->pad, gst_event_new_gap (time, 0));
@@ -2459,13 +2488,15 @@
 }
 
 static GstFlowReturn
-gst_ts_demux_push_pending_data (GstTSDemux * demux, TSDemuxStream * stream)
+gst_ts_demux_push_pending_data (GstTSDemux * demux, TSDemuxStream * stream,
+    MpegTSBaseProgram * target_program)
 {
   GstFlowReturn res = GST_FLOW_OK;
   MpegTSBaseStream *bs = (MpegTSBaseStream *) stream;
   GstBuffer *buffer = NULL;
   GstBufferList *buffer_list = NULL;
 
+
   GST_DEBUG_OBJECT (stream->pad,
       "stream:%p, pid:0x%04x stream_type:%d state:%d", stream, bs->pid,
       bs->stream_type, stream->state);
@@ -2579,7 +2610,7 @@
   }
 
   if (G_UNLIKELY (stream->need_newsegment))
-    calculate_and_push_newsegment (demux, stream);
+    calculate_and_push_newsegment (demux, stream, target_program);
 
   /* FIXME : Push pending buffers if any */
   if (G_UNLIKELY (stream->pending)) {
@@ -2673,13 +2704,19 @@
      * hit this will trigger a gap check */
     if (G_UNLIKELY (stream->pts != GST_CLOCK_TIME_NONE &&
             stream->pts > stream->gap_ref_pts + 2 * GST_SECOND)) {
-      GstClockTime curpcr =
-          mpegts_packetizer_get_current_time (MPEG_TS_BASE_PACKETIZER (demux),
-          demux->program->pcr_pid);
-      if (curpcr == GST_CLOCK_TIME_NONE || curpcr < 800 * GST_MSECOND)
-        goto beach;
-      curpcr -= 800 * GST_MSECOND;
-      gst_ts_demux_check_and_sync_streams (demux, curpcr);
+      if (demux->program->pcr_pid != 0x1fff) {
+        GstClockTime curpcr =
+            mpegts_packetizer_get_current_time (MPEG_TS_BASE_PACKETIZER (demux),
+            demux->program->pcr_pid);
+        if (curpcr == GST_CLOCK_TIME_NONE || curpcr < 800 * GST_MSECOND)
+          goto beach;
+        curpcr -= 800 * GST_MSECOND;
+        /* Use the current PCR (with a safety margin) to sync against */
+        gst_ts_demux_check_and_sync_streams (demux, curpcr);
+      } else {
+        /* If we don't have a PCR track, just use the current stream PTS */
+        gst_ts_demux_check_and_sync_streams (demux, stream->pts);
+      }
     }
   }
 
@@ -2707,7 +2744,7 @@
   if (G_UNLIKELY (packet->payload_unit_start_indicator) &&
       FLAGS_HAS_PAYLOAD (packet->scram_afc_cc))
     /* Flush previous data */
-    res = gst_ts_demux_push_pending_data (demux, stream);
+    res = gst_ts_demux_push_pending_data (demux, stream, NULL);
 
   if (packet->payload && (res == GST_FLOW_OK || res == GST_FLOW_NOT_LINKED)
       && stream->pad) {
@@ -2717,7 +2754,7 @@
     /* Finally check if the data we queued completes a packet */
     if (stream->expected_size && stream->current_size == stream->expected_size) {
       GST_LOG ("pushing complete packet");
-      res = gst_ts_demux_push_pending_data (demux, stream);
+      res = gst_ts_demux_push_pending_data (demux, stream, NULL);
     }
   }
 
@@ -2765,7 +2802,7 @@
   for (tmp = demux->program->stream_list; tmp; tmp = tmp->next) {
     TSDemuxStream *stream = (TSDemuxStream *) tmp->data;
     if (stream->pad) {
-      res = gst_ts_demux_push_pending_data (demux, stream);
+      res = gst_ts_demux_push_pending_data (demux, stream, NULL);
       if (G_UNLIKELY (res != GST_FLOW_OK))
         break;
     }
diff --git a/gst/mpegtsdemux/tsdemux.h b/gst/mpegtsdemux/tsdemux.h
index b416733..32cbde2 100644
--- a/gst/mpegtsdemux/tsdemux.h
+++ b/gst/mpegtsdemux/tsdemux.h
@@ -64,6 +64,7 @@
   gboolean emit_statistics;
 
   /*< private >*/
+  gint program_generation; /* Incremented each time we switch program 0..15 */
   MpegTSBaseProgram *program;	/* Current program */
   MpegTSBaseProgram *previous_program; /* Previous program, to deactivate once
 					* the new program becomes active */
diff --git a/gst/mpegtsmux/Makefile.in b/gst/mpegtsmux/Makefile.in
index 2611b8c..33c887b 100644
--- a/gst/mpegtsmux/Makefile.in
+++ b/gst/mpegtsmux/Makefile.in
@@ -349,6 +349,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -370,6 +372,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -419,6 +423,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -564,6 +570,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -690,8 +698,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -734,8 +740,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/mpegtsmux/mpegtsmux.c b/gst/mpegtsmux/mpegtsmux.c
index 4c68e3e..67c2b72 100644
--- a/gst/mpegtsmux/mpegtsmux.c
+++ b/gst/mpegtsmux/mpegtsmux.c
@@ -239,10 +239,10 @@
   GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&mpegtsmux_sink_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&mpegtsmux_src_factory));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &mpegtsmux_sink_factory);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &mpegtsmux_src_factory);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "MPEG Transport Stream Muxer", "Codec/Muxer",
@@ -933,11 +933,9 @@
 
         lang_code = gst_tag_get_language_code_iso_639_2B (lang);
         if (lang_code) {
-          if (pad_data->language) {
-            g_free (pad_data->language);
-            pad_data->language = NULL;
-          }
           GST_DEBUG_OBJECT (pad, "Setting language to '%s'", lang_code);
+
+          g_free (pad_data->language);
           pad_data->language = g_strdup (lang_code);
         } else {
           GST_WARNING_OBJECT (pad, "Did not get language code for '%s'", lang);
diff --git a/gst/mpegtsmux/tsmux/Makefile.in b/gst/mpegtsmux/tsmux/Makefile.in
index f2526ec..05fd2d1 100644
--- a/gst/mpegtsmux/tsmux/Makefile.in
+++ b/gst/mpegtsmux/tsmux/Makefile.in
@@ -274,6 +274,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -295,6 +297,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -344,6 +348,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -489,6 +495,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -615,8 +623,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -659,8 +665,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/mpegtsmux/tsmux/tsmuxstream.c b/gst/mpegtsmux/tsmux/tsmuxstream.c
index 6b7c17e..f719d8f 100644
--- a/gst/mpegtsmux/tsmux/tsmuxstream.c
+++ b/gst/mpegtsmux/tsmux/tsmuxstream.c
@@ -148,6 +148,7 @@
     case TSMUX_ST_AUDIO_MPEG1:
     case TSMUX_ST_AUDIO_MPEG2:
       /* FIXME: Assign sequential IDs? */
+      stream->is_audio = TRUE;
       stream->id = 0xC0;
       stream->pi.flags |= TSMUX_PACKET_FLAG_PES_FULL_HEADER;
       break;
@@ -163,12 +164,15 @@
           stream->is_video_stream = TRUE;
           break;
         case TSMUX_ST_PS_AUDIO_LPCM:
+          stream->is_audio = TRUE;
           stream->id_extended = 0x80;
           break;
         case TSMUX_ST_PS_AUDIO_AC3:
+          stream->is_audio = TRUE;
           stream->id_extended = 0x71;
           break;
         case TSMUX_ST_PS_AUDIO_DTS:
+          stream->is_audio = TRUE;
           stream->id_extended = 0x82;
           break;
         default:
@@ -204,6 +208,7 @@
     case TSMUX_ST_PS_OPUS:
       /* FIXME: assign sequential extended IDs? */
       stream->id = 0xBD;
+      stream->is_audio = TRUE;
       stream->stream_type = TSMUX_ST_PRIVATE_DATA;
       stream->is_opus = TRUE;
       stream->pi.flags |= TSMUX_PACKET_FLAG_PES_FULL_HEADER;
@@ -732,7 +737,13 @@
   g_return_if_fail (stream != NULL);
   g_return_if_fail (pmt_stream != NULL);
 
-  /* Based on the stream type, write out any descriptors to go in the 
+  if (stream->is_audio && stream->language[0] != '\0') {
+    descriptor = gst_mpegts_descriptor_from_iso_639_language (stream->language);
+    g_ptr_array_add (pmt_stream->descriptors, descriptor);
+    descriptor = NULL;
+  }
+
+  /* Based on the stream type, write out any descriptors to go in the
    * PMT ES_info field */
   /* tag (registration_descriptor), length, format_identifier */
   switch (stream->stream_type) {
diff --git a/gst/mpegtsmux/tsmux/tsmuxstream.h b/gst/mpegtsmux/tsmux/tsmuxstream.h
index 73b2a88..2766718 100644
--- a/gst/mpegtsmux/tsmux/tsmuxstream.h
+++ b/gst/mpegtsmux/tsmux/tsmuxstream.h
@@ -211,6 +211,7 @@
   gchar language[4];
 
   gboolean is_meta;
+  gboolean is_audio;
 
   /* Opus */
   gboolean is_opus;
diff --git a/gst/mve/Makefile.in b/gst/mve/Makefile.in
index fc8b6de..811ee1e 100644
--- a/gst/mve/Makefile.in
+++ b/gst/mve/Makefile.in
@@ -306,6 +306,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -327,6 +329,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -376,6 +380,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -521,6 +527,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -647,8 +655,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,8 +697,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/mve/gstmvemux.c b/gst/mve/gstmvemux.c
index a7a32cb..b123d2d 100644
--- a/gst/mve/gstmvemux.c
+++ b/gst/mve/gstmvemux.c
@@ -1350,12 +1350,11 @@
 
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&audio_sink_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&video_sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class,
+      &audio_sink_factory);
+  gst_element_class_add_static_pad_template (element_class,
+      &video_sink_factory);
 
   gst_element_class_set_static_metadata (element_class, "MVE Multiplexer",
       "Codec/Muxer",
diff --git a/gst/mxf/Makefile.in b/gst/mxf/Makefile.in
index d7fa222..21ddb86 100644
--- a/gst/mxf/Makefile.in
+++ b/gst/mxf/Makefile.in
@@ -311,6 +311,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -332,6 +334,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -381,6 +385,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -526,6 +532,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -652,8 +660,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -696,8 +702,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/mxf/mxfdemux.c b/gst/mxf/mxfdemux.c
index 0eaad0f..823b1b6 100644
--- a/gst/mxf/mxfdemux.c
+++ b/gst/mxf/mxfdemux.c
@@ -3098,9 +3098,7 @@
     } else if (flow == GST_FLOW_NOT_LINKED || flow < GST_FLOW_EOS) {
       GstEvent *e;
 
-      GST_ELEMENT_ERROR (demux, STREAM, FAILED,
-          ("Internal data stream error."),
-          ("stream stopped, reason %s", reason));
+      GST_ELEMENT_FLOW_ERROR (demux, flow);
       e = gst_event_new_eos ();
       gst_event_set_seqnum (e, demux->seqnum);
       gst_mxf_demux_push_src_event (demux, e);
@@ -4461,13 +4459,13 @@
       GST_DEBUG_FUNCPTR (gst_mxf_demux_change_state);
   gstelement_class->query = GST_DEBUG_FUNCPTR (gst_mxf_demux_query);
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&mxf_sink_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&mxf_src_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &mxf_sink_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &mxf_src_template);
   gst_element_class_set_static_metadata (gstelement_class, "MXF Demuxer",
-      "Codec/Demuxer",
-      "Demux MXF files", "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
+      "Codec/Demuxer", "Demux MXF files",
+      "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
 }
 
 static void
diff --git a/gst/mxf/mxfmux.c b/gst/mxf/mxfmux.c
index 4fb6630..c21a84d 100644
--- a/gst/mxf/mxfmux.c
+++ b/gst/mxf/mxfmux.c
@@ -171,8 +171,7 @@
   gstaggregator_class->aggregate = GST_DEBUG_FUNCPTR (gst_mxf_mux_aggregate);
   gstaggregator_class->sinkpads_type = GST_TYPE_MXF_MUX_PAD;
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_templ));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_templ);
 
   p = mxf_essence_element_writer_get_pad_templates ();
   while (p && *p) {
diff --git a/gst/netsim/Makefile.in b/gst/netsim/Makefile.in
index c04ea7e..e555656 100644
--- a/gst/netsim/Makefile.in
+++ b/gst/netsim/Makefile.in
@@ -302,6 +302,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -323,6 +325,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -372,6 +376,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -517,6 +523,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -643,8 +651,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,8 +693,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/netsim/gstnetsim.c b/gst/netsim/gstnetsim.c
index 2e15ac3..833e746 100644
--- a/gst/netsim/gstnetsim.c
+++ b/gst/netsim/gstnetsim.c
@@ -400,10 +400,10 @@
 
   g_type_class_add_private (klass, sizeof (GstNetSimPrivate));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_net_sim_src_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_net_sim_sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_net_sim_src_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_net_sim_sink_template);
 
   gst_element_class_set_metadata (gstelement_class,
       "Network Simulator",
diff --git a/gst/nuvdemux/Makefile.in b/gst/nuvdemux/Makefile.in
index ff8e8e5..fe3f5b0 100644
--- a/gst/nuvdemux/Makefile.in
+++ b/gst/nuvdemux/Makefile.in
@@ -301,6 +301,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -322,6 +324,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -371,6 +375,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -516,6 +522,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -642,8 +650,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -686,8 +692,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/nuvdemux/gstnuvdemux.c b/gst/nuvdemux/gstnuvdemux.c
index 765025f..88968f0 100644
--- a/gst/nuvdemux/gstnuvdemux.c
+++ b/gst/nuvdemux/gstnuvdemux.c
@@ -124,14 +124,11 @@
 {
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&audio_src_template));
-
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&video_src_template));
-
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &audio_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &video_src_template);
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
   gst_element_class_set_static_metadata (element_class, "Nuv demuxer",
       "Codec/Demuxer",
       "Demultiplex a MythTV NuppleVideo .nuv file into audio and video",
@@ -732,9 +729,7 @@
   if (res == GST_FLOW_UNEXPECTED) {
     gst_nuv_demux_send_eos (nuv);
   } else if (res == GST_FLOW_NOT_LINKED || res < GST_FLOW_UNEXPECTED) {
-    GST_ELEMENT_ERROR (nuv, STREAM, FAILED,
-        (_("Internal data stream error.")),
-        ("streaming stopped, reason %s", gst_flow_get_name (res)));
+    GST_ELEMENT_FLOW_ERROR (nuv, res);
 
     gst_nuv_demux_send_eos (nuv);
   }
diff --git a/gst/onvif/Makefile.in b/gst/onvif/Makefile.in
index 84f6c30..1a707c8 100644
--- a/gst/onvif/Makefile.in
+++ b/gst/onvif/Makefile.in
@@ -301,6 +301,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -322,6 +324,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -371,6 +375,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -516,6 +522,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -642,8 +650,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -686,8 +692,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/onvif/gstrtponvifparse.c b/gst/onvif/gstrtponvifparse.c
index f48ac07..8ff4fa9 100644
--- a/gst/onvif/gstrtponvifparse.c
+++ b/gst/onvif/gstrtponvifparse.c
@@ -57,10 +57,10 @@
   gstelement_class = GST_ELEMENT_CLASS (klass);
 
   /* register pads */
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_template_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_template_factory));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &sink_template_factory);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &src_template_factory);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "ONVIF NTP timestamps RTP extension", "Effect/RTP",
diff --git a/gst/onvif/gstrtponviftimestamp.c b/gst/onvif/gstrtponviftimestamp.c
index 4abece1..a957483 100644
--- a/gst/onvif/gstrtponviftimestamp.c
+++ b/gst/onvif/gstrtponviftimestamp.c
@@ -204,7 +204,7 @@
       self->ntp_offset = self->prop_ntp_offset;
       GST_DEBUG_OBJECT (self, "ntp-offset: %" GST_TIME_FORMAT,
           GST_TIME_ARGS (self->ntp_offset));
-      self->set_d_bit = FALSE;
+      self->set_d_bit = TRUE;
       self->set_e_bit = FALSE;
       break;
     default:
@@ -257,10 +257,10 @@
           DEFAULT_SET_E_BIT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   /* register pads */
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_template_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_template_factory));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &sink_template_factory);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &src_template_factory);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "ONVIF NTP timestamps RTP extension", "Effect/RTP",
@@ -316,7 +316,7 @@
       /* if the "set-e-bit" property is set, an offset event might mark the
        * stream as discontinued. We need to check if the currently cached buffer
        * needs the e-bit before it's pushed */
-      if (self->prop_set_e_bit &&
+      if (self->buffer != NULL && self->prop_set_e_bit &&
           gst_event_has_name (event, GST_NTP_OFFSET_EVENT_NAME)) {
         gboolean discont;
         if (parse_event_ntp_offset (self, event, NULL, &discont)) {
@@ -345,7 +345,7 @@
     }
     case GST_EVENT_FLUSH_STOP:
       purge_cached_buffer_and_events (self);
-      self->set_d_bit = FALSE;
+      self->set_d_bit = TRUE;
       self->set_e_bit = FALSE;
       gst_segment_init (&self->segment, GST_FORMAT_UNDEFINED);
       break;
diff --git a/gst/patchdetect/Makefile.in b/gst/patchdetect/Makefile.in
index 22dceb0..cbc0358 100644
--- a/gst/patchdetect/Makefile.in
+++ b/gst/patchdetect/Makefile.in
@@ -304,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/patchdetect/gstpatchdetect.c b/gst/patchdetect/gstpatchdetect.c
index 06a6396..ff21fda 100644
--- a/gst/patchdetect/gstpatchdetect.c
+++ b/gst/patchdetect/gstpatchdetect.c
@@ -109,10 +109,10 @@
 {
   GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_patchdetect_sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_patchdetect_src_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_patchdetect_sink_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_patchdetect_src_template);
 
   gst_element_class_set_static_metadata (element_class, "Color Patch Detector",
       "Video/Analysis", "Detects color patches from a color calibration chart",
diff --git a/gst/pcapparse/Makefile.in b/gst/pcapparse/Makefile.in
index 9a4cd05..e4ce753 100644
--- a/gst/pcapparse/Makefile.in
+++ b/gst/pcapparse/Makefile.in
@@ -304,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/pcapparse/gstirtspparse.c b/gst/pcapparse/gstirtspparse.c
index 88a0096..f6b7ace 100644
--- a/gst/pcapparse/gstirtspparse.c
+++ b/gst/pcapparse/gstirtspparse.c
@@ -105,10 +105,8 @@
   parse_class->stop = GST_DEBUG_FUNCPTR (gst_irtsp_parse_stop);
   parse_class->handle_frame = GST_DEBUG_FUNCPTR (gst_irtsp_parse_handle_frame);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
+  gst_element_class_add_static_pad_template (element_class, &src_template);
 
   gst_element_class_set_static_metadata (element_class, "IRTSPParse",
       "Raw/Parser",
diff --git a/gst/pcapparse/gstpcapparse.c b/gst/pcapparse/gstpcapparse.c
index 21e0cab..4ffa8c1 100644
--- a/gst/pcapparse/gstpcapparse.c
+++ b/gst/pcapparse/gstpcapparse.c
@@ -138,10 +138,8 @@
           "Relative timestamp offset (ns) to apply (-1 = use absolute packet time)",
           -1, G_MAXINT64, -1, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
+  gst_element_class_add_static_pad_template (element_class, &src_template);
 
   element_class->change_state = gst_pcap_parse_change_state;
 
diff --git a/gst/pnm/Makefile.in b/gst/pnm/Makefile.in
index deecc99..4a74f2a 100644
--- a/gst/pnm/Makefile.in
+++ b/gst/pnm/Makefile.in
@@ -304,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/pnm/gstpnmdec.c b/gst/pnm/gstpnmdec.c
index 93c4140..1b5ea51 100644
--- a/gst/pnm/gstpnmdec.c
+++ b/gst/pnm/gstpnmdec.c
@@ -44,6 +44,7 @@
 #include <stdio.h>
 
 static gboolean gst_pnmdec_start (GstVideoDecoder * decoder);
+static GstFlowReturn gst_pnmdec_finish (GstVideoDecoder * decoder);
 static gboolean gst_pnmdec_set_format (GstVideoDecoder * decoder,
     GstVideoCodecState * state);
 static gboolean gst_pnmdec_stop (GstVideoDecoder * decoder);
@@ -57,11 +58,14 @@
 G_DEFINE_TYPE (GstPnmdec, gst_pnmdec, GST_TYPE_VIDEO_DECODER);
 
 static GstStaticPadTemplate gst_pnmdec_src_pad_template =
-    GST_STATIC_PAD_TEMPLATE ("src",
+GST_STATIC_PAD_TEMPLATE ("src",
     GST_PAD_SRC,
     GST_PAD_ALWAYS,
-    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("RGB") "; "
-        GST_VIDEO_CAPS_MAKE ("GRAY8")));
+    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE
+        ("{ RGB, GRAY8, GRAY16_BE, GRAY16_LE }")));
+
+static GstStaticCaps gst_pnmdec_gray16_caps =
+GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("{ GRAY16_BE, GRAY16_LE }"));
 
 static GstStaticPadTemplate gst_pnmdec_sink_pad_template =
 GST_STATIC_PAD_TEMPLATE ("sink",
@@ -69,6 +73,8 @@
     GST_PAD_ALWAYS,
     GST_STATIC_CAPS (MIME_ALL));
 
+GST_DEBUG_CATEGORY (pnmdecoder_debug);
+#define GST_CAT_DEFAULT pnmdecoder_debug
 
 static void
 gst_pnmdec_class_init (GstPnmdecClass * klass)
@@ -76,16 +82,20 @@
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
   GstVideoDecoderClass *vdec_class = (GstVideoDecoderClass *) klass;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_pnmdec_src_pad_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_pnmdec_sink_pad_template));
+  GST_DEBUG_CATEGORY_INIT (pnmdecoder_debug, "pnmdec", 0, "PNM Video Decoder");
+
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_pnmdec_src_pad_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_pnmdec_sink_pad_template);
+
   gst_element_class_set_static_metadata (element_class, "PNM image decoder",
       "Codec/Decoder/Image",
       "Decodes images in portable pixmap/graymap/bitmap/anymamp (PNM) format",
       "Lutz Mueller <lutz@users.sourceforge.net>");
 
   vdec_class->start = gst_pnmdec_start;
+  vdec_class->finish = gst_pnmdec_finish;
   vdec_class->stop = gst_pnmdec_stop;
   vdec_class->parse = gst_pnmdec_parse;
   vdec_class->handle_frame = gst_pnmdec_handle_frame;
@@ -116,11 +126,91 @@
   GST_PAD_SET_ACCEPT_TEMPLATE (GST_VIDEO_DECODER_SINK_PAD (s));
 }
 
+static GstFlowReturn
+gst_pnmdec_negotiate (GstVideoDecoder * decoder)
+{
+  GstPnmdec *pnmdec = (GstPnmdec *) decoder;
+  GstVideoFormat fmt = GST_VIDEO_FORMAT_UNKNOWN;
+  GstVideoCodecState *output_state;
+
+  switch (pnmdec->mngr.info.type) {
+    case GST_PNM_TYPE_BITMAP:
+      if (pnmdec->mngr.info.encoding == GST_PNM_ENCODING_ASCII) {
+        return GST_FLOW_ERROR;
+      }
+      pnmdec->size = pnmdec->mngr.info.width * pnmdec->mngr.info.height * 1;
+      fmt = GST_VIDEO_FORMAT_GRAY8;
+      break;
+    case GST_PNM_TYPE_GRAYMAP:
+      if (pnmdec->mngr.info.max > 255) {
+        GstCaps *gray16_caps = gst_static_caps_get (&gst_pnmdec_gray16_caps);
+        GstCaps *peercaps;
+        GstStructure *peerstruct;
+        const gchar *fmtstr;
+
+        pnmdec->size = pnmdec->mngr.info.width * pnmdec->mngr.info.height * 2;
+        /* perform some basic negotiation to resolve which endianess,
+         * if any, is supported by the component downstream. Query
+         * the peer caps, intersecting with our preferred caps
+         */
+        peercaps =
+            gst_pad_peer_query_caps (GST_VIDEO_DECODER_SRC_PAD (decoder),
+            gray16_caps);
+        gst_caps_unref (gray16_caps);
+
+        GST_DEBUG ("Received caps from peer: %" GST_PTR_FORMAT, peercaps);
+        if (gst_caps_is_empty (peercaps)) {
+          gst_caps_unref (peercaps);
+          return FALSE;
+        }
+
+        if (!gst_caps_is_fixed (peercaps))
+          peercaps = gst_caps_fixate (peercaps);
+
+        peerstruct = gst_caps_get_structure (peercaps, 0);
+        fmtstr = gst_structure_get_string (peerstruct, "format");
+        if (fmtstr) {
+          if (g_str_equal (fmtstr, "GRAY16_BE")) {
+            fmt = GST_VIDEO_FORMAT_GRAY16_BE;
+          } else if (g_str_equal (fmtstr, "GRAY16_LE")) {
+            fmt = GST_VIDEO_FORMAT_GRAY16_LE;
+          }
+        }
+        gst_caps_unref (peercaps);
+      } else {
+        pnmdec->size = pnmdec->mngr.info.width * pnmdec->mngr.info.height * 1;
+        fmt = GST_VIDEO_FORMAT_GRAY8;
+      }
+      break;
+    case GST_PNM_TYPE_PIXMAP:
+      pnmdec->size = pnmdec->mngr.info.width * pnmdec->mngr.info.height * 3;
+      fmt = GST_VIDEO_FORMAT_RGB;
+      break;
+  }
+
+  if (fmt == GST_VIDEO_FORMAT_UNKNOWN)
+    return GST_FLOW_NOT_NEGOTIATED;
+
+  pnmdec->out_format = fmt;
+
+  output_state =
+      gst_video_decoder_set_output_state (decoder, fmt,
+      pnmdec->mngr.info.width, pnmdec->mngr.info.height, pnmdec->input_state);
+  gst_video_codec_state_unref (output_state);
+
+  if (gst_video_decoder_negotiate (decoder) == FALSE)
+    return GST_FLOW_NOT_NEGOTIATED;
+
+  return GST_FLOW_OK;
+}
+
 static gboolean
 gst_pnmdec_set_format (GstVideoDecoder * decoder, GstVideoCodecState * state)
 {
   GstPnmdec *pnmdec = (GstPnmdec *) decoder;
 
+  gst_pnmdec_negotiate (decoder);
+
   if (pnmdec->input_state)
     gst_video_codec_state_unref (pnmdec->input_state);
   pnmdec->input_state = gst_video_codec_state_ref (state);
@@ -150,7 +240,7 @@
 {
   GScanner *scanner;
   guint i = 0;
-  guint target;
+  guint target, last_val = 0;
   GstMapInfo map;
   guint8 *outdata;
 
@@ -158,42 +248,78 @@
 
   gst_buffer_map (s->buf, &map, GST_MAP_WRITE);
 
-  /* leave the number of bytes already parsed */
-  outdata = map.data + s->current_size;
-  if (!bs) {
-    goto drop_ok;
+  if (bs) {
+    GST_MEMDUMP_OBJECT (s, "Starting parse:", b, MIN (16, bs));
   }
 
-  if (s->last_byte) {
-    while (*b >= '0' && *b <= '9') {
-      s->last_byte = 10 * s->last_byte + *b - '0';
+  /* leave the number of bytes already parsed */
+  outdata = map.data + s->current_size;
+
+  if (s->have_last_val) {
+    while (bs && *b >= '0' && *b <= '9') {
+      s->last_val = 10 * s->last_val + *b - '0';
       b++;
       if (!--bs) {
         goto drop_error;
       }
     }
-    if (s->last_byte > 255) {
+    if (s->last_val > s->mngr.info.max) {
       GST_DEBUG_OBJECT (s, "Corrupt ASCII encoded PNM file.");
       goto drop_error;
     }
+
+    GST_LOG_OBJECT (s, "Collected partial value from previous parse - %u",
+        s->last_val);
+    if (s->mngr.info.max > 255) {
+      if (i + 1 >= target) {
+        GST_DEBUG_OBJECT (s, "PNM file contains too much data.");
+        goto drop_error;
+      }
+      if (s->out_format == GST_VIDEO_FORMAT_GRAY16_BE)
+        GST_WRITE_UINT16_BE (outdata + i, s->last_val);
+      else
+        GST_WRITE_UINT16_LE (outdata + i, s->last_val);
+      i += 2;
+    } else {
+      outdata[i++] = s->last_val;
+    }
+    last_val = s->last_val;
+    s->have_last_val = FALSE;
   }
 
-  if (s->last_byte) {
-    outdata[i++] = s->last_byte;
-    s->last_byte = 0;
-  }
+  /* Might be no data if we're at EOS */
+  if (!bs)
+    goto done;
 
   scanner = g_scanner_new (NULL);
   g_scanner_input_text (scanner, (gchar *) b, bs);
   while (!g_scanner_eof (scanner)) {
     switch (g_scanner_get_next_token (scanner)) {
       case G_TOKEN_INT:
-        if (i == target) {
-          GST_DEBUG_OBJECT (s, "PNM file contains too much data.");
-          g_scanner_destroy (scanner);
-          goto drop_error;
+        if (s->mngr.info.max > 255) {
+          if (i + 1 >= target) {
+            GST_DEBUG_OBJECT (s,
+                "PNM file contains too much data after line %u col %u.",
+                scanner->line, scanner->position);
+            g_scanner_destroy (scanner);
+            goto done;          // drop_error;
+          }
+          if (s->out_format == GST_VIDEO_FORMAT_GRAY16_BE)
+            GST_WRITE_UINT16_BE (outdata + i, scanner->value.v_int);
+          else
+            GST_WRITE_UINT16_LE (outdata + i, scanner->value.v_int);
+          i += 2;
+        } else {
+          if (i == target) {
+            GST_DEBUG_OBJECT (s,
+                "PNM file contains too much data after line %u col %u.",
+                scanner->line, scanner->position);
+            g_scanner_destroy (scanner);
+            goto drop_error;
+          }
+          outdata[i++] = scanner->value.v_int;
         }
-        outdata[i++] = scanner->value.v_int;
+        last_val = scanner->value.v_int;
         break;
       default:
         /* Should we care? */ ;
@@ -202,18 +328,25 @@
   g_scanner_destroy (scanner);
 
   /* If we didn't get the whole image, handle the last byte with care. */
-  if (i && i < target && b[bs - 1] > '0' && b[bs - 1] <= '9') {
-    s->last_byte = outdata[--i];
+  if (i && i < target && b[bs - 1] >= '0' && b[bs - 1] <= '9') {
+    s->last_val = last_val;
+    s->have_last_val = TRUE;
+    if (s->mngr.info.max > 255)
+      i -= 2;
+    else
+      i--;
+    GST_LOG_OBJECT (s, "Stored last value %u for next parse cycle",
+        s->last_val);
   }
 
-  /* Update the number of bytes parsed in this scan */
+done:
+  /* Update the number of output bytes parsed in this scan */
   s->current_size += i;
+  GST_LOG_OBJECT (s, "Parsed %u bytes, now have %u bytes of %u output",
+      i, s->current_size, s->size);
   gst_buffer_unmap (s->buf, &map);
 
   return GST_FLOW_OK;
-drop_ok:
-  gst_buffer_unmap (s->buf, &map);
-  return GST_FLOW_OK;
 
 drop_error:
   gst_buffer_unmap (s->buf, &map);
@@ -269,7 +402,10 @@
       i_rowstride = 3 * s->mngr.info.width;
       o_rowstride = GST_ROUND_UP_4 (i_rowstride);
     } else {
-      i_rowstride = s->mngr.info.width;
+      if (s->mngr.info.max > 255)
+        i_rowstride = s->mngr.info.width * 2;
+      else
+        i_rowstride = s->mngr.info.width;
       o_rowstride = GST_ROUND_UP_4 (i_rowstride);
     }
 
@@ -283,8 +419,28 @@
   }
 
   if (s->mngr.info.type != GST_PNM_TYPE_BITMAP) {
-    /* Convert the pixels from 0 - max range to 0 - 255 range */
-    if (s->mngr.info.max < 255) {
+    if (s->mngr.info.max > 255 && s->mngr.info.max < 65535) {
+      /* Convert the pixels from 0 - max range to 0 - 65535 range
+       * and appropriate endianness (input is always BE) */
+      guint8 *data = omap.data;
+      gint max = s->mngr.info.max;
+      if (s->out_format == GST_VIDEO_FORMAT_GRAY16_BE) {
+        for (i = 0; i < total_bytes; i += 2) {
+          /* Clamp to 65535 */
+          guint16 val = GST_READ_UINT16_BE (data + i);
+          val = (val > max) ? 65535 : 65535 * val / max;
+          GST_WRITE_UINT16_BE (data + i, val);
+        }
+      } else {
+        for (i = 0; i < total_bytes; i += 2) {
+          /* Clamp to 65535 */
+          guint16 val = GST_READ_UINT16_BE (data + i);
+          val = (val > max) ? 65535 : 65535 * val / max;
+          GST_WRITE_UINT16_LE (data + i, val);
+        }
+      }
+    } else if (s->mngr.info.max < 255) {
+      /* Convert the pixels from 0 - max range to 0 - 255 range */
       gint max = s->mngr.info.max;
       for (i = 0; i < total_bytes; i++) {
         if (omap.data[i] <= max) {
@@ -305,6 +461,8 @@
   }
   gst_buffer_unmap (frame->output_buffer, &omap);
 
+  s->current_size = 0;
+
   r = gst_video_decoder_finish_frame (GST_VIDEO_DECODER (s), frame);
 
 out:
@@ -321,21 +479,23 @@
   GstPnmdec *s = GST_PNMDEC (decoder);
   GstFlowReturn r = GST_FLOW_OK;
   guint offset = 0;
-  GstVideoFormat format = GST_VIDEO_FORMAT_UNKNOWN;
-  const guint8 *raw_data;
-  GstVideoCodecState *output_state;
+  const guint8 *raw_data = NULL;
 
   GST_VIDEO_CODEC_FRAME_SET_SYNC_POINT (frame);
 
   size = gst_adapter_available (adapter);
-  if (size < 8) {
-    goto need_more_data;
-  }
-  raw_data = gst_adapter_map (adapter, size);
+  if (size > 0)
+    raw_data = gst_adapter_map (adapter, size);
+
+  GST_LOG_OBJECT (s, "Entering parse with %" G_GSIZE_FORMAT " bytes. at_eos %d",
+      size, at_eos);
 
   if (s->mngr.info.fields != GST_PNM_INFO_FIELDS_ALL) {
     GstPnmInfoMngrResult res;
 
+    if (size < 8)
+      goto need_more_data;
+
     res = gst_pnm_info_mngr_scan (&s->mngr, raw_data, size);
 
     switch (res) {
@@ -346,38 +506,16 @@
         r = GST_FLOW_OK;
         goto out;
       case GST_PNM_INFO_MNGR_RESULT_FINISHED:
-        switch (s->mngr.info.type) {
-          case GST_PNM_TYPE_BITMAP:
-            if (s->mngr.info.encoding == GST_PNM_ENCODING_ASCII) {
-              r = GST_FLOW_ERROR;
-              goto out;
-            }
-            s->size = s->mngr.info.width * s->mngr.info.height * 1;
-            format = GST_VIDEO_FORMAT_GRAY8;
-            break;
-          case GST_PNM_TYPE_GRAYMAP:
-            s->size = s->mngr.info.width * s->mngr.info.height * 1;
-            format = GST_VIDEO_FORMAT_GRAY8;
-            break;
-          case GST_PNM_TYPE_PIXMAP:
-            s->size = s->mngr.info.width * s->mngr.info.height * 3;
-            format = GST_VIDEO_FORMAT_RGB;
-            break;
-        }
-        output_state =
-            gst_video_decoder_set_output_state (GST_VIDEO_DECODER (s), format,
-            s->mngr.info.width, s->mngr.info.height, s->input_state);
-        gst_video_codec_state_unref (output_state);
-        if (gst_video_decoder_negotiate (GST_VIDEO_DECODER (s)) == FALSE) {
-          r = GST_FLOW_NOT_NEGOTIATED;
+
+        r = gst_pnmdec_negotiate (decoder);
+        if (r != GST_FLOW_OK)
           goto out;
-        }
 
         if (s->mngr.info.encoding == GST_PNM_ENCODING_ASCII) {
-          s->mngr.data_offset++;
           /* It is not possible to know the size of input ascii data to parse.
              So we have to parse and know the number of pixels parsed and
              then finally decide when we have full frame */
+          GST_DEBUG_OBJECT (s, "Allocating output frame of size %u", s->size);
           s->buf = gst_buffer_new_and_alloc (s->size);
         }
         offset = s->mngr.data_offset;
@@ -387,8 +525,9 @@
   }
 
   if (s->mngr.info.encoding == GST_PNM_ENCODING_ASCII) {
-    /* Parse ASCII data dn populate s->current_size with the number of 
+    /* Parse ASCII data and populate s->current_size with the number of
        bytes actually parsed from the input data */
+    GST_DEBUG_OBJECT (s, "Parsing %u bytes at offset %u", (guint) size, offset);
     r = gst_pnmdec_parse_ascii (s, raw_data + offset, size);
   } else {
     /* Bitmap Contains 8 pixels in a byte */
@@ -417,7 +556,25 @@
 gst_pnmdec_start (GstVideoDecoder * decoder)
 {
   GstPnmdec *pnmdec = (GstPnmdec *) decoder;
-
   gst_video_decoder_set_packetized (GST_VIDEO_DECODER (pnmdec), FALSE);
+  gst_pnmdec_flush (pnmdec);
   return TRUE;
 }
+
+static GstFlowReturn
+gst_pnmdec_finish (GstVideoDecoder * decoder)
+{
+  GstPnmdec *s = (GstPnmdec *) decoder;
+
+  GST_LOG_OBJECT (s, "finishing");
+
+  if (s->mngr.info.encoding == GST_PNM_ENCODING_ASCII) {
+    /* One last go at outputting any final value */
+    gst_pnmdec_parse_ascii (s, 0, 0);
+    if (s->size <= s->current_size) {
+      return gst_video_decoder_have_frame (decoder);
+    }
+  }
+
+  return GST_FLOW_OK;
+}
diff --git a/gst/pnm/gstpnmdec.h b/gst/pnm/gstpnmdec.h
index 28a3c50..b5aac35 100644
--- a/gst/pnm/gstpnmdec.h
+++ b/gst/pnm/gstpnmdec.h
@@ -42,8 +42,10 @@
   GstVideoDecoder decoder;
   GstPnmInfoMngr mngr;
   GstVideoCodecState *input_state;
-  guint size, last_byte, current_size ;
+  guint size, last_val, current_size ;
+  gboolean have_last_val;
   GstBuffer *buf;
+  GstVideoFormat out_format;
 };
 
 struct _GstPnmdecClass
diff --git a/gst/pnm/gstpnmenc.c b/gst/pnm/gstpnmenc.c
index 32fd6f6..2c45191 100644
--- a/gst/pnm/gstpnmenc.c
+++ b/gst/pnm/gstpnmenc.c
@@ -24,7 +24,7 @@
  * To enable ASCII encoding, set the parameter ascii to TRUE. If you omit
  * the parameter or set it to FALSE, the output will be raw encoded.
  *
- * <refsect>
+ * <refsect2>
  * <title>Example launch line</title>
  * |[
  * gst-launch-1.0 videotestsrc num_buffers=1 ! videoconvert ! "video/x-raw,format=GRAY8" ! pnmenc ascii=true ! filesink location=test.pnm
@@ -53,10 +53,12 @@
       /* Add here. */
 };
 
+
+
 static GstStaticPadTemplate sink_pad_template =
-    GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS,
-    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("RGB") "; "
-        GST_VIDEO_CAPS_MAKE ("GRAY8")));
+GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS,
+    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE
+        ("{ RGB, GRAY8, GRAY16_BE, GRAY16_LE }")));
 
 
 static GstStaticPadTemplate src_pad_template =
@@ -134,16 +136,27 @@
   gboolean ret = TRUE;
   GstVideoInfo *info;
   GstVideoCodecState *output_state;
+  const gchar *mime_type = NULL;
 
   pnmenc = GST_PNMENC (encoder);
   info = &state->info;
 
   switch (GST_VIDEO_INFO_FORMAT (info)) {
     case GST_VIDEO_FORMAT_RGB:
+      pnmenc->info.max = 255;
       pnmenc->info.type = GST_PNM_TYPE_PIXMAP;
+      mime_type = MIME_PM;
       break;
     case GST_VIDEO_FORMAT_GRAY8:
+      pnmenc->info.max = 255;
       pnmenc->info.type = GST_PNM_TYPE_GRAYMAP;
+      mime_type = MIME_GM;
+      break;
+    case GST_VIDEO_FORMAT_GRAY16_BE:
+    case GST_VIDEO_FORMAT_GRAY16_LE:
+      pnmenc->info.max = 65535;
+      pnmenc->info.type = GST_PNM_TYPE_GRAYMAP;
+      mime_type = MIME_GM;
       break;
     default:
       ret = FALSE;
@@ -152,8 +165,6 @@
 
   pnmenc->info.width = GST_VIDEO_INFO_WIDTH (info);
   pnmenc->info.height = GST_VIDEO_INFO_HEIGHT (info);
-  /* Supported max value is only one, that is 255 */
-  pnmenc->info.max = 255;
 
   if (pnmenc->input_state)
     gst_video_codec_state_unref (pnmenc->input_state);
@@ -161,7 +172,7 @@
 
   output_state =
       gst_video_encoder_set_output_state (encoder,
-      gst_caps_new_empty_simple ("image/pnm"), state);
+      gst_caps_new_empty_simple (mime_type), state);
   gst_video_codec_state_unref (output_state);
 
 done:
@@ -172,7 +183,7 @@
 gst_pnmenc_handle_frame (GstVideoEncoder * encoder, GstVideoCodecFrame * frame)
 {
   GstPnmenc *pnmenc;
-  guint size, pixels;
+  guint size, pixels, bytesize;
   GstMapInfo omap, imap;
   gchar *header = NULL;
   GstVideoInfo *info;
@@ -180,16 +191,34 @@
   guint i_rowstride, o_rowstride;
   guint bytes = 0, index, head_size;
   guint i, j;
-
+  guint maxbytes_per_pixel, str_len;
+  gchar format_str[4];
   pnmenc = GST_PNMENC (encoder);
   info = &pnmenc->input_state->info;
 
   switch (GST_VIDEO_INFO_FORMAT (info)) {
     case GST_VIDEO_FORMAT_RGB:
       pixels = size = pnmenc->info.width * pnmenc->info.height * 3;
+      bytesize = 1;
+      maxbytes_per_pixel = 4;
+      str_len = 3;
+      g_strlcpy (format_str, "%3i", 4);
       break;
     case GST_VIDEO_FORMAT_GRAY8:
       pixels = size = pnmenc->info.width * pnmenc->info.height * 1;
+      bytesize = 1;
+      maxbytes_per_pixel = 4;
+      str_len = 3;
+      g_strlcpy (format_str, "%3i", 4);
+      break;
+    case GST_VIDEO_FORMAT_GRAY16_LE:
+    case GST_VIDEO_FORMAT_GRAY16_BE:
+      pixels = pnmenc->info.width * pnmenc->info.height * 1;
+      bytesize = 2;
+      size = pixels * bytesize;
+      maxbytes_per_pixel = 6;
+      str_len = 5;
+      g_strlcpy (format_str, "%5i", 4);
       break;
     default:
       ret = FALSE;
@@ -222,58 +251,111 @@
     ret = GST_FLOW_ERROR;
     goto done;
   }
-  memcpy (omap.data, header, strlen (header));
-
+  /* Copy out the header first */
   head_size = strlen (header);
+  memcpy (omap.data, header, head_size);
+
   if (pnmenc->info.encoding == GST_PNM_ENCODING_ASCII) {
     /* We need to convert to ASCII */
-    if (pnmenc->info.width % 4 != 0) {
-      /* Convert from gstreamer rowstride to PNM rowstride */
-      if (pnmenc->info.type == GST_PNM_TYPE_PIXMAP) {
-        o_rowstride = 3 * pnmenc->info.width;
-      } else {
-        o_rowstride = pnmenc->info.width;
-      }
-      i_rowstride = GST_VIDEO_FRAME_COMP_STRIDE (pnmenc->input_state, 0);
-
-      for (i = 0; i < pnmenc->info.height; i++) {
-        index = i * i_rowstride;
-        for (j = 0; j < o_rowstride; j++, bytes++, index++) {
-          g_snprintf ((char *) omap.data + head_size, 4, "%3i",
-              imap.data[index]);
-          head_size += 3;
-          omap.data[head_size++] = ' ';
-          /* Add new line so that file will not end up with sinle big line */
-          if (!((bytes + 1) % 20))
-            omap.data[head_size++] = '\n';
-        }
-      }
+    /* Convert from gstreamer rowstride to PNM rowstride as we go */
+    if (pnmenc->info.type == GST_PNM_TYPE_PIXMAP) {
+      o_rowstride = 3 * pnmenc->info.width;
     } else {
-      for (i = 0; i < pixels; i++) {
-        g_snprintf ((char *) omap.data + head_size, 4, "%3i", imap.data[i]);
-        head_size += 3;
-        omap.data[head_size++] = ' ';
-        if (!((i + 1) % 20))
-          omap.data[head_size++] = '\n';
-      }
+      o_rowstride = pnmenc->info.width;
     }
-  } else {
-    /* Need to convert from GStreamer rowstride to PNM rowstride */
-    if (pnmenc->info.width % 4 != 0) {
-      if (pnmenc->info.type == GST_PNM_TYPE_PIXMAP) {
-        o_rowstride = 3 * pnmenc->info.width;
-      } else {
-        o_rowstride = pnmenc->info.width;
-      }
-      i_rowstride = GST_VIDEO_FRAME_COMP_STRIDE (pnmenc->input_state, 0);
+    i_rowstride = GST_VIDEO_FRAME_COMP_STRIDE (pnmenc->input_state, 0);
 
-      for (i = 0; i < pnmenc->info.height; i++)
-        memcpy (omap.data + head_size + o_rowstride * i,
-            imap.data + i_rowstride * i, o_rowstride);
+    switch (GST_VIDEO_INFO_FORMAT (info)) {
+      case GST_VIDEO_FORMAT_RGB:
+      case GST_VIDEO_FORMAT_GRAY8:
+        for (i = 0; i < pnmenc->info.height; i++) {
+          index = i * i_rowstride;
+          for (j = 0; j < o_rowstride; j++, bytes++, index++) {
+            g_snprintf ((char *) omap.data + head_size, maxbytes_per_pixel,
+                format_str, imap.data[index]);
+            head_size += str_len;
+            omap.data[head_size++] = ' ';
+            /* Add new line so that file will not end up with single big line */
+            if (!((bytes + 1) % 20))
+              omap.data[head_size++] = '\n';
+          }
+        }
+        break;
+      case GST_VIDEO_FORMAT_GRAY16_BE:
+        for (i = 0; i < pnmenc->info.height; i++) {
+          index = i * i_rowstride;
+          for (j = 0; j < o_rowstride; j++, bytes++, index += 2) {
+            g_snprintf ((char *) omap.data + head_size, maxbytes_per_pixel,
+                format_str, GST_READ_UINT16_BE (imap.data + index));
+            head_size += str_len;
+            omap.data[head_size++] = ' ';
+            /* Add new line so that file will not end up with single big line */
+            if (!((bytes + 1) % 20))
+              omap.data[head_size++] = '\n';
+          }
+        }
+        break;
+      case GST_VIDEO_FORMAT_GRAY16_LE:
+        for (i = 0; i < pnmenc->info.height; i++) {
+          index = i * i_rowstride;
+          for (j = 0; j < o_rowstride; j++, bytes++, index += 2) {
+            g_snprintf ((char *) omap.data + head_size, maxbytes_per_pixel,
+                format_str, GST_READ_UINT16_LE (imap.data + index));
+            head_size += str_len;
+            omap.data[head_size++] = ' ';
+            /* Add new line so that file will not end up with single big line */
+            if (!((bytes + 1) % 20))
+              omap.data[head_size++] = '\n';
+          }
+        }
+        break;
+      default:
+        GST_ERROR_OBJECT (encoder, "Unhandled format %s",
+            gst_video_format_to_string (GST_VIDEO_INFO_FORMAT (info)));
+        gst_buffer_unmap (frame->output_buffer, &omap);
+        gst_buffer_unmap (frame->input_buffer, &imap);
+        g_free (header);
+        return GST_FLOW_ERROR;
+    }
+
+    gst_buffer_set_size (frame->output_buffer, head_size);
+  } else {
+    guint out_index = head_size;
+
+    /* Binary output. 8-bit, or 16-bit BE */
+    if (pnmenc->info.type == GST_PNM_TYPE_PIXMAP) {
+      o_rowstride = 3 * pnmenc->info.width * bytesize;
     } else {
-      /* size contains complete image size inlcuding header size,
-         Exclude header size while copying data */
-      memcpy (omap.data + strlen (header), imap.data, (size - head_size));
+      o_rowstride = pnmenc->info.width * bytesize;
+    }
+    i_rowstride = GST_VIDEO_FRAME_COMP_STRIDE (pnmenc->input_state, 0);
+
+    switch (GST_VIDEO_INFO_FORMAT (info)) {
+      case GST_VIDEO_FORMAT_GRAY16_BE:
+        for (i = 0; i < pnmenc->info.height; i++) {
+          index = i * i_rowstride;
+          for (j = 0; j < o_rowstride; j += 2, index += 2) {
+            guint16 val = GST_READ_UINT16_LE (imap.data + index);
+            GST_WRITE_UINT16_BE (omap.data + out_index, val);
+            out_index += 2;
+          }
+        }
+        break;
+      case GST_VIDEO_FORMAT_GRAY16_LE:
+        for (i = 0; i < pnmenc->info.height; i++) {
+          index = i * i_rowstride;
+          for (j = 0; j < o_rowstride; j += 2, index += 2) {
+            guint16 val = GST_READ_UINT16_LE (imap.data + index);
+            GST_WRITE_UINT16_BE (omap.data + out_index, val);
+            out_index += 2;
+          }
+        }
+        break;
+      default:
+        for (i = 0; i < pnmenc->info.height; i++) {
+          memcpy (omap.data + head_size + o_rowstride * i,
+              imap.data + i_rowstride * i, o_rowstride);
+        }
     }
   }
 
@@ -303,11 +385,8 @@
       g_param_spec_boolean ("ascii", "ASCII Encoding", "The output will be "
           "ASCII encoded", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_pad_template));
-
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_pad_template));
+  gst_element_class_add_static_pad_template (element_class, &sink_pad_template);
+  gst_element_class_add_static_pad_template (element_class, &src_pad_template);
 
   gst_element_class_set_static_metadata (element_class, "PNM image encoder",
       "Codec/Encoder/Image",
diff --git a/gst/pnm/gstpnmutils.c b/gst/pnm/gstpnmutils.c
index b7441cd..a72e423 100644
--- a/gst/pnm/gstpnmutils.c
+++ b/gst/pnm/gstpnmutils.c
@@ -178,7 +178,11 @@
           case ' ':
             /* Check for maximum and minimum supported bit depth and
                return error if its out of range */
-            if ((mngr->info.max > 255) || (mngr->info.max < 1)) {
+            if (mngr->info.type == GST_PNM_TYPE_GRAYMAP) {
+              if ((mngr->info.max > 65535) || (mngr->info.max < 1)) {
+                return GST_PNM_INFO_MNGR_RESULT_FAILED;
+              }
+            } else if ((mngr->info.max > 255) || (mngr->info.max < 1)) {
               return GST_PNM_INFO_MNGR_RESULT_FAILED;
             }
             mngr->info.fields |= GST_PNM_INFO_FIELDS_MAX;
diff --git a/gst/rawparse/Makefile.am b/gst/rawparse/Makefile.am
index 03eeb48..623dc94 100644
--- a/gst/rawparse/Makefile.am
+++ b/gst/rawparse/Makefile.am
@@ -2,9 +2,13 @@
 plugin_LTLIBRARIES = libgstrawparse.la
 
 libgstrawparse_la_SOURCES = \
-	gstrawparse.c \
+	gstunalignedaudioparse.c \
+	gstunalignedvideoparse.c \
 	gstaudioparse.c \
 	gstvideoparse.c \
+	gstrawbaseparse.c \
+	gstrawaudioparse.c \
+	gstrawvideoparse.c \
 	plugin.c
 libgstrawparse_la_CFLAGS = \
 		$(GST_PLUGINS_BASE_CFLAGS) \
@@ -19,6 +23,12 @@
 libgstrawparse_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
 
 noinst_HEADERS = \
+	unalignedaudio.h \
+	unalignedvideo.h \
+	gstunalignedaudioparse.h \
+	gstunalignedvideoparse.h \
 	gstaudioparse.h \
-	gstrawparse.h \
-	gstvideoparse.h
+	gstvideoparse.h \
+	gstrawbaseparse.h \
+	gstrawaudioparse.h \
+	gstrawvideoparse.h
diff --git a/gst/rawparse/Makefile.in b/gst/rawparse/Makefile.in
index cff1ba5..b024238 100644
--- a/gst/rawparse/Makefile.in
+++ b/gst/rawparse/Makefile.in
@@ -165,9 +165,15 @@
 am__DEPENDENCIES_1 =
 libgstrawparse_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-am_libgstrawparse_la_OBJECTS = libgstrawparse_la-gstrawparse.lo \
+am_libgstrawparse_la_OBJECTS =  \
+	libgstrawparse_la-gstunalignedaudioparse.lo \
+	libgstrawparse_la-gstunalignedvideoparse.lo \
 	libgstrawparse_la-gstaudioparse.lo \
-	libgstrawparse_la-gstvideoparse.lo libgstrawparse_la-plugin.lo
+	libgstrawparse_la-gstvideoparse.lo \
+	libgstrawparse_la-gstrawbaseparse.lo \
+	libgstrawparse_la-gstrawaudioparse.lo \
+	libgstrawparse_la-gstrawvideoparse.lo \
+	libgstrawparse_la-plugin.lo
 libgstrawparse_la_OBJECTS = $(am_libgstrawparse_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -304,6 +310,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +333,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +384,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +531,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +659,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +701,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -781,9 +798,13 @@
 wayland_scanner = @wayland_scanner@
 plugin_LTLIBRARIES = libgstrawparse.la
 libgstrawparse_la_SOURCES = \
-	gstrawparse.c \
+	gstunalignedaudioparse.c \
+	gstunalignedvideoparse.c \
 	gstaudioparse.c \
 	gstvideoparse.c \
+	gstrawbaseparse.c \
+	gstrawaudioparse.c \
+	gstrawvideoparse.c \
 	plugin.c
 
 libgstrawparse_la_CFLAGS = \
@@ -800,9 +821,15 @@
 libgstrawparse_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
 libgstrawparse_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
 noinst_HEADERS = \
+	unalignedaudio.h \
+	unalignedvideo.h \
+	gstunalignedaudioparse.h \
+	gstunalignedvideoparse.h \
 	gstaudioparse.h \
-	gstrawparse.h \
-	gstvideoparse.h
+	gstvideoparse.h \
+	gstrawbaseparse.h \
+	gstrawaudioparse.h \
+	gstrawvideoparse.h
 
 all: all-am
 
@@ -883,7 +910,11 @@
 	-rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrawparse_la-gstaudioparse.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrawparse_la-gstrawparse.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrawparse_la-gstrawaudioparse.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrawparse_la-gstrawbaseparse.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrawparse_la-gstrawvideoparse.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrawparse_la-gstunalignedaudioparse.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrawparse_la-gstunalignedvideoparse.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrawparse_la-gstvideoparse.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrawparse_la-plugin.Plo@am__quote@
 
@@ -911,12 +942,19 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
-libgstrawparse_la-gstrawparse.lo: gstrawparse.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrawparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrawparse_la_CFLAGS) $(CFLAGS) -MT libgstrawparse_la-gstrawparse.lo -MD -MP -MF $(DEPDIR)/libgstrawparse_la-gstrawparse.Tpo -c -o libgstrawparse_la-gstrawparse.lo `test -f 'gstrawparse.c' || echo '$(srcdir)/'`gstrawparse.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrawparse_la-gstrawparse.Tpo $(DEPDIR)/libgstrawparse_la-gstrawparse.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstrawparse.c' object='libgstrawparse_la-gstrawparse.lo' libtool=yes @AMDEPBACKSLASH@
+libgstrawparse_la-gstunalignedaudioparse.lo: gstunalignedaudioparse.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrawparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrawparse_la_CFLAGS) $(CFLAGS) -MT libgstrawparse_la-gstunalignedaudioparse.lo -MD -MP -MF $(DEPDIR)/libgstrawparse_la-gstunalignedaudioparse.Tpo -c -o libgstrawparse_la-gstunalignedaudioparse.lo `test -f 'gstunalignedaudioparse.c' || echo '$(srcdir)/'`gstunalignedaudioparse.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrawparse_la-gstunalignedaudioparse.Tpo $(DEPDIR)/libgstrawparse_la-gstunalignedaudioparse.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstunalignedaudioparse.c' object='libgstrawparse_la-gstunalignedaudioparse.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrawparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrawparse_la_CFLAGS) $(CFLAGS) -c -o libgstrawparse_la-gstrawparse.lo `test -f 'gstrawparse.c' || echo '$(srcdir)/'`gstrawparse.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrawparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrawparse_la_CFLAGS) $(CFLAGS) -c -o libgstrawparse_la-gstunalignedaudioparse.lo `test -f 'gstunalignedaudioparse.c' || echo '$(srcdir)/'`gstunalignedaudioparse.c
+
+libgstrawparse_la-gstunalignedvideoparse.lo: gstunalignedvideoparse.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrawparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrawparse_la_CFLAGS) $(CFLAGS) -MT libgstrawparse_la-gstunalignedvideoparse.lo -MD -MP -MF $(DEPDIR)/libgstrawparse_la-gstunalignedvideoparse.Tpo -c -o libgstrawparse_la-gstunalignedvideoparse.lo `test -f 'gstunalignedvideoparse.c' || echo '$(srcdir)/'`gstunalignedvideoparse.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrawparse_la-gstunalignedvideoparse.Tpo $(DEPDIR)/libgstrawparse_la-gstunalignedvideoparse.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstunalignedvideoparse.c' object='libgstrawparse_la-gstunalignedvideoparse.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrawparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrawparse_la_CFLAGS) $(CFLAGS) -c -o libgstrawparse_la-gstunalignedvideoparse.lo `test -f 'gstunalignedvideoparse.c' || echo '$(srcdir)/'`gstunalignedvideoparse.c
 
 libgstrawparse_la-gstaudioparse.lo: gstaudioparse.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrawparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrawparse_la_CFLAGS) $(CFLAGS) -MT libgstrawparse_la-gstaudioparse.lo -MD -MP -MF $(DEPDIR)/libgstrawparse_la-gstaudioparse.Tpo -c -o libgstrawparse_la-gstaudioparse.lo `test -f 'gstaudioparse.c' || echo '$(srcdir)/'`gstaudioparse.c
@@ -932,6 +970,27 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrawparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrawparse_la_CFLAGS) $(CFLAGS) -c -o libgstrawparse_la-gstvideoparse.lo `test -f 'gstvideoparse.c' || echo '$(srcdir)/'`gstvideoparse.c
 
+libgstrawparse_la-gstrawbaseparse.lo: gstrawbaseparse.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrawparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrawparse_la_CFLAGS) $(CFLAGS) -MT libgstrawparse_la-gstrawbaseparse.lo -MD -MP -MF $(DEPDIR)/libgstrawparse_la-gstrawbaseparse.Tpo -c -o libgstrawparse_la-gstrawbaseparse.lo `test -f 'gstrawbaseparse.c' || echo '$(srcdir)/'`gstrawbaseparse.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrawparse_la-gstrawbaseparse.Tpo $(DEPDIR)/libgstrawparse_la-gstrawbaseparse.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstrawbaseparse.c' object='libgstrawparse_la-gstrawbaseparse.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrawparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrawparse_la_CFLAGS) $(CFLAGS) -c -o libgstrawparse_la-gstrawbaseparse.lo `test -f 'gstrawbaseparse.c' || echo '$(srcdir)/'`gstrawbaseparse.c
+
+libgstrawparse_la-gstrawaudioparse.lo: gstrawaudioparse.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrawparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrawparse_la_CFLAGS) $(CFLAGS) -MT libgstrawparse_la-gstrawaudioparse.lo -MD -MP -MF $(DEPDIR)/libgstrawparse_la-gstrawaudioparse.Tpo -c -o libgstrawparse_la-gstrawaudioparse.lo `test -f 'gstrawaudioparse.c' || echo '$(srcdir)/'`gstrawaudioparse.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrawparse_la-gstrawaudioparse.Tpo $(DEPDIR)/libgstrawparse_la-gstrawaudioparse.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstrawaudioparse.c' object='libgstrawparse_la-gstrawaudioparse.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrawparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrawparse_la_CFLAGS) $(CFLAGS) -c -o libgstrawparse_la-gstrawaudioparse.lo `test -f 'gstrawaudioparse.c' || echo '$(srcdir)/'`gstrawaudioparse.c
+
+libgstrawparse_la-gstrawvideoparse.lo: gstrawvideoparse.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrawparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrawparse_la_CFLAGS) $(CFLAGS) -MT libgstrawparse_la-gstrawvideoparse.lo -MD -MP -MF $(DEPDIR)/libgstrawparse_la-gstrawvideoparse.Tpo -c -o libgstrawparse_la-gstrawvideoparse.lo `test -f 'gstrawvideoparse.c' || echo '$(srcdir)/'`gstrawvideoparse.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrawparse_la-gstrawvideoparse.Tpo $(DEPDIR)/libgstrawparse_la-gstrawvideoparse.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstrawvideoparse.c' object='libgstrawparse_la-gstrawvideoparse.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrawparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrawparse_la_CFLAGS) $(CFLAGS) -c -o libgstrawparse_la-gstrawvideoparse.lo `test -f 'gstrawvideoparse.c' || echo '$(srcdir)/'`gstrawvideoparse.c
+
 libgstrawparse_la-plugin.lo: plugin.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrawparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrawparse_la_CFLAGS) $(CFLAGS) -MT libgstrawparse_la-plugin.lo -MD -MP -MF $(DEPDIR)/libgstrawparse_la-plugin.Tpo -c -o libgstrawparse_la-plugin.lo `test -f 'plugin.c' || echo '$(srcdir)/'`plugin.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrawparse_la-plugin.Tpo $(DEPDIR)/libgstrawparse_la-plugin.Plo
diff --git a/gst/rawparse/gstaudioparse.c b/gst/rawparse/gstaudioparse.c
index 04477f5..4e7f694 100644
--- a/gst/rawparse/gstaudioparse.c
+++ b/gst/rawparse/gstaudioparse.c
@@ -22,6 +22,8 @@
  * SECTION:element-audioparse
  *
  * Converts a byte stream into audio frames.
+ *
+ * <note>This element is deprecated. Use #GstRawAudioParse instead.</note>
  */
 
 #ifdef HAVE_CONFIG_H
@@ -32,10 +34,34 @@
  * for now with newer GLib versions (>= 2.31.0) */
 #define GLIB_DISABLE_DEPRECATION_WARNINGS
 
+#include <gst/gst.h>
+#include <gst/audio/audio.h>
 #include "gstaudioparse.h"
+#include "gstrawaudioparse.h"
+#include "unalignedaudio.h"
 
 #include <string.h>
 
+
+static GstStaticPadTemplate static_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS_ANY);
+
+
+static GstStaticPadTemplate static_src_template =
+    GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS (GST_AUDIO_CAPS_MAKE (GST_AUDIO_FORMATS_ALL)
+        ", layout = (string) { interleaved, non-interleaved }; "
+        GST_UNALIGNED_RAW_AUDIO_CAPS "; "
+        "audio/x-alaw, rate=(int)[1,MAX], channels=(int)[1,MAX]; "
+        "audio/x-mulaw, rate=(int)[1,MAX], channels=(int)[1,MAX]")
+    );
+
+
 typedef enum
 {
   GST_AUDIO_PARSE_FORMAT_RAW,
@@ -43,21 +69,10 @@
   GST_AUDIO_PARSE_FORMAT_ALAW
 } GstAudioParseFormat;
 
-typedef enum
-{
-  GST_AUDIO_PARSE_ENDIANNESS_LITTLE = 1234,
-  GST_AUDIO_PARSE_ENDIANNESS_BIG = 4321
-} GstAudioParseEndianness;
-
 static void gst_audio_parse_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec);
 static void gst_audio_parse_get_property (GObject * object, guint prop_id,
     GValue * value, GParamSpec * pspec);
-static void gst_audio_parse_finalize (GObject * object);
-
-static GstCaps *gst_audio_parse_get_caps (GstRawParse * rp);
-
-static void gst_audio_parse_update_frame_size (GstAudioParse * ap);
 
 GST_DEBUG_CATEGORY_STATIC (gst_audio_parse_debug);
 #define GST_CAT_DEFAULT gst_audio_parse_debug
@@ -96,21 +111,16 @@
 
 
 #define gst_audio_parse_parent_class parent_class
-G_DEFINE_TYPE (GstAudioParse, gst_audio_parse, GST_TYPE_RAW_PARSE);
+G_DEFINE_TYPE (GstAudioParse, gst_audio_parse, GST_TYPE_BIN);
 
 static void
 gst_audio_parse_class_init (GstAudioParseClass * klass)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
   GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
-  GstRawParseClass *rp_class = GST_RAW_PARSE_CLASS (klass);
-  GstCaps *caps;
 
   gobject_class->set_property = gst_audio_parse_set_property;
   gobject_class->get_property = gst_audio_parse_get_property;
-  gobject_class->finalize = gst_audio_parse_finalize;
-
-  rp_class->get_caps = gst_audio_parse_get_caps;
 
   g_object_class_install_property (gobject_class, PROP_FORMAT,
       g_param_spec_enum ("format", "Format",
@@ -154,17 +164,13 @@
 
   gst_element_class_set_static_metadata (gstelement_class, "Audio Parse",
       "Filter/Audio",
-      "Converts stream into audio frames",
+      "Converts stream into audio frames (deprecated: use rawaudioparse instead)",
       "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
 
-  caps = gst_caps_from_string (GST_AUDIO_CAPS_MAKE (GST_AUDIO_FORMATS_ALL)
-      ", layout = (string) { interleaved, non-interleaved }; "
-      "audio/x-alaw, rate=(int)[1,MAX], channels=(int)[1,MAX]; "
-      "audio/x-mulaw, rate=(int)[1,MAX], channels=(int)[1,MAX]");
-
-  gst_raw_parse_class_set_src_pad_template (rp_class, caps);
-  gst_raw_parse_class_set_multiple_frames_per_buffer (rp_class, TRUE);
-  gst_caps_unref (caps);
+  gst_element_class_add_pad_template (gstelement_class,
+      gst_static_pad_template_get (&static_sink_template));
+  gst_element_class_add_pad_template (gstelement_class,
+      gst_static_pad_template_get (&static_src_template));
 
   GST_DEBUG_CATEGORY_INIT (gst_audio_parse_debug, "audioparse", 0,
       "audioparse element");
@@ -173,13 +179,28 @@
 static void
 gst_audio_parse_init (GstAudioParse * ap)
 {
-  ap->format = GST_AUDIO_PARSE_FORMAT_RAW;
-  ap->raw_format = GST_AUDIO_FORMAT_S16;
-  ap->channels = 2;
-  ap->interleaved = TRUE;
+  GstPad *inner_pad;
+  GstPad *ghostpad;
 
-  gst_audio_parse_update_frame_size (ap);
-  gst_raw_parse_set_fps (GST_RAW_PARSE (ap), 44100, 1);
+  ap->rawaudioparse =
+      gst_element_factory_make ("rawaudioparse", "inner_rawaudioparse");
+  g_assert (ap->rawaudioparse != NULL);
+
+  gst_bin_add (GST_BIN (ap), ap->rawaudioparse);
+
+  inner_pad = gst_element_get_static_pad (ap->rawaudioparse, "sink");
+  ghostpad =
+      gst_ghost_pad_new_from_template ("sink", inner_pad,
+      gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS (ap), "sink"));
+  gst_element_add_pad (GST_ELEMENT (ap), ghostpad);
+  gst_object_unref (GST_OBJECT (inner_pad));
+
+  inner_pad = gst_element_get_static_pad (ap->rawaudioparse, "src");
+  ghostpad =
+      gst_ghost_pad_new_from_template ("src", inner_pad,
+      gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS (ap), "src"));
+  gst_element_add_pad (GST_ELEMENT (ap), ghostpad);
+  gst_object_unref (GST_OBJECT (inner_pad));
 }
 
 static void
@@ -188,39 +209,68 @@
 {
   GstAudioParse *ap = GST_AUDIO_PARSE (object);
 
-  g_return_if_fail (!gst_raw_parse_is_negotiated (GST_RAW_PARSE (ap)));
-
   switch (prop_id) {
-    case PROP_FORMAT:
-      ap->format = g_value_get_enum (value);
-      break;
-    case PROP_RAW_FORMAT:
-      ap->raw_format = g_value_get_enum (value);
-      break;
-    case PROP_RATE:
-      gst_raw_parse_set_fps (GST_RAW_PARSE (ap), g_value_get_int (value), 1);
-      break;
-    case PROP_CHANNELS:
-      ap->channels = g_value_get_int (value);
-      break;
-    case PROP_INTERLEAVED:
-      ap->interleaved = g_value_get_boolean (value);
-      break;
-    case PROP_CHANNEL_POSITIONS:
-      if (ap->channel_positions)
-        g_value_array_free (ap->channel_positions);
+    case PROP_FORMAT:{
+      GstRawAudioParseFormat raw_parse_format;
 
-      ap->channel_positions = g_value_dup_boxed (value);
+      switch (g_value_get_enum (value)) {
+        case GST_AUDIO_PARSE_FORMAT_RAW:
+          raw_parse_format = GST_RAW_AUDIO_PARSE_FORMAT_PCM;
+          break;
+
+        case GST_AUDIO_PARSE_FORMAT_MULAW:
+          raw_parse_format = GST_RAW_AUDIO_PARSE_FORMAT_MULAW;
+          break;
+
+        case GST_AUDIO_PARSE_FORMAT_ALAW:
+          raw_parse_format = GST_RAW_AUDIO_PARSE_FORMAT_ALAW;
+          break;
+
+        default:
+          g_assert_not_reached ();
+          break;
+      }
+
+      g_object_set (G_OBJECT (ap->rawaudioparse), "format", raw_parse_format,
+          NULL);
+
       break;
+    }
+
+    case PROP_RAW_FORMAT:
+      g_object_set (G_OBJECT (ap->rawaudioparse), "pcm-format",
+          g_value_get_enum (value), NULL);
+      break;
+
+    case PROP_RATE:
+      g_object_set (G_OBJECT (ap->rawaudioparse), "sample-rate",
+          g_value_get_int (value), NULL);
+      break;
+
+    case PROP_CHANNELS:
+      g_object_set (G_OBJECT (ap->rawaudioparse), "num-channels",
+          g_value_get_int (value), NULL);
+      break;
+
+    case PROP_INTERLEAVED:
+      g_object_set (G_OBJECT (ap->rawaudioparse), "interleaved",
+          g_value_get_boolean (value), NULL);
+      break;
+
+    case PROP_CHANNEL_POSITIONS:
+      g_object_set (G_OBJECT (ap->rawaudioparse), "channel-positions",
+          g_value_get_boxed (value), NULL);
+      break;
+
     case PROP_USE_SINK_CAPS:
-      ap->use_sink_caps = g_value_get_boolean (value);
+      g_object_set (G_OBJECT (ap->rawaudioparse), "use-sink-caps",
+          g_value_get_boolean (value), NULL);
       break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
   }
-
-  gst_audio_parse_update_frame_size (ap);
 }
 
 static void
@@ -230,213 +280,85 @@
   GstAudioParse *ap = GST_AUDIO_PARSE (object);
 
   switch (prop_id) {
-    case PROP_FORMAT:
-      g_value_set_enum (value, ap->format);
-      break;
-    case PROP_RAW_FORMAT:
-      g_value_set_enum (value, ap->raw_format);
-      break;
-    case PROP_RATE:{
-      gint fps_n, fps_d;
+    case PROP_FORMAT:{
+      GstRawAudioParseFormat raw_parse_format;
+      GstAudioParseFormat format;
 
-      gst_raw_parse_get_fps (GST_RAW_PARSE (ap), &fps_n, &fps_d);
-      g_value_set_int (value, fps_n);
+      g_object_get (G_OBJECT (ap->rawaudioparse), "format", &raw_parse_format,
+          NULL);
+
+      switch (raw_parse_format) {
+        case GST_RAW_AUDIO_PARSE_FORMAT_PCM:
+          format = GST_AUDIO_PARSE_FORMAT_RAW;
+          break;
+
+        case GST_RAW_AUDIO_PARSE_FORMAT_MULAW:
+          format = GST_AUDIO_PARSE_FORMAT_MULAW;
+          break;
+
+        case GST_RAW_AUDIO_PARSE_FORMAT_ALAW:
+          format = GST_AUDIO_PARSE_FORMAT_ALAW;
+          break;
+
+        default:
+          g_assert_not_reached ();
+          break;
+      }
+
+      g_value_set_enum (value, format);
+
       break;
     }
-    case PROP_CHANNELS:
-      g_value_set_int (value, ap->channels);
+
+    case PROP_RAW_FORMAT:{
+      GstAudioFormat format;
+      g_object_get (G_OBJECT (ap->rawaudioparse), "pcm-format", &format, NULL);
+      g_value_set_enum (value, format);
       break;
-    case PROP_INTERLEAVED:
-      g_value_set_boolean (value, ap->interleaved);
+    }
+
+    case PROP_RATE:{
+      gint sample_rate;
+      g_object_get (G_OBJECT (ap->rawaudioparse), "sample-rate", &sample_rate,
+          NULL);
+      g_value_set_int (value, sample_rate);
       break;
-    case PROP_CHANNEL_POSITIONS:
-      g_value_set_boxed (value, ap->channel_positions);
+    }
+
+    case PROP_CHANNELS:{
+      gint num_channels;
+      g_object_get (G_OBJECT (ap->rawaudioparse), "num-channels", &num_channels,
+          NULL);
+      g_value_set_int (value, num_channels);
       break;
-    case PROP_USE_SINK_CAPS:
-      g_value_set_boolean (value, ap->use_sink_caps);
+    }
+
+    case PROP_INTERLEAVED:{
+      gboolean interleaved;
+      g_object_get (G_OBJECT (ap->rawaudioparse), "interleaved", &interleaved,
+          NULL);
+      g_value_set_boolean (value, interleaved);
       break;
+    }
+
+    case PROP_CHANNEL_POSITIONS:{
+      gpointer channel_positions;
+      g_object_get (G_OBJECT (ap->rawaudioparse), "channel-positions",
+          &channel_positions, NULL);
+      g_value_set_boxed (value, channel_positions);
+      break;
+    }
+
+    case PROP_USE_SINK_CAPS:{
+      gboolean use_sink_caps;
+      g_object_get (G_OBJECT (ap->rawaudioparse), "use-sink-caps",
+          &use_sink_caps, NULL);
+      g_value_set_boolean (value, use_sink_caps);
+      break;
+    }
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
   }
 }
-
-static void
-gst_audio_parse_finalize (GObject * object)
-{
-  GstAudioParse *ap = GST_AUDIO_PARSE (object);
-
-  if (ap->channel_positions) {
-    g_value_array_free (ap->channel_positions);
-    ap->channel_positions = NULL;
-  }
-
-  g_free (ap->channel_pos);
-  g_free (ap->channel_order);
-
-  G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-void
-gst_audio_parse_update_frame_size (GstAudioParse * ap)
-{
-  gint framesize, width;
-
-  switch (ap->format) {
-    case GST_AUDIO_PARSE_FORMAT_ALAW:
-    case GST_AUDIO_PARSE_FORMAT_MULAW:
-      width = 8;
-      break;
-    case GST_AUDIO_PARSE_FORMAT_RAW:
-    default:
-    {
-      GstAudioInfo info;
-
-      gst_audio_info_init (&info);
-      /* rate, etc do not really matter here */
-      gst_audio_info_set_format (&info, ap->raw_format, 44100, ap->channels,
-          NULL);
-      width = GST_AUDIO_INFO_WIDTH (&info);
-      break;
-    }
-  }
-
-  framesize = (width / 8) * ap->channels;
-
-  gst_raw_parse_set_framesize (GST_RAW_PARSE (ap), framesize);
-}
-
-static GstAudioChannelPosition *
-gst_audio_parse_get_channel_positions (GValueArray * positions)
-{
-  gint i;
-  guint channels;
-  GstAudioChannelPosition *pos;
-
-  channels = positions->n_values;
-  pos = g_new (GstAudioChannelPosition, positions->n_values);
-
-  for (i = 0; i < channels; i++) {
-    GValue *v = g_value_array_get_nth (positions, i);
-
-    pos[i] = g_value_get_enum (v);
-  }
-
-  return pos;
-}
-
-static void
-gst_audio_parse_setup_channel_positions (GstAudioParse * ap)
-{
-  GstAudioChannelPosition *pos, *to;
-
-  g_free (ap->channel_pos);
-  g_free (ap->channel_order);
-  ap->channel_pos = NULL;
-  ap->channel_order = NULL;
-
-  if (!ap->channel_positions) {
-    GST_DEBUG_OBJECT (ap, "no channel positions");
-    /* implicit mapping for 1- and 2-channel audio is okay */
-    /* will come up with one in other cases also */
-    return;
-  }
-
-  pos = gst_audio_parse_get_channel_positions (ap->channel_positions);
-  if (ap->channels != ap->channel_positions->n_values ||
-      !gst_audio_check_valid_channel_positions (pos, ap->channels, FALSE)) {
-    GST_DEBUG_OBJECT (ap, "invalid channel position");
-    g_free (pos);
-    return;
-  }
-
-  /* ok, got something we can work with now */
-  to = g_new (GstAudioChannelPosition, ap->channels);
-  memcpy (to, pos, ap->channels * sizeof (to[0]));
-  gst_audio_channel_positions_to_valid_order (to, ap->channels);
-
-  ap->channel_pos = pos;
-  ap->channel_order = to;
-}
-
-static GstCaps *
-gst_audio_parse_get_caps (GstRawParse * rp)
-{
-  GstAudioParse *ap = GST_AUDIO_PARSE (rp);
-  GstCaps *caps, *ncaps;
-  GstAudioInfo info;
-  gint fps_n, fps_d;
-  const GValue *val;
-
-  if (ap->use_sink_caps) {
-    gint rate;
-    GstCaps *caps = gst_pad_get_current_caps (rp->sinkpad);
-    if (!caps) {
-      GST_WARNING_OBJECT (ap,
-          "Sink pad has no caps, but we were asked to use its caps");
-      return NULL;
-    }
-    if (!gst_audio_info_from_caps (&info, caps)) {
-      GST_WARNING_OBJECT (ap, "Failed to parse caps %" GST_PTR_FORMAT, caps);
-      gst_caps_unref (caps);
-      return NULL;
-    }
-
-    ap->format = GST_AUDIO_PARSE_FORMAT_RAW;
-    ap->raw_format = GST_AUDIO_INFO_FORMAT (&info);
-    ap->channels = GST_AUDIO_INFO_CHANNELS (&info);
-    ap->interleaved = info.layout == GST_AUDIO_LAYOUT_INTERLEAVED;
-
-    rate = GST_AUDIO_INFO_RATE (&info);
-    gst_raw_parse_set_fps (GST_RAW_PARSE (ap), rate, 1);
-    gst_audio_parse_update_frame_size (ap);
-
-    return caps;
-  }
-
-  gst_raw_parse_get_fps (rp, &fps_n, &fps_d);
-  gst_audio_parse_setup_channel_positions (ap);
-
-  /* yes, even when format not raw */
-  gst_audio_info_init (&info);
-  gst_audio_info_set_format (&info, ap->raw_format, fps_n, ap->channels,
-      ap->channel_order);
-  info.layout = ap->interleaved ? GST_AUDIO_LAYOUT_INTERLEAVED :
-      GST_AUDIO_LAYOUT_NON_INTERLEAVED;
-  caps = gst_audio_info_to_caps (&info);
-
-  switch (ap->format) {
-    case GST_AUDIO_PARSE_FORMAT_RAW:
-      break;
-    case GST_AUDIO_PARSE_FORMAT_ALAW:
-      ncaps = gst_caps_new_simple ("audio/x-alaw",
-          "rate", G_TYPE_INT, fps_n,
-          "channels", G_TYPE_INT, ap->channels, NULL);
-      /* pick mask stuff from faked raw format */
-      val = gst_structure_get_value (gst_caps_get_structure (caps, 0),
-          "channel-mask");
-      if (val)
-        gst_caps_set_value (ncaps, "channel-mask", val);
-      gst_caps_unref (caps);
-      caps = ncaps;
-      break;
-    case GST_AUDIO_PARSE_FORMAT_MULAW:
-      ncaps = gst_caps_new_simple ("audio/x-mulaw",
-          "rate", G_TYPE_INT, fps_n,
-          "channels", G_TYPE_INT, ap->channels, NULL);
-      /* pick mask stuff from faked raw format */
-      val = gst_structure_get_value (gst_caps_get_structure (caps, 0),
-          "channel-mask");
-      if (val)
-        gst_caps_set_value (ncaps, "channel-mask", val);
-      gst_caps_unref (caps);
-      caps = ncaps;
-      break;
-    default:
-      caps = gst_caps_new_empty ();
-      GST_ERROR_OBJECT (rp, "unexpected format %d", ap->format);
-      break;
-  }
-
-  return caps;
-}
diff --git a/gst/rawparse/gstaudioparse.h b/gst/rawparse/gstaudioparse.h
index 2a357d9..efa5730 100644
--- a/gst/rawparse/gstaudioparse.h
+++ b/gst/rawparse/gstaudioparse.h
@@ -23,11 +23,6 @@
 #define __GST_AUDIO_PARSE_H__
 
 #include <gst/gst.h>
-#include <gst/base/gstbasetransform.h>
-#include <gst/base/gstadapter.h>
-#include <gst/audio/audio.h>
-
-#include "gstrawparse.h"
 
 #define GST_TYPE_AUDIO_PARSE \
   (gst_audio_parse_get_type())
@@ -45,23 +40,13 @@
 
 struct _GstAudioParse
 {
-  GstRawParse parent;
-
-  /* properties */
-  gboolean use_sink_caps;
-  gint format;
-  GstAudioFormat raw_format;
-  gint channels;
-  gboolean interleaved;
-  GValueArray *channel_positions;
-
-  GstAudioChannelPosition *channel_pos;
-  GstAudioChannelPosition *channel_order;
+  GstBin parent;
+  GstElement *rawaudioparse;
 };
 
 struct _GstAudioParseClass
 {
-  GstRawParseClass parent_class;
+  GstBinClass parent_class;
 };
 
 
diff --git a/gst/rawparse/gstrawaudioparse.c b/gst/rawparse/gstrawaudioparse.c
new file mode 100644
index 0000000..98575dd
--- /dev/null
+++ b/gst/rawparse/gstrawaudioparse.c
@@ -0,0 +1,1088 @@
+/* GStreamer
+ * Copyright (C) <2016> Carlos Rafael Giani <dv at pseudoterminal dot org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/**
+ * SECTION:element-rawaudioparse
+ *
+ * This element parses incoming data as raw audio samples and timestamps it.
+ * It also handles seek queries in said raw audio data, and ensures that output
+ * buffers contain an integer number of samples, even if the input buffers don't.
+ * For example, with sample format S16LE and 2 channels, an input buffer of 411
+ * bytes contains 102.75 samples. rawaudioparse will then output 102 samples
+ * (= 408 bytes) and keep the remaining 3 bytes. These will then be prepended to
+ * the next input data.
+ *
+ * The element implements the properties and sink caps configuration as specified
+ * in the #GstRawBaseParse documentation. The properties configuration can be
+ * modified by using the sample-rate, num-channels, channel-positions, format,
+ * and pcm-format properties.
+ *
+ * Currently, this parser supports raw data in a-law, mu-law, or linear PCM format.
+ *
+ * To facilitate operation with the unalignedaudioparse element, rawaudioparse
+ * supports the "audio/x-unaligned-raw" media type. This is treated identically to
+ * "audio/x-raw", except that it is used by source elements which do not guarantee
+ * that the buffers they push out are timestamped and contain an integer amount of
+ * samples (see the 411 bytes example above). By using a different media type, it
+ * is guaranteed that unalignedaudioparse is autoplugged, making sure that the
+ * autoplugged chain does not push unparsed content downstream. The source caps'
+ * media type with linear PCM data is always "audio/x-raw", even if the sink caps
+ * use "audio/x-unaligned-raw".
+ *
+ * The channel-positions property can be used to set explicit position information
+ * for each channel. If the array that is passed to this property does not match
+ * the number of channels indicated by num-channels, then said number of channels
+ * is updated to the array length. If channel-positions is NULL, then the default
+ * GStreamer positioning is used. This property is also useful for swapping left
+ * and right in a stereo signal for example.
+ *
+ * <refsect2>
+ * <title>Example pipelines</title>
+ * |[
+ * gst-launch-1.0 souphttpsrc http://my-dlna-server/track.l16 \
+ *     rawaudioparse ! audioconvert ! audioresample ! autoaudiosink
+ * ]| Receive L16 data from a DLNA server, parse and timestamp it with
+ * rawaudioparse, and play it. use-sink-caps is set to true since souphttpsrc
+ * will set its source pad's caps to audio/x-unaligned-raw for the L16 stream.
+ * |[
+ * gst-launch-1.0 filesrc location=audio.raw ! rawaudioparse use-sink-caps=false \
+ *         format=pcm pcm-format=s16le sample-rate=48000 num-channels=2 \
+ *         audioconvert ! audioresample ! autoaudiosink
+ * ]| Read raw data from a local file and parse it as PCM data with 48000 Hz sample
+ * rate, signed 16 bit integer samples, and 2 channels. use-sink-caps is set to
+ * false to ensure the property information is used and the parser does not expect
+ * audio/x-raw or audio/x-unaligned-raw caps.
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
+/* FIXME: GValueArray is deprecated, but there is currently no viabla alternative
+ * See https://bugzilla.gnome.org/show_bug.cgi?id=667228 */
+#define GLIB_DISABLE_DEPRECATION_WARNINGS
+
+#include <string.h>
+#include "gstrawaudioparse.h"
+#include "unalignedaudio.h"
+
+
+GST_DEBUG_CATEGORY_STATIC (raw_audio_parse_debug);
+#define GST_CAT_DEFAULT raw_audio_parse_debug
+
+
+enum
+{
+  PROP_0,
+  PROP_FORMAT,
+  PROP_PCM_FORMAT,
+  PROP_SAMPLE_RATE,
+  PROP_NUM_CHANNELS,
+  PROP_INTERLEAVED,
+  PROP_CHANNEL_POSITIONS
+};
+
+
+#define DEFAULT_FORMAT         GST_RAW_AUDIO_PARSE_FORMAT_PCM
+#define DEFAULT_PCM_FORMAT     GST_AUDIO_FORMAT_S16
+#define DEFAULT_SAMPLE_RATE    44100
+#define DEFAULT_NUM_CHANNELS   2
+#define DEFAULT_INTERLEAVED    TRUE
+
+
+#define GST_RAW_AUDIO_PARSE_CAPS \
+  GST_AUDIO_CAPS_MAKE(GST_AUDIO_FORMATS_ALL) \
+  ", layout = (string) { interleaved, non-interleaved }; " \
+  "audio/x-alaw, rate = (int) [ 1, MAX ], channels = (int) [ 1, MAX ]; " \
+  "audio/x-mulaw, rate = (int) [ 1, MAX ], channels = (int) [ 1, MAX ]; "
+
+
+static GstStaticPadTemplate static_sink_template =
+    GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS (GST_UNALIGNED_RAW_AUDIO_CAPS "; " GST_RAW_AUDIO_PARSE_CAPS)
+    );
+
+
+static GstStaticPadTemplate static_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS (GST_RAW_AUDIO_PARSE_CAPS)
+    );
+
+
+#define gst_raw_audio_parse_parent_class parent_class
+G_DEFINE_TYPE (GstRawAudioParse, gst_raw_audio_parse, GST_TYPE_RAW_BASE_PARSE);
+
+
+static void gst_raw_audio_parse_set_property (GObject * object, guint prop_id,
+    GValue const *value, GParamSpec * pspec);
+static void gst_raw_audio_parse_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+
+static gboolean gst_raw_audio_parse_stop (GstBaseParse * parse);
+
+static gboolean gst_raw_audio_parse_set_current_config (GstRawBaseParse *
+    raw_base_parse, GstRawBaseParseConfig config);
+static GstRawBaseParseConfig
+gst_raw_audio_parse_get_current_config (GstRawBaseParse * raw_base_parse);
+static gboolean gst_raw_audio_parse_set_config_from_caps (GstRawBaseParse *
+    raw_base_parse, GstRawBaseParseConfig config, GstCaps * caps);
+static gboolean gst_raw_audio_parse_get_caps_from_config (GstRawBaseParse *
+    raw_base_parse, GstRawBaseParseConfig config, GstCaps ** caps);
+static gsize gst_raw_audio_parse_get_config_frame_size (GstRawBaseParse *
+    raw_base_parse, GstRawBaseParseConfig config);
+static gboolean gst_raw_audio_parse_is_config_ready (GstRawBaseParse *
+    raw_base_parse, GstRawBaseParseConfig config);
+static gboolean gst_raw_audio_parse_process (GstRawBaseParse * raw_base_parse,
+    GstRawBaseParseConfig config, GstBuffer * in_data, gsize total_num_in_bytes,
+    gsize num_valid_in_bytes, GstBuffer ** processed_data);
+static gboolean gst_raw_audio_parse_is_unit_format_supported (GstRawBaseParse *
+    raw_base_parse, GstFormat format);
+static void gst_raw_audio_parse_get_units_per_second (GstRawBaseParse *
+    raw_base_parse, GstFormat format, GstRawBaseParseConfig config,
+    gsize * units_per_sec_n, gsize * units_per_sec_d);
+
+static gboolean gst_raw_audio_parse_is_using_sink_caps (GstRawAudioParse *
+    raw_audio_parse);
+static GstRawAudioParseConfig
+    * gst_raw_audio_parse_get_config_ptr (GstRawAudioParse * raw_audio_parse,
+    GstRawBaseParseConfig config);
+
+static void gst_raw_audio_parse_init_config (GstRawAudioParseConfig * config);
+static gboolean gst_raw_audio_parse_set_config_channels (GstRawAudioParseConfig
+    * config, guint num_channels, guint64 channel_mask, gboolean set_positions);
+static gboolean
+gst_raw_audio_parse_update_channel_reordering_flag (GstRawAudioParseConfig *
+    config);
+static void gst_raw_audio_parse_update_config_bpf (GstRawAudioParseConfig *
+    config);
+static gboolean gst_raw_audio_parse_caps_to_config (GstRawAudioParse *
+    raw_audio_parse, GstCaps * caps, GstRawAudioParseConfig * config);
+static gboolean gst_raw_audio_parse_config_to_caps (GstRawAudioParse *
+    raw_audio_parse, GstCaps ** caps, GstRawAudioParseConfig * config);
+
+
+
+static void
+gst_raw_audio_parse_class_init (GstRawAudioParseClass * klass)
+{
+  GObjectClass *object_class;
+  GstElementClass *element_class;
+  GstBaseParseClass *baseparse_class;
+  GstRawBaseParseClass *rawbaseparse_class;
+
+  GST_DEBUG_CATEGORY_INIT (raw_audio_parse_debug, "rawaudioparse", 0,
+      "rawaudioparse element");
+
+  object_class = G_OBJECT_CLASS (klass);
+  element_class = GST_ELEMENT_CLASS (klass);
+  baseparse_class = GST_BASE_PARSE_CLASS (klass);
+  rawbaseparse_class = GST_RAW_BASE_PARSE_CLASS (klass);
+
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&static_sink_template));
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&static_src_template));
+
+  object_class->set_property =
+      GST_DEBUG_FUNCPTR (gst_raw_audio_parse_set_property);
+  object_class->get_property =
+      GST_DEBUG_FUNCPTR (gst_raw_audio_parse_get_property);
+
+  baseparse_class->stop = GST_DEBUG_FUNCPTR (gst_raw_audio_parse_stop);
+
+  rawbaseparse_class->set_current_config =
+      GST_DEBUG_FUNCPTR (gst_raw_audio_parse_set_current_config);
+  rawbaseparse_class->get_current_config =
+      GST_DEBUG_FUNCPTR (gst_raw_audio_parse_get_current_config);
+  rawbaseparse_class->set_config_from_caps =
+      GST_DEBUG_FUNCPTR (gst_raw_audio_parse_set_config_from_caps);
+  rawbaseparse_class->get_caps_from_config =
+      GST_DEBUG_FUNCPTR (gst_raw_audio_parse_get_caps_from_config);
+  rawbaseparse_class->get_config_frame_size =
+      GST_DEBUG_FUNCPTR (gst_raw_audio_parse_get_config_frame_size);
+  rawbaseparse_class->is_config_ready =
+      GST_DEBUG_FUNCPTR (gst_raw_audio_parse_is_config_ready);
+  rawbaseparse_class->process = GST_DEBUG_FUNCPTR (gst_raw_audio_parse_process);
+  rawbaseparse_class->is_unit_format_supported =
+      GST_DEBUG_FUNCPTR (gst_raw_audio_parse_is_unit_format_supported);
+  rawbaseparse_class->get_units_per_second =
+      GST_DEBUG_FUNCPTR (gst_raw_audio_parse_get_units_per_second);
+
+  g_object_class_install_property (object_class,
+      PROP_FORMAT,
+      g_param_spec_enum ("format",
+          "Format",
+          "Format of the raw audio stream",
+          gst_raw_audio_parse_format_get_type (),
+          GST_RAW_AUDIO_PARSE_FORMAT_PCM,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
+      );
+  g_object_class_install_property (object_class,
+      PROP_PCM_FORMAT,
+      g_param_spec_enum ("pcm-format",
+          "PCM format",
+          "Format of audio samples in PCM stream (ignored if format property is not set to pcm)",
+          GST_TYPE_AUDIO_FORMAT,
+          GST_RAW_AUDIO_PARSE_FORMAT_PCM,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
+      );
+  g_object_class_install_property (object_class,
+      PROP_SAMPLE_RATE,
+      g_param_spec_int ("sample-rate",
+          "Sample rate",
+          "Rate of audio samples in raw stream",
+          1, INT_MAX,
+          DEFAULT_SAMPLE_RATE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
+      );
+  g_object_class_install_property (object_class,
+      PROP_NUM_CHANNELS,
+      g_param_spec_int ("num-channels",
+          "Number of channels",
+          "Number of channels in raw stream",
+          1, INT_MAX,
+          DEFAULT_NUM_CHANNELS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
+      );
+  g_object_class_install_property (object_class,
+      PROP_INTERLEAVED,
+      g_param_spec_boolean ("interleaved",
+          "Interleaved layout",
+          "True if audio has interleaved layout",
+          DEFAULT_INTERLEAVED, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
+      );
+  g_object_class_install_property (object_class,
+      PROP_CHANNEL_POSITIONS,
+      g_param_spec_value_array ("channel-positions",
+          "Channel positions",
+          "Channel positions used on the output",
+          g_param_spec_enum ("channel-position",
+              "Channel position",
+              "Channel position of the n-th input",
+              GST_TYPE_AUDIO_CHANNEL_POSITION,
+              GST_AUDIO_CHANNEL_POSITION_NONE,
+              G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS),
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
+      );
+
+  gst_element_class_set_static_metadata (element_class,
+      "rawaudioparse",
+      "Codec/Parser/Audio",
+      "Converts unformatted data streams into timestamped raw audio frames",
+      "Carlos Rafael Giani <dv@pseudoterminal.org>");
+}
+
+
+static void
+gst_raw_audio_parse_init (GstRawAudioParse * raw_audio_parse)
+{
+  /* Setup configs and select which one shall be the current one from the start. */
+  gst_raw_audio_parse_init_config (&(raw_audio_parse->properties_config));
+  gst_raw_audio_parse_init_config (&(raw_audio_parse->sink_caps_config));
+  /* As required by GstRawBaseParse, ensure that the current configuration
+   * is initially set to be the properties config */
+  raw_audio_parse->current_config = &(raw_audio_parse->properties_config);
+
+  /* Properties config must be valid from the start, so set its ready value
+   * to TRUE, and make sure its bpf value is valid. */
+  raw_audio_parse->properties_config.ready = TRUE;
+  gst_raw_audio_parse_update_config_bpf (&(raw_audio_parse->properties_config));
+}
+
+
+static void
+gst_raw_audio_parse_set_property (GObject * object, guint prop_id,
+    GValue const *value, GParamSpec * pspec)
+{
+  GstBaseParse *base_parse = GST_BASE_PARSE (object);
+  GstRawBaseParse *raw_base_parse = GST_RAW_BASE_PARSE (object);
+  GstRawAudioParse *raw_audio_parse = GST_RAW_AUDIO_PARSE (object);
+
+  /* All properties are handled similarly:
+   * - if the new value is the same as the current value, nothing is done
+   * - the parser lock is held while the new value is set
+   * - if the properties config is the current config, the source caps are
+   *   invalidated to ensure that the code in handle_frame pushes a new CAPS
+   *   event out
+   * - properties that affect the bpf value call the function to update
+   *   the bpf and also call gst_base_parse_set_min_frame_size() to ensure
+   *   that the minimum frame size can hold 1 frame (= one sample for each
+   *   channel)
+   */
+
+  switch (prop_id) {
+    case PROP_FORMAT:
+    {
+      GstRawAudioParseFormat new_format = g_value_get_enum (value);
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+
+      if (new_format != raw_audio_parse->properties_config.format) {
+        raw_audio_parse->properties_config.format = new_format;
+        gst_raw_audio_parse_update_config_bpf (&
+            (raw_audio_parse->properties_config));
+
+        if (!gst_raw_audio_parse_is_using_sink_caps (raw_audio_parse)) {
+          gst_raw_base_parse_invalidate_src_caps (raw_base_parse);
+          gst_base_parse_set_min_frame_size (base_parse,
+              raw_audio_parse->properties_config.bpf);
+        }
+      }
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+    }
+
+    case PROP_PCM_FORMAT:
+    {
+      GstAudioFormat new_pcm_format = g_value_get_enum (value);
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+
+      if (new_pcm_format != raw_audio_parse->properties_config.pcm_format) {
+        raw_audio_parse->properties_config.pcm_format = new_pcm_format;
+        gst_raw_audio_parse_update_config_bpf (&
+            (raw_audio_parse->properties_config));
+
+        if (!gst_raw_audio_parse_is_using_sink_caps (raw_audio_parse)) {
+          gst_raw_base_parse_invalidate_src_caps (raw_base_parse);
+          gst_base_parse_set_min_frame_size (base_parse,
+              raw_audio_parse->properties_config.bpf);
+        }
+      }
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+    }
+
+    case PROP_SAMPLE_RATE:
+    {
+      guint new_sample_rate = g_value_get_int (value);
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+
+      if (new_sample_rate != raw_audio_parse->properties_config.sample_rate) {
+        raw_audio_parse->properties_config.sample_rate = new_sample_rate;
+
+        if (!gst_raw_audio_parse_is_using_sink_caps (raw_audio_parse))
+          gst_raw_base_parse_invalidate_src_caps (raw_base_parse);
+      }
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+    }
+
+    case PROP_NUM_CHANNELS:
+    {
+      guint new_num_channels = g_value_get_int (value);
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+
+      if (new_num_channels != raw_audio_parse->properties_config.num_channels) {
+        gst_raw_audio_parse_set_config_channels (&
+            (raw_audio_parse->properties_config), new_num_channels, 0, TRUE);
+
+        raw_audio_parse->properties_config.num_channels = new_num_channels;
+        gst_raw_audio_parse_update_config_bpf (&
+            (raw_audio_parse->properties_config));
+
+        if (!gst_raw_audio_parse_is_using_sink_caps (raw_audio_parse)) {
+          gst_raw_base_parse_invalidate_src_caps (raw_base_parse);
+          gst_base_parse_set_min_frame_size (base_parse,
+              raw_audio_parse->properties_config.bpf);
+        }
+      }
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+    }
+
+    case PROP_INTERLEAVED:
+    {
+      gboolean new_interleaved = g_value_get_boolean (value);
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+
+      if (new_interleaved != raw_audio_parse->properties_config.interleaved) {
+        raw_audio_parse->properties_config.interleaved = new_interleaved;
+
+        if (!gst_raw_audio_parse_is_using_sink_caps (raw_audio_parse))
+          gst_raw_base_parse_invalidate_src_caps (raw_base_parse);
+      }
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+    }
+
+    case PROP_CHANNEL_POSITIONS:
+    {
+      GValueArray *valarray = g_value_get_boxed (value);
+      GstRawAudioParseConfig *config = &(raw_audio_parse->properties_config);
+
+      /* Sanity check - reject empty arrays */
+      if ((valarray != NULL) && (valarray->n_values == 0)) {
+        GST_ELEMENT_ERROR (raw_audio_parse, LIBRARY, SETTINGS,
+            ("channel position property holds an empty array"), (NULL));
+        break;
+      }
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+
+      if ((valarray == NULL) && (config->num_channels > 0)) {
+        /* NULL value given, and number of channels is nonzero.
+         * Use the default GStreamer positioning. Call
+         * set_config_channels with the set_positions parameter
+         * set to TRUE to ensure the position values are filled. */
+        gst_raw_audio_parse_set_config_channels (&
+            (raw_audio_parse->properties_config), config->num_channels, 0,
+            TRUE);
+      } else {
+        /* Non-NULL value given. Make sure the channel_positions
+         * array in the properties config has enough room, and that
+         * the num_channels value equals the array length. Then copy
+         * the values from the valarray to channel_positions, and
+         * produce a copy of that array in case its channel positions
+         * are not in a valid GStreamer order (to be able to apply
+         * channel reordering later).
+         */
+
+        guint i;
+
+        if (valarray->n_values != config->num_channels) {
+          /* Call with set_positions == FALSE to ensure that
+           * the array is properly allocated but not filled
+           * (it is filled below) */
+          gst_raw_audio_parse_set_config_channels (config, valarray->n_values,
+              0, FALSE);
+        }
+
+        for (i = 0; i < config->num_channels; ++i) {
+          GValue *val = g_value_array_get_nth (valarray, i);
+          config->channel_positions[i] = g_value_get_enum (val);
+        }
+
+        gst_raw_audio_parse_update_channel_reordering_flag (config);
+      }
+
+      gst_raw_audio_parse_update_config_bpf (&
+          (raw_audio_parse->properties_config));
+
+      if (!gst_raw_audio_parse_is_using_sink_caps (raw_audio_parse)) {
+        gst_raw_base_parse_invalidate_src_caps (raw_base_parse);
+        gst_base_parse_set_min_frame_size (base_parse,
+            raw_audio_parse->properties_config.bpf);
+      }
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+    }
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+
+static void
+gst_raw_audio_parse_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstRawAudioParse *raw_audio_parse = GST_RAW_AUDIO_PARSE (object);
+
+  switch (prop_id) {
+    case PROP_FORMAT:
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+      g_value_set_enum (value, raw_audio_parse->properties_config.format);
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+
+    case PROP_PCM_FORMAT:
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+      g_value_set_enum (value, raw_audio_parse->properties_config.pcm_format);
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+
+    case PROP_SAMPLE_RATE:
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+      g_value_set_int (value, raw_audio_parse->properties_config.sample_rate);
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+
+    case PROP_NUM_CHANNELS:
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+      g_value_set_int (value, raw_audio_parse->properties_config.num_channels);
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+
+    case PROP_INTERLEAVED:
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+      g_value_set_boolean (value,
+          raw_audio_parse->properties_config.interleaved);
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+
+    case PROP_CHANNEL_POSITIONS:
+    {
+      GstRawAudioParseConfig *config;
+      GValueArray *valarray;
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+
+      valarray = NULL;
+      config = &(raw_audio_parse->properties_config);
+
+      /* Copy channel positions into the valuearray */
+      if (config->num_channels > 0) {
+        guint i;
+        GValue val = G_VALUE_INIT;
+        g_assert (config->channel_positions);
+
+        g_value_init (&val, GST_TYPE_AUDIO_CHANNEL_POSITION);
+        valarray = g_value_array_new (config->num_channels);
+
+        for (i = 0; i < config->num_channels; ++i) {
+          g_value_set_enum (&val, config->channel_positions[i]);
+          g_value_array_insert (valarray, i, &val);
+        }
+
+        g_value_unset (&val);
+      }
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+
+      /* Pass on ownership to the value array,
+       * since we don't need it anymore */
+      g_value_take_boxed (value, valarray);
+
+      break;
+    }
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+
+static gboolean
+gst_raw_audio_parse_stop (GstBaseParse * parse)
+{
+  GstRawAudioParse *raw_audio_parse = GST_RAW_AUDIO_PARSE (parse);
+
+  /* Sink caps config is not ready until caps come in.
+   * We are stopping processing, the element is being reset,
+   * so the config has to be un-readied.
+   * (Since the properties config is not depending on caps,
+   * its ready status is always TRUE.) */
+  raw_audio_parse->sink_caps_config.ready = FALSE;
+
+  return GST_BASE_PARSE_CLASS (parent_class)->stop (parse);
+}
+
+
+static gboolean
+gst_raw_audio_parse_set_current_config (GstRawBaseParse * raw_base_parse,
+    GstRawBaseParseConfig config)
+{
+  GstRawAudioParse *raw_audio_parse = GST_RAW_AUDIO_PARSE (raw_base_parse);
+
+  switch (config) {
+    case GST_RAW_BASE_PARSE_CONFIG_PROPERTIES:
+      raw_audio_parse->current_config = &(raw_audio_parse->properties_config);
+      break;
+
+    case GST_RAW_BASE_PARSE_CONFIG_SINKCAPS:
+      raw_audio_parse->current_config = &(raw_audio_parse->sink_caps_config);
+      break;
+
+    default:
+      g_assert_not_reached ();
+  }
+
+  return TRUE;
+}
+
+
+static GstRawBaseParseConfig
+gst_raw_audio_parse_get_current_config (GstRawBaseParse * raw_base_parse)
+{
+  GstRawAudioParse *raw_audio_parse = GST_RAW_AUDIO_PARSE (raw_base_parse);
+  return gst_raw_audio_parse_is_using_sink_caps (raw_audio_parse) ?
+      GST_RAW_BASE_PARSE_CONFIG_SINKCAPS : GST_RAW_BASE_PARSE_CONFIG_PROPERTIES;
+}
+
+
+static gboolean
+gst_raw_audio_parse_set_config_from_caps (GstRawBaseParse * raw_base_parse,
+    GstRawBaseParseConfig config, GstCaps * caps)
+{
+  GstRawAudioParse *raw_audio_parse = GST_RAW_AUDIO_PARSE (raw_base_parse);
+  return gst_raw_audio_parse_caps_to_config (raw_audio_parse, caps,
+      gst_raw_audio_parse_get_config_ptr (raw_audio_parse, config));
+}
+
+
+static gboolean
+gst_raw_audio_parse_get_caps_from_config (GstRawBaseParse * raw_base_parse,
+    GstRawBaseParseConfig config, GstCaps ** caps)
+{
+  GstRawAudioParse *raw_audio_parse = GST_RAW_AUDIO_PARSE (raw_base_parse);
+  return gst_raw_audio_parse_config_to_caps (raw_audio_parse, caps,
+      gst_raw_audio_parse_get_config_ptr (raw_audio_parse, config));
+}
+
+
+static gsize
+gst_raw_audio_parse_get_config_frame_size (GstRawBaseParse * raw_base_parse,
+    GstRawBaseParseConfig config)
+{
+  GstRawAudioParse *raw_audio_parse = GST_RAW_AUDIO_PARSE (raw_base_parse);
+  return gst_raw_audio_parse_get_config_ptr (raw_audio_parse, config)->bpf;
+}
+
+
+static gboolean
+gst_raw_audio_parse_is_config_ready (GstRawBaseParse * raw_base_parse,
+    GstRawBaseParseConfig config)
+{
+  GstRawAudioParse *raw_audio_parse = GST_RAW_AUDIO_PARSE (raw_base_parse);
+  return gst_raw_audio_parse_get_config_ptr (raw_audio_parse, config)->ready;
+}
+
+
+static gboolean
+gst_raw_audio_parse_process (GstRawBaseParse * raw_base_parse,
+    GstRawBaseParseConfig config, GstBuffer * in_data, gsize total_num_in_bytes,
+    gsize num_valid_in_bytes, GstBuffer ** processed_data)
+{
+  GstRawAudioParse *raw_audio_parse = GST_RAW_AUDIO_PARSE (raw_base_parse);
+  GstRawAudioParseConfig *config_ptr =
+      gst_raw_audio_parse_get_config_ptr (raw_audio_parse, config);
+
+  if ((config_ptr->format == GST_RAW_AUDIO_PARSE_FORMAT_PCM)
+      && config_ptr->needs_channel_reordering) {
+    /* Need to reorder samples, since they are in an invalid
+     * channel order. */
+
+    GstBuffer *outbuf;
+
+    GST_LOG_OBJECT (raw_audio_parse,
+        "using %" G_GSIZE_FORMAT " bytes out of the %" G_GSIZE_FORMAT
+        " bytes from the input buffer with reordering", num_valid_in_bytes,
+        total_num_in_bytes);
+
+    outbuf =
+        gst_buffer_copy_region (in_data,
+        GST_BUFFER_COPY_FLAGS | GST_BUFFER_COPY_TIMESTAMPS |
+        GST_BUFFER_COPY_META | GST_BUFFER_COPY_MEMORY, 0, num_valid_in_bytes);
+
+    gst_audio_buffer_reorder_channels (outbuf,
+        config_ptr->pcm_format,
+        config_ptr->num_channels,
+        config_ptr->channel_positions, config_ptr->reordered_channel_positions);
+
+    *processed_data = outbuf;
+  } else {
+    /* Nothing needs to be done with the sample data.
+     * Instruct the baseparse class to just take out_size bytes
+     * from the input buffer */
+
+    GST_LOG_OBJECT (raw_audio_parse,
+        "using %" G_GSIZE_FORMAT " bytes out of the %" G_GSIZE_FORMAT
+        " bytes from the input buffer without reordering", num_valid_in_bytes,
+        total_num_in_bytes);
+
+    *processed_data = NULL;
+  }
+
+  return TRUE;
+}
+
+
+static gboolean
+gst_raw_audio_parse_is_unit_format_supported (G_GNUC_UNUSED GstRawBaseParse *
+    raw_base_parse, GstFormat format)
+{
+  switch (format) {
+    case GST_FORMAT_BYTES:
+    case GST_FORMAT_DEFAULT:
+      return TRUE;
+    default:
+      return FALSE;
+  }
+}
+
+
+static void
+gst_raw_audio_parse_get_units_per_second (GstRawBaseParse * raw_base_parse,
+    GstFormat format, GstRawBaseParseConfig config, gsize * units_per_sec_n,
+    gsize * units_per_sec_d)
+{
+  GstRawAudioParse *raw_audio_parse = GST_RAW_AUDIO_PARSE (raw_base_parse);
+  GstRawAudioParseConfig *config_ptr =
+      gst_raw_audio_parse_get_config_ptr (raw_audio_parse, config);
+
+  switch (format) {
+    case GST_FORMAT_BYTES:
+      *units_per_sec_n = config_ptr->sample_rate * config_ptr->bpf;
+      *units_per_sec_d = 1;
+      break;
+
+    case GST_FORMAT_DEFAULT:
+      *units_per_sec_n = config_ptr->sample_rate;
+      *units_per_sec_d = 1;
+      break;
+
+    default:
+      g_assert_not_reached ();
+  }
+}
+
+
+static gboolean
+gst_raw_audio_parse_is_using_sink_caps (GstRawAudioParse * raw_audio_parse)
+{
+  return raw_audio_parse->current_config ==
+      &(raw_audio_parse->sink_caps_config);
+}
+
+
+static GstRawAudioParseConfig *
+gst_raw_audio_parse_get_config_ptr (GstRawAudioParse * raw_audio_parse,
+    GstRawBaseParseConfig config)
+{
+  g_assert (raw_audio_parse->current_config != NULL);
+
+  switch (config) {
+    case GST_RAW_BASE_PARSE_CONFIG_PROPERTIES:
+      return &(raw_audio_parse->properties_config);
+
+    case GST_RAW_BASE_PARSE_CONFIG_SINKCAPS:
+      return &(raw_audio_parse->sink_caps_config);
+
+    default:
+      g_assert (raw_audio_parse->current_config != NULL);
+      return raw_audio_parse->current_config;
+  }
+}
+
+
+static void
+gst_raw_audio_parse_init_config (GstRawAudioParseConfig * config)
+{
+  config->ready = FALSE;
+  config->format = DEFAULT_FORMAT;
+  config->pcm_format = DEFAULT_PCM_FORMAT;
+  config->bpf = 0;
+  config->sample_rate = DEFAULT_SAMPLE_RATE;
+  config->num_channels = DEFAULT_NUM_CHANNELS;
+  config->interleaved = DEFAULT_INTERLEAVED;
+  config->needs_channel_reordering = FALSE;
+
+  gst_raw_audio_parse_set_config_channels (config, config->num_channels, 0,
+      TRUE);
+}
+
+
+static gboolean
+gst_raw_audio_parse_set_config_channels (GstRawAudioParseConfig * config,
+    guint num_channels, guint64 channel_mask, gboolean set_positions)
+{
+  g_assert (num_channels > 0);
+
+  config->num_channels = num_channels;
+  /* Setting this to FALSE, since initially, after setting the channels,
+   * the default GStreamer channel ordering is used. */
+  config->needs_channel_reordering = FALSE;
+
+  /* Set the channel positions based on the given channel mask if set_positions
+   * is set to TRUE. A channel mask of 0 signifies that a fallback mask should be
+   * used for the given number of channels. */
+  if (set_positions) {
+    if (channel_mask == 0)
+      channel_mask = gst_audio_channel_get_fallback_mask (config->num_channels);
+
+    return gst_audio_channel_positions_from_mask (config->num_channels,
+        channel_mask, config->channel_positions);
+  } else {
+    return TRUE;
+  }
+}
+
+
+static gboolean
+gst_raw_audio_parse_update_channel_reordering_flag (GstRawAudioParseConfig *
+    config)
+{
+  g_assert (config->num_channels > 0);
+
+  /* If the channel_positions array contains channel positions which are in an
+   * order that conforms to the valid GStreamer order, ensure that channel
+   * reordering is disabled.
+   * Otherwise, if the order of the positions in the channel_positions array
+   * does not conform to the GStreamer order, ensure it is enabled.
+   */
+
+  if (gst_audio_check_valid_channel_positions (config->channel_positions,
+          config->num_channels, TRUE)) {
+
+    config->needs_channel_reordering = FALSE;
+
+    return TRUE;
+  } else {
+    config->needs_channel_reordering = TRUE;
+    memcpy (config->reordered_channel_positions, config->channel_positions,
+        sizeof (GstAudioChannelPosition) * config->num_channels);
+    return
+        gst_audio_channel_positions_to_valid_order
+        (config->reordered_channel_positions, config->num_channels);
+  }
+}
+
+
+static void
+gst_raw_audio_parse_update_config_bpf (GstRawAudioParseConfig * config)
+{
+  switch (config->format) {
+    case GST_RAW_AUDIO_PARSE_FORMAT_PCM:
+    {
+      GstAudioFormatInfo const *fmt_info =
+          gst_audio_format_get_info (config->pcm_format);
+      g_assert (fmt_info != NULL);
+
+      config->bpf =
+          GST_AUDIO_FORMAT_INFO_WIDTH (fmt_info) * config->num_channels / 8;
+
+      break;
+    }
+
+    case GST_RAW_AUDIO_PARSE_FORMAT_ALAW:
+    case GST_RAW_AUDIO_PARSE_FORMAT_MULAW:
+      /* A-law and mu-law both use 1 byte per sample */
+      config->bpf = 1 * config->num_channels;
+      break;
+
+    default:
+      g_assert_not_reached ();
+  }
+}
+
+
+static gboolean
+gst_raw_audio_parse_caps_to_config (GstRawAudioParse * raw_audio_parse,
+    GstCaps * caps, GstRawAudioParseConfig * config)
+{
+  gboolean ret = FALSE;
+  GstStructure *structure;
+
+  /* Caps might get copied, and the copy needs to be unref'd.
+   * Also, the caller retains ownership over the original caps.
+   * So, to make this mechanism also work with cases where the
+   * caps are *not* copied, ref the original caps here first. */
+  gst_caps_ref (caps);
+
+  structure = gst_caps_get_structure (caps, 0);
+
+  /* For unaligned raw data, the output caps stay the same,
+   * except that audio/x-unaligned-raw becomes audio/x-raw,
+   * since the parser aligns the sample data */
+  if (gst_structure_has_name (structure, "audio/x-unaligned-raw")) {
+    /* Copy the caps to be able to modify them */
+    GstCaps *new_caps = gst_caps_copy (caps);
+    gst_caps_unref (caps);
+    caps = new_caps;
+
+    /* Change the media type to audio/x-raw , otherwise
+     * gst_audio_info_from_caps() won't work */
+    structure = gst_caps_get_structure (caps, 0);
+    gst_structure_set_name (structure, "audio/x-raw");
+  }
+
+  if (gst_structure_has_name (structure, "audio/x-raw")) {
+    guint num_channels;
+    GstAudioInfo info;
+    if (!gst_audio_info_from_caps (&info, caps)) {
+      GST_ERROR_OBJECT (raw_audio_parse,
+          "failed to parse caps %" GST_PTR_FORMAT, (gpointer) caps);
+      goto done;
+    }
+
+    num_channels = GST_AUDIO_INFO_CHANNELS (&info);
+
+    config->format = GST_RAW_AUDIO_PARSE_FORMAT_PCM;
+    config->pcm_format = GST_AUDIO_INFO_FORMAT (&info);
+    config->bpf = GST_AUDIO_INFO_BPF (&info);
+    config->sample_rate = GST_AUDIO_INFO_RATE (&info);
+    config->interleaved =
+        (GST_AUDIO_INFO_LAYOUT (&info) == GST_AUDIO_LAYOUT_INTERLEAVED);
+
+    gst_raw_audio_parse_set_config_channels (config, num_channels, 0, FALSE);
+    memcpy (config->channel_positions, &(GST_AUDIO_INFO_POSITION (&info, 0)),
+        sizeof (GstAudioChannelPosition) * num_channels);
+  } else if (gst_structure_has_name (structure, "audio/x-alaw")
+      || gst_structure_has_name (structure, "audio/x-mulaw")) {
+    gint i;
+    guint64 channel_mask;
+    guint num_channels;
+
+    config->format =
+        gst_structure_has_name (structure,
+        "audio/x-alaw") ? GST_RAW_AUDIO_PARSE_FORMAT_ALAW :
+        GST_RAW_AUDIO_PARSE_FORMAT_MULAW;
+
+    if (!gst_structure_get_int (structure, "rate", &i)) {
+      GST_ERROR_OBJECT (raw_audio_parse,
+          "missing rate value in caps %" GST_PTR_FORMAT, (gpointer) caps);
+      goto done;
+    }
+    config->sample_rate = i;
+
+    if (!gst_structure_get_int (structure, "channels", &i)) {
+      GST_ERROR_OBJECT (raw_audio_parse,
+          "missing channels value in caps %" GST_PTR_FORMAT, (gpointer) caps);
+      goto done;
+    }
+    num_channels = i;
+
+    if (!gst_structure_get (structure, "channel-mask", GST_TYPE_BITMASK,
+            &channel_mask, NULL)) {
+      channel_mask = gst_audio_channel_get_fallback_mask (num_channels);
+      GST_DEBUG_OBJECT (raw_audio_parse,
+          "input caps have no channel mask - using fallback mask %#"
+          G_GINT64_MODIFIER "x for %u channels", channel_mask, num_channels);
+    }
+
+    if (!gst_raw_audio_parse_set_config_channels (config, num_channels,
+            channel_mask, TRUE)) {
+      GST_ERROR_OBJECT (raw_audio_parse,
+          "could not use channel mask %#" G_GINT64_MODIFIER
+          "x for channel positions", channel_mask);
+      goto done;
+    }
+
+    /* A-law and mu-law both use 1 byte per sample */
+    config->bpf = 1 * num_channels;
+  } else {
+    GST_ERROR_OBJECT (raw_audio_parse,
+        "caps %" GST_PTR_FORMAT " have an unsupported media type",
+        (gpointer) caps);
+    goto done;
+  }
+
+  ret = TRUE;
+
+done:
+  gst_caps_unref (caps);
+  if (ret)
+    config->ready = TRUE;
+  return ret;
+}
+
+
+static gboolean
+gst_raw_audio_parse_config_to_caps (GstRawAudioParse * raw_audio_parse,
+    GstCaps ** caps, GstRawAudioParseConfig * config)
+{
+  gboolean ret = TRUE;
+  GstAudioChannelPosition *channel_positions;
+
+  g_assert (caps != NULL);
+
+  if (config->bpf == 0) {
+    GST_ERROR_OBJECT (raw_audio_parse,
+        "cannot convert config to caps - config not filled with valid values");
+    *caps = NULL;
+    return FALSE;
+  }
+
+  channel_positions =
+      config->needs_channel_reordering ? &(config->
+      reordered_channel_positions[0]) : &(config->channel_positions[0]);
+
+  switch (config->format) {
+    case GST_RAW_AUDIO_PARSE_FORMAT_PCM:
+    {
+      GstAudioInfo info;
+      gst_audio_info_init (&info);
+      gst_audio_info_set_format (&info,
+          config->pcm_format,
+          config->sample_rate, config->num_channels, channel_positions);
+
+      *caps = gst_audio_info_to_caps (&info);
+
+      break;
+    }
+
+    case GST_RAW_AUDIO_PARSE_FORMAT_ALAW:
+    case GST_RAW_AUDIO_PARSE_FORMAT_MULAW:
+    {
+      guint64 channel_mask;
+
+      if (!gst_audio_channel_positions_to_mask (channel_positions,
+              config->num_channels, TRUE, &channel_mask)) {
+        GST_ERROR_OBJECT (raw_audio_parse, "invalid channel positions");
+        ret = FALSE;
+        break;
+      }
+
+      *caps = gst_caps_new_simple (
+          (config->format ==
+              GST_RAW_AUDIO_PARSE_FORMAT_ALAW) ? "audio/x-alaw" :
+          "audio/x-mulaw", "rate", G_TYPE_INT, config->sample_rate, "channels",
+          G_TYPE_INT, config->num_channels, "channel-mask", GST_TYPE_BITMASK,
+          channel_mask, NULL);
+
+      break;
+    }
+
+    default:
+      g_assert_not_reached ();
+      ret = FALSE;
+  }
+
+  if (!ret)
+    *caps = NULL;
+
+  return ret;
+}
+
+
+
+
+GType
+gst_raw_audio_parse_format_get_type (void)
+{
+  static GType audio_parse_format_gtype = 0;
+  static const GEnumValue types[] = {
+    {GST_RAW_AUDIO_PARSE_FORMAT_PCM, "PCM", "pcm"},
+    {GST_RAW_AUDIO_PARSE_FORMAT_ALAW, "A-Law", "alaw"},
+    {GST_RAW_AUDIO_PARSE_FORMAT_MULAW, "\302\265-Law", "mulaw"},
+    {0, NULL, NULL}
+  };
+
+  if (!audio_parse_format_gtype)
+    audio_parse_format_gtype =
+        g_enum_register_static ("GstRawAudioParseFormat", types);
+
+  return audio_parse_format_gtype;
+}
diff --git a/gst/rawparse/gstrawaudioparse.h b/gst/rawparse/gstrawaudioparse.h
new file mode 100644
index 0000000..f1e0766
--- /dev/null
+++ b/gst/rawparse/gstrawaudioparse.h
@@ -0,0 +1,131 @@
+/* GStreamer
+ * Copyright (C) <2016> Carlos Rafael Giani <dv at pseudoterminal dot org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_RAW_AUDIO_PARSE_H__
+#define __GST_RAW_AUDIO_PARSE_H__
+
+#include <gst/gst.h>
+#include <gst/audio/audio.h>
+#include "gstrawbaseparse.h"
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_RAW_AUDIO_PARSE \
+  (gst_raw_audio_parse_get_type())
+#define GST_RAW_AUDIO_PARSE(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_RAW_AUDIO_PARSE, GstRawAudioParse))
+#define GST_RAW_AUDIO_PARSE_CAST(obj) \
+  ((GstRawAudioParse *)(obj))
+#define GST_RAW_AUDIO_PARSE_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_RAW_AUDIO_PARSE, GstRawAudioParseClass))
+#define GST_IS_RAW_AUDIO_PARSE(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_RAW_AUDIO_PARSE))
+#define GST_IS_RAW_AUDIO_PARSE_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_RAW_AUDIO_PARSE))
+
+
+typedef enum _GstRawAudioParseFormat GstRawAudioParseFormat;
+
+typedef struct _GstRawAudioParseConfig GstRawAudioParseConfig;
+typedef struct _GstRawAudioParse GstRawAudioParse;
+typedef struct _GstRawAudioParseClass GstRawAudioParseClass;
+
+
+enum _GstRawAudioParseFormat
+{
+  GST_RAW_AUDIO_PARSE_FORMAT_PCM,
+  GST_RAW_AUDIO_PARSE_FORMAT_MULAW,
+  GST_RAW_AUDIO_PARSE_FORMAT_ALAW
+};
+
+
+/* Contains information about the sample rate, format, and channel count to use. */
+struct _GstRawAudioParseConfig
+{
+  /* If TRUE, then this configuration is ready to use */
+  gboolean ready;
+  /* Format of the configuration. Can be PCM, a-law, mu-law. */
+  GstRawAudioParseFormat format;
+  /* If format is set to PCM, this specifies the exact PCM format in use.
+   * Meaningless if format is set to anything other than PCM. */
+  GstAudioFormat pcm_format;
+  /* Bytes per frame. Calculated as: bpf = bytes_per_sample * num_channels
+   * Must be nonzero. This is the size of one frame, the value returned
+   * by the GstRawBaseParseClass get_config_frame_size() vfunc. */
+  guint bpf;
+  /* Sample rate in Hz - must be nonzero */
+  guint sample_rate;
+  /* Number of channels - must be nonzero */
+  guint num_channels;
+  /* TRUE if the data is interleaved, FALSE otherwise */
+  gboolean interleaved;
+
+  /* Array of channel positions, one position per channel; its first
+   * num_channels values are valid. They are computed out of the number
+   * of channels if no positions are explicitely given. */
+  GstAudioChannelPosition channel_positions[64];
+
+  /* If the channel_positions are in a valid GStreamer channel order, then
+   * this is not used, and needs_channel_reordering is FALSE. Otherwise,
+   * this contains the same positions as in channel_positions, but in the
+   * order GStreamer expects. needs_channel_reordering will be TRUE in that
+   * case. This is used for reordering samples in outgoing buffers if
+   * necessary. */
+  GstAudioChannelPosition reordered_channel_positions[64];
+
+  /* TRUE if channel reordering is necessary, FALSE otherwise. See above
+   * for details. */
+  gboolean needs_channel_reordering;
+};
+
+
+struct _GstRawAudioParse
+{
+  GstRawBaseParse parent;
+
+  /*< private > */
+
+  /* Configuration controlled by the object properties. Its ready value
+   * is set to TRUE from the start, so it can be used right away.
+   */
+  GstRawAudioParseConfig properties_config;
+  /* Configuration controlled by the sink caps. Its ready value is
+   * initially set to FALSE until valid sink caps come in. It is set to
+   * FALSE again when the stream-start event is observed.
+   */
+  GstRawAudioParseConfig sink_caps_config;
+  /* Currently active configuration. Points either to properties_config
+   * or to sink_caps_config. This is never NULL. */
+  GstRawAudioParseConfig *current_config;
+};
+
+
+struct _GstRawAudioParseClass
+{
+  GstRawBaseParseClass parent_class;
+};
+
+
+GType gst_raw_audio_parse_get_type (void);
+GType gst_raw_audio_parse_format_get_type (void);
+
+
+G_END_DECLS
+
+#endif
diff --git a/gst/rawparse/gstrawbaseparse.c b/gst/rawparse/gstrawbaseparse.c
new file mode 100644
index 0000000..e90f400
--- /dev/null
+++ b/gst/rawparse/gstrawbaseparse.c
@@ -0,0 +1,748 @@
+/* GStreamer
+ * Copyright (C) <2016> Carlos Rafael Giani <dv at pseudoterminal dot org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/**
+ * SECTION:gstrawbaseparse
+ * @short_description: Base class for raw media data parsers
+ *
+ * This base class is for parsers which read raw media data and output
+ * timestamped buffers with an integer number of frames inside.
+ *
+ * The format of the raw media data is specified in one of two ways: either,
+ * the information from the sink pad's caps is taken, or the information from
+ * the properties is used (this is chosen by the use-sink-caps property).
+ * These two ways are internally referred to as "configurations". The configuration
+ * that receives its information from the sink pad's caps is called the
+ * "sink caps configuration", while the one that depends on the information from
+ * the properties is the "properties configuration". Configurations have a
+ * "readiness". A configuration is "ready" when it contains valid information.
+ * For example, with an audio parser, a configuration is not ready unless it
+ * contains a valid sample rate, sample format, and channel count.
+ *
+ * The properties configuration must always be ready, even right from the start.
+ * Subclasses must ensure this. The underlying reason is that properties have valid
+ * values right from the start, and with the properties configuration, there is
+ * nothing that readies it before actual data is sent (unlike with the sink caps
+ * configuration, where a sink caps event will ready it before data is pushed
+ * downstream).
+ *
+ * It is possible to switch between the configurations during a stream by
+ * setting the use-sink-caps property. Subclasses typically allow for updating the
+ * properties configuration during a stream by setting the various properties
+ * (like sample-rate for a raw audio parser).
+ * In these cases, the parser will produce a new CAPS event and push it downstream
+ * to announce the caps for the new configuration. This also happens if the sink
+ * caps change.
+ *
+ * A common mistake when trying to parse raw data with no input caps (for example,
+ * a file with raw PCM samples when using rawaudioparse) is to forget to set the
+ * use-sink-caps property to FALSE. In this case, the parser will report an error
+ * when it tries to access the current configuration (because then the sink caps
+ * configuration will be the current one and it will not contain valid values
+ * since no sink caps were seen at this point).
+ *
+ * Subclasses must ensure that the properties configuration is the default one.
+ *
+ * The sink caps configuration is mostly useful with push-based sources, because these
+ * will produce caps events and send them downstream. With pull-based sources, it is
+ * possible that this doesn't happen. Since the sink caps configuration requires a caps
+ * event to arrive at the sinkpad, this will cause the parser to fail then.
+ *
+ * The base class identifies the configurations by means of the GstRawAudioParseConfig
+ * enum. It instructs the subclass to switch between configurations this way, and
+ * also requests information about the current configuration, a configuration's
+ * frame size, its readiness, etc. Subclasses are not required to use any particular
+ * structure for the configuration implementations.
+ *
+ * Use the GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK and GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK
+ * macros to protect configuration modifications.
+ *
+ * <listitem>
+ *   <itemizedlist>
+ *   <title>Summary of the subclass requirements</title>
+ *     <listitem><para>
+ *       Sink caps and properties configurations must both be
+ *       implemented and supported. It must also be ensured that there is a
+ *       "current" configuration.
+ *     </para></listitem>
+ *       Modifications to the configurations must be protected with the
+ *       GstRawBaseParse lock. This is typically necessary when the
+ *       properties configuration is modified by setting new property values.
+ *       (Note that the lock is held during *all* vfunc calls.)
+ *     <listitem><para>
+ *       If the properties configuration is updated (typically by
+ *       setting new property values), gst_raw_base_parse_invalidate_src_caps()
+ *       must be called if the properties config is the current one. This is
+ *       necessary to ensure that GstBaseParse pushes a new caps event downstream
+ *       which contains caps from the updated configuration.
+ *     </para></listitem>
+ *     <listitem><para>
+ *       In case there are bytes in each frame that aren't part of the actual
+ *       payload, the get_overhead_size() vfunc must be defined, and the
+ *       @get_config_frame_size() vfunc must return a frame size that includes
+ *       the number of non-payload bytes (= the overhead). Otherwise, the
+ *       timestamps will incorrectly include the overhead bytes.
+ *     </para></listitem>
+ * </listitem>
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
+#include <string.h>
+#include "gstrawbaseparse.h"
+
+
+GST_DEBUG_CATEGORY_STATIC (raw_base_parse_debug);
+#define GST_CAT_DEFAULT raw_base_parse_debug
+
+
+enum
+{
+  PROP_0,
+  PROP_USE_SINK_CAPS
+};
+
+
+#define DEFAULT_USE_SINK_CAPS  FALSE
+#define INITIAL_PARSER_CONFIG \
+  ((DEFAULT_USE_SINK_CAPS) ? GST_RAW_BASE_PARSE_CONFIG_SINKCAPS : \
+   GST_RAW_BASE_PARSE_CONFIG_PROPERTIES)
+
+
+#define gst_raw_base_parse_parent_class parent_class
+G_DEFINE_ABSTRACT_TYPE (GstRawBaseParse, gst_raw_base_parse,
+    GST_TYPE_BASE_PARSE);
+
+
+static void gst_raw_base_parse_finalize (GObject * object);
+static void gst_raw_base_parse_set_property (GObject * object, guint prop_id,
+    GValue const *value, GParamSpec * pspec);
+static void gst_raw_base_parse_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+static gboolean gst_raw_base_parse_start (GstBaseParse * parse);
+static gboolean gst_raw_base_parse_stop (GstBaseParse * parse);
+static gboolean gst_raw_base_parse_set_sink_caps (GstBaseParse * parse,
+    GstCaps * caps);
+static GstFlowReturn gst_raw_base_parse_handle_frame (GstBaseParse * parse,
+    GstBaseParseFrame * frame, gint * skipsize);
+static gboolean gst_raw_base_parse_convert (GstBaseParse * parse,
+    GstFormat src_format, gint64 src_value, GstFormat dest_format,
+    gint64 * dest_value);
+
+static gboolean gst_raw_base_parse_is_using_sink_caps (GstRawBaseParse *
+    raw_base_parse);
+static gboolean gst_raw_base_parse_is_gstformat_supported (GstRawBaseParse *
+    raw_base_parse, GstFormat format);
+
+
+
+static void
+gst_raw_base_parse_class_init (GstRawBaseParseClass * klass)
+{
+  GObjectClass *object_class;
+  GstBaseParseClass *baseparse_class;
+
+  GST_DEBUG_CATEGORY_INIT (raw_base_parse_debug, "rawbaseparse", 0,
+      "raw base parse class");
+
+  object_class = G_OBJECT_CLASS (klass);
+  baseparse_class = GST_BASE_PARSE_CLASS (klass);
+
+  object_class->finalize = GST_DEBUG_FUNCPTR (gst_raw_base_parse_finalize);
+  object_class->set_property =
+      GST_DEBUG_FUNCPTR (gst_raw_base_parse_set_property);
+  object_class->get_property =
+      GST_DEBUG_FUNCPTR (gst_raw_base_parse_get_property);
+
+  baseparse_class->start = GST_DEBUG_FUNCPTR (gst_raw_base_parse_start);
+  baseparse_class->stop = GST_DEBUG_FUNCPTR (gst_raw_base_parse_stop);
+  baseparse_class->set_sink_caps =
+      GST_DEBUG_FUNCPTR (gst_raw_base_parse_set_sink_caps);
+  baseparse_class->handle_frame =
+      GST_DEBUG_FUNCPTR (gst_raw_base_parse_handle_frame);
+  baseparse_class->convert = GST_DEBUG_FUNCPTR (gst_raw_base_parse_convert);
+
+  /**
+   * GstRawBaseParse::use-sink-caps:
+   *
+   * Use sink caps configuration. If set to false, the parser
+   * will use the properties configuration instead. It is possible
+   * to switch between these during playback.
+   */
+  g_object_class_install_property (object_class,
+      PROP_USE_SINK_CAPS,
+      g_param_spec_boolean ("use-sink-caps",
+          "Use sink caps",
+          "Use the sink caps for defining the output format",
+          DEFAULT_USE_SINK_CAPS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
+      );
+}
+
+
+static void
+gst_raw_base_parse_init (GstRawBaseParse * raw_base_parse)
+{
+  raw_base_parse->src_caps_set = FALSE;
+  g_mutex_init (&(raw_base_parse->config_mutex));
+}
+
+
+static void
+gst_raw_base_parse_finalize (GObject * object)
+{
+  GstRawBaseParse *raw_base_parse = GST_RAW_BASE_PARSE (object);
+
+  g_mutex_clear (&(raw_base_parse->config_mutex));
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+
+static void
+gst_raw_base_parse_set_property (GObject * object, guint prop_id,
+    GValue const *value, GParamSpec * pspec)
+{
+  GstBaseParse *base_parse = GST_BASE_PARSE (object);
+  GstRawBaseParse *raw_base_parse = GST_RAW_BASE_PARSE (object);
+  GstRawBaseParseClass *klass = GST_RAW_BASE_PARSE_GET_CLASS (object);
+
+  g_assert (klass->is_config_ready);
+  g_assert (klass->set_current_config);
+
+  switch (prop_id) {
+    case PROP_USE_SINK_CAPS:
+    {
+      gboolean new_state, cur_state;
+      GstRawBaseParseConfig new_config;
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+
+      /* Check to ensure nothing is done if the value stays the same */
+      new_state = g_value_get_boolean (value);
+      cur_state = gst_raw_base_parse_is_using_sink_caps (raw_base_parse);
+      if (new_state == cur_state) {
+        GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+        break;
+      }
+
+      GST_DEBUG_OBJECT (raw_base_parse, "switching to %s config",
+          new_state ? "sink caps" : "properties");
+      new_config =
+          new_state ? GST_RAW_BASE_PARSE_CONFIG_SINKCAPS :
+          GST_RAW_BASE_PARSE_CONFIG_PROPERTIES;
+
+      if (!klass->set_current_config (raw_base_parse, new_config)) {
+        GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+        GST_ELEMENT_ERROR (raw_base_parse, STREAM, FAILED,
+            ("could not set new current config"), ("use-sink-caps property: %d",
+                new_state));
+        break;
+      }
+
+      /* Update the minimum frame size if the config is ready. This ensures that
+       * the next buffer that is passed to handle_frame contains complete frames.
+       * If the current config is the properties config, then it will always be
+       * ready, and its frame size will be valid. Ensure that the baseparse minimum
+       * frame size is set properly then.
+       * If the current config is the sink caps config, then it will initially not
+       * be ready until the sink caps are set, so the minimum frame size cannot be
+       * set right here. However, since the caps always come in *before* the actual
+       * data, the config will be readied in the set_sink_caps function, and be ready
+       * by the time handle_frame is called. There, the minimum frame size is set as
+       * well. */
+      if (klass->is_config_ready (raw_base_parse,
+              GST_RAW_BASE_PARSE_CONFIG_CURRENT)) {
+        gsize frame_size = klass->get_config_frame_size (raw_base_parse,
+            GST_RAW_BASE_PARSE_CONFIG_CURRENT);
+        gst_base_parse_set_min_frame_size (base_parse, frame_size);
+      }
+
+      /* Since the current config was switched, the source caps change. Ensure the
+       * new caps are pushed downstream by setting src_caps_set to FALSE: This way,
+       * the next handle_frame call will take care of that. */
+      raw_base_parse->src_caps_set = FALSE;
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+
+      break;
+    }
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+
+static void
+gst_raw_base_parse_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstRawBaseParse *raw_base_parse = GST_RAW_BASE_PARSE (object);
+
+  switch (prop_id) {
+    case PROP_USE_SINK_CAPS:
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+      g_value_set_boolean (value,
+          gst_raw_base_parse_is_using_sink_caps (raw_base_parse));
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+
+static gboolean
+gst_raw_base_parse_start (GstBaseParse * parse)
+{
+  GstBaseParse *base_parse = GST_BASE_PARSE (parse);
+  GstRawBaseParse *raw_base_parse = GST_RAW_BASE_PARSE (parse);
+  GstRawBaseParseClass *klass = GST_RAW_BASE_PARSE_GET_CLASS (parse);
+
+  g_assert (klass->set_current_config);
+
+  GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (raw_base_parse);
+
+  /* If the config is ready from the start, set the min frame size
+   * (this will happen with the properties config) */
+  if (klass->is_config_ready (raw_base_parse,
+          GST_RAW_BASE_PARSE_CONFIG_CURRENT)) {
+    gsize frame_size = klass->get_config_frame_size (raw_base_parse,
+        GST_RAW_BASE_PARSE_CONFIG_CURRENT);
+    gst_base_parse_set_min_frame_size (base_parse, frame_size);
+  }
+
+  GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (raw_base_parse);
+
+  return TRUE;
+}
+
+
+static gboolean
+gst_raw_base_parse_stop (GstBaseParse * parse)
+{
+  GstRawBaseParse *raw_base_parse = GST_RAW_BASE_PARSE (parse);
+
+  GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (raw_base_parse);
+  raw_base_parse->src_caps_set = FALSE;
+  GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (raw_base_parse);
+
+  return TRUE;
+}
+
+
+static gboolean
+gst_raw_base_parse_set_sink_caps (GstBaseParse * parse, GstCaps * caps)
+{
+  gboolean ret = FALSE;
+  GstRawBaseParse *raw_base_parse = GST_RAW_BASE_PARSE (parse);
+  GstRawBaseParseClass *klass = GST_RAW_BASE_PARSE_GET_CLASS (parse);
+
+  g_assert (klass->set_config_from_caps);
+  g_assert (klass->get_caps_from_config);
+  g_assert (klass->get_config_frame_size);
+
+
+  GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (raw_base_parse);
+
+  GST_DEBUG_OBJECT (parse, "getting config from new sink caps");
+
+  /* Convert the new sink caps to sink caps config. This also
+   * readies the config. */
+  ret =
+      klass->set_config_from_caps (raw_base_parse,
+      GST_RAW_BASE_PARSE_CONFIG_SINKCAPS, caps);
+  if (!ret) {
+    GST_ERROR_OBJECT (raw_base_parse, "could not get config from sink caps");
+    goto done;
+  }
+
+  /* If the sink caps config is currently active, push caps downstream,
+   * set the minimum frame size (to guarantee that input buffers hold
+   * complete frames), and update the src_caps_set flag. If the sink
+   * caps config isn't the currently active config, just exit, since in
+   * that case, the caps will always be pushed downstream in handle_frame. */
+  if (gst_raw_base_parse_is_using_sink_caps (raw_base_parse)) {
+    GstCaps *new_src_caps;
+    gsize frame_size;
+
+    GST_DEBUG_OBJECT (parse,
+        "sink caps config is the current one; trying to push new caps downstream");
+
+    /* Convert back to caps. The caps may have changed, for example
+     * audio/x-unaligned-raw may have been replaced with audio/x-raw.
+     * (Also, this keeps the behavior in sync with that of the block
+     * in handle_frame that pushes caps downstream if not done already.) */
+    if (!klass->get_caps_from_config (raw_base_parse,
+            GST_RAW_BASE_PARSE_CONFIG_CURRENT, &new_src_caps)) {
+      GST_ERROR_OBJECT (raw_base_parse,
+          "could not get src caps from current config");
+      goto done;
+    }
+
+    GST_DEBUG_OBJECT (raw_base_parse,
+        "got new sink caps; updating src caps to %" GST_PTR_FORMAT,
+        (gpointer) new_src_caps);
+
+    frame_size =
+        klass->get_config_frame_size (raw_base_parse,
+        GST_RAW_BASE_PARSE_CONFIG_CURRENT);
+    gst_base_parse_set_min_frame_size (parse, frame_size);
+
+    raw_base_parse->src_caps_set = TRUE;
+
+    GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (raw_base_parse);
+
+    /* Push caps outside of the lock */
+    gst_pad_push_event (GST_BASE_PARSE_SRC_PAD (raw_base_parse),
+        gst_event_new_caps (new_src_caps)
+        );
+
+    gst_caps_unref (new_src_caps);
+  } else {
+    GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (raw_base_parse);
+  }
+
+  ret = TRUE;
+
+done:
+  return ret;
+}
+
+
+static GstFlowReturn
+gst_raw_base_parse_handle_frame (GstBaseParse * parse,
+    GstBaseParseFrame * frame, gint * skipsize)
+{
+  gsize in_size, out_size;
+  guint frame_size;
+  guint num_out_frames;
+  gsize units_n, units_d;
+  guint64 buffer_duration;
+  GstFlowReturn flow_ret = GST_FLOW_OK;
+  GstEvent *new_caps_event = NULL;
+  GstRawBaseParse *raw_base_parse = GST_RAW_BASE_PARSE (parse);
+  GstRawBaseParseClass *klass = GST_RAW_BASE_PARSE_GET_CLASS (parse);
+
+  g_assert (klass->is_config_ready);
+  g_assert (klass->get_caps_from_config);
+  g_assert (klass->get_config_frame_size);
+  g_assert (klass->get_units_per_second);
+
+
+  /* We never skip any bytes this way. Instead, subclass takes care
+   * of skipping any overhead (necessary, since the way it needs to
+   * be skipped is completely subclass specific). */
+  *skipsize = 0;
+
+
+  /* The operations below access the current config. Protect
+   * against race conditions by using the object lock. */
+  GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (raw_base_parse);
+
+
+  /* If the source pad caps haven't been set yet, or need to be
+   * set again, do so now, BEFORE any buffers are pushed out */
+  if (G_UNLIKELY (!raw_base_parse->src_caps_set)) {
+    GstCaps *new_src_caps;
+
+    if (G_UNLIKELY (!klass->is_config_ready (raw_base_parse,
+                GST_RAW_BASE_PARSE_CONFIG_CURRENT))) {
+      /* The current configuration is not ready. No caps can be
+       * generated out of it.
+       * The most likely reason for this is that the sink caps config
+       * is the current one and no valid sink caps have been pushed
+       * by upstream. Report the problem and exit. */
+
+      if (gst_raw_base_parse_is_using_sink_caps (raw_base_parse)) {
+        goto config_not_ready;
+      } else {
+        /* This should not be reached if the property config is active */
+        g_assert_not_reached ();
+      }
+    }
+
+    GST_DEBUG_OBJECT (parse,
+        "setting src caps since this has not been done yet");
+
+    /* Convert the current config to a caps structure to
+     * inform downstream about the new format */
+    if (!klass->get_caps_from_config (raw_base_parse,
+            GST_RAW_BASE_PARSE_CONFIG_CURRENT, &new_src_caps)) {
+      GST_ERROR_OBJECT (raw_base_parse,
+          "could not get src caps from current config");
+      flow_ret = GST_FLOW_NOT_NEGOTIATED;
+      goto error_locked;
+    }
+
+    new_caps_event = gst_event_new_caps (new_src_caps);
+    gst_caps_unref (new_src_caps);
+
+    raw_base_parse->src_caps_set = TRUE;
+  }
+
+  frame_size =
+      klass->get_config_frame_size (raw_base_parse,
+      GST_RAW_BASE_PARSE_CONFIG_CURRENT);
+
+
+  in_size = gst_buffer_get_size (frame->buffer);
+
+  /* gst_base_parse_set_min_frame_size() is called when the current
+   * configuration changes and the change affects the frame size. This
+   * means that a buffer must contain at least as many bytes as indicated
+   * by the frame size. If there are fewer inside an error occurred;
+   * either something in the parser went wrong, or the min frame size
+   * wasn't updated properly. */
+  g_assert (in_size >= frame_size);
+
+  /* Determine how many complete frames would fit in the input buffer.
+   * Then check if this amount exceeds the maximum number of frames
+   * as indicated by the subclass. */
+  num_out_frames = (in_size / frame_size);
+  if (klass->get_max_frames_per_buffer) {
+    guint max_num_out_frames = klass->get_max_frames_per_buffer (raw_base_parse,
+        GST_RAW_BASE_PARSE_CONFIG_CURRENT);
+    num_out_frames = MIN (num_out_frames, max_num_out_frames);
+  }
+
+  /* Ensure that the size of the buffers that get pushed downstream
+   * is always an integer multiple of the frame size to prevent cases
+   * where downstream gets buffers with incomplete frames. */
+  out_size = num_out_frames * frame_size;
+
+  /* Set the overhead size to ensure that timestamping excludes these
+   * extra overhead bytes. */
+  frame->overhead =
+      klass->get_overhead_size ? klass->get_overhead_size (raw_base_parse,
+      GST_RAW_BASE_PARSE_CONFIG_CURRENT) : 0;
+
+  g_assert (out_size >= (guint) (frame->overhead));
+  out_size -= frame->overhead;
+
+  GST_LOG_OBJECT (raw_base_parse,
+      "%" G_GSIZE_FORMAT " bytes input  %" G_GSIZE_FORMAT
+      " bytes output (%u frame(s))  %d bytes overhead", in_size, out_size,
+      num_out_frames, frame->overhead);
+
+  /* Calculate buffer duration */
+  klass->get_units_per_second (raw_base_parse, GST_FORMAT_BYTES,
+      GST_RAW_BASE_PARSE_CONFIG_CURRENT, &units_n, &units_d);
+  if (units_n == 0 || units_d == 0)
+    buffer_duration = GST_CLOCK_TIME_NONE;
+  else
+    buffer_duration =
+        gst_util_uint64_scale (out_size, GST_SECOND * units_d, units_n);
+
+  if (klass->process) {
+    GstBuffer *processed_data = NULL;
+
+    if (!klass->process (raw_base_parse, GST_RAW_BASE_PARSE_CONFIG_CURRENT,
+            frame->buffer, in_size, out_size, &processed_data))
+      goto process_error;
+
+    frame->out_buffer = processed_data;
+  } else {
+    frame->out_buffer = NULL;
+  }
+
+  /* Set the duration of the output buffer, or if none exists, of
+   * the input buffer. Do this after the process() call, since in
+   * case out_buffer is set, the subclass has created a new buffer.
+   * Instead of requiring subclasses to set the duration (which
+   * anyway must always be buffer_duration), let's do it here. */
+  if (frame->out_buffer != NULL)
+    GST_BUFFER_DURATION (frame->out_buffer) = buffer_duration;
+  else
+    GST_BUFFER_DURATION (frame->buffer) = buffer_duration;
+
+  /* Access to the current config is not needed in subsequent
+   * operations, so the lock can be released */
+  GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (raw_base_parse);
+
+
+  /* If any new caps have to be pushed downstrean, do so
+   * *before* the frame is finished */
+  if (G_UNLIKELY (new_caps_event != NULL)) {
+    gst_pad_push_event (GST_BASE_PARSE_SRC_PAD (raw_base_parse),
+        new_caps_event);
+    new_caps_event = NULL;
+  }
+
+  gst_base_parse_finish_frame (parse, frame, out_size + frame->overhead);
+
+
+  return flow_ret;
+
+
+config_not_ready:
+  GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (raw_base_parse);
+  GST_ELEMENT_ERROR (parse, STREAM, FORMAT,
+      ("sink caps config is the current config, and it is not ready -"
+          "upstream may not have pushed a caps event yet"), (NULL));
+  flow_ret = GST_FLOW_ERROR;
+  goto error_end;
+
+process_error:
+  GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (raw_base_parse);
+  GST_ELEMENT_ERROR (parse, STREAM, DECODE, ("could not process data"), (NULL));
+  flow_ret = GST_FLOW_ERROR;
+  goto error_end;
+
+error_locked:
+  GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (raw_base_parse);
+  goto error_end;
+
+error_end:
+  frame->flags |= GST_BASE_PARSE_FRAME_FLAG_DROP;
+  if (new_caps_event != NULL)
+    gst_event_unref (new_caps_event);
+  return flow_ret;
+}
+
+
+static gboolean
+gst_raw_base_parse_convert (GstBaseParse * parse, GstFormat src_format,
+    gint64 src_value, GstFormat dest_format, gint64 * dest_value)
+{
+  GstRawBaseParse *raw_base_parse = GST_RAW_BASE_PARSE (parse);
+  GstRawBaseParseClass *klass = GST_RAW_BASE_PARSE_GET_CLASS (parse);
+  gboolean ret = TRUE;
+  gsize units_n, units_d;
+
+  g_assert (klass->is_config_ready);
+  g_assert (klass->get_units_per_second);
+
+
+  /* The operations below access the current config. Protect
+   * against race conditions by using the object lock. */
+  GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (raw_base_parse);
+
+
+  if (!klass->is_config_ready (raw_base_parse,
+          GST_RAW_BASE_PARSE_CONFIG_CURRENT)) {
+    if (gst_raw_base_parse_is_using_sink_caps (raw_base_parse)) {
+      goto config_not_ready;
+    } else {
+      /* This should not be reached if the property config is active */
+      g_assert_not_reached ();
+    }
+  }
+
+  if (G_UNLIKELY (src_format == dest_format)) {
+    *dest_value = src_value;
+  } else if ((src_format == GST_FORMAT_TIME || dest_format == GST_FORMAT_TIME)
+      && gst_raw_base_parse_is_gstformat_supported (raw_base_parse, src_format)
+      && gst_raw_base_parse_is_gstformat_supported (raw_base_parse, src_format)) {
+    /* Perform conversions here if either the src or dest format
+     * are GST_FORMAT_TIME and the other format is supported by
+     * the subclass. This is because we perform TIME<->non-TIME
+     * conversions here. Typically, subclasses only support
+     * BYTES and DEFAULT formats. */
+
+    if (src_format == GST_FORMAT_TIME) {
+      /* The source format is time, so perform a TIME -> non-TIME conversion */
+      klass->get_units_per_second (raw_base_parse, dest_format,
+          GST_RAW_BASE_PARSE_CONFIG_CURRENT, &units_n, &units_d);
+      *dest_value = (units_n == 0
+          || units_d == 0) ? src_value : gst_util_uint64_scale (src_value,
+          units_n, GST_SECOND * units_d);
+    } else {
+      /* The dest format is time, so perform a non-TIME -> TIME conversion */
+      klass->get_units_per_second (raw_base_parse, src_format,
+          GST_RAW_BASE_PARSE_CONFIG_CURRENT, &units_n, &units_d);
+      *dest_value = (units_n == 0
+          || units_d == 0) ? src_value : gst_util_uint64_scale (src_value,
+          GST_SECOND * units_d, units_n);
+    }
+  } else {
+    /* Fallback for other conversions */
+    ret =
+        gst_base_parse_convert_default (parse, src_format, src_value,
+        dest_format, dest_value);
+  }
+
+  GST_DEBUG_OBJECT (parse,
+      "converted %s -> %s  %" G_GINT64_FORMAT " -> %" GST_TIME_FORMAT,
+      gst_format_get_name (src_format), gst_format_get_name (dest_format),
+      src_value, GST_TIME_ARGS (*dest_value));
+
+  GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (raw_base_parse);
+  return ret;
+
+
+config_not_ready:
+  GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (raw_base_parse);
+  GST_ELEMENT_ERROR (parse, STREAM, FORMAT,
+      ("sink caps config is the current config, and it is not ready - "
+          "upstream may not have pushed a caps event yet"), (NULL));
+  return FALSE;
+}
+
+
+static gboolean
+gst_raw_base_parse_is_using_sink_caps (GstRawBaseParse * raw_base_parse)
+{
+  /* must be called with lock */
+  GstRawBaseParseClass *klass = GST_RAW_BASE_PARSE_GET_CLASS (raw_base_parse);
+  g_assert (klass->get_current_config);
+  return klass->get_current_config (raw_base_parse) ==
+      GST_RAW_BASE_PARSE_CONFIG_SINKCAPS;
+}
+
+
+static gboolean
+gst_raw_base_parse_is_gstformat_supported (GstRawBaseParse * raw_base_parse,
+    GstFormat format)
+{
+  /* must be called with lock */
+  GstRawBaseParseClass *klass = GST_RAW_BASE_PARSE_GET_CLASS (raw_base_parse);
+  g_assert (klass->is_unit_format_supported);
+  return klass->is_unit_format_supported (raw_base_parse, format);
+}
+
+
+
+
+
+/**
+ * gst_raw_base_parse_invalidate_src_caps:
+ * @raw_base_parse: a #GstRawBaseParse instance
+ *
+ * Flags the current source caps as invalid. Before the next downstream
+ * buffer push, @get_caps_from_config is called, and the created caps are
+ * pushed downstream in a new caps event, This is used if for example the
+ * properties configuration is modified in the subclass.
+ *
+ * Note that this must be called with the parser lock held. Use the
+ * GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK() and GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK()
+ * macros for this purpose.
+ */
+void
+gst_raw_base_parse_invalidate_src_caps (GstRawBaseParse * raw_base_parse)
+{
+  /* must be called with lock */
+  g_assert (raw_base_parse != NULL);
+  raw_base_parse->src_caps_set = FALSE;
+}
diff --git a/gst/rawparse/gstrawbaseparse.h b/gst/rawparse/gstrawbaseparse.h
new file mode 100644
index 0000000..519b409
--- /dev/null
+++ b/gst/rawparse/gstrawbaseparse.h
@@ -0,0 +1,207 @@
+/* GStreamer
+ * Copyright (C) <2016> Carlos Rafael Giani <dv at pseudoterminal dot org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_RAW_BASE_PARSE_H__
+#define __GST_RAW_BASE_PARSE_H__
+
+#include <gst/gst.h>
+#include <gst/base/base.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_RAW_BASE_PARSE \
+  (gst_raw_base_parse_get_type())
+#define GST_RAW_BASE_PARSE(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_RAW_BASE_PARSE, GstRawBaseParse))
+#define GST_RAW_BASE_PARSE_CAST(obj) \
+  ((GstRawBaseParse *)(obj))
+#define GST_RAW_BASE_PARSE_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_RAW_BASE_PARSE, GstRawBaseParseClass))
+#define GST_RAW_BASE_PARSE_GET_CLASS(obj) \
+  (G_TYPE_INSTANCE_GET_CLASS((obj), GST_TYPE_RAW_BASE_PARSE, GstRawBaseParseClass))
+#define GST_IS_RAW_BASE_PARSE(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_RAW_BASE_PARSE))
+#define GST_IS_RAW_BASE_PARSE_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_RAW_BASE_PARSE))
+
+#define GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK(obj)   g_mutex_lock(&(((GstRawBaseParse *)(obj))->config_mutex))
+#define GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK(obj) g_mutex_unlock(&(((GstRawBaseParse *)(obj))->config_mutex))
+
+
+typedef enum _GstRawBaseParseConfig GstRawBaseParseConfig;
+typedef struct _GstRawBaseParse GstRawBaseParse;
+typedef struct _GstRawBaseParseClass GstRawBaseParseClass;
+
+
+/**
+ * GstRawBaseParseConfig:
+ * @GST_RAW_BASE_PARSE_CONFIG_CURRENT: configuration that is currently active
+ * @GST_RAW_BASE_PARSE_CONFIG_SINKCAPS: configuration that is defined by the input sink caps
+ * @GST_RAW_BASE_PARSE_CONFIG_PROPERTIES: configuration that is defined by class properties
+ *
+ * Identifier for the type of parser configuration.
+ */
+enum _GstRawBaseParseConfig
+{
+  GST_RAW_BASE_PARSE_CONFIG_CURRENT = 1,
+  GST_RAW_BASE_PARSE_CONFIG_SINKCAPS,
+  GST_RAW_BASE_PARSE_CONFIG_PROPERTIES
+};
+
+
+/**
+ * GstRawBaseParse:
+ *
+ * The opaque #GstRawBaseParse data structure.
+ */
+struct _GstRawBaseParse
+{
+  GstBaseParse parent;
+
+  /*< private > */
+
+  /* TRUE if the source pad caps have been set already. This is used
+   * for checking if the source pad caps have to be set. */
+  gboolean src_caps_set;
+
+  /* Mutex which protects access to and modifications on the configs. */
+  GMutex config_mutex;
+};
+
+
+/**
+ * GstRawBaseParseClass:
+ * @parent_class:              The parent class structure
+ * @set_current_config:        Sets the new current configuration. Subclasses must internally
+ *                             switch to this new configuration. Return FALSE if this failed,
+ *                             TRUE otherwise.
+ * @get_current_config:        Gets the current configuration. All return values except
+ *                             except GST_RAW_BASE_PARSE_CONFIG_CURRENT are valid.
+ * @set_config_from_caps:      Parses the caps and copies its information to the configuration.
+ *                             Returns FALSE if this failed, TRUE otheriwse. Specified caps
+ *                             are not unref'd.
+ * @get_caps_from_config:      Creates a new caps structure out of the information from the
+ *                             specified configuration. Ownership over the returned caps are
+ *                             transferred to the caller. If something fails during the caps
+ *                             creation, the vfunc must make sure to destroy any partially
+ *                             created caps; the *caps value is always set to NULL in case of
+ *                             failure. Returns FALSE in case of failure,
+ *                             TRUE in case of success.
+ * @get_config_frame_size:     Gets the size of one frame, in bytes, from the specified
+ *                             configuration. This must be the size of the complete frame,
+ *                             including any overhead (metadata, headers, padding bytes etc.).
+ * @get_max_frames_per_buffer: Optional.
+ *                             Returns up to how many complete frames one output buffer may
+ *                             contain. The value must be nonzero. This is useful for example
+ *                             with video parsers which need to ensure that one output buffer
+ *                             contains only one video frame, even if the input buffer contains
+ *                             several complete frames. If this vfunc is not set, then there
+ *                             is no maximum number of frames per buffer - the parser reads
+ *                             as many complete frames as possible from the input buffer.
+ * @is_config_ready:           Returns TRUE if the specified configuration is ready, FALSE
+ *                             otherwise.
+ * @process:                   Optional.
+ *                             This is useful to do any last minute processing before the
+ *                             data is pushed downstream. One example is channel reordering
+ *                             in audio parsers.
+ *                             in_data is the complete input buffer, total_num_in_bytes is
+ *                             the total amount of bytes this input buffer contains (including
+ *                             excess bytes that form an incomplete rame). num_valid_in_bytes
+ *                             is the subset of these bytes that are to be pushed downstream.
+ *                             If for example the frame size is 4, and total_num_in_bytes is
+ *                             411, then num_valid_in_bytes will be 408, since the last 3
+ *                             bytes form an incomplete frame.
+ *                             The value of num_valid_in_bytes excludes the overhead bytes
+ *                             indicated by @get_overhead_size.
+ *                             If the subclass creates a new buffer here, *processed_data
+ *                             must be set to the new buffer's pointer. If the subclass does
+ *                             not create any new buffer, and just expects the first
+ *                             num_valid_in_bytes of the input buffer to be pushed downstream,
+ *                             then *processed_data must be set to NULL.
+ *                             If this vfunc is not set, then the parser behaves as if this
+ *                             vfunc set *processed_data data to NULL.
+ * @is_unit_format_supported:  Returns TRUE if the given format is supported by the
+ *                             @get_units_per_second function, FALSE otherwise.
+ * @get_units_per_second:      Returns how many units per second exist for a given format.
+ *                             For example, with an audio parser and format DEFAULT, the units
+ *                             per second are typically the number of samples per second
+ *                             (= the sample rate). For video parsers, this would be the frame
+ *                             rate. If BYTES or TIME are used as format, then the result must
+ *                             not include any extra overhead (metadata, headers, padding etc.)
+ * @get_overhead_size:         Optional.
+ *                             Returns the number of bytes that make up the portion of a frame
+ *                             that isn't payload. Examples are padding bytes, headers, and
+ *                             other kinds of metadata. If this vfunc isn't defined, then an
+ *                             overhead size of 0 bytes is assumed.
+ *
+ * Subclasses are required to override all vfuncs except for @process, which is optional.
+ * The raw base parser lock is held during all vfunc calls.
+ */
+struct _GstRawBaseParseClass
+{
+  GstBaseParseClass parent_class;
+
+  gboolean              (*set_current_config)        (GstRawBaseParse *raw_base_parse,
+                                                      GstRawBaseParseConfig config);
+  GstRawBaseParseConfig (*get_current_config)        (GstRawBaseParse *raw_base_parse);
+
+  gboolean              (*set_config_from_caps)      (GstRawBaseParse * raw_base_parse,
+                                                      GstRawBaseParseConfig config,
+                                                      GstCaps * caps);
+  gboolean              (*get_caps_from_config)      (GstRawBaseParse * raw_base_parse,
+                                                      GstRawBaseParseConfig config,
+                                                      GstCaps ** caps);
+
+  gsize                 (*get_config_frame_size)     (GstRawBaseParse * raw_base_parse,
+                                                      GstRawBaseParseConfig config);
+  guint                 (*get_max_frames_per_buffer) (GstRawBaseParse * raw_base_parse,
+                                                      GstRawBaseParseConfig config);
+
+  gboolean              (*is_config_ready)           (GstRawBaseParse * raw_base_parse,
+                                                      GstRawBaseParseConfig config);
+
+  gboolean              (*process)                   (GstRawBaseParse * raw_base_parse,
+                                                      GstRawBaseParseConfig config,
+                                                      GstBuffer * in_data,
+                                                      gsize total_num_in_bytes,
+                                                      gsize num_valid_in_bytes,
+                                                      GstBuffer ** processed_data);
+
+  gboolean              (*is_unit_format_supported)  (GstRawBaseParse * raw_base_parse,
+                                                      GstFormat format);
+  void                  (*get_units_per_second)      (GstRawBaseParse * raw_base_parse,
+                                                      GstFormat format,
+                                                      GstRawBaseParseConfig config,
+                                                      gsize * units_per_sec_n,
+                                                      gsize * units_per_sec_d);
+
+  gint                  (*get_overhead_size)         (GstRawBaseParse * raw_base_parse,
+                                                      GstRawBaseParseConfig config);
+};
+
+
+void gst_raw_base_parse_invalidate_src_caps (GstRawBaseParse * raw_base_parse);
+
+
+GType gst_raw_base_parse_get_type (void);
+
+
+G_END_DECLS
+
+#endif
diff --git a/gst/rawparse/gstrawparse.c b/gst/rawparse/gstrawparse.c
deleted file mode 100644
index a6468d9..0000000
--- a/gst/rawparse/gstrawparse.c
+++ /dev/null
@@ -1,1105 +0,0 @@
-/* GStreamer
- * Copyright (C) 2006 David A. Schleef <ds@schleef.org>
- * Copyright (C) 2007 Sebastian Dröge <slomo@circular-chaos.org>
- *
- * gstrawparse.c:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-/* TODO: - Add locking where appropiate
- */
-
-#ifdef HAVE_CONFIG_H
-#  include "config.h"
-#endif
-
-#include <string.h>
-
-#include <gst/gst.h>
-#include <gst/base/gstbasetransform.h>
-#include <gst/base/gstadapter.h>
-
-#include "gstrawparse.h"
-
-static void gst_raw_parse_dispose (GObject * object);
-
-static gboolean gst_raw_parse_sink_activate (GstPad * sinkpad,
-    GstObject * parent);
-static gboolean gst_raw_parse_sink_activatemode (GstPad * sinkpad,
-    GstObject * parent, GstPadMode mode, gboolean active);
-static void gst_raw_parse_loop (GstElement * element);
-static GstStateChangeReturn gst_raw_parse_change_state (GstElement * element,
-    GstStateChange transition);
-static GstFlowReturn gst_raw_parse_chain (GstPad * pad, GstObject * parent,
-    GstBuffer * buffer);
-static gboolean gst_raw_parse_sink_event (GstPad * pad, GstObject * parent,
-    GstEvent * event);
-static gboolean gst_raw_parse_src_event (GstPad * pad, GstObject * parent,
-    GstEvent * event);
-static gboolean gst_raw_parse_src_query (GstPad * pad, GstObject * parent,
-    GstQuery * query);
-static gboolean gst_raw_parse_convert (GstRawParse * rp, GstFormat src_format,
-    gint64 src_value, GstFormat dest_format, gint64 * dest_value);
-static gboolean gst_raw_parse_handle_seek_pull (GstRawParse * rp,
-    GstEvent * event);
-
-static void gst_raw_parse_reset (GstRawParse * rp);
-
-static GstStaticPadTemplate gst_raw_parse_sink_pad_template =
-GST_STATIC_PAD_TEMPLATE ("sink",
-    GST_PAD_SINK,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS_ANY);
-
-GST_DEBUG_CATEGORY_STATIC (gst_raw_parse_debug);
-#define GST_CAT_DEFAULT gst_raw_parse_debug
-
-static void gst_raw_parse_class_init (GstRawParseClass * klass);
-static void gst_raw_parse_init (GstRawParse * clip, GstRawParseClass * g_class);
-
-static GstElementClass *parent_class;
-
-/* we can't use G_DEFINE_ABSTRACT_TYPE because we need the klass in the _init
- * method to get to the padtemplates */
-GType
-gst_raw_parse_get_type (void)
-{
-  static volatile gsize raw_parse_type = 0;
-
-  if (g_once_init_enter (&raw_parse_type)) {
-    GType _type;
-
-    _type = g_type_register_static_simple (GST_TYPE_ELEMENT,
-        "GstRawParse", sizeof (GstRawParseClass),
-        (GClassInitFunc) gst_raw_parse_class_init, sizeof (GstRawParse),
-        (GInstanceInitFunc) gst_raw_parse_init, G_TYPE_FLAG_ABSTRACT);
-
-    g_once_init_leave (&raw_parse_type, _type);
-  }
-  return raw_parse_type;
-}
-
-static void
-gst_raw_parse_class_init (GstRawParseClass * klass)
-{
-  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-  GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
-
-  parent_class = g_type_class_peek_parent (klass);
-
-  gobject_class->dispose = gst_raw_parse_dispose;
-
-  gstelement_class->change_state =
-      GST_DEBUG_FUNCPTR (gst_raw_parse_change_state);
-
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_raw_parse_sink_pad_template));
-
-  GST_DEBUG_CATEGORY_INIT (gst_raw_parse_debug, "rawparse", 0,
-      "rawparse element");
-}
-
-static void
-gst_raw_parse_init (GstRawParse * rp, GstRawParseClass * g_class)
-{
-  GstPadTemplate *src_pad_template;
-  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
-  rp->sinkpad =
-      gst_pad_new_from_static_template (&gst_raw_parse_sink_pad_template,
-      "sink");
-  gst_pad_set_chain_function (rp->sinkpad,
-      GST_DEBUG_FUNCPTR (gst_raw_parse_chain));
-  gst_pad_set_event_function (rp->sinkpad,
-      GST_DEBUG_FUNCPTR (gst_raw_parse_sink_event));
-  gst_pad_set_activate_function (rp->sinkpad,
-      GST_DEBUG_FUNCPTR (gst_raw_parse_sink_activate));
-  gst_pad_set_activatemode_function (rp->sinkpad,
-      GST_DEBUG_FUNCPTR (gst_raw_parse_sink_activatemode));
-  gst_element_add_pad (GST_ELEMENT (rp), rp->sinkpad);
-
-  src_pad_template = gst_element_class_get_pad_template (element_class, "src");
-
-  if (src_pad_template) {
-    rp->srcpad = gst_pad_new_from_template (src_pad_template, "src");
-  } else {
-    g_warning ("Subclass didn't specify a src pad template");
-    g_assert_not_reached ();
-  }
-
-  gst_pad_set_event_function (rp->srcpad,
-      GST_DEBUG_FUNCPTR (gst_raw_parse_src_event));
-  gst_pad_set_query_function (rp->srcpad,
-      GST_DEBUG_FUNCPTR (gst_raw_parse_src_query));
-  gst_element_add_pad (GST_ELEMENT (rp), rp->srcpad);
-
-  rp->adapter = gst_adapter_new ();
-
-  rp->fps_n = 1;
-  rp->fps_d = 0;
-  rp->framesize = 1;
-
-  gst_raw_parse_reset (rp);
-}
-
-static void
-gst_raw_parse_dispose (GObject * object)
-{
-  GstRawParse *rp = GST_RAW_PARSE (object);
-
-  if (rp->adapter) {
-    g_object_unref (rp->adapter);
-    rp->adapter = NULL;
-  }
-
-  G_OBJECT_CLASS (parent_class)->dispose (object);
-}
-
-void
-gst_raw_parse_class_set_src_pad_template (GstRawParseClass * klass,
-    const GstCaps * allowed_caps)
-{
-  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
-  g_return_if_fail (GST_IS_RAW_PARSE_CLASS (klass));
-  g_return_if_fail (allowed_caps != NULL);
-  g_return_if_fail (GST_IS_CAPS (allowed_caps));
-
-  gst_element_class_add_pad_template (element_class,
-      gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
-          gst_caps_copy (allowed_caps)));
-}
-
-void
-gst_raw_parse_class_set_multiple_frames_per_buffer (GstRawParseClass * klass,
-    gboolean multiple_frames)
-{
-  g_return_if_fail (GST_IS_RAW_PARSE_CLASS (klass));
-
-  klass->multiple_frames_per_buffer = multiple_frames;
-}
-
-static void
-gst_raw_parse_reset (GstRawParse * rp)
-{
-  rp->n_frames = 0;
-  rp->discont = TRUE;
-  rp->negotiated = FALSE;
-
-  gst_segment_init (&rp->segment, GST_FORMAT_TIME);
-  gst_adapter_clear (rp->adapter);
-}
-
-static gboolean
-gst_raw_parse_set_src_caps (GstRawParse * rp)
-{
-  GstRawParseClass *rp_class = GST_RAW_PARSE_GET_CLASS (rp);
-  GstCaps *caps;
-
-  if (rp->negotiated)
-    return TRUE;
-
-  if (rp_class->get_caps) {
-    caps = rp_class->get_caps (rp);
-  } else {
-    GST_WARNING
-        ("Subclass doesn't implement get_caps() method, using ANY caps");
-    caps = gst_caps_new_any ();
-  }
-
-  rp->negotiated = gst_pad_set_caps (rp->srcpad, caps);
-
-  /* if subclass inplement decide_allocation, send an allocation
-   * query, pass result to subclass and let it handle allocation if needed. */
-  if (rp_class->decide_allocation) {
-    GstQuery *query;
-
-    query = gst_query_new_allocation (caps, TRUE);
-    if (!gst_pad_peer_query (rp->srcpad, query)) {
-      /* not a problem, just debug a little */
-      GST_DEBUG_OBJECT (rp, "peer ALLOCATION query failed");
-    }
-
-    rp_class->decide_allocation (rp, query);
-    gst_query_unref (query);
-  }
-
-  gst_caps_unref (caps);
-
-  return rp->negotiated;
-}
-
-static GstFlowReturn
-gst_raw_parse_push_buffer (GstRawParse * rp, GstBuffer * buffer)
-{
-  GstFlowReturn ret;
-  gint nframes;
-  GstRawParseClass *rpclass;
-  gsize size;
-
-  rpclass = GST_RAW_PARSE_GET_CLASS (rp);
-
-  size = gst_buffer_get_size (buffer);
-  nframes = size / rp->framesize;
-
-  if (rp->segment.rate < 0) {
-    rp->n_frames -= nframes;
-    rp->discont = TRUE;
-  }
-
-  GST_BUFFER_OFFSET (buffer) = rp->n_frames;
-  GST_BUFFER_OFFSET_END (buffer) = rp->n_frames + nframes;
-
-  if (rp->fps_n) {
-    GST_BUFFER_TIMESTAMP (buffer) =
-        gst_util_uint64_scale (rp->n_frames, GST_SECOND * rp->fps_d, rp->fps_n);
-    GST_BUFFER_DURATION (buffer) =
-        gst_util_uint64_scale ((rp->n_frames + nframes) * GST_SECOND, rp->fps_d,
-        rp->fps_n) - GST_BUFFER_TIMESTAMP (buffer);
-  } else {
-    GST_BUFFER_TIMESTAMP (buffer) = rp->segment.start;
-    GST_BUFFER_DURATION (buffer) = GST_CLOCK_TIME_NONE;
-  }
-
-  if (rpclass->pre_push_buffer) {
-    rpclass->pre_push_buffer (rp, buffer);
-  }
-
-  if (rp->discont) {
-    GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT);
-    rp->discont = FALSE;
-  }
-
-  if (rp->segment.rate >= 0) {
-    rp->offset += size;
-    rp->n_frames += nframes;
-  }
-
-  rp->segment.position = GST_BUFFER_TIMESTAMP (buffer);
-
-  GST_LOG_OBJECT (rp, "Pushing buffer with time %" GST_TIME_FORMAT,
-      GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buffer)));
-
-  ret = gst_pad_push (rp->srcpad, buffer);
-
-  return ret;
-}
-
-static GstFlowReturn
-gst_raw_parse_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
-{
-  GstRawParse *rp = GST_RAW_PARSE (parent);
-  GstFlowReturn ret = GST_FLOW_OK;
-  GstRawParseClass *rp_class = GST_RAW_PARSE_GET_CLASS (rp);
-  guint buffersize, available;
-
-  if (G_UNLIKELY (GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DISCONT))) {
-    GST_DEBUG_OBJECT (rp, "received DISCONT buffer");
-    gst_adapter_clear (rp->adapter);
-    rp->discont = TRUE;
-  }
-
-  if (!gst_raw_parse_set_src_caps (rp))
-    goto no_caps;
-
-  if (rp->start_segment) {
-    GST_DEBUG_OBJECT (rp, "sending start segment");
-    gst_pad_push_event (rp->srcpad, rp->start_segment);
-    rp->start_segment = NULL;
-  }
-
-  gst_adapter_push (rp->adapter, buffer);
-
-  available = gst_adapter_available (rp->adapter);
-  if (rp_class->multiple_frames_per_buffer) {
-    buffersize = available;
-    buffersize -= buffersize % rp->framesize;
-  } else {
-    buffersize = rp->framesize;
-  }
-
-  while (buffersize > 0 && gst_adapter_available (rp->adapter) >= buffersize) {
-    buffer = gst_adapter_take_buffer (rp->adapter, buffersize);
-
-    ret = gst_raw_parse_push_buffer (rp, buffer);
-    if (ret != GST_FLOW_OK)
-      break;
-  }
-done:
-
-  return ret;
-
-  /* ERRORS */
-no_caps:
-  {
-    GST_ERROR_OBJECT (rp, "could not set caps");
-    ret = GST_FLOW_NOT_NEGOTIATED;
-    goto done;
-  }
-}
-
-static void
-gst_raw_parse_loop (GstElement * element)
-{
-  GstRawParse *rp = GST_RAW_PARSE (element);
-  GstRawParseClass *rp_class = GST_RAW_PARSE_GET_CLASS (rp);
-  GstFlowReturn ret;
-  GstBuffer *buffer;
-  gint size;
-
-  if (G_UNLIKELY (rp->push_stream_start)) {
-    gchar *stream_id;
-    GstEvent *event;
-
-    stream_id =
-        gst_pad_create_stream_id (rp->srcpad, GST_ELEMENT_CAST (rp), NULL);
-
-    event = gst_event_new_stream_start (stream_id);
-    gst_event_set_group_id (event, gst_util_group_id_next ());
-
-    GST_DEBUG_OBJECT (rp, "Pushing STREAM_START");
-    gst_pad_push_event (rp->srcpad, event);
-    rp->push_stream_start = FALSE;
-    g_free (stream_id);
-  }
-
-  if (!gst_raw_parse_set_src_caps (rp))
-    goto no_caps;
-
-  if (rp->start_segment) {
-    GST_DEBUG_OBJECT (rp, "sending start segment");
-    gst_pad_push_event (rp->srcpad, rp->start_segment);
-    rp->start_segment = NULL;
-  }
-
-  if (rp_class->multiple_frames_per_buffer && rp->framesize < 4096)
-    size = 4096 - (4096 % rp->framesize);
-  else
-    size = rp->framesize;
-
-  if (rp->segment.rate >= 0) {
-    if (rp->offset + size > rp->upstream_length) {
-      GstFormat fmt = GST_FORMAT_BYTES;
-
-      if (!gst_pad_peer_query_duration (rp->sinkpad, fmt, &rp->upstream_length)) {
-        GST_WARNING_OBJECT (rp,
-            "Could not get upstream duration, trying to pull frame by frame");
-        size = rp->framesize;
-      } else if (rp->upstream_length < rp->offset + rp->framesize) {
-        ret = GST_FLOW_EOS;
-        goto pause;
-      } else if (rp->offset + size > rp->upstream_length) {
-        size = rp->upstream_length - rp->offset;
-        size -= size % rp->framesize;
-      }
-    }
-  } else {
-    if (rp->offset == 0) {
-      ret = GST_FLOW_EOS;
-      goto pause;
-    } else if (rp->offset < size) {
-      size -= rp->offset;
-    }
-    rp->offset -= size;
-  }
-
-  buffer = NULL;
-  ret = gst_pad_pull_range (rp->sinkpad, rp->offset, size, &buffer);
-
-  if (ret != GST_FLOW_OK) {
-    GST_DEBUG_OBJECT (rp, "pull_range (%" G_GINT64_FORMAT ", %u) "
-        "failed, flow: %s", rp->offset, size, gst_flow_get_name (ret));
-    buffer = NULL;
-    goto pause;
-  }
-
-  if (gst_buffer_get_size (buffer) < size) {
-    GST_DEBUG_OBJECT (rp, "Short read at offset %" G_GINT64_FORMAT
-        ", got only %" G_GSIZE_FORMAT " of %u bytes", rp->offset,
-        gst_buffer_get_size (buffer), size);
-
-    if (size > rp->framesize) {
-      gst_buffer_set_size (buffer, gst_buffer_get_size (buffer) -
-          gst_buffer_get_size (buffer) % rp->framesize);
-    } else {
-      gst_buffer_unref (buffer);
-      buffer = NULL;
-      ret = GST_FLOW_EOS;
-      goto pause;
-    }
-  }
-
-  ret = gst_raw_parse_push_buffer (rp, buffer);
-  if (ret != GST_FLOW_OK)
-    goto pause;
-
-  return;
-
-  /* ERRORS */
-no_caps:
-  {
-    GST_ERROR_OBJECT (rp, "could not negotiate caps");
-    ret = GST_FLOW_NOT_NEGOTIATED;
-    goto pause;
-  }
-pause:
-  {
-    const gchar *reason = gst_flow_get_name (ret);
-
-    GST_LOG_OBJECT (rp, "pausing task, reason %s", reason);
-    gst_pad_pause_task (rp->sinkpad);
-
-    if (ret == GST_FLOW_EOS) {
-      if (rp->segment.flags & GST_SEEK_FLAG_SEGMENT) {
-        GstClockTime stop;
-
-        GST_LOG_OBJECT (rp, "Sending segment done");
-
-        if ((stop = rp->segment.stop) == -1)
-          stop = rp->segment.duration;
-
-        gst_element_post_message (GST_ELEMENT_CAST (rp),
-            gst_message_new_segment_done (GST_OBJECT_CAST (rp),
-                rp->segment.format, stop));
-        gst_pad_push_event (rp->srcpad,
-            gst_event_new_segment_done (rp->segment.format, stop));
-      } else {
-        GST_LOG_OBJECT (rp, "Sending EOS, at end of stream");
-        gst_pad_push_event (rp->srcpad, gst_event_new_eos ());
-      }
-    } else if (ret == GST_FLOW_NOT_LINKED || ret < GST_FLOW_EOS) {
-      GST_ELEMENT_ERROR (rp, STREAM, FAILED,
-          ("Internal data stream error."),
-          ("stream stopped, reason %s", reason));
-      gst_pad_push_event (rp->srcpad, gst_event_new_eos ());
-    }
-    return;
-  }
-}
-
-static gboolean
-gst_raw_parse_sink_activate (GstPad * sinkpad, GstObject * parent)
-{
-  GstQuery *query;
-  gboolean pull_mode = FALSE;
-
-  query = gst_query_new_scheduling ();
-
-  if (gst_pad_peer_query (sinkpad, query))
-    pull_mode = gst_query_has_scheduling_mode_with_flags (query,
-        GST_PAD_MODE_PULL, GST_SCHEDULING_FLAG_SEEKABLE);
-
-  gst_query_unref (query);
-
-  if (pull_mode) {
-    GST_DEBUG ("going to pull mode");
-    return gst_pad_activate_mode (sinkpad, GST_PAD_MODE_PULL, TRUE);
-  } else {
-    GST_DEBUG ("going to push (streaming) mode");
-    return gst_pad_activate_mode (sinkpad, GST_PAD_MODE_PUSH, TRUE);
-  }
-}
-
-static gboolean
-gst_raw_parse_sink_activatemode (GstPad * sinkpad, GstObject * parent,
-    GstPadMode mode, gboolean active)
-{
-  GstRawParse *rp = GST_RAW_PARSE (parent);
-  gboolean result;
-
-  switch (mode) {
-    case GST_PAD_MODE_PULL:
-      if (active) {
-        GstFormat format;
-        gint64 duration;
-
-        /* get the duration in bytes */
-        format = GST_FORMAT_BYTES;
-        result = gst_pad_peer_query_duration (sinkpad, format, &duration);
-        if (result) {
-          GST_DEBUG_OBJECT (rp, "got duration %" GST_TIME_FORMAT,
-              GST_TIME_ARGS (duration));
-          rp->upstream_length = duration;
-          /* convert to time */
-          gst_raw_parse_convert (rp, format, duration, GST_FORMAT_TIME,
-              &duration);
-        } else {
-          rp->upstream_length = -1;
-          duration = -1;
-        }
-        rp->segment.duration = duration;
-
-        rp->push_stream_start = TRUE;
-
-        result = gst_raw_parse_handle_seek_pull (rp, NULL);
-        rp->mode = mode;
-      } else {
-        result = gst_pad_stop_task (sinkpad);
-      }
-      return result;
-    case GST_PAD_MODE_PUSH:
-      rp->mode = mode;
-      return TRUE;
-    default:
-      return FALSE;
-  }
-}
-
-static GstStateChangeReturn
-gst_raw_parse_change_state (GstElement * element, GstStateChange transition)
-{
-  GstRawParse *rp = GST_RAW_PARSE (element);
-  GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
-
-  switch (transition) {
-    case GST_STATE_CHANGE_READY_TO_PAUSED:
-      gst_segment_init (&rp->segment, GST_FORMAT_TIME);
-      rp->segment.position = 0;
-    default:
-      break;
-  }
-
-  if (GST_ELEMENT_CLASS (parent_class)->change_state)
-    ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
-
-  switch (transition) {
-    case GST_STATE_CHANGE_PAUSED_TO_READY:
-      gst_raw_parse_reset (rp);
-      break;
-    default:
-      break;
-  }
-
-  return ret;
-}
-
-static gboolean
-gst_raw_parse_convert (GstRawParse * rp,
-    GstFormat src_format, gint64 src_value,
-    GstFormat dest_format, gint64 * dest_value)
-{
-  gboolean ret = FALSE;
-
-  GST_DEBUG ("converting value %" G_GINT64_FORMAT " from %s (%d) to %s (%d)",
-      src_value, gst_format_get_name (src_format), src_format,
-      gst_format_get_name (dest_format), dest_format);
-
-  if (src_format == dest_format) {
-    *dest_value = src_value;
-    ret = TRUE;
-    goto done;
-  }
-
-  if (src_value == -1) {
-    *dest_value = -1;
-    ret = TRUE;
-    goto done;
-  }
-
-  /* bytes to frames */
-  if (src_format == GST_FORMAT_BYTES && dest_format == GST_FORMAT_DEFAULT) {
-    if (rp->framesize != 0) {
-      *dest_value = gst_util_uint64_scale_int (src_value, 1, rp->framesize);
-    } else {
-      GST_ERROR ("framesize is 0");
-      *dest_value = 0;
-    }
-    ret = TRUE;
-    goto done;
-  }
-
-  /* frames to bytes */
-  if (src_format == GST_FORMAT_DEFAULT && dest_format == GST_FORMAT_BYTES) {
-    *dest_value = gst_util_uint64_scale_int (src_value, rp->framesize, 1);
-    ret = TRUE;
-    goto done;
-  }
-
-  /* time to frames */
-  if (src_format == GST_FORMAT_TIME && dest_format == GST_FORMAT_DEFAULT) {
-    if (rp->fps_d != 0) {
-      *dest_value = gst_util_uint64_scale (src_value,
-          rp->fps_n, GST_SECOND * rp->fps_d);
-    } else {
-      GST_ERROR ("framerate denominator is 0");
-      *dest_value = 0;
-    }
-    ret = TRUE;
-    goto done;
-  }
-
-  /* frames to time */
-  if (src_format == GST_FORMAT_DEFAULT && dest_format == GST_FORMAT_TIME) {
-    if (rp->fps_n != 0) {
-      *dest_value = gst_util_uint64_scale (src_value,
-          GST_SECOND * rp->fps_d, rp->fps_n);
-    } else {
-      GST_ERROR ("framerate numerator is 0");
-      *dest_value = 0;
-    }
-    ret = TRUE;
-    goto done;
-  }
-
-  /* time to bytes */
-  if (src_format == GST_FORMAT_TIME && dest_format == GST_FORMAT_BYTES) {
-    if (rp->fps_d != 0) {
-      *dest_value = gst_util_uint64_scale (src_value,
-          rp->fps_n * rp->framesize, GST_SECOND * rp->fps_d);
-    } else {
-      GST_ERROR ("framerate denominator is 0");
-      *dest_value = 0;
-    }
-    ret = TRUE;
-    goto done;
-  }
-
-  /* bytes to time */
-  if (src_format == GST_FORMAT_BYTES && dest_format == GST_FORMAT_TIME) {
-    if (rp->fps_n != 0 && rp->framesize != 0) {
-      *dest_value = gst_util_uint64_scale (src_value,
-          GST_SECOND * rp->fps_d, rp->fps_n * rp->framesize);
-    } else {
-      GST_ERROR ("framerate denominator and/or framesize is 0");
-      *dest_value = 0;
-    }
-    ret = TRUE;
-  }
-
-done:
-
-  GST_DEBUG ("ret=%d result %" G_GINT64_FORMAT, ret, *dest_value);
-
-  return ret;
-}
-
-
-static gboolean
-gst_raw_parse_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
-{
-  GstRawParse *rp = GST_RAW_PARSE (parent);
-  gboolean ret;
-
-  switch (GST_EVENT_TYPE (event)) {
-    case GST_EVENT_EOS:
-    case GST_EVENT_FLUSH_STOP:
-      /* Only happens in push mode */
-      gst_raw_parse_reset (rp);
-      ret = gst_pad_push_event (rp->srcpad, event);
-      break;
-    case GST_EVENT_SEGMENT:
-    {
-      GstSegment segment;
-
-      /* Only happens in push mode */
-
-      gst_event_copy_segment (event, &segment);
-
-      if (segment.format != GST_FORMAT_TIME) {
-        gst_event_unref (event);
-
-        ret =
-            gst_raw_parse_convert (rp, segment.format, segment.start,
-            GST_FORMAT_TIME, (gint64 *) & segment.start);
-        ret &= gst_raw_parse_convert (rp, segment.format, segment.time,
-            GST_FORMAT_TIME, (gint64 *) & segment.time);
-        ret &= gst_raw_parse_convert (rp, segment.format, segment.stop,
-            GST_FORMAT_TIME, (gint64 *) & segment.stop);
-        if (!ret) {
-          GST_ERROR_OBJECT (rp,
-              "Failed converting to GST_FORMAT_TIME format (%d)",
-              segment.format);
-          break;
-        }
-
-        segment.format = GST_FORMAT_TIME;
-
-        event = gst_event_new_segment (&segment);
-      }
-
-      gst_segment_copy_into (&segment, &rp->segment);
-
-      if (rp->start_segment)
-        gst_event_unref (rp->start_segment);
-      rp->start_segment = event;
-      ret = TRUE;
-      break;
-    }
-    default:
-      ret = gst_pad_event_default (pad, parent, event);
-      break;
-  }
-
-  return ret;
-}
-
-
-static gboolean
-gst_raw_parse_handle_seek_push (GstRawParse * rp, GstEvent * event)
-{
-  GstFormat format;
-  gdouble rate;
-  GstSeekFlags flags;
-  GstSeekType start_type, stop_type;
-  gint64 start, stop;
-  gboolean ret = FALSE;
-
-  gst_event_parse_seek (event, &rate, &format, &flags, &start_type, &start,
-      &stop_type, &stop);
-
-  /* can't seek backwards yet */
-  if (rate <= 0.0)
-    goto wrong_rate;
-
-  /* First try if upstream handles the seek */
-  ret = gst_pad_push_event (rp->sinkpad, event);
-  if (ret)
-    return ret;
-
-  /* Otherwise convert to bytes and push upstream */
-  if (format == GST_FORMAT_TIME || format == GST_FORMAT_DEFAULT) {
-    ret = gst_raw_parse_convert (rp, format, start, GST_FORMAT_BYTES, &start);
-    ret &= gst_raw_parse_convert (rp, format, stop, GST_FORMAT_BYTES, &stop);
-
-    if (ret) {
-      /* Seek on a frame boundary */
-      start -= start % rp->framesize;
-      if (stop != -1)
-        stop += rp->framesize - stop % rp->framesize;
-
-      event =
-          gst_event_new_seek (rate, GST_FORMAT_BYTES, flags, start_type,
-          start, stop_type, stop);
-
-      ret = gst_pad_push_event (rp->sinkpad, event);
-    } else {
-      GST_DEBUG_OBJECT (rp, "Seek failed: couldn't convert to byte positions");
-    }
-  } else {
-    GST_DEBUG_OBJECT (rp,
-        "seeking is only supported in TIME or DEFAULT format");
-  }
-  return ret;
-
-  /* ERRORS */
-wrong_rate:
-  {
-    GST_DEBUG_OBJECT (rp, "Seek failed: negative rates not supported yet");
-    return FALSE;
-  }
-}
-
-static gboolean
-gst_raw_parse_handle_seek_pull (GstRawParse * rp, GstEvent * event)
-{
-  gdouble rate;
-  GstFormat format;
-  GstSeekFlags flags;
-  GstSeekType start_type, stop_type;
-  gint64 start, stop;
-  gint64 last_stop;
-  gboolean ret = FALSE;
-  gboolean flush;
-  GstSegment seeksegment;
-
-  if (event) {
-    gst_event_parse_seek (event, &rate, &format, &flags, &start_type, &start,
-        &stop_type, &stop);
-
-    /* convert input offsets to time */
-    ret = gst_raw_parse_convert (rp, format, start, GST_FORMAT_TIME, &start);
-    ret &= gst_raw_parse_convert (rp, format, stop, GST_FORMAT_TIME, &stop);
-    if (!ret)
-      goto convert_failed;
-
-    GST_DEBUG_OBJECT (rp, "converted start - stop to time");
-
-    gst_event_unref (event);
-  } else {
-    flags = 0;
-  }
-
-  format = GST_FORMAT_TIME;
-
-  flush = ((flags & GST_SEEK_FLAG_FLUSH) != 0);
-
-  /* start flushing up and downstream so that the loop function pauses and we
-   * can acquire the STREAM_LOCK. */
-  if (flush) {
-    GST_LOG_OBJECT (rp, "flushing");
-    gst_pad_push_event (rp->sinkpad, gst_event_new_flush_start ());
-    gst_pad_push_event (rp->srcpad, gst_event_new_flush_start ());
-  } else {
-    GST_LOG_OBJECT (rp, "pause task");
-    gst_pad_pause_task (rp->sinkpad);
-  }
-
-  GST_PAD_STREAM_LOCK (rp->sinkpad);
-
-  memcpy (&seeksegment, &rp->segment, sizeof (GstSegment));
-
-  if (event) {
-    /* configure the seek values */
-    gst_segment_do_seek (&seeksegment, rate, format, flags,
-        start_type, start, stop_type, stop, NULL);
-  }
-
-  /* get the desired position */
-  last_stop = seeksegment.position;
-
-  GST_LOG_OBJECT (rp, "seeking to %" GST_TIME_FORMAT,
-      GST_TIME_ARGS (last_stop));
-
-  /* convert the desired position to bytes */
-  ret =
-      gst_raw_parse_convert (rp, format, last_stop, GST_FORMAT_BYTES,
-      &last_stop);
-
-  /* prepare for streaming */
-  if (flush) {
-    GST_LOG_OBJECT (rp, "stop flush");
-    gst_pad_push_event (rp->sinkpad, gst_event_new_flush_stop (TRUE));
-    gst_pad_push_event (rp->srcpad, gst_event_new_flush_stop (TRUE));
-  }
-
-  if (ret) {
-    /* seek done */
-
-    /* Seek on a frame boundary */
-    last_stop -= last_stop % rp->framesize;
-
-    rp->offset = last_stop;
-    rp->n_frames = last_stop / rp->framesize;
-
-    GST_LOG_OBJECT (rp, "seeking to bytes %" G_GINT64_FORMAT, last_stop);
-
-    memcpy (&rp->segment, &seeksegment, sizeof (GstSegment));
-
-    if (rp->segment.flags & GST_SEEK_FLAG_SEGMENT) {
-      gst_element_post_message (GST_ELEMENT_CAST (rp),
-          gst_message_new_segment_start (GST_OBJECT_CAST (rp),
-              rp->segment.format, rp->segment.position));
-    }
-
-    /* for deriving a stop position for the playback segment from the seek
-     * segment, we must take the duration when the stop is not set */
-    if ((stop = rp->segment.stop) == -1)
-      stop = rp->segment.duration;
-
-    GST_DEBUG_OBJECT (rp, "preparing newsegment from %" G_GINT64_FORMAT
-        " to %" G_GINT64_FORMAT, rp->segment.start, stop);
-
-    /* now replace the old segment so that we send it in the stream thread the
-     * next time it is scheduled. */
-    if (rp->start_segment)
-      gst_event_unref (rp->start_segment);
-    rp->start_segment = gst_event_new_segment (&rp->segment);
-  }
-  rp->discont = TRUE;
-
-  GST_LOG_OBJECT (rp, "start streaming");
-  gst_pad_start_task (rp->sinkpad, (GstTaskFunction) gst_raw_parse_loop, rp,
-      NULL);
-
-  GST_PAD_STREAM_UNLOCK (rp->sinkpad);
-
-  return ret;
-
-  /* ERRORS */
-convert_failed:
-  {
-    GST_DEBUG_OBJECT (rp, "Seek failed: couldn't convert to byte positions");
-    return FALSE;
-  }
-}
-
-static gboolean
-gst_raw_parse_src_event (GstPad * pad, GstObject * parent, GstEvent * event)
-{
-  GstRawParse *rp = GST_RAW_PARSE (parent);
-  gboolean ret;
-
-  switch (GST_EVENT_TYPE (event)) {
-    case GST_EVENT_SEEK:
-      if (rp->mode == GST_PAD_MODE_PUSH)
-        ret = gst_raw_parse_handle_seek_push (rp, event);
-      else
-        ret = gst_raw_parse_handle_seek_pull (rp, event);
-      break;
-    default:
-      ret = gst_pad_event_default (pad, parent, event);
-      break;
-  }
-
-  return ret;
-}
-
-static gboolean
-gst_raw_parse_src_query (GstPad * pad, GstObject * parent, GstQuery * query)
-{
-  GstRawParse *rp = GST_RAW_PARSE (parent);
-  gboolean ret = FALSE;
-
-  GST_DEBUG ("src_query %s", gst_query_type_get_name (GST_QUERY_TYPE (query)));
-
-  switch (GST_QUERY_TYPE (query)) {
-    case GST_QUERY_POSITION:
-    {
-      GstFormat format;
-      gint64 time, value;
-
-      GST_LOG ("query position");
-
-      gst_query_parse_position (query, &format, NULL);
-
-      time = rp->segment.position;
-      ret = gst_raw_parse_convert (rp, GST_FORMAT_TIME, time, format, &value);
-
-      gst_query_set_position (query, format, value);
-
-      break;
-    }
-    case GST_QUERY_DURATION:{
-      gint64 duration;
-      GstFormat format;
-      GstQuery *bquery;
-
-      GST_LOG ("query duration");
-      ret = gst_pad_peer_query (rp->sinkpad, query);
-      if (ret)
-        goto done;
-
-      gst_query_parse_duration (query, &format, NULL);
-      /* We only handle TIME and DEFAULT format */
-      if (format != GST_FORMAT_TIME && format != GST_FORMAT_DEFAULT)
-        goto error;
-
-      bquery = gst_query_new_duration (GST_FORMAT_BYTES);
-      ret = gst_pad_peer_query (rp->sinkpad, bquery);
-      if (!ret) {
-        gst_query_unref (bquery);
-        goto error;
-      }
-
-      gst_query_parse_duration (bquery, NULL, &duration);
-      gst_query_unref (bquery);
-
-      ret =
-          gst_raw_parse_convert (rp, GST_FORMAT_BYTES, duration, format,
-          &duration);
-      if (ret)
-        gst_query_set_duration (query, format, duration);
-
-      break;
-    }
-    case GST_QUERY_CONVERT:
-    {
-      GstFormat src_fmt, dest_fmt;
-      gint64 src_val, dest_val;
-
-      GST_LOG ("query convert");
-
-      gst_query_parse_convert (query, &src_fmt, &src_val, &dest_fmt, &dest_val);
-      ret = gst_raw_parse_convert (rp, src_fmt, src_val, dest_fmt, &dest_val);
-      if (!ret)
-        goto error;
-      gst_query_set_convert (query, src_fmt, src_val, dest_fmt, dest_val);
-      break;
-    }
-    case GST_QUERY_SEEKING:{
-      GstFormat fmt;
-
-      ret = TRUE;
-
-      /* try upstream first */
-      if (gst_pad_peer_query (rp->sinkpad, query))
-        break;
-
-      gst_query_parse_seeking (query, &fmt, NULL, NULL, NULL);
-      if (fmt != GST_FORMAT_TIME && fmt != GST_FORMAT_DEFAULT
-          && fmt != GST_FORMAT_BYTES) {
-        gst_query_set_seeking (query, fmt, FALSE, -1, -1);
-      } else if (rp->mode == GST_PAD_MODE_PUSH) {
-        GstQuery *peerquery = gst_query_new_seeking (GST_FORMAT_BYTES);
-        gboolean seekable;
-
-        seekable = gst_pad_peer_query (rp->sinkpad, peerquery);
-        if (seekable)
-          gst_query_parse_seeking (peerquery, NULL, &seekable, NULL, NULL);
-
-        gst_query_unref (peerquery);
-        gst_query_set_seeking (query, fmt, seekable, seekable ? 0 : -1, -1);
-      } else {
-        gst_query_set_seeking (query, fmt, TRUE, 0, -1);
-      }
-      break;
-    }
-    default:
-      /* else forward upstream */
-      ret = gst_pad_query_default (pad, parent, query);
-      break;
-  }
-
-done:
-  return ret;
-
-  /* ERRORS */
-error:
-  {
-    GST_DEBUG_OBJECT (rp, "query failed");
-    goto done;
-  }
-}
-
-void
-gst_raw_parse_set_framesize (GstRawParse * rp, int framesize)
-{
-  g_return_if_fail (GST_IS_RAW_PARSE (rp));
-  g_return_if_fail (!rp->negotiated);
-
-  GST_DEBUG_OBJECT (rp, "framesize %d", framesize);
-  rp->framesize = framesize;
-}
-
-void
-gst_raw_parse_set_fps (GstRawParse * rp, int fps_n, int fps_d)
-{
-  g_return_if_fail (GST_IS_RAW_PARSE (rp));
-  g_return_if_fail (!rp->negotiated);
-
-  rp->fps_n = fps_n;
-  rp->fps_d = fps_d;
-}
-
-void
-gst_raw_parse_get_fps (GstRawParse * rp, int *fps_n, int *fps_d)
-{
-  g_return_if_fail (GST_IS_RAW_PARSE (rp));
-
-  if (fps_n)
-    *fps_n = rp->fps_n;
-  if (fps_d)
-    *fps_d = rp->fps_d;
-}
-
-gboolean
-gst_raw_parse_is_negotiated (GstRawParse * rp)
-{
-  g_return_val_if_fail (GST_IS_RAW_PARSE (rp), FALSE);
-
-  return rp->negotiated;
-}
diff --git a/gst/rawparse/gstrawparse.h b/gst/rawparse/gstrawparse.h
deleted file mode 100644
index 2327dc6..0000000
--- a/gst/rawparse/gstrawparse.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/* GStreamer
- * Copyright (C) 2006 David A. Schleef <ds@schleef.org>
- * Copyright (C) 2007 Sebastian Dröge <slomo@circular-chaos.org>
- *
- * gstrawparse.h:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_RAW_PARSE_H__
-#define __GST_RAW_PARSE_H__
-
-#include <gst/gst.h>
-#include <gst/base/gstbasetransform.h>
-#include <gst/base/gstadapter.h>
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_RAW_PARSE \
-  (gst_raw_parse_get_type())
-#define GST_RAW_PARSE(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RAW_PARSE,GstRawParse))
-#define GST_RAW_PARSE_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RAW_PARSE,GstRawParseClass))
-#define GST_RAW_PARSE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),GST_TYPE_RAW_PARSE,GstRawParseClass))
-#define GST_IS_RAW_PARSE(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RAW_PARSE))
-#define GST_IS_RAW_PARSE_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RAW_PARSE))
-
-typedef struct _GstRawParse GstRawParse;
-typedef struct _GstRawParseClass GstRawParseClass;
-
-struct _GstRawParse
-{
-  GstElement parent;
-
-  /* <private> */
-  GstPad *sinkpad;
-  GstPad *srcpad;
-
-  GstPadMode mode;
-  GstAdapter *adapter;
-
-  gint framesize;
-  gint fps_d;
-  gint fps_n;
-
-  gboolean discont;
-  guint64 n_frames;
-
-  gint64 upstream_length;
-  gint64 offset;
-
-  GstSegment segment;
-  GstEvent *start_segment;
-
-  gboolean negotiated;
-  gboolean push_stream_start;
-};
-
-struct _GstRawParseClass
-{
-  GstElementClass parent_class;
-
-  GstCaps * (*get_caps) (GstRawParse *rp);
-  void (*pre_push_buffer) (GstRawParse *rp, GstBuffer *buffer);
-  void (*decide_allocation) (GstRawParse *rp, GstQuery *query);
-
-  gboolean multiple_frames_per_buffer;
-};
-
-GType gst_raw_parse_get_type (void);
-
-void gst_raw_parse_class_set_src_pad_template (GstRawParseClass *klass, const GstCaps * allowed_caps);
-void gst_raw_parse_class_set_multiple_frames_per_buffer (GstRawParseClass *klass, gboolean multiple_frames);
-
-void gst_raw_parse_set_framesize (GstRawParse *rp, int framesize);
-void gst_raw_parse_set_fps (GstRawParse *rp, int fps_n, int fps_d);
-void gst_raw_parse_get_fps (GstRawParse *rp, int *fps_n, int *fps_d);
-gboolean gst_raw_parse_is_negotiated (GstRawParse *rp);
-
-G_END_DECLS
-
-#endif /* __GST_RAW_PARSE_H__ */
diff --git a/gst/rawparse/gstrawvideoparse.c b/gst/rawparse/gstrawvideoparse.c
new file mode 100644
index 0000000..2fb58c1
--- /dev/null
+++ b/gst/rawparse/gstrawvideoparse.c
@@ -0,0 +1,1195 @@
+/* GStreamer
+ * Copyright (C) <2016> Carlos Rafael Giani <dv at pseudoterminal dot org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/**
+ * SECTION:element-rawvideoparse
+ *
+ * This element parses incoming data as raw video frames and timestamps these.
+ * It also handles seek queries in said raw video data, and ensures that output
+ * buffers contain exactly one frame, even if the input buffers contain only
+ * partial frames or multiple frames. In the former case, it will continue to
+ * receive buffers until there is enough input data to output one frame. In the
+ * latter case, it will extract the first frame in the buffer and output it, then
+ * the second one etc. until the remaining unparsed bytes aren't enough to form
+ * a complete frame, and it will then continue as described in the earlier case.
+ *
+ * The element implements the properties and sink caps configuration as specified
+ * in the #GstRawBaseParse documentation. The properties configuration can be
+ * modified by using the width, height, pixel-aspect-ratio, framerate, interlaced,
+ * top-field-first, plane-strides, plane-offsets, and frame-stride properties.
+ *
+ * If the properties configuration is used, plane strides and offsets will be
+ * computed by using gst_video_info_set_format(). This can be overridden by passing
+ * GValueArrays to the plane-offsets and plane-strides properties. When this is
+ * done, these custom offsets and strides are used later even if new width,
+ * height, format etc. property values might be set. To switch back to computed
+ * plane strides & offsets, pass NULL to one or both of the plane-offset and
+ * plane-array properties.
+ *
+ * The frame stride property is useful in cases where there is extra data between
+ * the frames (for example, trailing metadata, or headers). The parser calculates 
+ * the actual frame size out of the other properties and compares it with this
+ * frame-stride value. If the frame stride is larger than the calculated size,
+ * then the extra bytes after the end of the frame are skipped. For example, with
+ * 8-bit grayscale frames and a frame size of 100x10 pixels and a frame stride of
+ * 1500 bytes, there are 500 excess bytes at the end of the actual frame which
+ * are then skipped. It is safe to set the frame stride to a value that is smaller
+ * than the actual frame size (in fact, its default value is 0); if it is smaller,
+ * then no trailing data will be skipped.
+ *
+ * If a framerate of 0 Hz is set (for example, 0/1), then output buffers will have
+ * no duration set. The first output buffer will have a PTS 0, all subsequent ones
+ * an unset PTS.
+ *
+ * <refsect2>
+ * <title>Example pipelines</title>
+ * |[
+ * gst-launch-1.0 filesrc location=video.raw ! rawvideoparse use-sink-caps=false \
+ *         width=500 height=400 format=y444 ! autovideosink
+ * ]| Read raw data from a local file and parse it as video data with 500x400 pixels
+ * and Y444 video format.
+ * |[
+ * gst-launch-1.0 filesrc location=video.raw ! queue ! "video/x-raw, width=320, \
+ *         height=240, format=I420, framerate=1/1" ! rawvideoparse \
+ *         use-sink-caps=true ! autovideosink
+ * ]| Read raw data from a local file and parse it as video data with 320x240 pixels
+ * and I420 video format. The queue element here is to force push based scheduling.
+ * See the documentation in #GstRawBaseParse for the reason why.
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
+/* FIXME: GValueArray is deprecated, but there is currently no viabla alternative
+ * See https://bugzilla.gnome.org/show_bug.cgi?id=667228 */
+#define GLIB_DISABLE_DEPRECATION_WARNINGS
+
+#include <string.h>
+#include "gstrawvideoparse.h"
+#include "unalignedvideo.h"
+
+
+GST_DEBUG_CATEGORY_STATIC (raw_video_parse_debug);
+#define GST_CAT_DEFAULT raw_video_parse_debug
+
+
+enum
+{
+  PROP_0,
+  PROP_WIDTH,
+  PROP_HEIGHT,
+  PROP_FORMAT,
+  PROP_PIXEL_ASPECT_RATIO,
+  PROP_FRAMERATE,
+  PROP_INTERLACED,
+  PROP_TOP_FIELD_FIRST,
+  PROP_PLANE_STRIDES,
+  PROP_PLANE_OFFSETS,
+  PROP_FRAME_STRIDE
+};
+
+
+#define DEFAULT_WIDTH                 320
+#define DEFAULT_HEIGHT                240
+#define DEFAULT_FORMAT                GST_VIDEO_FORMAT_I420
+#define DEFAULT_PIXEL_ASPECT_RATIO_N  1
+#define DEFAULT_PIXEL_ASPECT_RATIO_D  1
+#define DEFAULT_FRAMERATE_N           25
+#define DEFAULT_FRAMERATE_D           1
+#define DEFAULT_INTERLACED            FALSE
+#define DEFAULT_TOP_FIELD_FIRST       FALSE
+#define DEFAULT_FRAME_STRIDE          0
+
+
+#define GST_RAW_VIDEO_PARSE_CAPS \
+        GST_VIDEO_CAPS_MAKE(GST_VIDEO_FORMATS_ALL) "; "
+
+
+static GstStaticPadTemplate static_sink_template =
+    GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS (GST_UNALIGNED_RAW_VIDEO_CAPS "; " GST_RAW_VIDEO_PARSE_CAPS)
+    );
+
+
+static GstStaticPadTemplate static_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS (GST_RAW_VIDEO_PARSE_CAPS)
+    );
+
+
+#define gst_raw_video_parse_parent_class parent_class
+G_DEFINE_TYPE (GstRawVideoParse, gst_raw_video_parse, GST_TYPE_RAW_BASE_PARSE);
+
+
+static void gst_raw_video_parse_set_property (GObject * object, guint prop_id,
+    GValue const *value, GParamSpec * pspec);
+static void gst_raw_video_parse_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+
+static gboolean gst_raw_video_parse_stop (GstBaseParse * parse);
+
+static gboolean gst_raw_video_parse_set_current_config (GstRawBaseParse *
+    raw_base_parse, GstRawBaseParseConfig config);
+static GstRawBaseParseConfig
+gst_raw_video_parse_get_current_config (GstRawBaseParse * raw_base_parse);
+static gboolean gst_raw_video_parse_set_config_from_caps (GstRawBaseParse *
+    raw_base_parse, GstRawBaseParseConfig config, GstCaps * caps);
+static gboolean gst_raw_video_parse_get_caps_from_config (GstRawBaseParse *
+    raw_base_parse, GstRawBaseParseConfig config, GstCaps ** caps);
+static gsize gst_raw_video_parse_get_config_frame_size (GstRawBaseParse *
+    raw_base_parse, GstRawBaseParseConfig config);
+static guint gst_raw_video_parse_get_max_frames_per_buffer (GstRawBaseParse *
+    raw_base_parse, GstRawBaseParseConfig config);
+static gboolean gst_raw_video_parse_is_config_ready (GstRawBaseParse *
+    raw_base_parse, GstRawBaseParseConfig config);
+static gboolean gst_raw_video_parse_process (GstRawBaseParse * raw_base_parse,
+    GstRawBaseParseConfig config, GstBuffer * in_data, gsize total_num_in_bytes,
+    gsize num_valid_in_bytes, GstBuffer ** processed_data);
+static gboolean gst_raw_video_parse_is_unit_format_supported (GstRawBaseParse *
+    raw_base_parse, GstFormat format);
+static void gst_raw_video_parse_get_units_per_second (GstRawBaseParse *
+    raw_base_parse, GstFormat format, GstRawBaseParseConfig config,
+    gsize * units_per_sec_n, gsize * units_per_sec_d);
+
+static gint gst_raw_video_parse_get_overhead_size (GstRawBaseParse *
+    raw_base_parse, GstRawBaseParseConfig config);
+
+static gboolean gst_raw_video_parse_is_using_sink_caps (GstRawVideoParse *
+    raw_video_parse);
+static GstRawVideoParseConfig
+    * gst_raw_video_parse_get_config_ptr (GstRawVideoParse * raw_video_parse,
+    GstRawBaseParseConfig config);
+
+static void gst_raw_video_parse_init_config (GstRawVideoParseConfig * config);
+static void gst_raw_video_parse_update_info (GstRawVideoParseConfig * config);
+
+
+
+static void
+gst_raw_video_parse_class_init (GstRawVideoParseClass * klass)
+{
+  GObjectClass *object_class;
+  GstElementClass *element_class;
+  GstBaseParseClass *baseparse_class;
+  GstRawBaseParseClass *rawbaseparse_class;
+
+  GST_DEBUG_CATEGORY_INIT (raw_video_parse_debug, "rawvideoparse", 0,
+      "rawvideoparse element");
+
+  object_class = G_OBJECT_CLASS (klass);
+  element_class = GST_ELEMENT_CLASS (klass);
+  baseparse_class = GST_BASE_PARSE_CLASS (klass);
+  rawbaseparse_class = GST_RAW_BASE_PARSE_CLASS (klass);
+
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&static_sink_template));
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&static_src_template));
+
+  object_class->set_property =
+      GST_DEBUG_FUNCPTR (gst_raw_video_parse_set_property);
+  object_class->get_property =
+      GST_DEBUG_FUNCPTR (gst_raw_video_parse_get_property);
+
+  baseparse_class->stop = GST_DEBUG_FUNCPTR (gst_raw_video_parse_stop);
+
+  rawbaseparse_class->set_current_config =
+      GST_DEBUG_FUNCPTR (gst_raw_video_parse_set_current_config);
+  rawbaseparse_class->get_current_config =
+      GST_DEBUG_FUNCPTR (gst_raw_video_parse_get_current_config);
+  rawbaseparse_class->set_config_from_caps =
+      GST_DEBUG_FUNCPTR (gst_raw_video_parse_set_config_from_caps);
+  rawbaseparse_class->get_caps_from_config =
+      GST_DEBUG_FUNCPTR (gst_raw_video_parse_get_caps_from_config);
+  rawbaseparse_class->get_config_frame_size =
+      GST_DEBUG_FUNCPTR (gst_raw_video_parse_get_config_frame_size);
+  rawbaseparse_class->get_max_frames_per_buffer =
+      GST_DEBUG_FUNCPTR (gst_raw_video_parse_get_max_frames_per_buffer);
+  rawbaseparse_class->is_config_ready =
+      GST_DEBUG_FUNCPTR (gst_raw_video_parse_is_config_ready);
+  rawbaseparse_class->process = GST_DEBUG_FUNCPTR (gst_raw_video_parse_process);
+  rawbaseparse_class->is_unit_format_supported =
+      GST_DEBUG_FUNCPTR (gst_raw_video_parse_is_unit_format_supported);
+  rawbaseparse_class->get_units_per_second =
+      GST_DEBUG_FUNCPTR (gst_raw_video_parse_get_units_per_second);
+  rawbaseparse_class->get_overhead_size =
+      GST_DEBUG_FUNCPTR (gst_raw_video_parse_get_overhead_size);
+
+  g_object_class_install_property (object_class,
+      PROP_WIDTH,
+      g_param_spec_int ("width",
+          "Width",
+          "Width of frames in raw stream",
+          0, G_MAXINT, DEFAULT_WIDTH,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
+      );
+  g_object_class_install_property (object_class,
+      PROP_HEIGHT,
+      g_param_spec_int ("height",
+          "Height",
+          "Height of frames in raw stream",
+          0, G_MAXINT,
+          DEFAULT_HEIGHT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
+      );
+  g_object_class_install_property (object_class,
+      PROP_FORMAT,
+      g_param_spec_enum ("format",
+          "Format",
+          "Format of frames in raw stream",
+          GST_TYPE_VIDEO_FORMAT,
+          DEFAULT_FORMAT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
+      );
+  g_object_class_install_property (object_class,
+      PROP_FRAMERATE,
+      gst_param_spec_fraction ("framerate",
+          "Frame rate",
+          "Rate of frames in raw stream",
+          0, 1, G_MAXINT, 1,
+          DEFAULT_FRAMERATE_N, DEFAULT_FRAMERATE_D,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
+      );
+  g_object_class_install_property (object_class,
+      PROP_PIXEL_ASPECT_RATIO,
+      gst_param_spec_fraction ("pixel-aspect-ratio",
+          "Pixel aspect ratio",
+          "Pixel aspect ratio of frames in raw stream",
+          1, 100, 100, 1,
+          DEFAULT_PIXEL_ASPECT_RATIO_N, DEFAULT_PIXEL_ASPECT_RATIO_D,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
+      );
+  g_object_class_install_property (object_class,
+      PROP_INTERLACED,
+      g_param_spec_boolean ("interlaced",
+          "Interlaced flag",
+          "True if frames in raw stream are interlaced",
+          DEFAULT_INTERLACED, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
+      );
+  g_object_class_install_property (object_class,
+      PROP_TOP_FIELD_FIRST,
+      g_param_spec_boolean ("top-field-first",
+          "Top field first",
+          "True if top field in frames in raw stream come first (not used if frames aren't interlaced)",
+          DEFAULT_INTERLACED, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
+      );
+  g_object_class_install_property (object_class,
+      PROP_PLANE_STRIDES,
+      g_param_spec_value_array ("plane-strides",
+          "Plane strides",
+          "Strides of the planets in bytes",
+          g_param_spec_uint ("plane-stride",
+              "Plane stride",
+              "Stride of the n-th plane in bytes (0 = stride equals width*bytes-per-pixel)",
+              0, G_MAXUINT,
+              0,
+              G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS),
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
+      );
+  g_object_class_install_property (object_class,
+      PROP_PLANE_OFFSETS,
+      g_param_spec_value_array ("plane-offsets",
+          "Plane offsets",
+          "Offsets of the planets in bytes",
+          g_param_spec_uint ("plane-offset",
+              "Plane offset",
+              "Offset of the n-th plane in bytes",
+              0, G_MAXUINT,
+              0,
+              G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS),
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
+      );
+  g_object_class_install_property (object_class,
+      PROP_FRAME_STRIDE,
+      g_param_spec_uint ("frame-stride",
+          "Frame stride",
+          "Stride between whole frames (0 = frames are tightly packed together)",
+          0, G_MAXUINT,
+          DEFAULT_FRAME_STRIDE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
+      );
+
+  gst_element_class_set_static_metadata (element_class,
+      "rawvideoparse",
+      "Codec/Parser/Video",
+      "Converts unformatted data streams into timestamped raw video frames",
+      "Carlos Rafael Giani <dv@pseudoterminal.org>");
+}
+
+
+static void
+gst_raw_video_parse_init (GstRawVideoParse * raw_video_parse)
+{
+  gst_raw_video_parse_init_config (&(raw_video_parse->properties_config));
+  gst_raw_video_parse_init_config (&(raw_video_parse->sink_caps_config));
+
+  /* As required by GstRawBaseParse, ensure that the current configuration
+   * is initially set to be the properties config */
+  raw_video_parse->current_config = &(raw_video_parse->properties_config);
+
+  /* Properties config must be valid from the start, so set its ready value
+   * to TRUE, and make sure its bpf value is valid. */
+  raw_video_parse->properties_config.ready = TRUE;
+  raw_video_parse->properties_config.top_field_first = DEFAULT_TOP_FIELD_FIRST;
+  raw_video_parse->properties_config.frame_stride = DEFAULT_FRAME_STRIDE;
+}
+
+
+static void
+gst_raw_video_parse_set_property (GObject * object, guint prop_id,
+    GValue const *value, GParamSpec * pspec)
+{
+  GstBaseParse *base_parse = GST_BASE_PARSE (object);
+  GstRawBaseParse *raw_base_parse = GST_RAW_BASE_PARSE (object);
+  GstRawVideoParse *raw_video_parse = GST_RAW_VIDEO_PARSE (object);
+  GstRawVideoParseConfig *props_cfg = &(raw_video_parse->properties_config);
+
+  /* All properties are handled similarly:
+   * - if the new value is the same as the current value, nothing is done
+   * - the parser lock is held while the new value is set
+   * - if the properties config is the current config, the source caps are
+   *   invalidated to ensure that the code in handle_frame pushes a new CAPS
+   *   event out
+   * - properties that affect the video frame size call the function to update
+   *   the info and also call gst_base_parse_set_min_frame_size() to ensure
+   *   that the minimum frame size can hold 1 frame (= one sample for each
+   *   channel); to ensure that the min frame size includes any extra padding,
+   *   it is set to the result of gst_raw_video_parse_get_config_frame_size()
+   * - property configuration values that require video info updates aren't
+   *   written directory into the video info structure, but in the extra
+   *   fields instead (gst_raw_video_parse_update_info() then copies the values
+   *   from these fields into the video info); see the documentation inside
+   *   gst_raw_video_parse_update_info() for the reason why
+   */
+
+  switch (prop_id) {
+    case PROP_WIDTH:
+    {
+      gint new_width = g_value_get_int (value);
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+
+      if (new_width != props_cfg->width) {
+        props_cfg->width = new_width;
+        gst_raw_video_parse_update_info (props_cfg);
+
+        if (!gst_raw_video_parse_is_using_sink_caps (raw_video_parse)) {
+          gst_raw_base_parse_invalidate_src_caps (raw_base_parse);
+          gst_base_parse_set_min_frame_size (base_parse,
+              gst_raw_video_parse_get_config_frame_size (raw_base_parse,
+                  GST_RAW_BASE_PARSE_CONFIG_PROPERTIES));
+        }
+      }
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+    }
+
+    case PROP_HEIGHT:
+    {
+      gint new_height = g_value_get_int (value);
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+
+      if (new_height != props_cfg->height) {
+        props_cfg->height = new_height;
+        gst_raw_video_parse_update_info (props_cfg);
+
+        if (!gst_raw_video_parse_is_using_sink_caps (raw_video_parse)) {
+          gst_raw_base_parse_invalidate_src_caps (raw_base_parse);
+          gst_base_parse_set_min_frame_size (base_parse,
+              gst_raw_video_parse_get_config_frame_size (raw_base_parse,
+                  GST_RAW_BASE_PARSE_CONFIG_PROPERTIES));
+        }
+      }
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+    }
+
+    case PROP_FORMAT:
+    {
+      GstVideoFormat new_format = g_value_get_enum (value);
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+
+      if (new_format != props_cfg->format) {
+        props_cfg->format = new_format;
+        gst_raw_video_parse_update_info (props_cfg);
+
+        if (!gst_raw_video_parse_is_using_sink_caps (raw_video_parse)) {
+          gst_raw_base_parse_invalidate_src_caps (raw_base_parse);
+          gst_base_parse_set_min_frame_size (base_parse,
+              gst_raw_video_parse_get_config_frame_size (raw_base_parse,
+                  GST_RAW_BASE_PARSE_CONFIG_PROPERTIES));
+        }
+      }
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+    }
+
+    case PROP_PIXEL_ASPECT_RATIO:
+    {
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+
+      /* The pixel aspect ratio does not affect the video frame size,
+       * so it is just set directly without any updates */
+      props_cfg->pixel_aspect_ratio_n =
+          GST_VIDEO_INFO_PAR_N (&(props_cfg->info)) =
+          gst_value_get_fraction_numerator (value);
+      props_cfg->pixel_aspect_ratio_d =
+          GST_VIDEO_INFO_PAR_D (&(props_cfg->info)) =
+          gst_value_get_fraction_denominator (value);
+      GST_DEBUG_OBJECT (raw_video_parse, "setting pixel aspect ratio to %u/%u",
+          props_cfg->pixel_aspect_ratio_n, props_cfg->pixel_aspect_ratio_d);
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+    }
+
+    case PROP_FRAMERATE:
+    {
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+
+      /* The framerate does not affect the video frame size,
+       * so it is just set directly without any updates */
+      props_cfg->framerate_n = GST_VIDEO_INFO_FPS_N (&(props_cfg->info)) =
+          gst_value_get_fraction_numerator (value);
+      props_cfg->framerate_d = GST_VIDEO_INFO_FPS_D (&(props_cfg->info)) =
+          gst_value_get_fraction_denominator (value);
+      GST_DEBUG_OBJECT (raw_video_parse, "setting framerate to %u/%u",
+          props_cfg->framerate_n, props_cfg->framerate_d);
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+    }
+
+    case PROP_INTERLACED:
+    {
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+
+      /* Interlacing does not affect the video frame size,
+       * so it is just set directly without any updates */
+      props_cfg->interlaced = g_value_get_boolean (value);
+      GST_VIDEO_INFO_INTERLACE_MODE (&(props_cfg->info)) =
+          props_cfg->interlaced ? GST_VIDEO_INTERLACE_MODE_INTERLEAVED :
+          GST_VIDEO_INTERLACE_MODE_PROGRESSIVE;
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+
+      break;
+    }
+
+    case PROP_TOP_FIELD_FIRST:
+    {
+      /* The top-field-first flag is a detail related to
+       * interlacing, so no video info update is needed */
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+      props_cfg->top_field_first = g_value_get_boolean (value);
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+    }
+
+    case PROP_PLANE_STRIDES:
+    {
+      GValueArray *valarray = g_value_get_boxed (value);
+      guint n_planes;
+      guint i;
+
+      /* If no valarray is given, then disable custom
+       * plane strides & offsets and stick to the
+       * standard computed ones */
+      if (valarray == NULL) {
+        GST_DEBUG_OBJECT (raw_video_parse,
+            "custom plane strides & offsets disabled");
+        props_cfg->custom_plane_strides = FALSE;
+        gst_raw_video_parse_update_info (props_cfg);
+        break;
+      }
+
+      /* Sanity check - reject empty arrays */
+      if ((valarray != NULL) && (valarray->n_values == 0)) {
+        GST_ELEMENT_ERROR (raw_video_parse, LIBRARY, SETTINGS,
+            ("plane strides property holds an empty array"), (NULL));
+        break;
+      }
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+
+      n_planes = GST_VIDEO_INFO_N_PLANES (&(props_cfg->info));
+
+      /* Check that the valarray holds the right number of values */
+      if (valarray->n_values != n_planes) {
+        GST_ELEMENT_ERROR (raw_video_parse, LIBRARY, SETTINGS,
+            ("incorrect number of elements in plane strides property"),
+            ("expected: %u, got: %u", n_planes, valarray->n_values));
+        GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+        break;
+      }
+
+      /* Copy the values to the stride array */
+      for (i = 0; i < n_planes; ++i) {
+        GValue *val = g_value_array_get_nth (valarray, i);
+        props_cfg->plane_strides[i] = g_value_get_uint (val);
+        GST_DEBUG_OBJECT (raw_video_parse, "plane #%u stride: %d", i,
+            props_cfg->plane_strides[i]);
+      }
+
+      props_cfg->custom_plane_strides = TRUE;
+
+      gst_raw_video_parse_update_info (props_cfg);
+
+      if (!gst_raw_video_parse_is_using_sink_caps (raw_video_parse))
+        gst_base_parse_set_min_frame_size (base_parse,
+            gst_raw_video_parse_get_config_frame_size (raw_base_parse,
+                GST_RAW_BASE_PARSE_CONFIG_PROPERTIES));
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+    }
+
+    case PROP_PLANE_OFFSETS:
+    {
+      GValueArray *valarray = g_value_get_boxed (value);
+      guint n_planes;
+      guint i;
+
+      /* If no valarray is given, then disable custom
+       * plane strides & offsets and stick to the
+       * standard computed ones */
+      if (valarray == NULL) {
+        GST_DEBUG_OBJECT (raw_video_parse,
+            "custom plane strides & offsets disabled");
+        props_cfg->custom_plane_strides = FALSE;
+        gst_raw_video_parse_update_info (props_cfg);
+        break;
+      }
+
+      /* Sanity check - reject empty arrays */
+      if ((valarray != NULL) && (valarray->n_values == 0)) {
+        GST_ELEMENT_ERROR (raw_video_parse, LIBRARY, SETTINGS,
+            ("plane offsets property holds an empty array"), (NULL));
+        break;
+      }
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+
+      n_planes = GST_VIDEO_INFO_N_PLANES (&(props_cfg->info));
+
+      /* Check that the valarray holds the right number of values */
+      if (valarray->n_values != n_planes) {
+        GST_ELEMENT_ERROR (raw_video_parse, LIBRARY, SETTINGS,
+            ("incorrect number of elements in plane offsets property"),
+            ("expected: %u, got: %u", n_planes, valarray->n_values));
+        GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+        break;
+      }
+
+      /* Copy the values to the offset array */
+      for (i = 0; i < n_planes; ++i) {
+        GValue *val = g_value_array_get_nth (valarray, i);
+        props_cfg->plane_offsets[i] = g_value_get_uint (val);
+        GST_DEBUG_OBJECT (raw_video_parse, "plane #%u offset: %" G_GSIZE_FORMAT,
+            i, props_cfg->plane_offsets[i]);
+      }
+
+      props_cfg->custom_plane_strides = TRUE;
+
+      gst_raw_video_parse_update_info (props_cfg);
+
+      if (!gst_raw_video_parse_is_using_sink_caps (raw_video_parse))
+        gst_base_parse_set_min_frame_size (base_parse,
+            gst_raw_video_parse_get_config_frame_size (raw_base_parse,
+                GST_RAW_BASE_PARSE_CONFIG_PROPERTIES));
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+    }
+
+    case PROP_FRAME_STRIDE:
+    {
+      /* The frame stride does not affect the video frame size,
+       * so it is just set directly without any updates */
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+      props_cfg->frame_stride = g_value_get_uint (value);
+      gst_raw_video_parse_update_info (props_cfg);
+      if (!gst_raw_video_parse_is_using_sink_caps (raw_video_parse))
+        gst_base_parse_set_min_frame_size (base_parse,
+            gst_raw_video_parse_get_config_frame_size (raw_base_parse,
+                GST_RAW_BASE_PARSE_CONFIG_PROPERTIES));
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+
+      break;
+    }
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+
+static void
+gst_raw_video_parse_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstRawVideoParse *raw_video_parse = GST_RAW_VIDEO_PARSE (object);
+  GstRawVideoParseConfig *props_cfg = &(raw_video_parse->properties_config);
+
+  switch (prop_id) {
+    case PROP_WIDTH:
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+      g_value_set_int (value, props_cfg->width);
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+
+    case PROP_HEIGHT:
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+      g_value_set_int (value, props_cfg->height);
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+
+    case PROP_FORMAT:
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+      g_value_set_enum (value, props_cfg->format);
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+
+    case PROP_PIXEL_ASPECT_RATIO:
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+      gst_value_set_fraction (value, props_cfg->pixel_aspect_ratio_n,
+          props_cfg->pixel_aspect_ratio_d);
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+
+      break;
+
+    case PROP_FRAMERATE:
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+      gst_value_set_fraction (value, props_cfg->framerate_n,
+          props_cfg->framerate_d);
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+
+    case PROP_INTERLACED:
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+      g_value_set_boolean (value, props_cfg->interlaced);
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+
+    case PROP_TOP_FIELD_FIRST:
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+      g_value_set_boolean (value, props_cfg->top_field_first);
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+
+    case PROP_PLANE_STRIDES:
+    {
+      guint i, n_planes;
+      GValue val = G_VALUE_INIT;
+      GValueArray *valarray;
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+
+      n_planes = GST_VIDEO_INFO_N_PLANES (&(props_cfg->info));
+      valarray = g_value_array_new (n_planes);
+      g_value_init (&val, G_TYPE_UINT);
+
+      for (i = 0; i < n_planes; ++i) {
+        g_value_set_uint (&val, props_cfg->plane_strides[i]);
+        g_value_array_insert (valarray, i, &val);
+      }
+
+      g_value_unset (&val);
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+
+      /* Pass on ownership to the value array,
+       * since we don't need it anymore */
+      g_value_take_boxed (value, valarray);
+      break;
+    }
+
+    case PROP_PLANE_OFFSETS:
+    {
+      guint i, n_planes;
+      GValue val = G_VALUE_INIT;
+      GValueArray *valarray;
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+
+      n_planes = GST_VIDEO_INFO_N_PLANES (&(props_cfg->info));
+      valarray = g_value_array_new (n_planes);
+      g_value_init (&val, G_TYPE_UINT);
+
+      for (i = 0; i < n_planes; ++i) {
+        g_value_set_uint (&val, props_cfg->plane_offsets[i]);
+        g_value_array_insert (valarray, i, &val);
+      }
+
+      g_value_unset (&val);
+
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+
+      /* Pass on ownership to the value array,
+       * since we don't need it anymore */
+      g_value_take_boxed (value, valarray);
+      break;
+    }
+
+    case PROP_FRAME_STRIDE:
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_LOCK (object);
+      g_value_set_uint (value, raw_video_parse->properties_config.frame_stride);
+      GST_RAW_BASE_PARSE_CONFIG_MUTEX_UNLOCK (object);
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+
+static gboolean
+gst_raw_video_parse_stop (GstBaseParse * parse)
+{
+  GstRawVideoParse *raw_video_parse = GST_RAW_VIDEO_PARSE (parse);
+
+  /* Sink caps config is not ready until caps come in.
+   * We are stopping processing, the element is being reset,
+   * so the config has to be un-readied.
+   * (Since the properties config is not depending on caps,
+   * its ready status is always TRUE.) */
+  raw_video_parse->sink_caps_config.ready = FALSE;
+
+  return GST_BASE_PARSE_CLASS (parent_class)->stop (parse);
+}
+
+
+static gboolean
+gst_raw_video_parse_set_current_config (GstRawBaseParse * raw_base_parse,
+    GstRawBaseParseConfig config)
+{
+  GstRawVideoParse *raw_video_parse = GST_RAW_VIDEO_PARSE (raw_base_parse);
+
+  switch (config) {
+    case GST_RAW_BASE_PARSE_CONFIG_PROPERTIES:
+      raw_video_parse->current_config = &(raw_video_parse->properties_config);
+      break;
+
+    case GST_RAW_BASE_PARSE_CONFIG_SINKCAPS:
+      raw_video_parse->current_config = &(raw_video_parse->sink_caps_config);
+      break;
+
+    default:
+      g_assert_not_reached ();
+  }
+
+  return TRUE;
+}
+
+
+static GstRawBaseParseConfig
+gst_raw_video_parse_get_current_config (GstRawBaseParse * raw_base_parse)
+{
+  GstRawVideoParse *raw_video_parse = GST_RAW_VIDEO_PARSE (raw_base_parse);
+  return gst_raw_video_parse_is_using_sink_caps (raw_video_parse) ?
+      GST_RAW_BASE_PARSE_CONFIG_SINKCAPS : GST_RAW_BASE_PARSE_CONFIG_PROPERTIES;
+}
+
+
+static gboolean
+gst_raw_video_parse_set_config_from_caps (GstRawBaseParse * raw_base_parse,
+    GstRawBaseParseConfig config, GstCaps * caps)
+{
+  int i;
+  GstStructure *structure;
+  GstRawVideoParse *raw_video_parse = GST_RAW_VIDEO_PARSE (raw_base_parse);
+  GstRawVideoParseConfig *config_ptr =
+      gst_raw_video_parse_get_config_ptr (raw_video_parse, config);
+
+  g_assert (caps != NULL);
+
+  /* Caps might get copied, and the copy needs to be unref'd.
+   * Also, the caller retains ownership over the original caps.
+   * So, to make this mechanism also work with cases where the
+   * caps are *not* copied, ref the original caps here first. */
+  gst_caps_ref (caps);
+
+  structure = gst_caps_get_structure (caps, 0);
+
+  /* For unaligned raw data, the output caps stay the same,
+   * except that video/x-unaligned-raw becomes video/x-raw,
+   * since the parser aligns the frame data */
+  if (gst_structure_has_name (structure, "video/x-unaligned-raw")) {
+    /* Copy the caps to be able to modify them */
+    GstCaps *new_caps = gst_caps_copy (caps);
+    gst_caps_unref (caps);
+    caps = new_caps;
+
+    /* Change the media type to video/x-raw , otherwise
+     * gst_video_info_from_caps() won't work */
+    structure = gst_caps_get_structure (caps, 0);
+    gst_structure_set_name (structure, "video/x-raw");
+  }
+
+  config_ptr->ready = gst_video_info_from_caps (&(config_ptr->info), caps);
+
+  if (config_ptr->ready) {
+    config_ptr->width = GST_VIDEO_INFO_WIDTH (&(config_ptr->info));
+    config_ptr->height = GST_VIDEO_INFO_HEIGHT (&(config_ptr->info));
+    config_ptr->pixel_aspect_ratio_n =
+        GST_VIDEO_INFO_PAR_N (&(config_ptr->info));
+    config_ptr->pixel_aspect_ratio_d =
+        GST_VIDEO_INFO_PAR_D (&(config_ptr->info));
+    config_ptr->framerate_n = GST_VIDEO_INFO_FPS_N (&(config_ptr->info));
+    config_ptr->framerate_d = GST_VIDEO_INFO_FPS_D (&(config_ptr->info));
+    config_ptr->interlaced = GST_VIDEO_INFO_IS_INTERLACED (&(config_ptr->info));
+    config_ptr->height = GST_VIDEO_INFO_HEIGHT (&(config_ptr->info));
+    config_ptr->top_field_first = 0;
+    config_ptr->frame_stride = 0;
+
+    for (i = 0; i < GST_VIDEO_MAX_PLANES; ++i) {
+      config_ptr->plane_offsets[i] =
+          GST_VIDEO_INFO_PLANE_OFFSET (&(config_ptr->info), i);
+      config_ptr->plane_strides[i] =
+          GST_VIDEO_INFO_PLANE_STRIDE (&(config_ptr->info), i);
+    }
+  }
+
+  gst_caps_unref (caps);
+
+  return config_ptr->ready;
+}
+
+
+static gboolean
+gst_raw_video_parse_get_caps_from_config (GstRawBaseParse * raw_base_parse,
+    GstRawBaseParseConfig config, GstCaps ** caps)
+{
+  GstRawVideoParse *raw_video_parse = GST_RAW_VIDEO_PARSE (raw_base_parse);
+  GstRawVideoParseConfig *config_ptr =
+      gst_raw_video_parse_get_config_ptr (raw_video_parse, config);
+
+  g_assert (caps != NULL);
+
+  *caps = gst_video_info_to_caps (&(config_ptr->info));
+
+  return *caps != NULL;
+}
+
+
+static gsize
+gst_raw_video_parse_get_config_frame_size (GstRawBaseParse * raw_base_parse,
+    GstRawBaseParseConfig config)
+{
+  GstRawVideoParse *raw_video_parse = GST_RAW_VIDEO_PARSE (raw_base_parse);
+  GstRawVideoParseConfig *config_ptr =
+      gst_raw_video_parse_get_config_ptr (raw_video_parse, config);
+  return MAX (GST_VIDEO_INFO_SIZE (&(config_ptr->info)),
+      (gsize) (config_ptr->frame_stride));
+}
+
+
+static guint
+gst_raw_video_parse_get_max_frames_per_buffer (G_GNUC_UNUSED GstRawBaseParse *
+    raw_base_parse, G_GNUC_UNUSED GstRawBaseParseConfig config)
+{
+  /* We want exactly one frame per buffer */
+  return 1;
+}
+
+
+static gboolean
+gst_raw_video_parse_is_config_ready (GstRawBaseParse * raw_base_parse,
+    GstRawBaseParseConfig config)
+{
+  GstRawVideoParse *raw_video_parse = GST_RAW_VIDEO_PARSE (raw_base_parse);
+  return gst_raw_video_parse_get_config_ptr (raw_video_parse, config)->ready;
+}
+
+
+static gboolean
+gst_raw_video_parse_process (GstRawBaseParse * raw_base_parse,
+    GstRawBaseParseConfig config, GstBuffer * in_data,
+    G_GNUC_UNUSED gsize total_num_in_bytes,
+    G_GNUC_UNUSED gsize num_valid_in_bytes, GstBuffer ** processed_data)
+{
+  GstRawVideoParse *raw_video_parse = GST_RAW_VIDEO_PARSE (raw_base_parse);
+  GstRawVideoParseConfig *config_ptr =
+      gst_raw_video_parse_get_config_ptr (raw_video_parse, config);
+  guint frame_flags = 0;
+  GstVideoInfo *video_info = &(config_ptr->info);
+  GstVideoMeta *videometa;
+  GstBuffer *out_data;
+
+  /* In case of extra padding bytes, get a subbuffer without the padding bytes.
+   * Otherwise, just add the video meta. */
+  if (GST_VIDEO_INFO_SIZE (video_info) < config_ptr->frame_stride) {
+    *processed_data = out_data =
+        gst_buffer_copy_region (in_data,
+        GST_BUFFER_COPY_FLAGS | GST_BUFFER_COPY_TIMESTAMPS |
+        GST_BUFFER_COPY_MEMORY, 0, GST_VIDEO_INFO_SIZE (video_info));
+  } else {
+    out_data = in_data;
+    *processed_data = NULL;
+  }
+
+  if (config_ptr->interlaced) {
+    GST_BUFFER_FLAG_SET (out_data, GST_VIDEO_BUFFER_FLAG_INTERLACED);
+    frame_flags |= GST_VIDEO_FRAME_FLAG_INTERLACED;
+
+    if (config_ptr->top_field_first) {
+      GST_BUFFER_FLAG_SET (out_data, GST_VIDEO_BUFFER_FLAG_TFF);
+      frame_flags |= GST_VIDEO_FRAME_FLAG_TFF;
+    } else
+      GST_BUFFER_FLAG_UNSET (out_data, GST_VIDEO_BUFFER_FLAG_TFF);
+  }
+
+  /* Remove any existing videometa - it will be replaced by the new videometa
+   * from here */
+  while ((videometa = gst_buffer_get_video_meta (out_data))) {
+    GST_LOG_OBJECT (raw_base_parse, "removing existing videometa from buffer");
+    gst_buffer_remove_meta (out_data, (GstMeta *) videometa);
+  }
+
+  gst_buffer_add_video_meta_full (out_data,
+      frame_flags,
+      config_ptr->format,
+      config_ptr->width,
+      config_ptr->height,
+      GST_VIDEO_INFO_N_PLANES (video_info),
+      config_ptr->plane_offsets, config_ptr->plane_strides);
+
+
+  return TRUE;
+}
+
+
+static gboolean
+gst_raw_video_parse_is_unit_format_supported (G_GNUC_UNUSED GstRawBaseParse *
+    raw_base_parse, GstFormat format)
+{
+  switch (format) {
+    case GST_FORMAT_BYTES:
+    case GST_FORMAT_DEFAULT:
+      return TRUE;
+    default:
+      return FALSE;
+  }
+}
+
+
+static void
+gst_raw_video_parse_get_units_per_second (GstRawBaseParse * raw_base_parse,
+    GstFormat format, GstRawBaseParseConfig config, gsize * units_per_sec_n,
+    gsize * units_per_sec_d)
+{
+  GstRawVideoParse *raw_video_parse = GST_RAW_VIDEO_PARSE (raw_base_parse);
+  GstRawVideoParseConfig *config_ptr =
+      gst_raw_video_parse_get_config_ptr (raw_video_parse, config);
+
+  switch (format) {
+    case GST_FORMAT_BYTES:
+    {
+      gsize framesize = GST_VIDEO_INFO_SIZE (&(config_ptr->info));
+      gint64 n = framesize * config_ptr->framerate_n;
+      gint64 d = config_ptr->framerate_d;
+      gint64 common_div = gst_util_greatest_common_divisor_int64 (n, d);
+      GST_DEBUG_OBJECT (raw_video_parse,
+          "n: %" G_GINT64_FORMAT " d: %" G_GINT64_FORMAT " common divisor: %"
+          G_GINT64_FORMAT, n, d, common_div);
+
+      /* Divide numerator and denominator by greatest common divisor.
+       * This minimizes the risk of integer overflows in the baseparse class. */
+      *units_per_sec_n = n / common_div;
+      *units_per_sec_d = d / common_div;
+
+      break;
+    }
+
+    case GST_FORMAT_DEFAULT:
+    {
+      *units_per_sec_n = config_ptr->framerate_n;
+      *units_per_sec_d = config_ptr->framerate_d;
+      break;
+    }
+
+    default:
+      g_assert_not_reached ();
+  }
+}
+
+
+static gint
+gst_raw_video_parse_get_overhead_size (GstRawBaseParse * raw_base_parse,
+    GstRawBaseParseConfig config)
+{
+  GstRawVideoParse *raw_video_parse = GST_RAW_VIDEO_PARSE (raw_base_parse);
+  GstRawVideoParseConfig *config_ptr =
+      gst_raw_video_parse_get_config_ptr (raw_video_parse, config);
+  gint64 frame_size = GST_VIDEO_INFO_SIZE (&(config_ptr->info));
+  gint64 frame_stride = config_ptr->frame_stride;
+
+  /* In the video parser, the overhead is defined by the difference between
+   * the frame stride and the actual frame size. If the former is larger,
+   * then the additional bytes are considered padding bytes and get ignored
+   * by the base class. */
+
+  GST_LOG_OBJECT (raw_video_parse,
+      "frame size: %" G_GINT64_FORMAT "  frame stride: %" G_GINT64_FORMAT,
+      frame_size, frame_stride);
+
+  return (frame_size < frame_stride) ? (gint) (frame_stride - frame_size) : 0;
+}
+
+
+static gboolean
+gst_raw_video_parse_is_using_sink_caps (GstRawVideoParse * raw_video_parse)
+{
+  return raw_video_parse->current_config ==
+      &(raw_video_parse->sink_caps_config);
+}
+
+
+static GstRawVideoParseConfig *
+gst_raw_video_parse_get_config_ptr (GstRawVideoParse * raw_video_parse,
+    GstRawBaseParseConfig config)
+{
+  g_assert (raw_video_parse->current_config != NULL);
+
+  switch (config) {
+    case GST_RAW_BASE_PARSE_CONFIG_PROPERTIES:
+      return &(raw_video_parse->properties_config);
+
+    case GST_RAW_BASE_PARSE_CONFIG_SINKCAPS:
+      return &(raw_video_parse->sink_caps_config);
+
+    default:
+      g_assert (raw_video_parse->current_config != NULL);
+      return raw_video_parse->current_config;
+  }
+}
+
+
+static void
+gst_raw_video_parse_init_config (GstRawVideoParseConfig * config)
+{
+  int i;
+
+  config->ready = FALSE;
+  config->width = DEFAULT_WIDTH;
+  config->height = DEFAULT_HEIGHT;
+  config->format = DEFAULT_FORMAT;
+  config->pixel_aspect_ratio_n = DEFAULT_PIXEL_ASPECT_RATIO_N;
+  config->pixel_aspect_ratio_d = DEFAULT_PIXEL_ASPECT_RATIO_D;
+  config->framerate_n = DEFAULT_FRAMERATE_N;
+  config->framerate_d = DEFAULT_FRAMERATE_D;
+  config->interlaced = DEFAULT_INTERLACED;
+
+  config->top_field_first = DEFAULT_TOP_FIELD_FIRST;
+  config->frame_stride = DEFAULT_FRAME_STRIDE;
+
+  gst_video_info_set_format (&(config->info), DEFAULT_FORMAT, DEFAULT_WIDTH,
+      DEFAULT_HEIGHT);
+  for (i = 0; i < GST_VIDEO_MAX_PLANES; ++i) {
+    config->plane_offsets[i] = GST_VIDEO_INFO_PLANE_OFFSET (&(config->info), i);
+    config->plane_strides[i] = GST_VIDEO_INFO_PLANE_STRIDE (&(config->info), i);
+  }
+}
+
+
+static void
+gst_raw_video_parse_update_info (GstRawVideoParseConfig * config)
+{
+  guint i;
+  guint n_planes;
+  guint last_plane;
+  gsize last_plane_offset, last_plane_size;
+  GstVideoInfo *info = &(config->info);
+
+  GST_DEBUG ("updating info with width %u height %u format %s "
+      " custom plane strides&offsets %d", config->width, config->height,
+      gst_video_format_to_string (config->format),
+      config->custom_plane_strides);
+
+  gst_video_info_set_format (info, config->format, config->width,
+      config->height);
+
+  GST_VIDEO_INFO_PAR_N (info) = config->pixel_aspect_ratio_n;
+  GST_VIDEO_INFO_PAR_D (info) = config->pixel_aspect_ratio_d;
+  GST_VIDEO_INFO_FPS_N (info) = config->framerate_n;
+  GST_VIDEO_INFO_FPS_D (info) = config->framerate_d;
+  GST_VIDEO_INFO_INTERLACE_MODE (info) =
+      config->interlaced ? GST_VIDEO_INTERLACE_MODE_INTERLEAVED :
+      GST_VIDEO_INTERLACE_MODE_PROGRESSIVE;
+
+  /* Check if there are custom plane strides & offsets that need to be preserved */
+  if (config->custom_plane_strides) {
+    /* In case there are, overwrite the offsets&strides computed by
+     * gst_video_info_set_format with the custom ones */
+    for (i = 0; i < GST_VIDEO_MAX_PLANES; ++i) {
+      GST_VIDEO_INFO_PLANE_OFFSET (info, i) = config->plane_offsets[i];
+      GST_VIDEO_INFO_PLANE_STRIDE (info, i) = config->plane_strides[i];
+    }
+  } else {
+    /* No custom planes&offsets; copy the computed ones into
+     * the plane_offsets & plane_strides arrays to ensure they
+     * are equal to the ones in the videoinfo */
+    for (i = 0; i < GST_VIDEO_MAX_PLANES; ++i) {
+      config->plane_offsets[i] = GST_VIDEO_INFO_PLANE_OFFSET (info, i);
+      config->plane_strides[i] = GST_VIDEO_INFO_PLANE_STRIDE (info, i);
+    }
+  }
+
+  n_planes = GST_VIDEO_INFO_N_PLANES (info);
+  if (n_planes < 1)
+    n_planes = 1;
+
+  /* Figure out what plane is the physically last one. Typically
+   * this is the last plane in the list (= at index n_planes-1).
+   * However, this is not guaranteed, so we have to scan the offsets
+   * to find the last plane. */
+  last_plane_offset = 0;
+  last_plane = 0;
+  for (i = 0; i < n_planes; ++i) {
+    gsize plane_offset = GST_VIDEO_INFO_PLANE_OFFSET (info, i);
+    if (plane_offset >= last_plane_offset) {
+      last_plane = i;
+      last_plane_offset = plane_offset;
+    }
+  }
+
+  last_plane_size =
+      GST_VIDEO_INFO_PLANE_STRIDE (info,
+      last_plane) * GST_VIDEO_FORMAT_INFO_SCALE_HEIGHT (info->finfo,
+      last_plane, config->height);
+
+  GST_VIDEO_INFO_SIZE (info) = last_plane_offset + last_plane_size;
+
+  GST_DEBUG ("last plane #%u:  offset: %" G_GSIZE_FORMAT " size: %"
+      G_GSIZE_FORMAT " => frame size minus extra padding: %" G_GSIZE_FORMAT,
+      last_plane, last_plane_offset, last_plane_size,
+      GST_VIDEO_INFO_SIZE (info));
+}
diff --git a/gst/rawparse/gstrawvideoparse.h b/gst/rawparse/gstrawvideoparse.h
new file mode 100644
index 0000000..32605a6
--- /dev/null
+++ b/gst/rawparse/gstrawvideoparse.h
@@ -0,0 +1,118 @@
+/* GStreamer
+ * Copyright (C) <2016> Carlos Rafael Giani <dv at pseudoterminal dot org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_RAW_VIDEO_PARSE_H__
+#define __GST_RAW_VIDEO_PARSE_H__
+
+#include <gst/gst.h>
+#include <gst/video/video.h>
+#include "gstrawbaseparse.h"
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_RAW_VIDEO_PARSE \
+  (gst_raw_video_parse_get_type())
+#define GST_RAW_VIDEO_PARSE(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_RAW_VIDEO_PARSE, GstRawVideoParse))
+#define GST_RAW_VIDEO_PARSE_CAST(obj) \
+  ((GstRawVideoParse *)(obj))
+#define GST_RAW_VIDEO_PARSE_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_RAW_VIDEO_PARSE, GstRawVideoParseClass))
+#define GST_IS_RAW_VIDEO_PARSE(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_RAW_VIDEO_PARSE))
+#define GST_IS_RAW_VIDEO_PARSE_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_RAW_VIDEO_PARSE))
+
+
+typedef struct _GstRawVideoParseConfig GstRawVideoParseConfig;
+typedef struct _GstRawVideoParse GstRawVideoParse;
+typedef struct _GstRawVideoParseClass GstRawVideoParseClass;
+
+
+/* Contains information about the video frame format. */
+struct _GstRawVideoParseConfig
+{
+  /* If TRUE, then this configuration is ready to use */
+  gboolean ready;
+
+  /* FIXME: These values should not be necessary, since there's
+   * GstVideoInfo. However, setting these values in the video
+   * info independently is currently difficult. For example,
+   * setting the video format requires the gst_video_info_set_format()
+   * function, but this function also overwrites plane strides
+   * and offsets. */
+  gint width, height;
+  GstVideoFormat format;
+  gint pixel_aspect_ratio_n, pixel_aspect_ratio_d;
+  gint framerate_n, framerate_d;
+  gboolean interlaced;
+  gsize plane_offsets[GST_VIDEO_MAX_PLANES];
+  gint plane_strides[GST_VIDEO_MAX_PLANES];
+
+  /* If TRUE, then TFF flags are added to outgoing buffers and
+   * their video metadata */
+  gboolean top_field_first;
+
+  /* Distance between the start of each frame, in bytes. If this value
+   * is larger than the actual size of a frame, then the extra bytes
+   * are skipped. For example, with frames that have 115200 bytes, a
+   * frame_stride value of 120000 means that 4800 trailing bytes are
+   * skipped after the 115200 frame bytes. This is useful to skip
+   * metadata in between frames. */
+  guint frame_stride;
+
+  GstVideoInfo info;
+
+  gboolean custom_plane_strides;
+};
+
+
+struct _GstRawVideoParse
+{
+  GstRawBaseParse parent;
+
+  /*< private > */
+
+  /* Configuration controlled by the object properties. Its ready value
+   * is set to TRUE from the start, so it can be used right away.
+   */
+  GstRawVideoParseConfig properties_config;
+  /* Configuration controlled by the sink caps. Its ready value is
+   * initially set to FALSE until valid sink caps come in. It is set to
+   * FALSE again when the stream-start event is observed.
+   */
+  GstRawVideoParseConfig sink_caps_config;
+  /* Currently active configuration. Points either to properties_config
+   * or to sink_caps_config. This is never NULL. */
+  GstRawVideoParseConfig *current_config;
+};
+
+
+struct _GstRawVideoParseClass
+{
+  GstRawBaseParseClass parent_class;
+};
+
+
+GType gst_raw_video_parse_get_type (void);
+
+
+G_END_DECLS
+
+#endif
diff --git a/gst/rawparse/gstunalignedaudioparse.c b/gst/rawparse/gstunalignedaudioparse.c
new file mode 100644
index 0000000..8847e1f
--- /dev/null
+++ b/gst/rawparse/gstunalignedaudioparse.c
@@ -0,0 +1,125 @@
+/* GStreamer
+ * Copyright (C) 2016 Carlos Rafael Giani <dv@pseudoterminal.org>
+ *
+ * gstunalignedaudioparse.c:
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include <gst/gst.h>
+#include <gst/audio/audio.h>
+#include "gstunalignedaudioparse.h"
+#include "unalignedaudio.h"
+
+
+GST_DEBUG_CATEGORY (unaligned_audio_parse_debug);
+#define GST_CAT_DEFAULT unaligned_audio_parse_debug
+
+
+struct _GstUnalignedAudioParse
+{
+  GstBin parent;
+  GstElement *inner_parser;
+};
+
+
+struct _GstUnalignedAudioParseClass
+{
+  GstBinClass parent_class;
+};
+
+
+static GstStaticPadTemplate static_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS (GST_UNALIGNED_RAW_AUDIO_CAPS)
+    );
+
+
+static GstStaticPadTemplate static_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS (GST_AUDIO_CAPS_MAKE (GST_AUDIO_FORMATS_ALL)
+        ", layout = (string) { interleaved, non-interleaved }")
+    );
+
+
+
+
+G_DEFINE_TYPE (GstUnalignedAudioParse, gst_unaligned_audio_parse, GST_TYPE_BIN);
+
+
+static void
+gst_unaligned_audio_parse_class_init (GstUnalignedAudioParseClass * klass)
+{
+  GstElementClass *element_class;
+
+  GST_DEBUG_CATEGORY_INIT (unaligned_audio_parse_debug, "unalignedaudioparse",
+      0, "Unaligned raw audio parser");
+
+  element_class = GST_ELEMENT_CLASS (klass);
+
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&static_sink_template));
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&static_src_template));
+
+  gst_element_class_set_static_metadata (element_class,
+      "unalignedaudioparse",
+      "Codec/Parser/Bin/Audio",
+      "Parse unaligned raw audio data",
+      "Carlos Rafael Giani <dv@pseudoterminal.org>");
+}
+
+
+static void
+gst_unaligned_audio_parse_init (GstUnalignedAudioParse * unaligned_audio_parse)
+{
+  GstPad *inner_pad;
+  GstPad *ghostpad;
+
+  unaligned_audio_parse->inner_parser =
+      gst_element_factory_make ("rawaudioparse", "inner_parser");
+  g_assert (unaligned_audio_parse->inner_parser != NULL);
+
+  g_object_set (G_OBJECT (unaligned_audio_parse->inner_parser),
+      "use-sink-caps", TRUE, NULL);
+
+  gst_bin_add (GST_BIN (unaligned_audio_parse),
+      unaligned_audio_parse->inner_parser);
+
+  inner_pad =
+      gst_element_get_static_pad (unaligned_audio_parse->inner_parser, "sink");
+  ghostpad =
+      gst_ghost_pad_new_from_template ("sink", inner_pad,
+      gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS
+          (unaligned_audio_parse), "sink"));
+  gst_element_add_pad (GST_ELEMENT (unaligned_audio_parse), ghostpad);
+  gst_object_unref (GST_OBJECT (inner_pad));
+
+  inner_pad = gst_element_get_static_pad (unaligned_audio_parse->inner_parser,
+      "src");
+  ghostpad =
+      gst_ghost_pad_new_from_template ("src", inner_pad,
+      gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS
+          (unaligned_audio_parse), "src"));
+  gst_element_add_pad (GST_ELEMENT (unaligned_audio_parse), ghostpad);
+  gst_object_unref (GST_OBJECT (inner_pad));
+}
diff --git a/gst/rawparse/gstunalignedaudioparse.h b/gst/rawparse/gstunalignedaudioparse.h
new file mode 100644
index 0000000..a07bee7
--- /dev/null
+++ b/gst/rawparse/gstunalignedaudioparse.h
@@ -0,0 +1,49 @@
+/* GStreamer
+ * Copyright (C) 2016 Carlos Rafael Giani <dv@pseudoterminal.org>
+ *
+ * gstunalignedaudioparse.h:
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_UNALIGNED_AUDIO_PARSE_H___
+#define __GST_UNALIGNED_AUDIO_PARSE_H___
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_UNALIGNED_AUDIO_PARSE \
+  (gst_unaligned_audio_parse_get_type())
+#define GST_UNALIGNED_AUDIO_PARSE(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_UNALIGNED_AUDIO_PARSE, GstUnalignedAudioParse))
+#define GST_UNALIGNED_AUDIO_PARSE_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_UNALIGNED_AUDIO_PARSE, GstUnalignedAudioParseClass))
+#define GST_UNALIGNED_AUDIO_PARSE_CAST(obj) \
+  ((GstUnalignedAudioParse *)(obj))
+#define GST_IS_UNALIGNED_AUDIO_PARSE(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_UNALIGNED_AUDIO_PARSE))
+#define GST_IS_UNALIGNED_AUDIO_PARSE_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_UNALIGNED_AUDIO_PARSE))
+
+typedef struct _GstUnalignedAudioParse GstUnalignedAudioParse;
+typedef struct _GstUnalignedAudioParseClass GstUnalignedAudioParseClass;
+
+GType gst_unaligned_audio_parse_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_UNALIGNED_AUDIO_PARSE_H___ */
diff --git a/gst/rawparse/gstunalignedvideoparse.c b/gst/rawparse/gstunalignedvideoparse.c
new file mode 100644
index 0000000..d6e8cf3
--- /dev/null
+++ b/gst/rawparse/gstunalignedvideoparse.c
@@ -0,0 +1,124 @@
+/* GStreamer
+ * Copyright (C) 2016 Carlos Rafael Giani <dv@pseudoterminal.org>
+ *
+ * gstunalignedvideoparse.c:
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include <gst/gst.h>
+#include <gst/video/video.h>
+#include "gstunalignedvideoparse.h"
+#include "unalignedvideo.h"
+
+
+GST_DEBUG_CATEGORY (unaligned_video_parse_debug);
+#define GST_CAT_DEFAULT unaligned_video_parse_debug
+
+
+struct _GstUnalignedVideoParse
+{
+  GstBin parent;
+  GstElement *inner_parser;
+};
+
+
+struct _GstUnalignedVideoParseClass
+{
+  GstBinClass parent_class;
+};
+
+
+static GstStaticPadTemplate static_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS (GST_UNALIGNED_RAW_VIDEO_CAPS)
+    );
+
+
+static GstStaticPadTemplate static_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE (GST_VIDEO_FORMATS_ALL))
+    );
+
+
+
+
+G_DEFINE_TYPE (GstUnalignedVideoParse, gst_unaligned_video_parse, GST_TYPE_BIN);
+
+
+static void
+gst_unaligned_video_parse_class_init (GstUnalignedVideoParseClass * klass)
+{
+  GstElementClass *element_class;
+
+  GST_DEBUG_CATEGORY_INIT (unaligned_video_parse_debug, "unalignedvideoparse",
+      0, "Unaligned raw video parser");
+
+  element_class = GST_ELEMENT_CLASS (klass);
+
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&static_sink_template));
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&static_src_template));
+
+  gst_element_class_set_static_metadata (element_class,
+      "unalignedvideoparse",
+      "Codec/Parser/Bin/Video",
+      "Parse unaligned raw video data",
+      "Carlos Rafael Giani <dv@pseudoterminal.org>");
+}
+
+
+static void
+gst_unaligned_video_parse_init (GstUnalignedVideoParse * unaligned_video_parse)
+{
+  GstPad *inner_pad;
+  GstPad *ghostpad;
+
+  unaligned_video_parse->inner_parser =
+      gst_element_factory_make ("rawvideoparse", "inner_parser");
+  g_assert (unaligned_video_parse->inner_parser != NULL);
+
+  g_object_set (G_OBJECT (unaligned_video_parse->inner_parser),
+      "use-sink-caps", TRUE, NULL);
+
+  gst_bin_add (GST_BIN (unaligned_video_parse),
+      unaligned_video_parse->inner_parser);
+
+  inner_pad =
+      gst_element_get_static_pad (unaligned_video_parse->inner_parser, "sink");
+  ghostpad =
+      gst_ghost_pad_new_from_template ("sink", inner_pad,
+      gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS
+          (unaligned_video_parse), "sink"));
+  gst_element_add_pad (GST_ELEMENT (unaligned_video_parse), ghostpad);
+  gst_object_unref (GST_OBJECT (inner_pad));
+
+  inner_pad = gst_element_get_static_pad (unaligned_video_parse->inner_parser,
+      "src");
+  ghostpad =
+      gst_ghost_pad_new_from_template ("src", inner_pad,
+      gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS
+          (unaligned_video_parse), "src"));
+  gst_element_add_pad (GST_ELEMENT (unaligned_video_parse), ghostpad);
+  gst_object_unref (GST_OBJECT (inner_pad));
+}
diff --git a/gst/rawparse/gstunalignedvideoparse.h b/gst/rawparse/gstunalignedvideoparse.h
new file mode 100644
index 0000000..da40ac9
--- /dev/null
+++ b/gst/rawparse/gstunalignedvideoparse.h
@@ -0,0 +1,49 @@
+/* GStreamer
+ * Copyright (C) 2016 Carlos Rafael Giani <dv@pseudoterminal.org>
+ *
+ * gstunalignedvideoparse.h:
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_UNALIGNED_VIDEO_PARSE_H___
+#define __GST_UNALIGNED_VIDEO_PARSE_H___
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_UNALIGNED_VIDEO_PARSE \
+  (gst_unaligned_video_parse_get_type())
+#define GST_UNALIGNED_VIDEO_PARSE(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_UNALIGNED_VIDEO_PARSE, GstUnalignedVideoParse))
+#define GST_UNALIGNED_VIDEO_PARSE_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_UNALIGNED_VIDEO_PARSE, GstUnalignedVideoParseClass))
+#define GST_UNALIGNED_VIDEO_PARSE_CAST(obj) \
+  ((GstUnalignedVideoParse *)(obj))
+#define GST_IS_UNALIGNED_VIDEO_PARSE(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_UNALIGNED_VIDEO_PARSE))
+#define GST_IS_UNALIGNED_VIDEO_PARSE_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_UNALIGNED_VIDEO_PARSE))
+
+typedef struct _GstUnalignedVideoParse GstUnalignedVideoParse;
+typedef struct _GstUnalignedVideoParseClass GstUnalignedVideoParseClass;
+
+GType gst_unaligned_video_parse_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_UNALIGNED_VIDEO_PARSE_H___ */
diff --git a/gst/rawparse/gstvideoparse.c b/gst/rawparse/gstvideoparse.c
index 7b5e037..cf5c48e 100644
--- a/gst/rawparse/gstvideoparse.c
+++ b/gst/rawparse/gstvideoparse.c
@@ -23,28 +23,47 @@
  * SECTION:element-videoparse
  *
  * Converts a byte stream into video frames.
+ *
+ * <note>This element is deprecated. Use #GstRawVideoParse instead.</note>
  */
 
 #ifdef HAVE_CONFIG_H
 #  include "config.h"
 #endif
 
+/* FIXME 0.11: suppress warnings for deprecated API such as g_value_array stuff
+ * for now with newer GLib versions (>= 2.31.0) */
+#define GLIB_DISABLE_DEPRECATION_WARNINGS
+
+#include <gst/gst.h>
+#include <gst/audio/audio.h>
 #include "gstvideoparse.h"
+#include "gstrawvideoparse.h"
+
+
+static GstStaticPadTemplate static_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS_ANY);
+
+
+static GstStaticPadTemplate static_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("video/x-raw")
+    );
+
 
 static void gst_video_parse_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec);
 static void gst_video_parse_get_property (GObject * object, guint prop_id,
     GValue * value, GParamSpec * pspec);
 
-static GstCaps *gst_video_parse_get_caps (GstRawParse * rp);
-static void gst_video_parse_pre_push_buffer (GstRawParse * rp,
-    GstBuffer * buffer);
-static void gst_video_parse_decide_allocation (GstRawParse * rp,
-    GstQuery * query);
-
-static void gst_video_parse_update_info (GstVideoParse * vp);
-static gboolean gst_video_parse_deserialize_int_array (const gchar * str,
-    gint * dest, guint n_values);
+static GValueArray *gst_video_parse_int_valarray_from_string (const gchar *
+    str);
+static gchar *gst_video_parse_int_valarray_to_string (GValueArray * valarray);
 
 GST_DEBUG_CATEGORY_STATIC (gst_video_parse_debug);
 #define GST_CAT_DEFAULT gst_video_parse_debug
@@ -65,23 +84,17 @@
 };
 
 #define gst_video_parse_parent_class parent_class
-G_DEFINE_TYPE (GstVideoParse, gst_video_parse, GST_TYPE_RAW_PARSE);
+G_DEFINE_TYPE (GstVideoParse, gst_video_parse, GST_TYPE_BIN);
 
 static void
 gst_video_parse_class_init (GstVideoParseClass * klass)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
   GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
-  GstRawParseClass *rp_class = GST_RAW_PARSE_CLASS (klass);
-  GstCaps *caps;
 
   gobject_class->set_property = gst_video_parse_set_property;
   gobject_class->get_property = gst_video_parse_get_property;
 
-  rp_class->get_caps = gst_video_parse_get_caps;
-  rp_class->pre_push_buffer = gst_video_parse_pre_push_buffer;
-  rp_class->decide_allocation = gst_video_parse_decide_allocation;
-
   g_object_class_install_property (gobject_class, PROP_FORMAT,
       g_param_spec_enum ("format", "Format", "Format of images in raw stream",
           GST_TYPE_VIDEO_FORMAT, GST_VIDEO_FORMAT_I420,
@@ -123,15 +136,14 @@
 
   gst_element_class_set_static_metadata (gstelement_class, "Video Parse",
       "Filter/Video",
-      "Converts stream into video frames",
+      "Converts stream into video frames (deprecated: use rawvideoparse instead)",
       "David Schleef <ds@schleef.org>, "
       "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
 
-  caps = gst_caps_from_string ("video/x-raw; video/x-bayer");
-
-  gst_raw_parse_class_set_src_pad_template (rp_class, caps);
-  gst_raw_parse_class_set_multiple_frames_per_buffer (rp_class, FALSE);
-  gst_caps_unref (caps);
+  gst_element_class_add_pad_template (gstelement_class,
+      gst_static_pad_template_get (&static_sink_template));
+  gst_element_class_add_pad_template (gstelement_class,
+      gst_static_pad_template_get (&static_src_template));
 
   GST_DEBUG_CATEGORY_INIT (gst_video_parse_debug, "videoparse", 0,
       "videoparse element");
@@ -140,14 +152,28 @@
 static void
 gst_video_parse_init (GstVideoParse * vp)
 {
-  vp->width = 320;
-  vp->height = 240;
-  vp->format = GST_VIDEO_FORMAT_I420;
-  vp->par_n = 1;
-  vp->par_d = 1;
+  GstPad *inner_pad;
+  GstPad *ghostpad;
 
-  gst_raw_parse_set_fps (GST_RAW_PARSE (vp), 25, 1);
-  gst_video_parse_update_info (vp);
+  vp->rawvideoparse =
+      gst_element_factory_make ("rawvideoparse", "inner_rawvideoparse");
+  g_assert (vp->rawvideoparse != NULL);
+
+  gst_bin_add (GST_BIN (vp), vp->rawvideoparse);
+
+  inner_pad = gst_element_get_static_pad (vp->rawvideoparse, "sink");
+  ghostpad =
+      gst_ghost_pad_new_from_template ("sink", inner_pad,
+      gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS (vp), "sink"));
+  gst_element_add_pad (GST_ELEMENT (vp), ghostpad);
+  gst_object_unref (GST_OBJECT (inner_pad));
+
+  inner_pad = gst_element_get_static_pad (vp->rawvideoparse, "src");
+  ghostpad =
+      gst_ghost_pad_new_from_template ("src", inner_pad,
+      gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS (vp), "src"));
+  gst_element_add_pad (GST_ELEMENT (vp), ghostpad);
+  gst_object_unref (GST_OBJECT (inner_pad));
 }
 
 static void
@@ -156,62 +182,83 @@
 {
   GstVideoParse *vp = GST_VIDEO_PARSE (object);
 
-  g_return_if_fail (!gst_raw_parse_is_negotiated (GST_RAW_PARSE (vp)));
-
   switch (prop_id) {
     case PROP_FORMAT:
-      vp->format = g_value_get_enum (value);
+      g_object_set (G_OBJECT (vp->rawvideoparse), "format",
+          g_value_get_enum (value), NULL);
       break;
+
     case PROP_WIDTH:
-      vp->width = g_value_get_int (value);
+      g_object_set (G_OBJECT (vp->rawvideoparse), "width",
+          g_value_get_int (value), NULL);
       break;
+
     case PROP_HEIGHT:
-      vp->height = g_value_get_int (value);
+      g_object_set (G_OBJECT (vp->rawvideoparse), "height",
+          g_value_get_int (value), NULL);
       break;
+
     case PROP_FRAMERATE:
-      gst_raw_parse_set_fps (GST_RAW_PARSE (vp),
+      g_object_set (G_OBJECT (vp->rawvideoparse), "framerate",
           gst_value_get_fraction_numerator (value),
-          gst_value_get_fraction_denominator (value));
+          gst_value_get_fraction_denominator (value), NULL);
       break;
+
     case PROP_PAR:
-      vp->par_n = gst_value_get_fraction_numerator (value);
-      vp->par_d = gst_value_get_fraction_denominator (value);
+      g_object_set (G_OBJECT (vp->rawvideoparse), "pixel-aspect-ratio",
+          gst_value_get_fraction_numerator (value),
+          gst_value_get_fraction_denominator (value), NULL);
       break;
+
     case PROP_INTERLACED:
-      vp->interlaced = g_value_get_boolean (value);
+      g_object_set (G_OBJECT (vp->rawvideoparse), "interlaced",
+          g_value_get_boolean (value), NULL);
       break;
+
     case PROP_TOP_FIELD_FIRST:
-      vp->top_field_first = g_value_get_boolean (value);
+      g_object_set (G_OBJECT (vp->rawvideoparse), "top-field-first",
+          g_value_get_boolean (value), NULL);
       break;
-    case PROP_STRIDES:
-      if (gst_video_parse_deserialize_int_array (g_value_get_string (value),
-              vp->stride, GST_VIDEO_MAX_PLANES)) {
-        vp->stride_set = TRUE;
+
+    case PROP_STRIDES:{
+      GValueArray *valarray =
+          gst_video_parse_int_valarray_from_string (g_value_get_string (value));
+
+      if (valarray != NULL) {
+        g_object_set (G_OBJECT (vp->rawvideoparse), "plane-strides",
+            valarray, NULL);
+        g_value_array_free (valarray);
       } else {
         GST_WARNING_OBJECT (vp, "failed to deserialize given strides");
-        vp->stride_set = FALSE;
       }
 
       break;
-    case PROP_OFFSETS:
-      if (gst_video_parse_deserialize_int_array (g_value_get_string (value),
-              vp->offset, GST_VIDEO_MAX_PLANES)) {
-        vp->offset_set = TRUE;
+    }
+
+    case PROP_OFFSETS:{
+      GValueArray *valarray =
+          gst_video_parse_int_valarray_from_string (g_value_get_string (value));
+
+      if (valarray != NULL) {
+        g_object_set (G_OBJECT (vp->rawvideoparse), "plane-offsets",
+            valarray, NULL);
+        g_value_array_free (valarray);
       } else {
-        GST_WARNING_OBJECT (vp, "failed to deserialized given offsets");
-        vp->offset_set = FALSE;
+        GST_WARNING_OBJECT (vp, "failed to deserialize given offsets");
       }
 
       break;
+    }
+
     case PROP_FRAMESIZE:
-      vp->framesize = g_value_get_uint (value);
+      g_object_set (G_OBJECT (vp->rawvideoparse), "frame-stride",
+          g_value_get_uint (value), NULL);
       break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
   }
-
-  gst_video_parse_update_info (vp);
 }
 
 static void
@@ -221,377 +268,155 @@
   GstVideoParse *vp = GST_VIDEO_PARSE (object);
 
   switch (prop_id) {
-    case PROP_FORMAT:
-      g_value_set_enum (value, vp->format);
+    case PROP_FORMAT:{
+      GstVideoFormat format;
+      g_object_get (G_OBJECT (vp->rawvideoparse), "format", &format, NULL);
+      g_value_set_enum (value, format);
       break;
-    case PROP_WIDTH:
-      g_value_set_int (value, vp->width);
+    }
+
+    case PROP_WIDTH:{
+      gint width;
+      g_object_get (G_OBJECT (vp->rawvideoparse), "width", &width, NULL);
+      g_value_set_int (value, width);
       break;
-    case PROP_HEIGHT:
-      g_value_set_int (value, vp->height);
+    }
+
+    case PROP_HEIGHT:{
+      gint height;
+      g_object_get (G_OBJECT (vp->rawvideoparse), "height", &height, NULL);
+      g_value_set_int (value, height);
       break;
+    }
+
     case PROP_FRAMERATE:{
       gint fps_n, fps_d;
-
-      gst_raw_parse_get_fps (GST_RAW_PARSE (vp), &fps_n, &fps_d);
+      g_object_get (G_OBJECT (vp->rawvideoparse), "framerate", &fps_n, &fps_d,
+          NULL);
       gst_value_set_fraction (value, fps_n, fps_d);
       break;
     }
-    case PROP_PAR:
-      gst_value_set_fraction (value, vp->par_n, vp->par_d);
-      break;
-    case PROP_INTERLACED:
-      g_value_set_boolean (value, vp->interlaced);
-      break;
-    case PROP_TOP_FIELD_FIRST:
-      g_value_set_boolean (value, vp->top_field_first);
-      break;
-    case PROP_STRIDES:
-    {
-      gchar *tmp;
 
-      tmp = g_strdup_printf ("%d,%d,%d,%d", vp->info.stride[0],
-          vp->info.stride[1], vp->info.stride[2], vp->info.stride[3]);
-      g_value_set_string (value, tmp);
-      g_free (tmp);
+    case PROP_PAR:{
+      gint par_n, par_d;
+      g_object_get (G_OBJECT (vp->rawvideoparse), "pixel-aspect-ratio", &par_n,
+          &par_d, NULL);
+      gst_value_set_fraction (value, par_n, par_d);
       break;
     }
-    case PROP_OFFSETS:
-    {
-      gchar *tmp;
 
-      tmp = g_strdup_printf ("%" G_GSIZE_FORMAT ",%" G_GSIZE_FORMAT
-          ",%" G_GSIZE_FORMAT ",%" G_GSIZE_FORMAT, vp->info.offset[0],
-          vp->info.offset[1], vp->info.offset[2], vp->info.offset[3]);
-      g_value_set_string (value, tmp);
-      g_free (tmp);
+    case PROP_INTERLACED:{
+      gboolean interlaced;
+      g_object_get (G_OBJECT (vp->rawvideoparse), "interlaced", &interlaced,
+          NULL);
+      g_value_set_boolean (value, interlaced);
       break;
     }
-    case PROP_FRAMESIZE:
-      g_value_set_uint (value, vp->info.size);
+
+    case PROP_TOP_FIELD_FIRST:{
+      gboolean top_field_first;
+      g_object_get (G_OBJECT (vp->rawvideoparse), "top-field-first",
+          &top_field_first, NULL);
+      g_value_set_boolean (value, top_field_first);
       break;
+    }
+
+    case PROP_STRIDES:{
+      GValueArray *array;
+      g_object_get (G_OBJECT (vp->rawvideoparse), "plane-strides", &array,
+          NULL);
+      g_value_take_string (value,
+          gst_video_parse_int_valarray_to_string (array));
+      break;
+    }
+
+    case PROP_OFFSETS:{
+      GValueArray *array;
+      g_object_get (G_OBJECT (vp->rawvideoparse), "plane-offsets", &array,
+          NULL);
+      g_value_take_string (value,
+          gst_video_parse_int_valarray_to_string (array));
+      break;
+    }
+
+    case PROP_FRAMESIZE:{
+      guint frame_stride;
+      g_object_get (G_OBJECT (vp->rawvideoparse), "frame-stride", &frame_stride,
+          NULL);
+      g_value_set_uint (value, frame_stride);
+      break;
+    }
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
   }
 }
 
-static gboolean
-gst_video_parse_deserialize_int_array (const gchar * str, gint * dest,
-    guint n_values)
+static GValueArray *
+gst_video_parse_int_valarray_from_string (const gchar * str)
 {
   gchar **strv;
   guint length;
   guint i;
+  GValueArray *valarray;
+  GValue gvalue = G_VALUE_INIT;
 
-  strv = g_strsplit (str, ",", n_values);
+  if (str == NULL)
+    return NULL;
+
+  strv = g_strsplit (str, ",", GST_VIDEO_MAX_PLANES);
   if (strv == NULL)
-    return FALSE;
+    return NULL;
 
   length = g_strv_length (strv);
+  valarray = g_value_array_new (length);
+  g_value_init (&gvalue, G_TYPE_UINT);
 
   for (i = 0; i < length; i++) {
     gint64 val;
 
     val = g_ascii_strtoll (strv[i], NULL, 10);
     if (val < G_MININT || val > G_MAXINT) {
-      g_strfreev (strv);
-      return FALSE;
+      goto error;
     }
 
-    dest[i] = val;
+    g_value_set_uint (&gvalue, val);
+    g_value_array_insert (valarray, i, &gvalue);
   }
 
-  /* fill remaining values with 0 */
-  for (i = length; i < n_values; i++)
-    dest[i] = 0;
-
+finish:
   g_strfreev (strv);
+  return valarray;
 
-  return TRUE;
+error:
+  g_value_array_free (valarray);
+  valarray = NULL;
+  goto finish;
 }
 
-static inline gsize
-gst_video_parse_get_plane_size (GstVideoInfo * info, guint plane)
+static gchar *
+gst_video_parse_int_valarray_to_string (GValueArray * valarray)
 {
-  gsize size = 0;
-
-  if (GST_VIDEO_FORMAT_INFO_IS_TILED (info->finfo)) {
-    gint tile_width, tile_height, x_tiles, y_tiles;
-
-    tile_width = 1 << GST_VIDEO_FORMAT_INFO_TILE_WS (info->finfo);
-    tile_height = 1 << GST_VIDEO_FORMAT_INFO_TILE_HS (info->finfo);
-    x_tiles = GST_VIDEO_TILE_X_TILES (info->stride[plane]);
-    y_tiles = GST_VIDEO_TILE_Y_TILES (info->stride[plane]);
-
-    /* plane size is the size of one tile multiplied by the number of tiles */
-    size = tile_width * tile_height * x_tiles * y_tiles;
-  } else {
-    size = info->stride[plane] *
-        GST_VIDEO_FORMAT_INFO_SCALE_HEIGHT (info->finfo, plane, info->height);
-  }
-
-  return size;
-}
-
-
-static gboolean
-gst_video_parse_update_stride (GstVideoParse * vp)
-{
-  GstVideoInfo *info = &vp->info;
+  /* holds a 64-bit number as string, which can have max. 20 digits
+   * (with extra char for nullbyte) */
+  gchar stride_str[21];
+  gchar *str = NULL;
   guint i;
 
-  /* 1. check that provided strides are greater than the default ones */
-  for (i = 0; i < GST_VIDEO_INFO_N_PLANES (info); i++) {
-    if (GST_VIDEO_FORMAT_INFO_IS_TILED (info->finfo)) {
-      /* for tiled format, make sure there is more tiles than default */
-      gint default_x_tiles, default_y_tiles, x_tiles, y_tiles;
+  for (i = 0; i < valarray->n_values; i++) {
+    GValue *gvalue = g_value_array_get_nth (valarray, i);
+    guint val = g_value_get_uint (gvalue);
+    g_snprintf (stride_str, sizeof (stride_str), "%u", val);
 
-      x_tiles = GST_VIDEO_TILE_X_TILES (vp->stride[i]);
-      y_tiles = GST_VIDEO_TILE_Y_TILES (vp->stride[i]);
-      default_x_tiles = GST_VIDEO_TILE_X_TILES (info->stride[i]);
-      default_y_tiles = GST_VIDEO_TILE_Y_TILES (info->stride[i]);
-
-      if (x_tiles < default_x_tiles) {
-        GST_WARNING_OBJECT (vp,
-            "x_tiles for plane %u is too small: got %d, min %d", i, x_tiles,
-            default_x_tiles);
-        return FALSE;
-      }
-
-      if (y_tiles < default_y_tiles) {
-        GST_WARNING_OBJECT (vp,
-            "y_tiles for plane %u is too small: got %d, min %d", i, y_tiles,
-            default_y_tiles);
-        return FALSE;
-      }
+    if (str == NULL) {
+      str = g_strdup (stride_str);
     } else {
-      if (vp->stride[i] < info->stride[i]) {
-        GST_WARNING_OBJECT (vp,
-            "stride for plane %u is too small: got %d, min %d", i,
-            vp->stride[i], info->stride[i]);
-        return FALSE;
-      }
+      gchar *new_str = g_strdup_printf ("%s,%s", str, stride_str);
+      g_free (str);
+      str = new_str;
     }
   }
 
-  /* 2. update stride and plane offsets */
-  for (i = 0; i < GST_VIDEO_INFO_N_PLANES (info); i++) {
-    if (vp->stride[i] != info->stride[i]) {
-      info->stride[i] = vp->stride[i];
-
-      if (i > 0) {
-        /* update offset to reflect stride change for plane > 0 */
-        info->offset[i] = info->offset[i - 1] +
-            gst_video_parse_get_plane_size (info, i - 1);
-      }
-
-      vp->need_videometa = TRUE;
-    }
-  }
-
-  return TRUE;
-}
-
-static gboolean
-gst_video_parse_update_offset (GstVideoParse * vp)
-{
-  GstVideoInfo *info = &vp->info;
-  guint i;
-
-  /* 1. check that provided offsets are greaters than the default ones and are
-   * consistent with plane size */
-  for (i = 0; i < GST_VIDEO_INFO_N_PLANES (info); i++) {
-    gsize min_offset = info->offset[i];
-
-    if (i > 0)
-      min_offset = MAX (min_offset,
-          vp->offset[i - 1] + gst_video_parse_get_plane_size (info, i - 1));
-
-    if (vp->offset[i] < min_offset) {
-      GST_WARNING_OBJECT (vp,
-          "offset for plane %u is too small: got %d, min %" G_GSIZE_FORMAT, i,
-          vp->offset[i], min_offset);
-      return FALSE;
-    }
-  }
-
-  /* 2. update offsets */
-  for (i = 0; i < GST_VIDEO_INFO_N_PLANES (info); i++) {
-    if (vp->offset[i] != info->offset[i]) {
-      info->offset[i] = vp->offset[i];
-      vp->need_videometa = TRUE;
-    }
-  }
-
-  return TRUE;
-}
-
-static void
-gst_video_parse_update_info (GstVideoParse * vp)
-{
-  GstVideoInfo *info = &vp->info;
-  gint fps_n, fps_d;
-  gint framesize;
-  guint i;
-  gboolean update_size = FALSE;
-
-  gst_raw_parse_get_fps (GST_RAW_PARSE (vp), &fps_n, &fps_d);
-
-  gst_video_info_init (info);
-  gst_video_info_set_format (info, vp->format, vp->width, vp->height);
-  info->fps_n = fps_n;
-  info->fps_d = fps_d;
-  info->par_n = vp->par_n;
-  info->par_d = vp->par_d;
-  info->interlace_mode = vp->interlaced ?
-      GST_VIDEO_INTERLACE_MODE_INTERLEAVED :
-      GST_VIDEO_INTERLACE_MODE_PROGRESSIVE;
-
-  vp->need_videometa = FALSE;
-
-  if (vp->stride_set) {
-    if (gst_video_parse_update_stride (vp))
-      update_size = TRUE;
-    else
-      GST_WARNING_OBJECT (vp, "invalid strides set, use default ones");
-  }
-
-  if (vp->offset_set) {
-    if (gst_video_parse_update_offset (vp))
-      update_size = TRUE;
-    else
-      GST_WARNING_OBJECT (vp, "invalid offsets set, use default ones");
-  }
-
-  if (update_size) {
-    framesize = 0;
-
-    for (i = 0; i < GST_VIDEO_INFO_N_PLANES (info); i++) {
-      gint planesize = info->offset[i];
-      planesize += gst_video_parse_get_plane_size (info, i);
-
-      if (planesize > framesize)
-        framesize = planesize;
-    }
-
-    info->size = framesize;
-  }
-
-  if (vp->framesize) {
-    /* user requires a specific framesize, just make sure it's bigger than
-     * the current one */
-
-    if (vp->framesize > vp->info.size)
-      vp->info.size = vp->framesize;
-    else
-      GST_WARNING_OBJECT (vp, "invalid framesize set: got %u, min: %"
-          G_GSIZE_FORMAT, vp->framesize, vp->info.size);
-  }
-
-  GST_DEBUG_OBJECT (vp, "video info: %ux%u, format %s, size %" G_GSIZE_FORMAT
-      ", stride {%d,%d,%d,%d}, offset {%" G_GSIZE_FORMAT ",%" G_GSIZE_FORMAT
-      ",%" G_GSIZE_FORMAT ",%" G_GSIZE_FORMAT "}",
-      GST_VIDEO_INFO_WIDTH (info), GST_VIDEO_INFO_HEIGHT (info),
-      GST_VIDEO_INFO_NAME (info), GST_VIDEO_INFO_SIZE (info),
-      info->stride[0], info->stride[1], info->stride[2], info->stride[3],
-      info->offset[0], info->offset[1], info->offset[2], info->offset[3]);
-
-  /* update base class framesize */
-  framesize = GST_VIDEO_INFO_SIZE (info);
-  gst_raw_parse_set_framesize (GST_RAW_PARSE (vp), framesize);
-}
-
-static GstCaps *
-gst_video_parse_get_caps (GstRawParse * rp)
-{
-  GstVideoParse *vp = GST_VIDEO_PARSE (rp);
-
-  return gst_video_info_to_caps (&vp->info);
-}
-
-static gboolean
-gst_video_parse_copy_frame (GstVideoParse * vp, GstBuffer * dest,
-    GstVideoInfo * dest_info, GstBuffer * src, GstVideoInfo * src_info)
-{
-  GstVideoFrame src_frame;
-  GstVideoFrame dest_frame;
-  gboolean ret;
-
-  if (!gst_video_frame_map (&src_frame, src_info, src, GST_MAP_READ)) {
-    GST_ERROR_OBJECT (vp, "failed to map src frame");
-    return FALSE;
-  }
-
-  if (!gst_video_frame_map (&dest_frame, dest_info, dest, GST_MAP_WRITE)) {
-    GST_ERROR_OBJECT (vp, "failed to map dest frame");
-    gst_video_frame_unmap (&src_frame);
-    return FALSE;
-  }
-
-  ret = gst_video_frame_copy (&dest_frame, &src_frame);
-
-  gst_video_frame_unmap (&src_frame);
-  gst_video_frame_unmap (&dest_frame);
-
-  return ret;
-}
-
-static void
-gst_video_parse_pre_push_buffer (GstRawParse * rp, GstBuffer * buffer)
-{
-  GstVideoParse *vp = GST_VIDEO_PARSE (rp);
-
-  if (vp->do_copy) {
-    GstVideoInfo info;
-    GstBuffer *outbuf;
-
-    gst_video_info_init (&info);
-    gst_video_info_set_format (&info, vp->format, vp->width, vp->height);
-
-    GST_DEBUG_OBJECT (vp, "copying frame to remove padding");
-
-    outbuf = gst_buffer_new_allocate (NULL, GST_VIDEO_INFO_SIZE (&info), NULL);
-
-    if (!gst_video_parse_copy_frame (vp, outbuf, &info, buffer, &vp->info))
-      GST_WARNING_OBJECT (vp, "failed to copy frame");
-
-    gst_buffer_replace_all_memory (buffer, gst_buffer_get_all_memory (outbuf));
-    gst_buffer_unref (outbuf);
-  } else {
-    GstVideoInfo *info = &vp->info;
-    GstVideoFrameFlags flags = GST_VIDEO_FRAME_FLAG_NONE;
-
-    if (vp->interlaced && vp->top_field_first)
-      flags = GST_VIDEO_FRAME_FLAG_TFF;
-
-    gst_buffer_add_video_meta_full (buffer, flags, GST_VIDEO_INFO_FORMAT (info),
-        GST_VIDEO_INFO_WIDTH (info), GST_VIDEO_INFO_HEIGHT (info),
-        GST_VIDEO_INFO_N_PLANES (info), info->offset, info->stride);
-  }
-
-  if (vp->interlaced) {
-    if (vp->top_field_first) {
-      GST_BUFFER_FLAG_SET (buffer, GST_VIDEO_BUFFER_FLAG_TFF);
-    } else {
-      GST_BUFFER_FLAG_UNSET (buffer, GST_VIDEO_BUFFER_FLAG_TFF);
-    }
-  }
-}
-
-static void
-gst_video_parse_decide_allocation (GstRawParse * rp, GstQuery * query)
-{
-  GstVideoParse *vp = GST_VIDEO_PARSE (rp);
-  gboolean has_videometa;
-
-  has_videometa = gst_query_find_allocation_meta (query,
-      GST_VIDEO_META_API_TYPE, NULL);
-
-  /* no need to copy if downstream supports videometa or if we don't need
-   * them */
-  if (has_videometa || !vp->need_videometa)
-    return;
-
-  vp->do_copy = TRUE;
+  return str;
 }
diff --git a/gst/rawparse/gstvideoparse.h b/gst/rawparse/gstvideoparse.h
index dd540c5..c5d8d64 100644
--- a/gst/rawparse/gstvideoparse.h
+++ b/gst/rawparse/gstvideoparse.h
@@ -24,11 +24,6 @@
 #define __GST_VIDEO_PARSE_H__
 
 #include <gst/gst.h>
-#include <gst/base/gstbasetransform.h>
-#include <gst/base/gstadapter.h>
-#include <gst/video/video.h>
-
-#include "gstrawparse.h"
 
 #define GST_TYPE_VIDEO_PARSE \
   (gst_video_parse_get_type())
@@ -46,29 +41,13 @@
 
 struct _GstVideoParse
 {
-  GstRawParse parent;
-
-  GstVideoInfo info;
-  gboolean do_copy;
-  gboolean need_videometa;
-  gboolean stride_set;
-  gboolean offset_set;
-
-  /* properties */
-  GstVideoFormat format;
-  gint width;
-  gint height;
-  gint par_n, par_d;
-  gboolean interlaced;
-  gboolean top_field_first;
-  gint stride[GST_VIDEO_MAX_PLANES];
-  gint offset[GST_VIDEO_MAX_PLANES];
-  guint framesize;
+  GstBin parent;
+  GstElement *rawvideoparse;
 };
 
 struct _GstVideoParseClass
 {
-  GstRawParseClass parent_class;
+  GstBinClass parent_class;
 };
 
 
diff --git a/gst/rawparse/plugin.c b/gst/rawparse/plugin.c
index dc860e1..72b3e49 100644
--- a/gst/rawparse/plugin.c
+++ b/gst/rawparse/plugin.c
@@ -3,6 +3,10 @@
 #endif
 
 #include <gst/gst.h>
+#include "gstrawaudioparse.h"
+#include "gstrawvideoparse.h"
+#include "gstunalignedaudioparse.h"
+#include "gstunalignedvideoparse.h"
 #include "gstaudioparse.h"
 #include "gstvideoparse.h"
 
@@ -15,6 +19,14 @@
       gst_video_parse_get_type ());
   ret &= gst_element_register (plugin, "audioparse", GST_RANK_NONE,
       gst_audio_parse_get_type ());
+  ret &= gst_element_register (plugin, "unalignedaudioparse", GST_RANK_MARGINAL,
+      gst_unaligned_audio_parse_get_type ());
+  ret &= gst_element_register (plugin, "unalignedvideoparse", GST_RANK_MARGINAL,
+      gst_unaligned_video_parse_get_type ());
+  ret &= gst_element_register (plugin, "rawaudioparse", GST_RANK_NONE,
+      gst_raw_audio_parse_get_type ());
+  ret &= gst_element_register (plugin, "rawvideoparse", GST_RANK_NONE,
+      gst_raw_video_parse_get_type ());
 
   return ret;
 }
diff --git a/sys/applemedia-nonpublic/bufferfactory.h b/gst/rawparse/unalignedaudio.h
similarity index 61%
copy from sys/applemedia-nonpublic/bufferfactory.h
copy to gst/rawparse/unalignedaudio.h
index 132b953..15d4995 100644
--- a/sys/applemedia-nonpublic/bufferfactory.h
+++ b/gst/rawparse/unalignedaudio.h
@@ -1,5 +1,7 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.com>
+/* GStreamer
+ * Copyright (C) 2016 Carlos Rafael Giani <dv@pseudoterminal.org>
+ *
+ * unalignedaudio.h:
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -17,18 +19,17 @@
  * Boston, MA 02110-1301, USA.
  */
 
-#import <Foundation/Foundation.h>
+#ifndef __GST_UNALIGNED_AUDIO_H__
+#define __GST_UNALIGNED_AUDIO_H__
 
 #include <gst/gst.h>
+#include <gst/audio/audio.h>
 
-@interface GstAMBufferFactory : NSObject {
-  gpointer coreMediaCtx;
-}
+#define GST_UNALIGNED_RAW_AUDIO_CAPS \
+  "audio/x-unaligned-raw" \
+  ", format = (string) " GST_AUDIO_FORMATS_ALL \
+  ", rate = (int) [ 1, MAX ]" \
+  ", channels = (int) [ 1, MAX ]" \
+  ", layout = (string) { interleaved, non-interleaved }"
 
-- (id)initWithError:(GError **)error;
-- (void)finalize;
-
-- (GstBuffer *)createGstBufferForCoreVideoBuffer:(CFTypeRef)cvbuf;
-- (GstBuffer *)createGstBufferForSampleBuffer:(CFTypeRef)sbuf;
-
-@end
+#endif /* __GST_UNALIGNED_AUDIO_H__ */
diff --git a/sys/applemedia-nonpublic/bufferfactory.h b/gst/rawparse/unalignedvideo.h
similarity index 61%
copy from sys/applemedia-nonpublic/bufferfactory.h
copy to gst/rawparse/unalignedvideo.h
index 132b953..a5c1005 100644
--- a/sys/applemedia-nonpublic/bufferfactory.h
+++ b/gst/rawparse/unalignedvideo.h
@@ -1,5 +1,7 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.com>
+/* GStreamer
+ * Copyright (C) 2016 Carlos Rafael Giani <dv@pseudoterminal.org>
+ *
+ * unalignedvideo.h:
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -17,18 +19,17 @@
  * Boston, MA 02110-1301, USA.
  */
 
-#import <Foundation/Foundation.h>
+#ifndef __GST_UNALIGNED_VIDEO_H__
+#define __GST_UNALIGNED_VIDEO_H__
 
 #include <gst/gst.h>
+#include <gst/video/video.h>
 
-@interface GstAMBufferFactory : NSObject {
-  gpointer coreMediaCtx;
-}
+#define GST_UNALIGNED_RAW_VIDEO_CAPS \
+  "video/x-unaligned-raw" \
+  ", format = (string) " GST_VIDEO_FORMATS_ALL \
+  ", width = " GST_VIDEO_SIZE_RANGE \
+  ", height = " GST_VIDEO_SIZE_RANGE \
+  ", framerate = " GST_VIDEO_FPS_RANGE
 
-- (id)initWithError:(GError **)error;
-- (void)finalize;
-
-- (GstBuffer *)createGstBufferForCoreVideoBuffer:(CFTypeRef)cvbuf;
-- (GstBuffer *)createGstBufferForSampleBuffer:(CFTypeRef)sbuf;
-
-@end
+#endif /* __GST_UNALIGNED_VIDEO_H__ */
diff --git a/gst/removesilence/Makefile.in b/gst/removesilence/Makefile.in
index 8ea401d..316ae84 100644
--- a/gst/removesilence/Makefile.in
+++ b/gst/removesilence/Makefile.in
@@ -304,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/removesilence/gstremovesilence.c b/gst/removesilence/gstremovesilence.c
index 7707817..98456ff 100644
--- a/gst/removesilence/gstremovesilence.c
+++ b/gst/removesilence/gstremovesilence.c
@@ -128,10 +128,8 @@
       "Tiago Katcipis <tiagokatcipis@gmail.com>\n \
        Paulo Pizarro  <paulo.pizarro@gmail.com>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_template);
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_template);
 
   GST_BASE_TRANSFORM_CLASS (klass)->transform_ip =
       GST_DEBUG_FUNCPTR (gst_remove_silence_transform_ip);
diff --git a/gst/sdi/Makefile.in b/gst/sdi/Makefile.in
index 025e857..bfbf9d7 100644
--- a/gst/sdi/Makefile.in
+++ b/gst/sdi/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/sdi/gstsdidemux.c b/gst/sdi/gstsdidemux.c
index 9de97a9..70184f4 100644
--- a/gst/sdi/gstsdidemux.c
+++ b/gst/sdi/gstsdidemux.c
@@ -105,10 +105,10 @@
 {
   GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_sdi_demux_src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_sdi_demux_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_sdi_demux_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_sdi_demux_sink_template);
 
   gst_element_class_set_static_metadata (element_class,
       "SDI Demuxer",
diff --git a/gst/sdi/gstsdimux.c b/gst/sdi/gstsdimux.c
index b9f4159..7734bad 100644
--- a/gst/sdi/gstsdimux.c
+++ b/gst/sdi/gstsdimux.c
@@ -108,10 +108,10 @@
 {
   GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_sdi_mux_src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_sdi_mux_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_sdi_mux_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_sdi_mux_sink_template);
 
   gst_element_class_set_static_metadata (element_class, "SDI Muxer",
       "Muxer",
diff --git a/gst/sdp/Makefile.am b/gst/sdp/Makefile.am
index 395b857..ce14d50 100644
--- a/gst/sdp/Makefile.am
+++ b/gst/sdp/Makefile.am
@@ -1,12 +1,13 @@
 plugin_LTLIBRARIES = libgstsdpelem.la
 
-libgstsdpelem_la_SOURCES = gstsdpelem.c gstsdpdemux.h gstsdpdemux.c
+libgstsdpelem_la_SOURCES = gstsdpelem.c gstsdpsrc.c gstsdpdemux.c
 
 libgstsdpelem_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(GIO_CFLAGS)
 libgstsdpelem_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GIO_LIBS) \
 		       -lgstrtp-@GST_API_VERSION@ -lgstsdp-@GST_API_VERSION@ \
+		       -lgstapp-@GST_API_VERSION@ \
 		       $(GST_LIBS) $(WINSOCK2_LIBS)
 libgstsdpelem_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
 libgstsdpelem_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
 
-noinst_HEADERS = gstsdpdemux.h
+noinst_HEADERS = gstsdpdemux.h gstsdpsrc.h
diff --git a/gst/sdp/Makefile.in b/gst/sdp/Makefile.in
index 087a85b..e908697 100644
--- a/gst/sdp/Makefile.in
+++ b/gst/sdp/Makefile.in
@@ -167,7 +167,7 @@
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
 am_libgstsdpelem_la_OBJECTS = libgstsdpelem_la-gstsdpelem.lo \
-	libgstsdpelem_la-gstsdpdemux.lo
+	libgstsdpelem_la-gstsdpsrc.lo libgstsdpelem_la-gstsdpdemux.lo
 libgstsdpelem_la_OBJECTS = $(am_libgstsdpelem_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -304,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -780,15 +791,16 @@
 top_srcdir = @top_srcdir@
 wayland_scanner = @wayland_scanner@
 plugin_LTLIBRARIES = libgstsdpelem.la
-libgstsdpelem_la_SOURCES = gstsdpelem.c gstsdpdemux.h gstsdpdemux.c
+libgstsdpelem_la_SOURCES = gstsdpelem.c gstsdpsrc.c gstsdpdemux.c
 libgstsdpelem_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(GIO_CFLAGS)
 libgstsdpelem_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GIO_LIBS) \
 		       -lgstrtp-@GST_API_VERSION@ -lgstsdp-@GST_API_VERSION@ \
+		       -lgstapp-@GST_API_VERSION@ \
 		       $(GST_LIBS) $(WINSOCK2_LIBS)
 
 libgstsdpelem_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
 libgstsdpelem_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-noinst_HEADERS = gstsdpdemux.h
+noinst_HEADERS = gstsdpdemux.h gstsdpsrc.h
 all: all-am
 
 .SUFFIXES:
@@ -869,6 +881,7 @@
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstsdpelem_la-gstsdpdemux.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstsdpelem_la-gstsdpelem.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstsdpelem_la-gstsdpsrc.Plo@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -901,6 +914,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsdpelem_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsdpelem_la_CFLAGS) $(CFLAGS) -c -o libgstsdpelem_la-gstsdpelem.lo `test -f 'gstsdpelem.c' || echo '$(srcdir)/'`gstsdpelem.c
 
+libgstsdpelem_la-gstsdpsrc.lo: gstsdpsrc.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsdpelem_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsdpelem_la_CFLAGS) $(CFLAGS) -MT libgstsdpelem_la-gstsdpsrc.lo -MD -MP -MF $(DEPDIR)/libgstsdpelem_la-gstsdpsrc.Tpo -c -o libgstsdpelem_la-gstsdpsrc.lo `test -f 'gstsdpsrc.c' || echo '$(srcdir)/'`gstsdpsrc.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstsdpelem_la-gstsdpsrc.Tpo $(DEPDIR)/libgstsdpelem_la-gstsdpsrc.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstsdpsrc.c' object='libgstsdpelem_la-gstsdpsrc.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsdpelem_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsdpelem_la_CFLAGS) $(CFLAGS) -c -o libgstsdpelem_la-gstsdpsrc.lo `test -f 'gstsdpsrc.c' || echo '$(srcdir)/'`gstsdpsrc.c
+
 libgstsdpelem_la-gstsdpdemux.lo: gstsdpdemux.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsdpelem_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsdpelem_la_CFLAGS) $(CFLAGS) -MT libgstsdpelem_la-gstsdpdemux.lo -MD -MP -MF $(DEPDIR)/libgstsdpelem_la-gstsdpdemux.Tpo -c -o libgstsdpelem_la-gstsdpdemux.lo `test -f 'gstsdpdemux.c' || echo '$(srcdir)/'`gstsdpdemux.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstsdpelem_la-gstsdpdemux.Tpo $(DEPDIR)/libgstsdpelem_la-gstsdpdemux.Plo
diff --git a/gst/sdp/gstsdpdemux.c b/gst/sdp/gstsdpdemux.c
index ae3bbe4..1f80fcc 100644
--- a/gst/sdp/gstsdpdemux.c
+++ b/gst/sdp/gstsdpdemux.c
@@ -150,10 +150,8 @@
           DEFAULT_REDIRECT,
           G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sinktemplate));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&rtptemplate));
+  gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate);
+  gst_element_class_add_static_pad_template (gstelement_class, &rtptemplate);
 
   gst_element_class_set_static_metadata (gstelement_class, "SDP session setup",
       "Codec/Demuxer/Network/RTP",
diff --git a/gst/sdp/gstsdpelem.c b/gst/sdp/gstsdpelem.c
index 8ab0d11..d0f0333 100644
--- a/gst/sdp/gstsdpelem.c
+++ b/gst/sdp/gstsdpelem.c
@@ -22,6 +22,7 @@
 #endif
 
 #include "gstsdpdemux.h"
+#include "gstsdpsrc.h"
 
 static gboolean
 plugin_init (GstPlugin * plugin)
@@ -29,6 +30,8 @@
   if (!gst_element_register (plugin, "sdpdemux", GST_RANK_NONE,
           GST_TYPE_SDP_DEMUX))
     return FALSE;
+  if (!gst_element_register (plugin, "sdpsrc", GST_RANK_NONE, GST_TYPE_SDP_SRC))
+    return FALSE;
 
   return TRUE;
 }
diff --git a/gst/sdp/gstsdpsrc.c b/gst/sdp/gstsdpsrc.c
new file mode 100644
index 0000000..ea9a5bc
--- /dev/null
+++ b/gst/sdp/gstsdpsrc.c
@@ -0,0 +1,332 @@
+/*
+ * Copyright (C) 2016 Sebastian Dröge <sebastian@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gstsdpsrc.h"
+#include <gst/app/app.h>
+#include <string.h>
+
+GST_DEBUG_CATEGORY_STATIC (sdp_src_debug);
+#define GST_CAT_DEFAULT sdp_src_debug
+
+static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("stream_%u",
+    GST_PAD_SRC,
+    GST_PAD_SOMETIMES,
+    GST_STATIC_CAPS ("application/x-rtp"));
+
+enum
+{
+  PROP_0,
+  PROP_LOCATION,
+  PROP_SDP
+};
+
+static void gst_sdp_src_handler_init (gpointer g_iface, gpointer iface_data);
+
+#define gst_sdp_src_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstSdpSrc, gst_sdp_src, GST_TYPE_BIN,
+    G_IMPLEMENT_INTERFACE (GST_TYPE_URI_HANDLER, gst_sdp_src_handler_init));
+
+static void
+gst_sdp_src_finalize (GObject * object)
+{
+  GstSdpSrc *self = GST_SDP_SRC_CAST (object);
+
+  if (self->sdp_buffer)
+    gst_buffer_unref (self->sdp_buffer);
+  g_free (self->location);
+  g_free (self->sdp);
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+gst_sdp_src_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstSdpSrc *self = GST_SDP_SRC_CAST (object);
+
+  switch (prop_id) {
+    case PROP_LOCATION:
+      g_value_set_string (value, self->location);
+      break;
+    case PROP_SDP:
+      g_value_set_string (value, self->sdp);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_sdp_src_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstSdpSrc *self = GST_SDP_SRC_CAST (object);
+
+  switch (prop_id) {
+    case PROP_LOCATION:
+      g_free (self->location);
+      self->location = g_value_dup_string (value);
+      break;
+    case PROP_SDP:
+      g_free (self->sdp);
+      self->sdp = g_value_dup_string (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+pad_added_cb (GstElement * element, GstPad * pad, gpointer user_data)
+{
+  GstSdpSrc *self = GST_SDP_SRC_CAST (user_data);
+  GstPad *ghost;
+
+  ghost =
+      gst_ghost_pad_new_from_template (GST_PAD_NAME (pad), pad,
+      gst_static_pad_template_get (&src_template));
+  gst_pad_set_active (ghost, TRUE);
+  gst_element_add_pad (GST_ELEMENT_CAST (self), ghost);
+}
+
+static void
+pad_removed_cb (GstElement * element, GstPad * pad, gpointer user_data)
+{
+  GstSdpSrc *self = GST_SDP_SRC_CAST (user_data);
+  GstPad *peer;
+
+  peer = gst_pad_get_peer (pad);
+  if (peer) {
+    GstPad *ghost =
+        GST_PAD_CAST (gst_proxy_pad_get_internal (GST_PROXY_PAD (peer)));
+
+    if (ghost) {
+      gst_ghost_pad_set_target (GST_GHOST_PAD_CAST (ghost), NULL);
+      gst_element_remove_pad (GST_ELEMENT_CAST (self), ghost);
+      gst_object_unref (ghost);
+    }
+
+    gst_object_unref (peer);
+  }
+}
+
+static void
+no_more_pads_cb (GstElement * element, gpointer user_data)
+{
+  gst_element_no_more_pads (GST_ELEMENT_CAST (user_data));
+}
+
+static void
+remove_pad (const GValue * item, gpointer user_data)
+{
+  GstElement *self = user_data;
+  GstPad *pad = g_value_get_object (item);
+
+  gst_element_remove_pad (self, pad);
+}
+
+static GstStateChangeReturn
+gst_sdp_src_change_state (GstElement * element, GstStateChange transition)
+{
+  GstSdpSrc *self = GST_SDP_SRC_CAST (element);
+  GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
+
+  switch (transition) {
+    case GST_STATE_CHANGE_NULL_TO_READY:
+      GST_OBJECT_LOCK (self);
+      if (self->sdp_buffer)
+        gst_buffer_unref (self->sdp_buffer);
+      self->sdp_buffer = NULL;
+
+      if (self->location && strcmp (self->location, "sdp://") != 0) {
+        /* Do nothing */
+      } else if (self->sdp) {
+        self->sdp_buffer =
+            gst_buffer_new_wrapped (self->sdp, strlen (self->sdp) + 1);
+      } else {
+        ret = GST_STATE_CHANGE_FAILURE;
+      }
+      GST_OBJECT_UNLOCK (self);
+
+      if (ret != GST_STATE_CHANGE_FAILURE) {
+        if (self->sdp_buffer) {
+          GstCaps *caps = gst_caps_new_empty_simple ("application/sdp");
+
+          self->src = gst_element_factory_make ("appsrc", NULL);
+          g_object_set (self->src, "caps", caps, "emit-signals", FALSE, NULL);
+          gst_caps_unref (caps);
+        } else {
+          self->src = gst_element_factory_make ("filesrc", NULL);
+          g_object_set (self->src, "location", self->location + 6, NULL);
+        }
+
+        self->demux = gst_element_factory_make ("sdpdemux", NULL);
+        g_signal_connect (self->demux, "pad-added", G_CALLBACK (pad_added_cb),
+            self);
+        g_signal_connect (self->demux, "pad-removed",
+            G_CALLBACK (pad_removed_cb), self);
+        g_signal_connect (self->demux, "no-more-pads",
+            G_CALLBACK (no_more_pads_cb), self);
+        gst_bin_add_many (GST_BIN_CAST (self), self->src, self->demux, NULL);
+        gst_element_link_pads (self->src, "src", self->demux, "sink");
+      }
+      break;
+    default:
+      break;
+  }
+
+  if (ret == GST_STATE_CHANGE_FAILURE)
+    return ret;
+  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+  if (ret == GST_STATE_CHANGE_FAILURE)
+    return ret;
+
+  switch (transition) {
+    case GST_STATE_CHANGE_READY_TO_NULL:{
+      GstIterator *it;
+
+      it = gst_element_iterate_src_pads (GST_ELEMENT_CAST (self));
+      while (gst_iterator_foreach (it, remove_pad, self) == GST_ITERATOR_RESYNC)
+        gst_iterator_resync (it);
+      gst_iterator_free (it);
+
+      if (self->src) {
+        gst_bin_remove (GST_BIN_CAST (self), self->src);
+        self->src = NULL;
+      }
+      if (self->demux) {
+        gst_bin_remove (GST_BIN_CAST (self), self->demux);
+        self->demux = NULL;
+      }
+      break;
+    }
+    case GST_STATE_CHANGE_READY_TO_PAUSED:
+      if (ret != GST_STATE_CHANGE_FAILURE)
+        ret = GST_STATE_CHANGE_NO_PREROLL;
+      if (self->sdp_buffer) {
+        if (gst_app_src_push_buffer (GST_APP_SRC_CAST (self->src),
+                gst_buffer_ref (self->sdp_buffer)) != GST_FLOW_OK)
+          ret = GST_STATE_CHANGE_FAILURE;
+        else
+          gst_app_src_end_of_stream (GST_APP_SRC_CAST (self->src));
+      }
+      break;
+    default:
+      break;
+  }
+
+  return ret;
+}
+
+static void
+gst_sdp_src_class_init (GstSdpSrcClass * klass)
+{
+  GObjectClass *gobject_class = (GObjectClass *) klass;
+  GstElementClass *element_class = (GstElementClass *) klass;
+
+  GST_DEBUG_CATEGORY_INIT (sdp_src_debug, "sdpsrc", 0, "SDP Source");
+
+  gobject_class->finalize = gst_sdp_src_finalize;
+  gobject_class->set_property = gst_sdp_src_set_property;
+  gobject_class->get_property = gst_sdp_src_get_property;
+
+  g_object_class_install_property (gobject_class, PROP_LOCATION,
+      g_param_spec_string ("location",
+          "Location",
+          "URI to SDP file (sdp:///path/to/file)", NULL,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, PROP_SDP,
+      g_param_spec_string ("sdp",
+          "SDP",
+          "SDP description used instead of location", NULL,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&src_template));
+
+  gst_element_class_set_static_metadata (element_class, "SDP Source",
+      "Source/Network/RTP",
+      "Stream RTP based on an SDP",
+      "Sebastian Dröge <sebastian@centricular.com>");
+
+  element_class->change_state = GST_DEBUG_FUNCPTR (gst_sdp_src_change_state);
+}
+
+static void
+gst_sdp_src_init (GstSdpSrc * self)
+{
+}
+
+static GstURIType
+gst_sdp_src_get_uri_type (GType type)
+{
+  return GST_URI_SRC;
+}
+
+static const gchar *const *
+gst_sdp_src_get_protocols (GType type)
+{
+  static const gchar *protocols[] = { "sdp", 0 };
+
+  return protocols;
+}
+
+static gchar *
+gst_sdp_src_get_uri (GstURIHandler * handler)
+{
+  gchar *uri = NULL;
+
+  g_object_get (handler, "location", &uri, NULL);
+
+  return uri;
+}
+
+static gboolean
+gst_sdp_src_set_uri (GstURIHandler * handler, const gchar * uri,
+    GError ** error)
+{
+  if (uri && !g_str_has_prefix (uri, "sdp://")) {
+    g_set_error (error, GST_URI_ERROR, GST_URI_ERROR_BAD_URI,
+        "Invalid SDP URI");
+    return FALSE;
+  }
+
+  g_object_set (handler, "location", uri, NULL);
+
+  return TRUE;
+}
+
+static void
+gst_sdp_src_handler_init (gpointer g_iface, gpointer iface_data)
+{
+  GstURIHandlerInterface *iface = (GstURIHandlerInterface *) g_iface;
+
+  iface->get_type = gst_sdp_src_get_uri_type;
+  iface->get_protocols = gst_sdp_src_get_protocols;
+  iface->get_uri = gst_sdp_src_get_uri;
+  iface->set_uri = gst_sdp_src_set_uri;
+}
diff --git a/gst/sdp/gstsdpsrc.h b/gst/sdp/gstsdpsrc.h
new file mode 100644
index 0000000..05f2074
--- /dev/null
+++ b/gst/sdp/gstsdpsrc.h
@@ -0,0 +1,62 @@
+/* GStreamer
+ * Copyright (C) 2016 Sebastian Dröge <sebastian@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_SDP_SRC_H__
+#define __GST_SDP_SRC_H__
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+#define GST_TYPE_SDP_SRC \
+  (gst_sdp_src_get_type())
+#define GST_SDP_SRC(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_SDP_SRC, GstSdpSrc))
+#define GST_SDP_SRC_CAST(obj) \
+  ((GstSdpSrc *) obj)
+#define GST_SDP_SRC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_SDP_SRC, GstSdpSrcClass))
+#define GST_IS_SDP_SRC(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_SDP_SRC))
+#define GST_IS_SDP_SRC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_SDP_SRC))
+
+typedef struct _GstSdpSrc GstSdpSrc;
+typedef struct _GstSdpSrcClass GstSdpSrcClass;
+
+struct _GstSdpSrc
+{
+  GstBin parent;
+
+  gchar *location;
+  gchar *sdp;
+
+  GstBuffer *sdp_buffer;
+  GstElement *src;
+  GstElement *demux;
+};
+
+struct _GstSdpSrcClass
+{
+  GstBinClass parent;
+};
+
+GType gst_sdp_src_get_type (void);
+
+G_END_DECLS
+#endif /* __GST_SDP_SRC_H__ */
diff --git a/gst/segmentclip/Makefile.in b/gst/segmentclip/Makefile.in
index 45a5577..4f6e6ed 100644
--- a/gst/segmentclip/Makefile.in
+++ b/gst/segmentclip/Makefile.in
@@ -306,6 +306,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -327,6 +329,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -376,6 +380,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -521,6 +527,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -647,8 +655,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,8 +697,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/segmentclip/gstaudiosegmentclip.c b/gst/segmentclip/gstaudiosegmentclip.c
index 21fcd46..434424a 100644
--- a/gst/segmentclip/gstaudiosegmentclip.c
+++ b/gst/segmentclip/gstaudiosegmentclip.c
@@ -67,10 +67,8 @@
       "Clips audio buffers to the configured segment",
       "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_pad_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_pad_template));
+  gst_element_class_add_static_pad_template (element_class, &sink_pad_template);
+  gst_element_class_add_static_pad_template (element_class, &src_pad_template);
 }
 
 static void
diff --git a/gst/segmentclip/gstvideosegmentclip.c b/gst/segmentclip/gstvideosegmentclip.c
index 0b168e4..34ba58b 100644
--- a/gst/segmentclip/gstvideosegmentclip.c
+++ b/gst/segmentclip/gstvideosegmentclip.c
@@ -61,10 +61,8 @@
       "Clips video buffers to the configured segment",
       "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_pad_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_pad_template));
+  gst_element_class_add_static_pad_template (element_class, &sink_pad_template);
+  gst_element_class_add_static_pad_template (element_class, &src_pad_template);
 
   segment_clip_klass->reset = GST_DEBUG_FUNCPTR (gst_video_segment_clip_reset);
   segment_clip_klass->set_caps =
diff --git a/gst/siren/Makefile.in b/gst/siren/Makefile.in
index 00b5506..9c35f27 100644
--- a/gst/siren/Makefile.in
+++ b/gst/siren/Makefile.in
@@ -304,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/siren/gstsirendec.c b/gst/siren/gstsirendec.c
index ab0635a..78338ae 100644
--- a/gst/siren/gstsirendec.c
+++ b/gst/siren/gstsirendec.c
@@ -57,7 +57,7 @@
 static gboolean gst_siren_dec_stop (GstAudioDecoder * dec);
 static gboolean gst_siren_dec_set_format (GstAudioDecoder * dec,
     GstCaps * caps);
-static gboolean gst_siren_dec_parse (GstAudioDecoder * dec,
+static GstFlowReturn gst_siren_dec_parse (GstAudioDecoder * dec,
     GstAdapter * adapter, gint * offset, gint * length);
 static GstFlowReturn gst_siren_dec_handle_frame (GstAudioDecoder * dec,
     GstBuffer * buffer);
@@ -73,10 +73,8 @@
 
   GST_DEBUG_CATEGORY_INIT (sirendec_debug, "sirendec", 0, "sirendec");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&srctemplate));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sinktemplate));
+  gst_element_class_add_static_pad_template (element_class, &srctemplate);
+  gst_element_class_add_static_pad_template (element_class, &sinktemplate);
 
   gst_element_class_set_static_metadata (element_class, "Siren Decoder element",
       "Codec/Decoder/Audio ",
diff --git a/gst/siren/gstsirenenc.c b/gst/siren/gstsirenenc.c
index 69b4d80..0be5cd3 100644
--- a/gst/siren/gstsirenenc.c
+++ b/gst/siren/gstsirenenc.c
@@ -71,10 +71,8 @@
 
   GST_DEBUG_CATEGORY_INIT (sirenenc_debug, "sirenenc", 0, "sirenenc");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&srctemplate));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sinktemplate));
+  gst_element_class_add_static_pad_template (element_class, &srctemplate);
+  gst_element_class_add_static_pad_template (element_class, &sinktemplate);
 
   gst_element_class_set_static_metadata (element_class, "Siren Encoder element",
       "Codec/Encoder/Audio ",
diff --git a/gst/smooth/Makefile.in b/gst/smooth/Makefile.in
index 21135e6..8468051 100644
--- a/gst/smooth/Makefile.in
+++ b/gst/smooth/Makefile.in
@@ -302,6 +302,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -323,6 +325,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -372,6 +376,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -517,6 +523,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -643,8 +651,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,8 +693,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/smooth/gstsmooth.c b/gst/smooth/gstsmooth.c
index cfdf51a..3bc233a 100644
--- a/gst/smooth/gstsmooth.c
+++ b/gst/smooth/gstsmooth.c
@@ -89,13 +89,12 @@
       g_param_spec_boolean ("luma-only", "luma-only", "only filter luma part",
           TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_smooth_sink_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_smooth_src_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_smooth_sink_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_smooth_src_template);
   gst_element_class_set_static_metadata (gstelement_class, "Smooth effect",
-      "Filter/Effect/Video",
-      "Apply a smooth filter to an image",
+      "Filter/Effect/Video", "Apply a smooth filter to an image",
       "Wim Taymans <wim.taymans@chello.be>");
 
   vfilter_class->transform_frame =
diff --git a/gst/speed/Makefile.in b/gst/speed/Makefile.in
index 22a00e6..48bb4ac 100644
--- a/gst/speed/Makefile.in
+++ b/gst/speed/Makefile.in
@@ -302,6 +302,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -323,6 +325,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -372,6 +376,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -517,6 +523,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -643,8 +651,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,8 +693,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/speed/gstspeed.c b/gst/speed/gstspeed.c
index c0f9198..72a907d 100644
--- a/gst/speed/gstspeed.c
+++ b/gst/speed/gstspeed.c
@@ -399,10 +399,10 @@
       "Andy Wingo <apwingo@eos.ncsu.edu>, "
       "Tim-Philipp Müller <tim@centricular.net>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_speed_src_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_speed_sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_speed_src_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_speed_sink_template);
 }
 
 static void
diff --git a/gst/stereo/Makefile.in b/gst/stereo/Makefile.in
index 1f73f05..22c9315 100644
--- a/gst/stereo/Makefile.in
+++ b/gst/stereo/Makefile.in
@@ -302,6 +302,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -323,6 +325,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -372,6 +376,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -517,6 +523,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -643,8 +651,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,8 +693,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/subenc/Makefile.in b/gst/subenc/Makefile.in
index eb67032..a0b0780 100644
--- a/gst/subenc/Makefile.in
+++ b/gst/subenc/Makefile.in
@@ -302,6 +302,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -323,6 +325,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -372,6 +376,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -517,6 +523,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -643,8 +651,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,8 +693,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/subenc/gstsrtenc.c b/gst/subenc/gstsrtenc.c
index 079fc44..c16e6ed 100644
--- a/gst/subenc/gstsrtenc.c
+++ b/gst/subenc/gstsrtenc.c
@@ -246,10 +246,8 @@
           0,
           G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
+  gst_element_class_add_static_pad_template (element_class, &src_template);
 
   gst_element_class_set_static_metadata (element_class,
       "Srt encoder", "Codec/Encoder/Subtitle",
diff --git a/gst/subenc/gstwebvttenc.c b/gst/subenc/gstwebvttenc.c
index 67b6305..eefc78d 100644
--- a/gst/subenc/gstwebvttenc.c
+++ b/gst/subenc/gstwebvttenc.c
@@ -266,10 +266,8 @@
           0,
           G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
+  gst_element_class_add_static_pad_template (element_class, &src_template);
 
   gst_element_class_set_static_metadata (element_class,
       "WebVTT encoder", "Codec/Encoder/Subtitle",
diff --git a/gst/timecode/Makefile.am b/gst/timecode/Makefile.am
new file mode 100644
index 0000000..e819b26
--- /dev/null
+++ b/gst/timecode/Makefile.am
@@ -0,0 +1,10 @@
+plugin_LTLIBRARIES = libgsttimecode.la
+
+libgsttimecode_la_SOURCES = plugin.c gsttimecodestamper.c gsttimecodewait.c
+
+libgsttimecode_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
+libgsttimecode_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) -lgstaudio-$(GST_API_VERSION) $(GST_BASE_LIBS) $(GST_LIBS) $(LIBM)
+libgsttimecode_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgsttimecode_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
+
+noinst_HEADERS = gsttimecodestamper.h gsttimecodewait.h
diff --git a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.in b/gst/timecode/Makefile.in
similarity index 71%
copy from tests/examples/gl/gtk/gtkvideooverlay/Makefile.in
copy to gst/timecode/Makefile.in
index aef9ed4..2f73601 100644
--- a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.in
+++ b/gst/timecode/Makefile.in
@@ -14,6 +14,7 @@
 
 @SET_MAKE@
 
+
 VPATH = @srcdir@
 am__is_gnu_make = { \
   if test -z '$(MAKELEVEL)'; then \
@@ -89,8 +90,7 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-noinst_PROGRAMS = gtkvideooverlay$(EXEEXT)
-subdir = tests/examples/gl/gtk/gtkvideooverlay
+subdir = gst/timecode
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -127,27 +127,57 @@
 	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
+	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-am_gtkvideooverlay_OBJECTS = gtkvideooverlay-main.$(OBJEXT)
-gtkvideooverlay_OBJECTS = $(am_gtkvideooverlay_OBJECTS)
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
 am__DEPENDENCIES_1 =
-gtkvideooverlay_DEPENDENCIES = ../libgstgtkhelper.la \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+libgsttimecode_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1)
+am_libgsttimecode_la_OBJECTS = libgsttimecode_la-plugin.lo \
+	libgsttimecode_la-gsttimecodestamper.lo \
+	libgsttimecode_la-gsttimecodewait.lo
+libgsttimecode_la_OBJECTS = $(am_libgsttimecode_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 am__v_lt_1 = 
-gtkvideooverlay_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
-	$(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+libgsttimecode_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(libgsttimecode_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+	$(CCLD) $(libgsttimecode_la_CFLAGS) $(CFLAGS) \
+	$(libgsttimecode_la_LDFLAGS) $(LDFLAGS) -o $@
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -164,31 +194,32 @@
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
 am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_@AM_V@)
-am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
-am__v_CXX_0 = @echo "  CXX     " $@;
-am__v_CXX_1 = 
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo "  CXXLD   " $@;
-am__v_CXXLD_1 = 
-SOURCES = $(gtkvideooverlay_SOURCES)
-DIST_SOURCES = $(gtkvideooverlay_SOURCES)
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(libgsttimecode_la_SOURCES)
+DIST_SOURCES = $(libgsttimecode_la_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+HEADERS = $(noinst_HEADERS)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 # Read a list of newline-separated strings from the standard input,
 # and print each of them once, without duplicates.  Input order is
@@ -274,6 +305,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -295,6 +328,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -344,6 +379,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -489,6 +526,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -615,8 +654,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -659,8 +696,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -749,19 +791,17 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 wayland_scanner = @wayland_scanner@
-gtkvideooverlay_SOURCES = main.cpp
-gtkvideooverlay_CXXFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
-	$(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
-	$(GL_CFLAGS) $(GTK3_CFLAGS)  $(X11_CFLAGS)
-
-gtkvideooverlay_LDADD = ../libgstgtkhelper.la \
-	$(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
-	$(GL_LIBS) -lgstvideo-$(GST_API_VERSION) $(X11_LIBS)
-
+plugin_LTLIBRARIES = libgsttimecode.la
+libgsttimecode_la_SOURCES = plugin.c gsttimecodestamper.c gsttimecodewait.c
+libgsttimecode_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
+libgsttimecode_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) -lgstaudio-$(GST_API_VERSION) $(GST_BASE_LIBS) $(GST_LIBS) $(LIBM)
+libgsttimecode_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgsttimecode_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
+noinst_HEADERS = gsttimecodestamper.h gsttimecodewait.h
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .cpp .lo .o .obj
+.SUFFIXES: .c .lo .o .obj
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -771,9 +811,9 @@
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/gl/gtk/gtkvideooverlay/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gst/timecode/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu tests/examples/gl/gtk/gtkvideooverlay/Makefile
+	  $(AUTOMAKE) --gnu gst/timecode/Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -792,18 +832,43 @@
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 
-clean-noinstPROGRAMS:
-	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
+install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
+	}
 
-gtkvideooverlay$(EXEEXT): $(gtkvideooverlay_OBJECTS) $(gtkvideooverlay_DEPENDENCIES) $(EXTRA_gtkvideooverlay_DEPENDENCIES) 
-	@rm -f gtkvideooverlay$(EXEEXT)
-	$(AM_V_CXXLD)$(gtkvideooverlay_LINK) $(gtkvideooverlay_OBJECTS) $(gtkvideooverlay_LDADD) $(LIBS)
+uninstall-pluginLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
+	done
+
+clean-pluginLTLIBRARIES:
+	-test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
+	@list='$(plugin_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+libgsttimecode.la: $(libgsttimecode_la_OBJECTS) $(libgsttimecode_la_DEPENDENCIES) $(EXTRA_libgsttimecode_la_DEPENDENCIES) 
+	$(AM_V_CCLD)$(libgsttimecode_la_LINK) -rpath $(plugindir) $(libgsttimecode_la_OBJECTS) $(libgsttimecode_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -811,45 +876,54 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkvideooverlay-main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsttimecode_la-gsttimecodestamper.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsttimecode_la-gsttimecodewait.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsttimecode_la-plugin.Plo@am__quote@
 
-.cpp.o:
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+.c.o:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
 
-.cpp.obj:
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+.c.obj:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
-.cpp.lo:
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+.c.lo:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
-gtkvideooverlay-main.o: main.cpp
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -MT gtkvideooverlay-main.o -MD -MP -MF $(DEPDIR)/gtkvideooverlay-main.Tpo -c -o gtkvideooverlay-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/gtkvideooverlay-main.Tpo $(DEPDIR)/gtkvideooverlay-main.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='main.cpp' object='gtkvideooverlay-main.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -c -o gtkvideooverlay-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
+libgsttimecode_la-plugin.lo: plugin.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgsttimecode_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsttimecode_la_CFLAGS) $(CFLAGS) -MT libgsttimecode_la-plugin.lo -MD -MP -MF $(DEPDIR)/libgsttimecode_la-plugin.Tpo -c -o libgsttimecode_la-plugin.lo `test -f 'plugin.c' || echo '$(srcdir)/'`plugin.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgsttimecode_la-plugin.Tpo $(DEPDIR)/libgsttimecode_la-plugin.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='plugin.c' object='libgsttimecode_la-plugin.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgsttimecode_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsttimecode_la_CFLAGS) $(CFLAGS) -c -o libgsttimecode_la-plugin.lo `test -f 'plugin.c' || echo '$(srcdir)/'`plugin.c
 
-gtkvideooverlay-main.obj: main.cpp
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -MT gtkvideooverlay-main.obj -MD -MP -MF $(DEPDIR)/gtkvideooverlay-main.Tpo -c -o gtkvideooverlay-main.obj `if test -f 'main.cpp'; then $(CYGPATH_W) 'main.cpp'; else $(CYGPATH_W) '$(srcdir)/main.cpp'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/gtkvideooverlay-main.Tpo $(DEPDIR)/gtkvideooverlay-main.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='main.cpp' object='gtkvideooverlay-main.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -c -o gtkvideooverlay-main.obj `if test -f 'main.cpp'; then $(CYGPATH_W) 'main.cpp'; else $(CYGPATH_W) '$(srcdir)/main.cpp'; fi`
+libgsttimecode_la-gsttimecodestamper.lo: gsttimecodestamper.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgsttimecode_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsttimecode_la_CFLAGS) $(CFLAGS) -MT libgsttimecode_la-gsttimecodestamper.lo -MD -MP -MF $(DEPDIR)/libgsttimecode_la-gsttimecodestamper.Tpo -c -o libgsttimecode_la-gsttimecodestamper.lo `test -f 'gsttimecodestamper.c' || echo '$(srcdir)/'`gsttimecodestamper.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgsttimecode_la-gsttimecodestamper.Tpo $(DEPDIR)/libgsttimecode_la-gsttimecodestamper.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gsttimecodestamper.c' object='libgsttimecode_la-gsttimecodestamper.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgsttimecode_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsttimecode_la_CFLAGS) $(CFLAGS) -c -o libgsttimecode_la-gsttimecodestamper.lo `test -f 'gsttimecodestamper.c' || echo '$(srcdir)/'`gsttimecodestamper.c
+
+libgsttimecode_la-gsttimecodewait.lo: gsttimecodewait.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgsttimecode_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsttimecode_la_CFLAGS) $(CFLAGS) -MT libgsttimecode_la-gsttimecodewait.lo -MD -MP -MF $(DEPDIR)/libgsttimecode_la-gsttimecodewait.Tpo -c -o libgsttimecode_la-gsttimecodewait.lo `test -f 'gsttimecodewait.c' || echo '$(srcdir)/'`gsttimecodewait.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgsttimecode_la-gsttimecodewait.Tpo $(DEPDIR)/libgsttimecode_la-gsttimecodewait.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gsttimecodewait.c' object='libgsttimecode_la-gsttimecodewait.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgsttimecode_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsttimecode_la_CFLAGS) $(CFLAGS) -c -o libgsttimecode_la-gsttimecodewait.lo `test -f 'gsttimecodewait.c' || echo '$(srcdir)/'`gsttimecodewait.c
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -941,8 +1015,11 @@
 	done
 check-am: all-am
 check: check-am
-all-am: Makefile $(PROGRAMS)
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
 installdirs:
+	for dir in "$(DESTDIR)$(plugindir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
 install: install-am
 install-exec: install-exec-am
 install-data: install-data-am
@@ -975,7 +1052,7 @@
 	@echo "it deletes files that may require special tools to rebuild."
 clean: clean-am
 
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
 	mostlyclean-am
 
 distclean: distclean-am
@@ -996,7 +1073,7 @@
 
 info-am:
 
-install-data-am:
+install-data-am: install-pluginLTLIBRARIES
 
 install-dvi: install-dvi-am
 
@@ -1042,23 +1119,24 @@
 
 ps-am:
 
-uninstall-am:
+uninstall-am: uninstall-pluginLTLIBRARIES
 
 .MAKE: install-am install-strip
 
 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
+	clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \
 	ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
 	install-exec-am install-html install-html-am install-info \
 	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am
+	install-pluginLTLIBRARIES install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+	uninstall-pluginLTLIBRARIES
 
 .PRECIOUS: Makefile
 
diff --git a/gst/timecode/gsttimecodestamper.c b/gst/timecode/gsttimecodestamper.c
new file mode 100644
index 0000000..d930289
--- /dev/null
+++ b/gst/timecode/gsttimecodestamper.c
@@ -0,0 +1,419 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Vivia Nikolaidou <vivia@toolsonair.com>
+ *
+ * gsttimecodestamper.c
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/**
+ * SECTION:element-timecodestamper
+ * @short_description: Attach a timecode into incoming video frames
+ *
+ * This element attaches a timecode into every incoming video frame. It starts
+ * counting from the stream time of each segment start, which it converts into
+ * a timecode.
+ *
+ * <refsect2>
+ * <title>Example launch line</title>
+ * |[
+ * gst-launch-1.0 videotestsrc ! timecodestamper ! autovideosink
+ * ]|
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gsttimecodestamper.h"
+
+#include <gst/gst.h>
+#include <gst/video/video.h>
+#include <stdlib.h>
+#include <string.h>
+
+GST_DEBUG_CATEGORY_STATIC (timecodestamper_debug);
+#define GST_CAT_DEFAULT timecodestamper_debug
+
+/* GstTimeCodeStamper properties */
+enum
+{
+  PROP_0,
+  PROP_OVERRIDE_EXISTING,
+  PROP_DROP_FRAME,
+  PROP_SOURCE_CLOCK,
+  PROP_DAILY_JAM
+};
+
+#define DEFAULT_OVERRIDE_EXISTING FALSE
+#define DEFAULT_DROP_FRAME FALSE
+#define DEFAULT_SOURCE_CLOCK NULL
+#define DEFAULT_DAILY_JAM NULL
+
+static GstStaticPadTemplate gst_timecodestamper_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("video/x-raw")
+    );
+
+static GstStaticPadTemplate gst_timecodestamper_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("video/x-raw")
+    );
+
+static void gst_timecodestamper_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_timecodestamper_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+static void gst_timecodestamper_dispose (GObject * object);
+static gboolean gst_timecodestamper_sink_event (GstBaseTransform * trans,
+    GstEvent * event);
+static GstFlowReturn gst_timecodestamper_transform_ip (GstBaseTransform *
+    vfilter, GstBuffer * buffer);
+static gboolean gst_timecodestamper_stop (GstBaseTransform * trans);
+
+G_DEFINE_TYPE (GstTimeCodeStamper, gst_timecodestamper,
+    GST_TYPE_BASE_TRANSFORM);
+
+static void
+gst_timecodestamper_class_init (GstTimeCodeStamperClass * klass)
+{
+  GObjectClass *gobject_class = (GObjectClass *) klass;
+  GstElementClass *element_class = (GstElementClass *) klass;
+  GstBaseTransformClass *trans_class = (GstBaseTransformClass *) klass;
+
+  GST_DEBUG_CATEGORY_INIT (timecodestamper_debug, "timecodestamper", 0,
+      "timecodestamper");
+  gst_element_class_set_static_metadata (element_class, "Timecode stamper",
+      "Filter/Video", "Attaches a timecode meta into each video frame",
+      "Vivia Nikolaidou <vivia@toolsonair.com");
+
+  gobject_class->set_property = gst_timecodestamper_set_property;
+  gobject_class->get_property = gst_timecodestamper_get_property;
+  gobject_class->dispose = gst_timecodestamper_dispose;
+
+  g_object_class_install_property (gobject_class, PROP_OVERRIDE_EXISTING,
+      g_param_spec_boolean ("override-existing", "Override existing timecode",
+          "If set to true, any existing timecode will be overridden",
+          DEFAULT_OVERRIDE_EXISTING,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_DROP_FRAME,
+      g_param_spec_boolean ("drop-frame", "Override existing timecode",
+          "Use drop-frame timecodes for 29.97 and 59.94 FPS",
+          DEFAULT_DROP_FRAME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_SOURCE_CLOCK,
+      g_param_spec_object ("source-clock",
+          "Source clock to use for first timecode",
+          "If unset, the timecode will refer to the stream time",
+          GST_TYPE_CLOCK, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_DAILY_JAM,
+      g_param_spec_boxed ("daily-jam",
+          "Daily jam",
+          "The daily jam of the timecode",
+          G_TYPE_DATE_TIME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&gst_timecodestamper_sink_template));
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&gst_timecodestamper_src_template));
+
+  trans_class->sink_event = GST_DEBUG_FUNCPTR (gst_timecodestamper_sink_event);
+  trans_class->stop = GST_DEBUG_FUNCPTR (gst_timecodestamper_stop);
+
+  trans_class->transform_ip =
+      GST_DEBUG_FUNCPTR (gst_timecodestamper_transform_ip);
+}
+
+static void
+gst_timecodestamper_init (GstTimeCodeStamper * timecodestamper)
+{
+  timecodestamper->override_existing = DEFAULT_OVERRIDE_EXISTING;
+  timecodestamper->drop_frame = DEFAULT_DROP_FRAME;
+  timecodestamper->source_clock = DEFAULT_SOURCE_CLOCK;
+  timecodestamper->current_tc = gst_video_time_code_new_empty ();
+  timecodestamper->current_tc->config.latest_daily_jam = DEFAULT_DAILY_JAM;
+}
+
+static void
+gst_timecodestamper_dispose (GObject * object)
+{
+  GstTimeCodeStamper *timecodestamper = GST_TIME_CODE_STAMPER (object);
+
+  if (timecodestamper->current_tc != NULL) {
+    gst_video_time_code_free (timecodestamper->current_tc);
+    timecodestamper->current_tc = NULL;
+  }
+
+  if (timecodestamper->source_clock) {
+    gst_object_unref (timecodestamper->source_clock);
+    timecodestamper->source_clock = NULL;
+  }
+
+  G_OBJECT_CLASS (gst_timecodestamper_parent_class)->dispose (object);
+}
+
+static void
+gst_timecodestamper_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstTimeCodeStamper *timecodestamper = GST_TIME_CODE_STAMPER (object);
+
+  switch (prop_id) {
+    case PROP_OVERRIDE_EXISTING:
+      timecodestamper->override_existing = g_value_get_boolean (value);
+      break;
+    case PROP_DROP_FRAME:
+      timecodestamper->drop_frame = g_value_get_boolean (value);
+      break;
+    case PROP_SOURCE_CLOCK:
+      if (timecodestamper->source_clock)
+        gst_object_unref (timecodestamper->source_clock);
+      timecodestamper->source_clock = g_value_dup_object (value);
+      break;
+    case PROP_DAILY_JAM:
+      if (timecodestamper->current_tc->config.latest_daily_jam)
+        g_date_time_unref (timecodestamper->current_tc->
+            config.latest_daily_jam);
+      timecodestamper->current_tc->config.latest_daily_jam =
+          g_value_dup_boxed (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_timecodestamper_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstTimeCodeStamper *timecodestamper = GST_TIME_CODE_STAMPER (object);
+
+  switch (prop_id) {
+    case PROP_OVERRIDE_EXISTING:
+      g_value_set_boolean (value, timecodestamper->override_existing);
+      break;
+    case PROP_DROP_FRAME:
+      g_value_set_boolean (value, timecodestamper->drop_frame);
+      break;
+    case PROP_SOURCE_CLOCK:
+      g_value_set_object (value, timecodestamper->source_clock);
+      break;
+    case PROP_DAILY_JAM:
+      g_value_set_boxed (value,
+          timecodestamper->current_tc->config.latest_daily_jam);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_timecodestamper_set_drop_frame (GstTimeCodeStamper * timecodestamper)
+{
+  if (timecodestamper->drop_frame && timecodestamper->vinfo.fps_d == 1001 &&
+      (timecodestamper->vinfo.fps_n == 30000 ||
+          timecodestamper->vinfo.fps_d == 60000))
+    timecodestamper->current_tc->config.flags |=
+        GST_VIDEO_TIME_CODE_FLAGS_DROP_FRAME;
+  else
+    timecodestamper->current_tc->config.flags &=
+        ~GST_VIDEO_TIME_CODE_FLAGS_DROP_FRAME;
+}
+
+static gboolean
+gst_timecodestamper_stop (GstBaseTransform * trans)
+{
+  GstTimeCodeStamper *timecodestamper = GST_TIME_CODE_STAMPER (trans);
+
+  gst_video_info_init (&timecodestamper->vinfo);
+
+  return TRUE;
+}
+
+/* Must be called with object lock */
+static void
+gst_timecodestamper_reset_timecode (GstTimeCodeStamper * timecodestamper)
+{
+  GDateTime *jam = NULL;
+
+  if (timecodestamper->current_tc->config.latest_daily_jam)
+    jam =
+        g_date_time_ref (timecodestamper->current_tc->config.latest_daily_jam);
+  gst_video_time_code_clear (timecodestamper->current_tc);
+  /* FIXME: What if the buffer doesn't contain both top and bottom fields? */
+  gst_video_time_code_init (timecodestamper->current_tc,
+      timecodestamper->vinfo.fps_n,
+      timecodestamper->vinfo.fps_d,
+      jam,
+      timecodestamper->vinfo.interlace_mode ==
+      GST_VIDEO_INTERLACE_MODE_PROGRESSIVE ? 0 :
+      GST_VIDEO_TIME_CODE_FLAGS_INTERLACED, 0, 0, 0, 0, 0);
+  gst_timecodestamper_set_drop_frame (timecodestamper);
+}
+
+static gboolean
+gst_timecodestamper_sink_event (GstBaseTransform * trans, GstEvent * event)
+{
+  gboolean ret = FALSE;
+  GstTimeCodeStamper *timecodestamper = GST_TIME_CODE_STAMPER (trans);
+
+  GST_DEBUG_OBJECT (trans, "received event %" GST_PTR_FORMAT, event);
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_SEGMENT:
+    {
+      GstSegment segment;
+      guint64 frames;
+      gchar *tc_str;
+
+      GST_OBJECT_LOCK (timecodestamper);
+      if (timecodestamper->source_clock != NULL) {
+        GST_OBJECT_UNLOCK (timecodestamper);
+        break;
+      }
+
+      gst_event_copy_segment (event, &segment);
+      if (segment.format != GST_FORMAT_TIME) {
+        GST_OBJECT_UNLOCK (timecodestamper);
+        GST_ERROR_OBJECT (timecodestamper, "Invalid segment format");
+        return FALSE;
+      }
+      if (GST_VIDEO_INFO_FORMAT (&timecodestamper->vinfo) ==
+          GST_VIDEO_FORMAT_UNKNOWN) {
+        GST_ERROR_OBJECT (timecodestamper,
+            "Received segment event without caps");
+        GST_OBJECT_UNLOCK (timecodestamper);
+        return FALSE;
+      }
+      frames =
+          gst_util_uint64_scale (segment.time, timecodestamper->vinfo.fps_n,
+          timecodestamper->vinfo.fps_d * GST_SECOND);
+      gst_timecodestamper_reset_timecode (timecodestamper);
+      gst_video_time_code_add_frames (timecodestamper->current_tc, frames);
+      GST_DEBUG_OBJECT (timecodestamper,
+          "Got %" G_GUINT64_FORMAT " frames when segment time is %"
+          GST_TIME_FORMAT, frames, GST_TIME_ARGS (segment.time));
+      tc_str = gst_video_time_code_to_string (timecodestamper->current_tc);
+      GST_DEBUG_OBJECT (timecodestamper, "New timecode is %s", tc_str);
+      g_free (tc_str);
+      GST_OBJECT_UNLOCK (timecodestamper);
+      break;
+    }
+    case GST_EVENT_CAPS:
+    {
+      GstCaps *caps;
+
+      GST_OBJECT_LOCK (timecodestamper);
+      gst_event_parse_caps (event, &caps);
+      if (!gst_video_info_from_caps (&timecodestamper->vinfo, caps)) {
+        GST_OBJECT_UNLOCK (timecodestamper);
+        return FALSE;
+      }
+      gst_timecodestamper_reset_timecode (timecodestamper);
+      GST_OBJECT_UNLOCK (timecodestamper);
+      break;
+    }
+    default:
+      break;
+  }
+  ret =
+      GST_BASE_TRANSFORM_CLASS (gst_timecodestamper_parent_class)->sink_event
+      (trans, event);
+  return ret;
+}
+
+static GstFlowReturn
+gst_timecodestamper_transform_ip (GstBaseTransform * vfilter,
+    GstBuffer * buffer)
+{
+  GstTimeCodeStamper *timecodestamper = GST_TIME_CODE_STAMPER (vfilter);
+  GstClockTime ref_time;
+
+  GST_OBJECT_LOCK (timecodestamper);
+  if (gst_buffer_get_video_time_code_meta (buffer)
+      && timecodestamper->override_existing == FALSE) {
+    GST_OBJECT_UNLOCK (timecodestamper);
+    return GST_FLOW_OK;
+  }
+  if (timecodestamper->source_clock != NULL) {
+    if (timecodestamper->current_tc->hours == 0
+        && timecodestamper->current_tc->minutes == 0
+        && timecodestamper->current_tc->seconds == 0
+        && timecodestamper->current_tc->frames == 0) {
+      guint64 hours, minutes, seconds, frames;
+      /* Daily jam time */
+
+      ref_time = gst_clock_get_time (timecodestamper->source_clock);
+      ref_time = ref_time % (24 * 60 * 60 * GST_SECOND);
+      hours = ref_time / (GST_SECOND * 60 * 60);
+      ref_time -= hours * GST_SECOND * 60 * 60;
+      minutes = ref_time / (GST_SECOND * 60);
+      ref_time -= minutes * GST_SECOND * 60;
+      seconds = ref_time / GST_SECOND;
+      ref_time -= seconds * GST_SECOND;
+      /* Converting to frames for the whole ref_time might be inaccurate in case
+       * we have a drop frame timecode */
+      frames = gst_util_uint64_scale (ref_time, timecodestamper->vinfo.fps_n,
+          timecodestamper->vinfo.fps_d * GST_SECOND);
+
+      GST_DEBUG_OBJECT (timecodestamper,
+          "Initializing with %" G_GUINT64_FORMAT ":%" G_GUINT64_FORMAT ":%"
+          G_GUINT64_FORMAT ":%" G_GUINT64_FORMAT "", hours, minutes, seconds,
+          frames);
+      gst_video_time_code_init (timecodestamper->current_tc,
+          timecodestamper->vinfo.fps_n,
+          timecodestamper->vinfo.fps_d,
+          NULL,
+          timecodestamper->vinfo.interlace_mode ==
+          GST_VIDEO_INTERLACE_MODE_PROGRESSIVE ? 0 :
+          GST_VIDEO_TIME_CODE_FLAGS_INTERLACED, hours, minutes, seconds, 0, 0);
+      gst_timecodestamper_set_drop_frame (timecodestamper);
+      /* Do not use frames when initializing because maybe we have drop frame */
+      gst_video_time_code_add_frames (timecodestamper->current_tc, frames);
+    }
+  } else if (timecodestamper->source_clock == NULL) {
+    GstClockTime timecode_time;
+
+    timecode_time =
+        gst_video_time_code_nsec_since_daily_jam (timecodestamper->current_tc);
+    ref_time =
+        gst_segment_to_stream_time (&vfilter->segment, GST_FORMAT_TIME,
+        buffer->pts);
+    if (timecode_time != GST_CLOCK_TIME_NONE && ref_time != GST_CLOCK_TIME_NONE
+        && ((timecode_time > ref_time && timecode_time - ref_time > GST_SECOND)
+            || (ref_time > timecode_time
+                && ref_time - timecode_time > GST_SECOND))) {
+      gchar *tc_str =
+          gst_video_time_code_to_string (timecodestamper->current_tc);
+      GST_WARNING_OBJECT (timecodestamper,
+          "Time code %s (stream time %" GST_TIME_FORMAT
+          ") has drifted more than one second from stream time %"
+          GST_TIME_FORMAT, tc_str, GST_TIME_ARGS (timecode_time),
+          GST_TIME_ARGS (ref_time));
+      g_free (tc_str);
+    }
+  }
+  gst_buffer_add_video_time_code_meta (buffer, timecodestamper->current_tc);
+  gst_video_time_code_increment_frame (timecodestamper->current_tc);
+  GST_OBJECT_UNLOCK (timecodestamper);
+  return GST_FLOW_OK;
+}
diff --git a/gst/timecode/gsttimecodestamper.h b/gst/timecode/gsttimecodestamper.h
new file mode 100644
index 0000000..b06912e
--- /dev/null
+++ b/gst/timecode/gsttimecodestamper.h
@@ -0,0 +1,64 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Vivia Nikolaidou <vivia@toolsonair.com>
+ *
+ * gsttimecodestamper.h
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_TIME_CODE_STAMPER_H__
+#define __GST_TIME_CODE_STAMPER_H__
+
+#include <gst/gst.h>
+#include <gst/video/video.h>
+
+#define GST_TYPE_TIME_CODE_STAMPER            (gst_timecodestamper_get_type())
+#define GST_TIME_CODE_STAMPER(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_TIME_CODE_STAMPER,GstTimeCodeStamper))
+#define GST_TIME_CODE_STAMPER_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_TIME_CODE_STAMPER,GstTimeCodeStamperClass))
+#define GST_TIME_CODE_STAMPER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj), GST_TYPE_TIME_CODE_STAMPER,GstTimeCodeStamperClass))
+#define GST_IS_TIME_CODE_STAMPER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_TIME_CODE_STAMPER))
+#define GST_IS_TIME_CODE_STAMPER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_TIME_CODE_STAMPER))
+
+typedef struct _GstTimeCodeStamper GstTimeCodeStamper;
+typedef struct _GstTimeCodeStamperClass GstTimeCodeStamperClass;
+
+/**
+ * GstTimeCodeStamper:
+ *
+ * Opaque data structure.
+ */
+struct _GstTimeCodeStamper
+{
+  GstBaseTransform videofilter;
+
+  /* < private > */
+  gboolean override_existing;
+  gboolean drop_frame;
+  GstVideoTimeCode *current_tc;
+  GstVideoInfo vinfo;
+  GstClock *source_clock;
+};
+
+struct _GstTimeCodeStamperClass
+{
+  GstBaseTransformClass parent_class;
+};
+
+GType gst_timecodestamper_get_type (void);
+
+G_END_DECLS
+#endif /* __GST_TIME_CODE_STAMPER_H__ */
diff --git a/gst/timecode/gsttimecodewait.c b/gst/timecode/gsttimecodewait.c
new file mode 100644
index 0000000..6a8cd4a
--- /dev/null
+++ b/gst/timecode/gsttimecodewait.c
@@ -0,0 +1,639 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Vivia Nikolaidou <vivia@toolsonair.com>
+ *
+ * Based on gstvideoframe-audiolevel.c:
+ * Copyright (C) 2015 Vivia Nikolaidou <vivia@toolsonair.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/**
+ * SECTION:element-timecodewait
+ *
+ * This element acts like a synchronized audio/video "level". It gathers
+ * all audio buffers sent between two video frames, and then sends a message
+ * that contains the RMS value of all samples for these buffers.
+ *
+ * <refsect2>
+ * <title>Example launch line</title>
+ * |[
+ * gst-launch-1.0 filesrc location="my_file" ! decodebin name=d ! "audio/x-raw" ! timecodewait name=l target-timecode-str="00:00:04:00" ! autoaudiosink d. ! "video/x-raw" ! timecodestamper ! l. l. ! queue ! timeoverlay time-mode=time-code ! autovideosink
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gsttimecodewait.h"
+
+#define GST_CAT_DEFAULT gst_timecodewait_debug
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
+
+static GstStaticPadTemplate audio_sink_template =
+GST_STATIC_PAD_TEMPLATE ("asink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/x-raw")
+    );
+
+static GstStaticPadTemplate audio_src_template =
+GST_STATIC_PAD_TEMPLATE ("asrc",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/x-raw")
+    );
+
+static GstStaticPadTemplate video_sink_template =
+GST_STATIC_PAD_TEMPLATE ("vsink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("video/x-raw")
+    );
+
+static GstStaticPadTemplate video_src_template =
+GST_STATIC_PAD_TEMPLATE ("vsrc",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("video/x-raw")
+    );
+
+#define parent_class gst_timecodewait_parent_class
+G_DEFINE_TYPE (GstTimeCodeWait, gst_timecodewait, GST_TYPE_ELEMENT);
+
+enum
+{
+  PROP_0,
+  PROP_TARGET_TIME_CODE,
+  PROP_TARGET_TIME_CODE_STRING
+};
+
+#define DEFAULT_TARGET_TIMECODE_STR "00:00:00:00"
+
+static void gst_timecodewait_set_property (GObject * object,
+    guint prop_id, const GValue * value, GParamSpec * pspec);
+static void gst_timecodewait_get_property (GObject * object,
+    guint prop_id, GValue * value, GParamSpec * pspec);
+
+static GstFlowReturn gst_timecodewait_asink_chain (GstPad * pad,
+    GstObject * parent, GstBuffer * inbuf);
+static GstFlowReturn gst_timecodewait_vsink_chain (GstPad * pad,
+    GstObject * parent, GstBuffer * inbuf);
+static gboolean gst_timecodewait_asink_event (GstPad * pad,
+    GstObject * parent, GstEvent * event);
+static gboolean gst_timecodewait_vsink_event (GstPad * pad,
+    GstObject * parent, GstEvent * event);
+static GstIterator *gst_timecodewait_iterate_internal_links (GstPad *
+    pad, GstObject * parent);
+
+static void gst_timecodewait_finalize (GObject * gobject);
+
+static GstStateChangeReturn gst_timecodewait_change_state (GstElement *
+    element, GstStateChange transition);
+
+static void
+gst_timecodewait_class_init (GstTimeCodeWaitClass * klass)
+{
+  GstElementClass *gstelement_class;
+  GObjectClass *gobject_class = (GObjectClass *) klass;
+
+  GST_DEBUG_CATEGORY_INIT (gst_timecodewait_debug,
+      "timecodewait", 0, "timecodewait");
+
+  gstelement_class = (GstElementClass *) klass;
+
+  gst_element_class_set_static_metadata (gstelement_class,
+      "Timecode Wait", "Filter/Audio/Video",
+      "Drops all audio/video until a specific timecode has been reached",
+      "Vivia Nikolaidou <vivia@toolsonair.com>");
+
+  gobject_class->set_property = gst_timecodewait_set_property;
+  gobject_class->get_property = gst_timecodewait_get_property;
+
+  g_object_class_install_property (gobject_class, PROP_TARGET_TIME_CODE_STRING,
+      g_param_spec_string ("target-timecode-string", "Target timecode (string)",
+          "Timecode to wait for (string). Must take the form 00:00:00:00",
+          DEFAULT_TARGET_TIMECODE_STR,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, PROP_TARGET_TIME_CODE,
+      g_param_spec_boxed ("target-timecode", "Target timecode (object)",
+          "Timecode to wait for (object)",
+          GST_TYPE_VIDEO_TIME_CODE,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  gobject_class->finalize = gst_timecodewait_finalize;
+  gstelement_class->change_state = gst_timecodewait_change_state;
+
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &audio_src_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &audio_sink_template);
+
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &video_src_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &video_sink_template);
+}
+
+static void
+gst_timecodewait_init (GstTimeCodeWait * self)
+{
+  self->asinkpad =
+      gst_pad_new_from_static_template (&audio_sink_template, "asink");
+  gst_pad_set_chain_function (self->asinkpad,
+      GST_DEBUG_FUNCPTR (gst_timecodewait_asink_chain));
+  gst_pad_set_event_function (self->asinkpad,
+      GST_DEBUG_FUNCPTR (gst_timecodewait_asink_event));
+  gst_pad_set_iterate_internal_links_function (self->asinkpad,
+      GST_DEBUG_FUNCPTR (gst_timecodewait_iterate_internal_links));
+  gst_element_add_pad (GST_ELEMENT (self), self->asinkpad);
+
+  self->vsinkpad =
+      gst_pad_new_from_static_template (&video_sink_template, "vsink");
+  gst_pad_set_chain_function (self->vsinkpad,
+      GST_DEBUG_FUNCPTR (gst_timecodewait_vsink_chain));
+  gst_pad_set_event_function (self->vsinkpad,
+      GST_DEBUG_FUNCPTR (gst_timecodewait_vsink_event));
+  gst_pad_set_iterate_internal_links_function (self->vsinkpad,
+      GST_DEBUG_FUNCPTR (gst_timecodewait_iterate_internal_links));
+  gst_element_add_pad (GST_ELEMENT (self), self->vsinkpad);
+
+  self->asrcpad =
+      gst_pad_new_from_static_template (&audio_src_template, "asrc");
+  gst_pad_set_iterate_internal_links_function (self->asrcpad,
+      GST_DEBUG_FUNCPTR (gst_timecodewait_iterate_internal_links));
+  gst_element_add_pad (GST_ELEMENT (self), self->asrcpad);
+
+  self->vsrcpad =
+      gst_pad_new_from_static_template (&video_src_template, "vsrc");
+  gst_pad_set_iterate_internal_links_function (self->vsrcpad,
+      GST_DEBUG_FUNCPTR (gst_timecodewait_iterate_internal_links));
+  gst_element_add_pad (GST_ELEMENT (self), self->vsrcpad);
+
+  GST_PAD_SET_PROXY_CAPS (self->asinkpad);
+  GST_PAD_SET_PROXY_ALLOCATION (self->asinkpad);
+
+  GST_PAD_SET_PROXY_CAPS (self->asrcpad);
+  GST_PAD_SET_PROXY_SCHEDULING (self->asrcpad);
+
+  GST_PAD_SET_PROXY_CAPS (self->vsinkpad);
+  GST_PAD_SET_PROXY_ALLOCATION (self->vsinkpad);
+
+  GST_PAD_SET_PROXY_CAPS (self->vsrcpad);
+  GST_PAD_SET_PROXY_SCHEDULING (self->vsrcpad);
+
+  self->running_time_of_timecode = GST_CLOCK_TIME_NONE;
+
+  self->video_eos_flag = FALSE;
+  self->audio_flush_flag = FALSE;
+  self->shutdown_flag = FALSE;
+  self->from_string = FALSE;
+  self->tc = gst_video_time_code_new_empty ();
+
+  g_mutex_init (&self->mutex);
+  g_cond_init (&self->cond);
+}
+
+static GstStateChangeReturn
+gst_timecodewait_change_state (GstElement * element, GstStateChange transition)
+{
+  GstStateChangeReturn ret;
+  GstTimeCodeWait *self = GST_TIMECODEWAIT (element);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_PAUSED_TO_READY:
+      g_mutex_lock (&self->mutex);
+      self->shutdown_flag = TRUE;
+      g_cond_signal (&self->cond);
+      g_mutex_unlock (&self->mutex);
+      break;
+    case GST_STATE_CHANGE_READY_TO_PAUSED:
+      g_mutex_lock (&self->mutex);
+      self->shutdown_flag = FALSE;
+      self->video_eos_flag = FALSE;
+      self->audio_flush_flag = FALSE;
+      g_mutex_unlock (&self->mutex);
+    default:
+      break;
+  }
+
+  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_PAUSED_TO_READY:
+      g_mutex_lock (&self->mutex);
+      self->running_time_of_timecode = GST_CLOCK_TIME_NONE;
+      gst_segment_init (&self->asegment, GST_FORMAT_UNDEFINED);
+      self->asegment.position = GST_CLOCK_TIME_NONE;
+      gst_segment_init (&self->vsegment, GST_FORMAT_UNDEFINED);
+      self->vsegment.position = GST_CLOCK_TIME_NONE;
+      g_mutex_unlock (&self->mutex);
+      break;
+    default:
+      break;
+  }
+
+  return ret;
+}
+
+static void
+gst_timecodewait_finalize (GObject * object)
+{
+  GstTimeCodeWait *self = GST_TIMECODEWAIT (object);
+
+  if (self->tc) {
+    gst_video_time_code_free (self->tc);
+    self->tc = NULL;
+  }
+
+  g_mutex_clear (&self->mutex);
+  g_cond_clear (&self->cond);
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+gst_timecodewait_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstTimeCodeWait *self = GST_TIMECODEWAIT (object);
+
+  switch (prop_id) {
+    case PROP_TARGET_TIME_CODE_STRING:{
+      if (self->tc)
+        g_value_take_string (value, gst_video_time_code_to_string (self->tc));
+      else
+        g_value_set_string (value, DEFAULT_TARGET_TIMECODE_STR);
+      break;
+    }
+    case PROP_TARGET_TIME_CODE:{
+      g_value_set_boxed (value, self->tc);
+      break;
+    }
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_timecodewait_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstTimeCodeWait *self = GST_TIMECODEWAIT (object);
+
+  switch (prop_id) {
+    case PROP_TARGET_TIME_CODE_STRING:{
+      gchar **parts;
+      const gchar *tc_str;
+      guint hours, minutes, seconds, frames;
+
+      tc_str = g_value_get_string (value);
+      parts = g_strsplit (tc_str, ":", 4);
+      if (!parts || parts[3] == NULL) {
+        GST_ERROR_OBJECT (self,
+            "Error: Could not parse timecode %s. Please input a timecode in the form 00:00:00:00",
+            tc_str);
+        g_strfreev (parts);
+        return;
+      }
+      hours = g_ascii_strtoll (parts[0], NULL, 10);
+      minutes = g_ascii_strtoll (parts[1], NULL, 10);
+      seconds = g_ascii_strtoll (parts[2], NULL, 10);
+      frames = g_ascii_strtoll (parts[3], NULL, 10);
+      gst_video_time_code_init (self->tc, 0, 1, NULL, 0, hours, minutes,
+          seconds, frames, 0);
+      if (self->vinfo.finfo != NULL) {
+        self->tc->config.fps_n = self->vinfo.fps_n;
+        self->tc->config.fps_d = self->vinfo.fps_d;
+      }
+      self->from_string = TRUE;
+      g_strfreev (parts);
+      break;
+    }
+    case PROP_TARGET_TIME_CODE:{
+      if (self->tc)
+        gst_video_time_code_free (self->tc);
+      self->tc = g_value_dup_boxed (value);
+      self->from_string = FALSE;
+      break;
+    }
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static gboolean
+gst_timecodewait_vsink_event (GstPad * pad, GstObject * parent,
+    GstEvent * event)
+{
+  GstTimeCodeWait *self = GST_TIMECODEWAIT (parent);
+  GST_LOG_OBJECT (pad, "Got %s event", GST_EVENT_TYPE_NAME (event));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_SEGMENT:
+      g_mutex_lock (&self->mutex);
+      gst_event_copy_segment (event, &self->vsegment);
+      if (self->vsegment.format != GST_FORMAT_TIME) {
+        GST_ERROR_OBJECT (self, "Invalid segment format");
+        g_mutex_unlock (&self->mutex);
+        gst_event_unref (event);
+        return FALSE;
+      }
+      self->vsegment.position = GST_CLOCK_TIME_NONE;
+      g_mutex_unlock (&self->mutex);
+      break;
+    case GST_EVENT_GAP:
+      gst_event_unref (event);
+      return TRUE;
+    case GST_EVENT_EOS:
+      g_mutex_lock (&self->mutex);
+      self->video_eos_flag = TRUE;
+      g_cond_signal (&self->cond);
+      g_mutex_unlock (&self->mutex);
+      break;
+    case GST_EVENT_FLUSH_START:
+      g_mutex_lock (&self->mutex);
+      gst_segment_init (&self->vsegment, GST_FORMAT_UNDEFINED);
+      g_cond_signal (&self->cond);
+      g_mutex_unlock (&self->mutex);
+      self->vsegment.position = GST_CLOCK_TIME_NONE;
+      break;
+    case GST_EVENT_CAPS:{
+      GstCaps *caps;
+      gst_event_parse_caps (event, &caps);
+      GST_DEBUG_OBJECT (self, "Got caps %" GST_PTR_FORMAT, caps);
+      if (!gst_video_info_from_caps (&self->vinfo, caps)) {
+        gst_event_unref (event);
+        return FALSE;
+      }
+      g_mutex_lock (&self->mutex);
+      if (self->from_string) {
+        self->tc->config.fps_n = self->vinfo.fps_n;
+        self->tc->config.fps_d = self->vinfo.fps_d;
+      }
+      g_mutex_unlock (&self->mutex);
+      break;
+    }
+    default:
+      break;
+  }
+  return gst_pad_event_default (pad, parent, event);
+}
+
+static gboolean
+gst_timecodewait_asink_event (GstPad * pad, GstObject * parent,
+    GstEvent * event)
+{
+  GstTimeCodeWait *self = GST_TIMECODEWAIT (parent);
+  GST_LOG_OBJECT (pad, "Got %s event", GST_EVENT_TYPE_NAME (event));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_SEGMENT:
+      g_mutex_lock (&self->mutex);
+      self->running_time_of_timecode = GST_CLOCK_TIME_NONE;
+      gst_event_copy_segment (event, &self->asegment);
+      if (self->asegment.format != GST_FORMAT_TIME) {
+        GST_ERROR_OBJECT (self, "Invalid segment format");
+        g_mutex_unlock (&self->mutex);
+        return FALSE;
+      }
+      self->asegment.position = GST_CLOCK_TIME_NONE;
+      g_mutex_unlock (&self->mutex);
+      break;
+    case GST_EVENT_FLUSH_START:
+      g_mutex_lock (&self->mutex);
+      self->audio_flush_flag = TRUE;
+      g_cond_signal (&self->cond);
+      g_mutex_unlock (&self->mutex);
+      break;
+    case GST_EVENT_FLUSH_STOP:
+      g_mutex_lock (&self->mutex);
+      self->audio_flush_flag = FALSE;
+      self->running_time_of_timecode = GST_CLOCK_TIME_NONE;
+      gst_segment_init (&self->asegment, GST_FORMAT_UNDEFINED);
+      self->asegment.position = GST_CLOCK_TIME_NONE;
+      g_mutex_unlock (&self->mutex);
+      break;
+    case GST_EVENT_CAPS:{
+      GstCaps *caps;
+      gst_event_parse_caps (event, &caps);
+      GST_DEBUG_OBJECT (self, "Got caps %" GST_PTR_FORMAT, caps);
+      g_mutex_lock (&self->mutex);
+      if (!gst_audio_info_from_caps (&self->ainfo, caps)) {
+        g_mutex_unlock (&self->mutex);
+        return FALSE;
+      }
+      self->running_time_of_timecode = GST_CLOCK_TIME_NONE;
+      g_mutex_unlock (&self->mutex);
+      break;
+    }
+    default:
+      break;
+  }
+
+  return gst_pad_event_default (pad, parent, event);
+}
+
+static GstFlowReturn
+gst_timecodewait_vsink_chain (GstPad * pad, GstObject * parent,
+    GstBuffer * inbuf)
+{
+  GstClockTime timestamp;
+  GstTimeCodeWait *self = GST_TIMECODEWAIT (parent);
+  GstClockTime duration;
+  GstVideoTimeCode *tc = NULL;
+  GstVideoTimeCodeMeta *tc_meta;
+
+  timestamp = GST_BUFFER_TIMESTAMP (inbuf);
+  if (timestamp == GST_CLOCK_TIME_NONE) {
+    gst_buffer_unref (inbuf);
+    return GST_FLOW_ERROR;
+  }
+  g_mutex_lock (&self->mutex);
+  self->vsegment.position = timestamp;
+  duration = GST_BUFFER_DURATION (inbuf);
+  if (duration != GST_CLOCK_TIME_NONE)
+    self->vsegment.position += duration;
+  tc_meta = gst_buffer_get_video_time_code_meta (inbuf);
+  if (tc_meta)
+    tc = &tc_meta->tc;
+  if (self->tc != NULL && tc != NULL) {
+    if (gst_video_time_code_compare (tc, self->tc) < 0
+        && self->running_time_of_timecode == GST_CLOCK_TIME_NONE) {
+      GST_DEBUG_OBJECT (self, "Timecode not yet reached, ignoring frame");
+      gst_buffer_unref (inbuf);
+      inbuf = NULL;
+    } else if (self->running_time_of_timecode == GST_CLOCK_TIME_NONE) {
+      GST_INFO_OBJECT (self, "Target timecode reached at %" GST_TIME_FORMAT,
+          GST_TIME_ARGS (self->vsegment.position));
+      self->running_time_of_timecode =
+          gst_segment_to_running_time (&self->vsegment, GST_FORMAT_TIME,
+          self->vsegment.position);
+    }
+  }
+  g_cond_signal (&self->cond);
+  g_mutex_unlock (&self->mutex);
+  if (inbuf)
+    return gst_pad_push (self->vsrcpad, inbuf);
+  else
+    return GST_FLOW_OK;
+}
+
+/*
+ * assumes sign1 and sign2 are either 1 or -1
+ * returns 0 if sign1*num1 == sign2*num2
+ * -1 if sign1*num1 < sign2*num2
+ *  1 if sign1*num1 > sign2*num2
+ */
+static gint
+gst_timecodewait_compare_guint64_with_signs (gint sign1,
+    guint64 num1, gint sign2, guint64 num2)
+{
+  if (sign1 != sign2)
+    return sign1;
+  else if (num1 == num2)
+    return 0;
+  else
+    return num1 > num2 ? sign1 : -sign1;
+}
+
+static GstFlowReturn
+gst_timecodewait_asink_chain (GstPad * pad, GstObject * parent,
+    GstBuffer * inbuf)
+{
+  GstClockTime timestamp;
+  GstTimeCodeWait *self = GST_TIMECODEWAIT (parent);
+  GstClockTime current_running_time;
+  GstClockTime video_running_time = GST_CLOCK_TIME_NONE;
+  GstClockTime duration;
+  GstClockTime running_time_at_end = GST_CLOCK_TIME_NONE;
+  gint asign, vsign = 1, esign = 1;
+
+  timestamp = GST_BUFFER_TIMESTAMP (inbuf);
+  if (timestamp == GST_CLOCK_TIME_NONE) {
+    gst_buffer_unref (inbuf);
+    return GST_FLOW_ERROR;
+  }
+  g_mutex_lock (&self->mutex);
+  self->asegment.position = timestamp;
+  asign =
+      gst_segment_to_running_time_full (&self->asegment, GST_FORMAT_TIME,
+      self->asegment.position, &current_running_time);
+  if (asign == 0) {
+    g_mutex_unlock (&self->mutex);
+    gst_buffer_unref (inbuf);
+    GST_ERROR_OBJECT (self, "Could not get current running time");
+    return GST_FLOW_ERROR;
+  }
+  if (self->vsegment.format == GST_FORMAT_TIME) {
+    vsign =
+        gst_segment_to_running_time_full (&self->vsegment, GST_FORMAT_TIME,
+        self->vsegment.position, &video_running_time);
+    if (vsign == 0) {
+      video_running_time = GST_CLOCK_TIME_NONE;
+    }
+  }
+  while (!(self->video_eos_flag || self->audio_flush_flag
+          || self->shutdown_flag) && (video_running_time == GST_CLOCK_TIME_NONE
+          || gst_timecodewait_compare_guint64_with_signs (asign,
+              current_running_time, vsign, video_running_time) == 1)
+      && self->running_time_of_timecode == GST_CLOCK_TIME_NONE) {
+    g_cond_wait (&self->cond, &self->mutex);
+    vsign =
+        gst_segment_to_running_time_full (&self->vsegment, GST_FORMAT_TIME,
+        self->vsegment.position, &video_running_time);
+    if (vsign == 0) {
+      video_running_time = GST_CLOCK_TIME_NONE;
+    }
+  }
+  if (self->audio_flush_flag || self->shutdown_flag) {
+    GST_DEBUG_OBJECT (self, "Shutting down, ignoring frame");
+    gst_buffer_unref (inbuf);
+    return GST_FLOW_FLUSHING;
+  }
+  duration = GST_BUFFER_DURATION (inbuf);
+  if (duration != GST_CLOCK_TIME_NONE) {
+    esign =
+        gst_segment_to_running_time_full (&self->asegment, GST_FORMAT_TIME,
+        self->asegment.position + duration, &running_time_at_end);
+    if (esign == 0) {
+      g_mutex_unlock (&self->mutex);
+      GST_ERROR_OBJECT (self, "Could not get running time at end");
+      gst_buffer_unref (inbuf);
+      return GST_FLOW_ERROR;
+    }
+  }
+  if (self->running_time_of_timecode == GST_CLOCK_TIME_NONE
+      || gst_timecodewait_compare_guint64_with_signs (esign,
+          running_time_at_end, 1, self->running_time_of_timecode) == -1) {
+    GST_DEBUG_OBJECT (self,
+        "Dropped an audio buf at %" GST_TIME_FORMAT " with timecode %"
+        GST_TIME_FORMAT " video timecode %" GST_TIME_FORMAT,
+        GST_TIME_ARGS (current_running_time),
+        GST_TIME_ARGS (self->running_time_of_timecode),
+        GST_TIME_ARGS (video_running_time));
+    gst_buffer_unref (inbuf);
+    inbuf = NULL;
+  } else if (current_running_time < self->running_time_of_timecode
+      && running_time_at_end > self->running_time_of_timecode) {
+    GstSegment asegment2 = self->asegment;
+
+    gst_segment_set_running_time (&asegment2, GST_FORMAT_TIME,
+        self->running_time_of_timecode);
+    inbuf =
+        gst_audio_buffer_clip (inbuf, &asegment2, self->ainfo.rate,
+        self->ainfo.bpf);
+  }
+  g_mutex_unlock (&self->mutex);
+  if (inbuf)
+    return gst_pad_push (self->asrcpad, inbuf);
+  else
+    return GST_FLOW_OK;
+}
+
+static GstIterator *
+gst_timecodewait_iterate_internal_links (GstPad * pad, GstObject * parent)
+{
+  GstIterator *it = NULL;
+  GstPad *opad;
+  GValue val = G_VALUE_INIT;
+  GstTimeCodeWait *self = GST_TIMECODEWAIT (parent);
+
+  if (self->asinkpad == pad)
+    opad = gst_object_ref (self->asrcpad);
+  else if (self->asrcpad == pad)
+    opad = gst_object_ref (self->asinkpad);
+  else if (self->vsinkpad == pad)
+    opad = gst_object_ref (self->vsrcpad);
+  else if (self->vsrcpad == pad)
+    opad = gst_object_ref (self->vsinkpad);
+  else
+    goto out;
+
+  g_value_init (&val, GST_TYPE_PAD);
+  g_value_set_object (&val, opad);
+  it = gst_iterator_new_single (GST_TYPE_PAD, &val);
+  g_value_unset (&val);
+
+  gst_object_unref (opad);
+
+out:
+  return it;
+}
diff --git a/gst/timecode/gsttimecodewait.h b/gst/timecode/gsttimecodewait.h
new file mode 100644
index 0000000..cdb2525
--- /dev/null
+++ b/gst/timecode/gsttimecodewait.h
@@ -0,0 +1,70 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Vivia Nikolaidou <vivia@toolsonair.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_TIMECODEWAIT_H__
+#define __GST_TIMECODEWAIT_H__
+
+#include <gst/gst.h>
+#include <gst/audio/audio.h>
+#include <gst/video/video.h>
+
+G_BEGIN_DECLS
+#define GST_TYPE_TIMECODEWAIT                    (gst_timecodewait_get_type())
+#define GST_TIMECODEWAIT(obj)                    (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_TIMECODEWAIT,GstTimeCodeWait))
+#define GST_IS_TIMECODEWAIT(obj)                 (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_TIMECODEWAIT))
+#define GST_TIMECODEWAIT_CLASS(klass)            (G_TYPE_CHECK_CLASS_CAST((klass) ,GST_TYPE_TIMECODEWAIT,GstTimeCodeWaitClass))
+#define GST_IS_TIMECODEWAIT_CLASS(klass)         (G_TYPE_CHECK_CLASS_TYPE((klass) ,GST_TYPE_TIMECODEWAIT))
+#define GST_TIMECODEWAIT_GET_CLASS(obj)          (G_TYPE_INSTANCE_GET_CLASS((obj) ,GST_TYPE_TIMECODEWAIT,GstTimeCodeWaitClass))
+typedef struct _GstTimeCodeWait GstTimeCodeWait;
+typedef struct _GstTimeCodeWaitClass GstTimeCodeWaitClass;
+
+struct _GstTimeCodeWait
+{
+  GstElement parent;
+
+  GstVideoTimeCode *tc;
+  gboolean from_string;
+
+  GstPad *asrcpad, *asinkpad, *vsrcpad, *vsinkpad;
+
+  GstAudioInfo ainfo;
+  GstVideoInfo vinfo;
+
+  GstSegment asegment, vsegment;
+
+  GstClockTime running_time_of_timecode;
+
+  gboolean video_eos_flag;
+  gboolean audio_flush_flag;
+  gboolean shutdown_flag;
+
+  GCond cond;
+  GMutex mutex;
+};
+
+struct _GstTimeCodeWaitClass
+{
+  GstElementClass parent_class;
+};
+
+GType gst_timecodewait_get_type (void);
+
+G_END_DECLS
+#endif /* __GST_TIMECODEWAIT_H__ */
diff --git a/gst/timecode/plugin.c b/gst/timecode/plugin.c
new file mode 100644
index 0000000..8bfcbe9
--- /dev/null
+++ b/gst/timecode/plugin.c
@@ -0,0 +1,48 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Vivia Nikolaidou <vivia@toolsonair.com>
+ *
+ * plugin.c
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gsttimecodestamper.h"
+#include "gsttimecodewait.h"
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+  gboolean ret;
+
+  ret = gst_element_register (plugin, "timecodestamper", GST_RANK_NONE,
+      GST_TYPE_TIME_CODE_STAMPER);
+
+  ret &= gst_element_register (plugin, "timecodewait", GST_RANK_NONE,
+      GST_TYPE_TIMECODEWAIT);
+
+  return ret;
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    timecode,
+    "Timecode-related elements",
+    plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN);
diff --git a/gst/tta/Makefile.in b/gst/tta/Makefile.in
index 034146d..f8a5a25 100644
--- a/gst/tta/Makefile.in
+++ b/gst/tta/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/tta/gstttadec.c b/gst/tta/gstttadec.c
index f4e29a2..1aa9d95 100644
--- a/gst/tta/gstttadec.c
+++ b/gst/tta/gstttadec.c
@@ -171,10 +171,8 @@
 
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
   gst_element_class_set_static_metadata (element_class, "TTA audio decoder",
       "Codec/Decoder/Audio",
       "Decode TTA audio data", "Arwed v. Merkatz <v.merkatz@gmx.net>");
diff --git a/gst/tta/gstttaparse.c b/gst/tta/gstttaparse.c
index 9d3b8b4..485a197 100644
--- a/gst/tta/gstttaparse.c
+++ b/gst/tta/gstttaparse.c
@@ -92,10 +92,8 @@
 
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
   gst_element_class_set_static_metadata (element_class, "TTA file parser",
       "Codec/Demuxer/Audio",
       "Parses TTA files", "Arwed v. Merkatz <v.merkatz@gmx.net>");
@@ -470,9 +468,7 @@
   if (ret == GST_FLOW_UNEXPECTED) {
     gst_pad_push_event (ttaparse->srcpad, gst_event_new_eos ());
   } else if (ret < GST_FLOW_UNEXPECTED || ret == GST_FLOW_NOT_LINKED) {
-    GST_ELEMENT_ERROR (ttaparse, STREAM, FAILED,
-        ("Internal data stream error."),
-        ("streaming stopped, reason %s", gst_flow_get_name (ret)));
+    GST_ELEMENT_FLOW_ERROR (ttaparse, ret);
     gst_pad_push_event (ttaparse->srcpad, gst_event_new_eos ());
   }
 }
diff --git a/gst/videofilters/Makefile.in b/gst/videofilters/Makefile.in
index 65f842a..88928cc 100644
--- a/gst/videofilters/Makefile.in
+++ b/gst/videofilters/Makefile.in
@@ -308,6 +308,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -329,6 +331,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -378,6 +382,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -523,6 +529,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -649,8 +657,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -693,8 +699,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/videofilters/gstvideodiff.c b/gst/videofilters/gstvideodiff.c
index 6f5b35e..457ebd1 100644
--- a/gst/videofilters/gstvideodiff.c
+++ b/gst/videofilters/gstvideodiff.c
@@ -1,5 +1,5 @@
 /* GStreamer
- * Copyright (C) 2013 FIXME <fixme@example.com>
+ * Copyright (C) 2013 David Schleef <ds@schleef.org>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -19,14 +19,14 @@
 /**
  * SECTION:element-gstvideodiff
  *
- * The videodiff element does FIXME stuff.
+ * The videodiff element highlights the difference between a frame and its
+ * previous on the luma plane.
  *
  * <refsect2>
  * <title>Example launch line</title>
  * |[
- * gst-launch-1.0 -v fakesrc ! videodiff ! FIXME ! fakesink
+ * gst-launch-1.0 -v videotestsrc pattern=ball ! videodiff ! videoconvert ! autovideosink
  * ]|
- * FIXME Describe what the pipeline does.
  * </refsect2>
  */
 
@@ -47,24 +47,13 @@
 static GstFlowReturn gst_video_diff_transform_frame (GstVideoFilter * filter,
     GstVideoFrame * inframe, GstVideoFrame * outframe);
 
-enum
-{
-  PROP_0
-};
-
-/* pad templates */
-
-/* FIXME: add/remove formats you can handle */
 #define VIDEO_SRC_CAPS \
-    GST_VIDEO_CAPS_MAKE("{ I420, Y444, Y42B, UYVY, RGBA }")
+    GST_VIDEO_CAPS_MAKE("{ I420, Y444, Y42B, Y41B }")
 
-/* FIXME: add/remove formats you can handle */
 #define VIDEO_SINK_CAPS \
-    GST_VIDEO_CAPS_MAKE("{ I420, Y444, Y42B, UYVY, RGBA }")
+    GST_VIDEO_CAPS_MAKE("{ I420, Y444, Y42B, Y41B }")
 
 
-/* class initialization */
-
 G_DEFINE_TYPE_WITH_CODE (GstVideoDiff, gst_video_diff, GST_TYPE_VIDEO_FILTER,
     GST_DEBUG_CATEGORY_INIT (gst_video_diff_debug_category, "videodiff", 0,
         "debug category for videodiff element"));
@@ -74,8 +63,6 @@
 {
   GstVideoFilterClass *video_filter_class = GST_VIDEO_FILTER_CLASS (klass);
 
-  /* Setting up pads and setting metadata should be moved to
-     base_class_init if you intend to subclass this class. */
   gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
       gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
           gst_caps_from_string (VIDEO_SRC_CAPS)));
@@ -84,12 +71,12 @@
           gst_caps_from_string (VIDEO_SINK_CAPS)));
 
   gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass),
-      "FIXME Long name", "Generic", "FIXME Description",
-      "FIXME <fixme@example.com>");
+      "Video Diff", "Video/Filter",
+      "Visualize differences between adjacent video frames",
+      "David Schleef <ds@schleef.org>");
 
   video_filter_class->transform_frame =
       GST_DEBUG_FUNCPTR (gst_video_diff_transform_frame);
-
 }
 
 static void
diff --git a/gst/videofilters/gstvideodiff.h b/gst/videofilters/gstvideodiff.h
index c91844a..8d76d70 100644
--- a/gst/videofilters/gstvideodiff.h
+++ b/gst/videofilters/gstvideodiff.h
@@ -1,5 +1,5 @@
 /* GStreamer
- * Copyright (C) 2013 FIXME <fixme@example.com>
+ * Copyright (C) 2013 David Schleef <ds@schleef.org>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
diff --git a/gst/videoframe_audiolevel/Makefile.in b/gst/videoframe_audiolevel/Makefile.in
index 61b80d8..c5a6d3a 100644
--- a/gst/videoframe_audiolevel/Makefile.in
+++ b/gst/videoframe_audiolevel/Makefile.in
@@ -305,6 +305,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -326,6 +328,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -375,6 +379,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -520,6 +526,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -646,8 +654,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,8 +696,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/videoframe_audiolevel/gstvideoframe-audiolevel.c b/gst/videoframe_audiolevel/gstvideoframe-audiolevel.c
index ade9966..46fda77 100644
--- a/gst/videoframe_audiolevel/gstvideoframe-audiolevel.c
+++ b/gst/videoframe_audiolevel/gstvideoframe-audiolevel.c
@@ -122,15 +122,15 @@
   gobject_class->finalize = gst_videoframe_audiolevel_finalize;
   gstelement_class->change_state = gst_videoframe_audiolevel_change_state;
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&audio_src_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&audio_sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &audio_src_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &audio_sink_template);
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&video_src_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&video_sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &video_src_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &video_sink_template);
 }
 
 static void
diff --git a/gst/videomeasure/Makefile.in b/gst/videomeasure/Makefile.in
index d99030c..c173c8c 100644
--- a/gst/videomeasure/Makefile.in
+++ b/gst/videomeasure/Makefile.in
@@ -306,6 +306,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -327,6 +329,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -376,6 +380,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -521,6 +527,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -647,8 +655,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,8 +697,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/videomeasure/gstvideomeasure_collector.c b/gst/videomeasure/gstvideomeasure_collector.c
index 448adc4..3778bbf 100644
--- a/gst/videomeasure/gstvideomeasure_collector.c
+++ b/gst/videomeasure/gstvideomeasure_collector.c
@@ -320,10 +320,10 @@
       "Collect measurements from a measuring element",
       "Руслан Ижбулатов <lrn _at_ gmail _dot_ com>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_measure_collector_sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_measure_collector_src_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_measure_collector_sink_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_measure_collector_src_template);
 }
 
 static void
diff --git a/gst/videomeasure/gstvideomeasure_ssim.c b/gst/videomeasure/gstvideomeasure_ssim.c
index 13ba035..d0a2c9d 100644
--- a/gst/videomeasure/gstvideomeasure_ssim.c
+++ b/gst/videomeasure/gstvideomeasure_ssim.c
@@ -1095,15 +1095,14 @@
           "(only when using Gaussian window).",
           G_MINFLOAT, 10, 1.5, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_ssim_src_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_ssim_sink_original_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_ssim_sink_modified_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_ssim_src_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_ssim_sink_original_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_ssim_sink_modified_template);
   gst_element_class_set_static_metadata (gstelement_class, "SSim",
-      "Filter/Analyzer/Video",
-      "Calculate Y-SSIM for n+2 YUV video streams",
+      "Filter/Analyzer/Video", "Calculate Y-SSIM for n+2 YUV video streams",
       "Руслан Ижбулатов <lrn1986 _at_ gmail _dot_ com>");
 
   parent_class = g_type_class_peek_parent (klass);
diff --git a/gst/videoparsers/Makefile.am b/gst/videoparsers/Makefile.am
index f1b0a11..f81cc0e 100644
--- a/gst/videoparsers/Makefile.am
+++ b/gst/videoparsers/Makefile.am
@@ -5,6 +5,7 @@
 	gstdiracparse.c dirac_parse.c \
 	gsth264parse.c gstmpegvideoparse.c \
 	gstmpeg4videoparse.c \
+	gstjpeg2000parse.c \
 	gstpngparse.c \
 	gstvc1parse.c \
 	gsth265parse.c
@@ -29,6 +30,7 @@
 	gstdiracparse.h dirac_parse.h \
 	gsth264parse.h gstmpegvideoparse.h \
 	gstmpeg4videoparse.h \
+	gstjpeg2000parse.h \
 	gstpngparse.h \
 	gstvc1parse.h \
 	gsth265parse.h
diff --git a/gst/videoparsers/Makefile.in b/gst/videoparsers/Makefile.in
index 9b99433..97892f4 100644
--- a/gst/videoparsers/Makefile.in
+++ b/gst/videoparsers/Makefile.in
@@ -175,6 +175,7 @@
 	libgstvideoparsersbad_la-gsth264parse.lo \
 	libgstvideoparsersbad_la-gstmpegvideoparse.lo \
 	libgstvideoparsersbad_la-gstmpeg4videoparse.lo \
+	libgstvideoparsersbad_la-gstjpeg2000parse.lo \
 	libgstvideoparsersbad_la-gstpngparse.lo \
 	libgstvideoparsersbad_la-gstvc1parse.lo \
 	libgstvideoparsersbad_la-gsth265parse.lo
@@ -315,6 +316,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -336,6 +339,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -385,6 +390,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -530,6 +537,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -656,8 +665,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -700,8 +707,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -796,6 +808,7 @@
 	gstdiracparse.c dirac_parse.c \
 	gsth264parse.c gstmpegvideoparse.c \
 	gstmpeg4videoparse.c \
+	gstjpeg2000parse.c \
 	gstpngparse.c \
 	gstvc1parse.c \
 	gsth265parse.c
@@ -821,6 +834,7 @@
 	gstdiracparse.h dirac_parse.h \
 	gsth264parse.h gstmpegvideoparse.h \
 	gstmpeg4videoparse.h \
+	gstjpeg2000parse.h \
 	gstpngparse.h \
 	gstvc1parse.h \
 	gsth265parse.h
@@ -908,6 +922,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideoparsersbad_la-gsth263parse.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideoparsersbad_la-gsth264parse.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideoparsersbad_la-gsth265parse.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideoparsersbad_la-gstjpeg2000parse.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideoparsersbad_la-gstmpeg4videoparse.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideoparsersbad_la-gstmpegvideoparse.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideoparsersbad_la-gstpngparse.Plo@am__quote@
@@ -995,6 +1010,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideoparsersbad_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideoparsersbad_la_CFLAGS) $(CFLAGS) -c -o libgstvideoparsersbad_la-gstmpeg4videoparse.lo `test -f 'gstmpeg4videoparse.c' || echo '$(srcdir)/'`gstmpeg4videoparse.c
 
+libgstvideoparsersbad_la-gstjpeg2000parse.lo: gstjpeg2000parse.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideoparsersbad_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideoparsersbad_la_CFLAGS) $(CFLAGS) -MT libgstvideoparsersbad_la-gstjpeg2000parse.lo -MD -MP -MF $(DEPDIR)/libgstvideoparsersbad_la-gstjpeg2000parse.Tpo -c -o libgstvideoparsersbad_la-gstjpeg2000parse.lo `test -f 'gstjpeg2000parse.c' || echo '$(srcdir)/'`gstjpeg2000parse.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideoparsersbad_la-gstjpeg2000parse.Tpo $(DEPDIR)/libgstvideoparsersbad_la-gstjpeg2000parse.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstjpeg2000parse.c' object='libgstvideoparsersbad_la-gstjpeg2000parse.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideoparsersbad_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideoparsersbad_la_CFLAGS) $(CFLAGS) -c -o libgstvideoparsersbad_la-gstjpeg2000parse.lo `test -f 'gstjpeg2000parse.c' || echo '$(srcdir)/'`gstjpeg2000parse.c
+
 libgstvideoparsersbad_la-gstpngparse.lo: gstpngparse.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideoparsersbad_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideoparsersbad_la_CFLAGS) $(CFLAGS) -MT libgstvideoparsersbad_la-gstpngparse.lo -MD -MP -MF $(DEPDIR)/libgstvideoparsersbad_la-gstpngparse.Tpo -c -o libgstvideoparsersbad_la-gstpngparse.lo `test -f 'gstpngparse.c' || echo '$(srcdir)/'`gstpngparse.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideoparsersbad_la-gstpngparse.Tpo $(DEPDIR)/libgstvideoparsersbad_la-gstpngparse.Plo
diff --git a/gst/videoparsers/gstdiracparse.c b/gst/videoparsers/gstdiracparse.c
index 93f00c6..c674cb8 100644
--- a/gst/videoparsers/gstdiracparse.c
+++ b/gst/videoparsers/gstdiracparse.c
@@ -109,10 +109,10 @@
   gobject_class->dispose = gst_dirac_parse_dispose;
   gobject_class->finalize = gst_dirac_parse_finalize;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_dirac_parse_src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_dirac_parse_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_dirac_parse_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_dirac_parse_sink_template);
 
   gst_element_class_set_static_metadata (element_class, "Dirac parser",
       "Codec/Parser/Video", "Parses Dirac streams",
diff --git a/gst/videoparsers/gsth263parse.c b/gst/videoparsers/gsth263parse.c
index 370cbb1..0f4d42e 100644
--- a/gst/videoparsers/gsth263parse.c
+++ b/gst/videoparsers/gsth263parse.c
@@ -73,10 +73,8 @@
 
   GST_DEBUG_CATEGORY_INIT (h263_parse_debug, "h263parse", 0, "h263 parser");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&srctemplate));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sinktemplate));
+  gst_element_class_add_static_pad_template (gstelement_class, &srctemplate);
+  gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate);
   gst_element_class_set_static_metadata (gstelement_class, "H.263 parser",
       "Codec/Parser/Video",
       "Parses H.263 streams",
diff --git a/gst/videoparsers/gsth264parse.c b/gst/videoparsers/gsth264parse.c
index 05b6b75..095a645 100644
--- a/gst/videoparsers/gsth264parse.c
+++ b/gst/videoparsers/gsth264parse.c
@@ -129,11 +129,12 @@
   gobject_class->get_property = gst_h264_parse_get_property;
 
   g_object_class_install_property (gobject_class, PROP_CONFIG_INTERVAL,
-      g_param_spec_uint ("config-interval",
+      g_param_spec_int ("config-interval",
           "SPS PPS Send Interval",
           "Send SPS and PPS Insertion Interval in seconds (sprop parameter sets "
-          "will be multiplexed in the data stream when detected.) (0 = disabled)",
-          0, 3600, DEFAULT_CONFIG_INTERVAL,
+          "will be multiplexed in the data stream when detected.) "
+          "(0 = disabled, -1 = send with every IDR frame)",
+          -1, 3600, DEFAULT_CONFIG_INTERVAL,
           G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
 
   /* Override BaseParse vfuncs */
@@ -147,10 +148,8 @@
   parse_class->sink_event = GST_DEBUG_FUNCPTR (gst_h264_parse_event);
   parse_class->src_event = GST_DEBUG_FUNCPTR (gst_h264_parse_src_event);
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&srctemplate));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sinktemplate));
+  gst_element_class_add_static_pad_template (gstelement_class, &srctemplate);
+  gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate);
 
   gst_element_class_set_static_metadata (gstelement_class, "H.264 parser",
       "Codec/Parser/Converter/Video",
@@ -1054,6 +1053,7 @@
   GstH264NalUnit nalu;
   GstH264ParserResult pres;
   gint framesize;
+  GstFlowReturn ret;
 
   if (G_UNLIKELY (GST_BUFFER_FLAG_IS_SET (frame->buffer,
               GST_BUFFER_FLAG_DISCONT))) {
@@ -1087,7 +1087,9 @@
     GST_LOG_OBJECT (h264parse, "resuming frame parsing");
   }
 
-  drain = GST_BASE_PARSE_DRAINING (parse);
+  /* Always consume the entire input buffer when in_align == ALIGN_AU */
+  drain = GST_BASE_PARSE_DRAINING (parse)
+      || h264parse->in_align == GST_H264_PARSE_ALIGN_AU;
   nonext = FALSE;
 
   current_off = h264parse->current_off;
@@ -1104,6 +1106,22 @@
     switch (pres) {
       case GST_H264_PARSER_OK:
         if (nalu.sc_offset > 0) {
+          int i;
+          gboolean is_filler_data = TRUE;
+          /* Handle filler data */
+          for (i = 0; i < nalu.sc_offset; i++) {
+            if (data[i] != 0x00) {
+              is_filler_data = FALSE;
+              break;
+            }
+          }
+          if (is_filler_data) {
+            GST_DEBUG_OBJECT (parse, "Dropping filler data %d", nalu.sc_offset);
+            frame->flags |= GST_BASE_PARSE_FRAME_FLAG_DROP;
+            gst_buffer_unmap (buffer, &map);
+            ret = gst_base_parse_finish_frame (parse, frame, nalu.sc_offset);
+            goto drop;
+          }
           *skipsize = nalu.sc_offset;
           goto skip;
         }
@@ -1239,6 +1257,10 @@
   gst_buffer_unmap (buffer, &map);
   return GST_FLOW_OK;
 
+drop:
+  GST_DEBUG_OBJECT (h264parse, "Dropped data");
+  return ret;
+
 skip:
   GST_DEBUG_OBJECT (h264parse, "skipping %d", *skipsize);
   /* If we are collecting access units, we need to preserve the initial
@@ -1613,7 +1635,12 @@
         profile = "scalable-baseline";
       break;
     case 86:
-      profile = "scalable-high";
+      if (sps->constraint_set3_flag)
+        profile = "scalable-high-intra";
+      else if (sps->constraint_set5_flag)
+        profile = "scalable-constrained-high";
+      else
+        profile = "scalable-high";
       break;
     default:
       return NULL;
@@ -1919,6 +1946,8 @@
   g_return_if_fail (out_ts != NULL);
 
   upstream = *out_ts;
+  GST_LOG_OBJECT (h264parse, "Upstream ts %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (upstream));
 
   if (!frame) {
     GST_LOG_OBJECT (h264parse, "no frame data ->  0 duration");
@@ -2201,6 +2230,92 @@
   parse->push_codec = TRUE;
 }
 
+static gboolean
+gst_h264_parse_handle_sps_pps_nals (GstH264Parse * h264parse,
+    GstBuffer * buffer, GstBaseParseFrame * frame)
+{
+  GstBuffer *codec_nal;
+  gint i;
+  gboolean send_done = FALSE;
+  GstClockTime timestamp = GST_BUFFER_TIMESTAMP (buffer);
+
+  if (h264parse->align == GST_H264_PARSE_ALIGN_NAL) {
+    /* send separate config NAL buffers */
+    GST_DEBUG_OBJECT (h264parse, "- sending SPS/PPS");
+    for (i = 0; i < GST_H264_MAX_SPS_COUNT; i++) {
+      if ((codec_nal = h264parse->sps_nals[i])) {
+        GST_DEBUG_OBJECT (h264parse, "sending SPS nal");
+        gst_h264_parse_push_codec_buffer (h264parse, codec_nal, timestamp);
+        send_done = TRUE;
+      }
+    }
+    for (i = 0; i < GST_H264_MAX_PPS_COUNT; i++) {
+      if ((codec_nal = h264parse->pps_nals[i])) {
+        GST_DEBUG_OBJECT (h264parse, "sending PPS nal");
+        gst_h264_parse_push_codec_buffer (h264parse, codec_nal, timestamp);
+        send_done = TRUE;
+      }
+    }
+  } else {
+    /* insert config NALs into AU */
+    GstByteWriter bw;
+    GstBuffer *new_buf;
+    const gboolean bs = h264parse->format == GST_H264_PARSE_FORMAT_BYTE;
+    const gint nls = 4 - h264parse->nal_length_size;
+    gboolean ok;
+
+    gst_byte_writer_init_with_size (&bw, gst_buffer_get_size (buffer), FALSE);
+    ok = gst_byte_writer_put_buffer (&bw, buffer, 0, h264parse->idr_pos);
+    GST_DEBUG_OBJECT (h264parse, "- inserting SPS/PPS");
+    for (i = 0; i < GST_H264_MAX_SPS_COUNT; i++) {
+      if ((codec_nal = h264parse->sps_nals[i])) {
+        gsize nal_size = gst_buffer_get_size (codec_nal);
+        GST_DEBUG_OBJECT (h264parse, "inserting SPS nal");
+        if (bs) {
+          ok &= gst_byte_writer_put_uint32_be (&bw, 1);
+        } else {
+          ok &= gst_byte_writer_put_uint32_be (&bw, (nal_size << (nls * 8)));
+          ok &= gst_byte_writer_set_pos (&bw,
+              gst_byte_writer_get_pos (&bw) - nls);
+        }
+
+        ok &= gst_byte_writer_put_buffer (&bw, codec_nal, 0, nal_size);
+        send_done = TRUE;
+      }
+    }
+    for (i = 0; i < GST_H264_MAX_PPS_COUNT; i++) {
+      if ((codec_nal = h264parse->pps_nals[i])) {
+        gsize nal_size = gst_buffer_get_size (codec_nal);
+        GST_DEBUG_OBJECT (h264parse, "inserting PPS nal");
+        if (bs) {
+          ok &= gst_byte_writer_put_uint32_be (&bw, 1);
+        } else {
+          ok &= gst_byte_writer_put_uint32_be (&bw, (nal_size << (nls * 8)));
+          ok &= gst_byte_writer_set_pos (&bw,
+              gst_byte_writer_get_pos (&bw) - nls);
+        }
+        ok &= gst_byte_writer_put_buffer (&bw, codec_nal, 0, nal_size);
+        send_done = TRUE;
+      }
+    }
+    ok &= gst_byte_writer_put_buffer (&bw, buffer, h264parse->idr_pos, -1);
+    /* collect result and push */
+    new_buf = gst_byte_writer_reset_and_get_buffer (&bw);
+    gst_buffer_copy_into (new_buf, buffer, GST_BUFFER_COPY_METADATA, 0, -1);
+    /* should already be keyframe/IDR, but it may not have been,
+     * so mark it as such to avoid being discarded by picky decoder */
+    GST_BUFFER_FLAG_UNSET (new_buf, GST_BUFFER_FLAG_DELTA_UNIT);
+    gst_buffer_replace (&frame->out_buffer, new_buf);
+    gst_buffer_unref (new_buf);
+    /* some result checking seems to make some compilers happy */
+    if (G_UNLIKELY (!ok)) {
+      GST_ERROR_OBJECT (h264parse, "failed to insert SPS/PPS");
+    }
+  }
+
+  return send_done;
+}
+
 static GstFlowReturn
 gst_h264_parse_pre_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
 {
@@ -2276,93 +2391,14 @@
 
       if (GST_TIME_AS_SECONDS (diff) >= h264parse->interval ||
           initial_frame || h264parse->push_codec) {
-        GstBuffer *codec_nal;
-        gint i;
         GstClockTime new_ts;
 
         /* avoid overwriting a perfectly fine timestamp */
         new_ts = GST_CLOCK_TIME_IS_VALID (timestamp) ? timestamp :
             h264parse->last_report;
 
-        if (h264parse->align == GST_H264_PARSE_ALIGN_NAL) {
-          /* send separate config NAL buffers */
-          GST_DEBUG_OBJECT (h264parse, "- sending SPS/PPS");
-          for (i = 0; i < GST_H264_MAX_SPS_COUNT; i++) {
-            if ((codec_nal = h264parse->sps_nals[i])) {
-              GST_DEBUG_OBJECT (h264parse, "sending SPS nal");
-              gst_h264_parse_push_codec_buffer (h264parse, codec_nal,
-                  timestamp);
-              h264parse->last_report = new_ts;
-            }
-          }
-          for (i = 0; i < GST_H264_MAX_PPS_COUNT; i++) {
-            if ((codec_nal = h264parse->pps_nals[i])) {
-              GST_DEBUG_OBJECT (h264parse, "sending PPS nal");
-              gst_h264_parse_push_codec_buffer (h264parse, codec_nal,
-                  timestamp);
-              h264parse->last_report = new_ts;
-            }
-          }
-        } else {
-          /* insert config NALs into AU */
-          GstByteWriter bw;
-          GstBuffer *new_buf;
-          const gboolean bs = h264parse->format == GST_H264_PARSE_FORMAT_BYTE;
-          const gint nls = 4 - h264parse->nal_length_size;
-          gboolean ok;
-
-          gst_byte_writer_init_with_size (&bw, gst_buffer_get_size (buffer),
-              FALSE);
-          ok = gst_byte_writer_put_buffer (&bw, buffer, 0, h264parse->idr_pos);
-          GST_DEBUG_OBJECT (h264parse, "- inserting SPS/PPS");
-          for (i = 0; i < GST_H264_MAX_SPS_COUNT; i++) {
-            if ((codec_nal = h264parse->sps_nals[i])) {
-              gsize nal_size = gst_buffer_get_size (codec_nal);
-              GST_DEBUG_OBJECT (h264parse, "inserting SPS nal");
-              if (bs) {
-                ok &= gst_byte_writer_put_uint32_be (&bw, 1);
-              } else {
-                ok &= gst_byte_writer_put_uint32_be (&bw,
-                    (nal_size << (nls * 8)));
-                ok &= gst_byte_writer_set_pos (&bw,
-                    gst_byte_writer_get_pos (&bw) - nls);
-              }
-
-              ok &= gst_byte_writer_put_buffer (&bw, codec_nal, 0, nal_size);
-              h264parse->last_report = new_ts;
-            }
-          }
-          for (i = 0; i < GST_H264_MAX_PPS_COUNT; i++) {
-            if ((codec_nal = h264parse->pps_nals[i])) {
-              gsize nal_size = gst_buffer_get_size (codec_nal);
-              GST_DEBUG_OBJECT (h264parse, "inserting PPS nal");
-              if (bs) {
-                ok &= gst_byte_writer_put_uint32_be (&bw, 1);
-              } else {
-                ok &= gst_byte_writer_put_uint32_be (&bw,
-                    (nal_size << (nls * 8)));
-                ok &= gst_byte_writer_set_pos (&bw,
-                    gst_byte_writer_get_pos (&bw) - nls);
-              }
-              ok &= gst_byte_writer_put_buffer (&bw, codec_nal, 0, nal_size);
-              h264parse->last_report = new_ts;
-            }
-          }
-          ok &=
-              gst_byte_writer_put_buffer (&bw, buffer, h264parse->idr_pos, -1);
-          /* collect result and push */
-          new_buf = gst_byte_writer_reset_and_get_buffer (&bw);
-          gst_buffer_copy_into (new_buf, buffer, GST_BUFFER_COPY_METADATA, 0,
-              -1);
-          /* should already be keyframe/IDR, but it may not have been,
-           * so mark it as such to avoid being discarded by picky decoder */
-          GST_BUFFER_FLAG_UNSET (new_buf, GST_BUFFER_FLAG_DELTA_UNIT);
-          gst_buffer_replace (&frame->out_buffer, new_buf);
-          gst_buffer_unref (new_buf);
-          /* some result checking seems to make some compilers happy */
-          if (G_UNLIKELY (!ok)) {
-            GST_ERROR_OBJECT (h264parse, "failed to insert SPS/PPS");
-          }
+        if (gst_h264_parse_handle_sps_pps_nals (h264parse, buffer, frame)) {
+          h264parse->last_report = new_ts;
         }
       }
       /* we pushed whatever we had */
@@ -2371,6 +2407,18 @@
       h264parse->have_pps = FALSE;
       h264parse->state &= GST_H264_PARSE_STATE_VALID_PICTURE_HEADERS;
     }
+  } else if (h264parse->interval == -1) {
+    if (h264parse->idr_pos >= 0) {
+      GST_LOG_OBJECT (h264parse, "IDR nal at offset %d", h264parse->idr_pos);
+
+      gst_h264_parse_handle_sps_pps_nals (h264parse, buffer, frame);
+
+      /* we pushed whatever we had */
+      h264parse->push_codec = FALSE;
+      h264parse->have_sps = FALSE;
+      h264parse->have_pps = FALSE;
+      h264parse->state &= GST_H264_PARSE_STATE_VALID_PICTURE_HEADERS;
+    }
   }
 
   /* Fixme: setting passthrough mode casuing multiple issues:
@@ -2593,6 +2641,8 @@
     h264parse->packetized = TRUE;
   }
 
+  h264parse->in_align = align;
+
   return TRUE;
 
   /* ERRORS */
@@ -2801,7 +2851,7 @@
 
   switch (prop_id) {
     case PROP_CONFIG_INTERVAL:
-      parse->interval = g_value_get_uint (value);
+      parse->interval = g_value_get_int (value);
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -2819,7 +2869,7 @@
 
   switch (prop_id) {
     case PROP_CONFIG_INTERVAL:
-      g_value_set_uint (value, parse->interval);
+      g_value_set_int (value, parse->interval);
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
diff --git a/gst/videoparsers/gsth264parse.h b/gst/videoparsers/gsth264parse.h
index 58d818c..c71990b 100644
--- a/gst/videoparsers/gsth264parse.h
+++ b/gst/videoparsers/gsth264parse.h
@@ -71,6 +71,7 @@
   /* state */
   GstH264NalParser *nalparser;
   guint state;
+  guint in_align;
   guint align;
   guint format;
   gint current_off;
@@ -118,7 +119,7 @@
   gboolean picture_start;
 
   /* props */
-  guint interval;
+  gint interval;
 
   GstClockTime pending_key_unit_ts;
   GstEvent *force_key_unit_event;
diff --git a/gst/videoparsers/gsth265parse.c b/gst/videoparsers/gsth265parse.c
index 26e7c48..68fbe8d 100644
--- a/gst/videoparsers/gsth265parse.c
+++ b/gst/videoparsers/gsth265parse.c
@@ -124,10 +124,8 @@
   parse_class->sink_event = GST_DEBUG_FUNCPTR (gst_h265_parse_event);
   parse_class->src_event = GST_DEBUG_FUNCPTR (gst_h265_parse_src_event);
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&srctemplate));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sinktemplate));
+  gst_element_class_add_static_pad_template (gstelement_class, &srctemplate);
+  gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate);
 
   gst_element_class_set_static_metadata (gstelement_class, "H.265 parser",
       "Codec/Parser/Converter/Video",
@@ -1146,7 +1144,7 @@
     GST_WRITE_UINT16_BE (data, num_vps);
     data += 2;
 
-    for (i = 0; i < num_vps; i++) {
+    for (i = 0; i < GST_H265_MAX_VPS_COUNT; i++) {
       if ((nal = h265parse->vps_nals[i])) {
         gsize nal_size = gst_buffer_get_size (nal);
         GST_WRITE_UINT16_BE (data, nal_size);
@@ -1165,7 +1163,7 @@
     GST_WRITE_UINT16_BE (data, num_sps);
     data += 2;
 
-    for (i = 0; i < num_sps; i++) {
+    for (i = 0; i < GST_H265_MAX_SPS_COUNT; i++) {
       if ((nal = h265parse->sps_nals[i])) {
         gsize nal_size = gst_buffer_get_size (nal);
         GST_WRITE_UINT16_BE (data, nal_size);
@@ -1184,7 +1182,7 @@
     GST_WRITE_UINT16_BE (data, num_pps);
     data += 2;
 
-    for (i = 0; i < num_pps; i++) {
+    for (i = 0; i < GST_H265_MAX_PPS_COUNT; i++) {
       if ((nal = h265parse->pps_nals[i])) {
         gsize nal_size = gst_buffer_get_size (nal);
         GST_WRITE_UINT16_BE (data, nal_size);
@@ -2049,9 +2047,10 @@
     off = 23;
     for (i = 0; i < data[22]; i++) {
       num_nals = GST_READ_UINT16_BE (data + off + 1);
+      off += 3;
       for (j = 0; j < num_nals; j++) {
         parseres = gst_h265_parser_identify_nalu_hevc (h265parse->nalparser,
-            data, off + 3, size, 2, &nalu);
+            data, off, size, 2, &nalu);
 
         if (parseres != GST_H265_PARSER_OK) {
           gst_buffer_unmap (codec_data, &map);
diff --git a/gst/videoparsers/gstjpeg2000parse.c b/gst/videoparsers/gstjpeg2000parse.c
new file mode 100644
index 0000000..6468bf0
--- /dev/null
+++ b/gst/videoparsers/gstjpeg2000parse.c
@@ -0,0 +1,536 @@
+/* GStreamer JPEG 2000 Parser
+ * Copyright (C) <2016> Grok Image Compession Inc.
+ *  @author Aaron Boxer <boxerab@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
+#include "gstjpeg2000parse.h"
+#include <gst/base/base.h>
+
+
+
+static void
+gst_jpeg2000_parse_get_subsampling (GstJPEG2000Sampling sampling, guint8 * dx,
+    guint8 * dy)
+{
+  *dx = 1;
+  *dy = 1;
+  if (sampling == GST_JPEG2000_SAMPLING_YBR422) {
+    *dx = 2;
+  } else if (sampling == GST_JPEG2000_SAMPLING_YBR420) {
+    *dx = 2;
+    *dy = 2;
+  } else if (sampling == GST_JPEG2000_SAMPLING_YBR410) {
+    *dx = 4;
+    *dy = 2;
+  }
+}
+
+#define GST_JPEG2000_JP2_SIZE_OF_BOX_ID  	4
+#define GST_JPEG2000_JP2_SIZE_OF_BOX_LEN	4
+#define GST_JPEG2000_MARKER_SIZE  	4
+
+
+/* J2C has 8 bytes preceding J2K magic: 4 for size of box, and 4 for fourcc */
+#define GST_JPEG2000_PARSE_SIZE_OF_J2C_PREFIX_BYTES (GST_JPEG2000_JP2_SIZE_OF_BOX_LEN +  GST_JPEG2000_JP2_SIZE_OF_BOX_ID)
+
+/* SOC marker plus minimum size of SIZ marker */
+#define GST_JPEG2000_PARSE_MIN_FRAME_SIZE (GST_JPEG2000_MARKER_SIZE + GST_JPEG2000_PARSE_SIZE_OF_J2C_PREFIX_BYTES + 36)
+
+#define GST_JPEG2000_PARSE_J2K_MAGIC 0xFF4FFF51
+
+GST_DEBUG_CATEGORY (jpeg2000_parse_debug);
+#define GST_CAT_DEFAULT jpeg2000_parse_debug
+
+static GstStaticPadTemplate srctemplate =
+    GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("image/x-jpc,"
+        " width = (int)[1, MAX], height = (int)[1, MAX],"
+        GST_JPEG2000_SAMPLING_LIST ","
+        GST_JPEG2000_COLORSPACE_LIST ","
+        " parsed = (boolean) true;"
+        "image/x-j2c,"
+        " width = (int)[1, MAX], height = (int)[1, MAX],"
+        GST_JPEG2000_SAMPLING_LIST ","
+        GST_JPEG2000_COLORSPACE_LIST "," " parsed = (boolean) true")
+    );
+
+static GstStaticPadTemplate sinktemplate =
+    GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("image/x-jpc,"
+        GST_JPEG2000_SAMPLING_LIST ";"
+        "image/x-jpc, "
+        GST_JPEG2000_COLORSPACE_LIST ";"
+        "image/x-j2c,"
+        GST_JPEG2000_SAMPLING_LIST ";"
+        "image/x-j2c, " GST_JPEG2000_COLORSPACE_LIST)
+    );
+
+#define parent_class gst_jpeg2000_parse_parent_class
+G_DEFINE_TYPE (GstJPEG2000Parse, gst_jpeg2000_parse, GST_TYPE_BASE_PARSE);
+
+static gboolean gst_jpeg2000_parse_start (GstBaseParse * parse);
+static gboolean gst_jpeg2000_parse_event (GstBaseParse * parse,
+    GstEvent * event);
+static GstFlowReturn gst_jpeg2000_parse_handle_frame (GstBaseParse * parse,
+    GstBaseParseFrame * frame, gint * skipsize);
+static gboolean gst_jpeg2000_parse_set_sink_caps (GstBaseParse * parse,
+    GstCaps * caps);
+
+static void
+gst_jpeg2000_parse_class_init (GstJPEG2000ParseClass * klass)
+{
+  GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
+  GstBaseParseClass *parse_class = GST_BASE_PARSE_CLASS (klass);
+
+  GST_DEBUG_CATEGORY_INIT (jpeg2000_parse_debug, "jpeg2000parse", 0,
+      "jpeg 2000 parser");
+
+  gst_element_class_add_static_pad_template (gstelement_class, &srctemplate);
+  gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate);
+  gst_element_class_set_static_metadata (gstelement_class, "JPEG 2000 parser",
+      "Codec/Parser/Video/Image",
+      "Parses JPEG 2000 files", "Aaron Boxer <boxerab@gmail.com>");
+
+  /* Override BaseParse vfuncs */
+  parse_class->set_sink_caps =
+      GST_DEBUG_FUNCPTR (gst_jpeg2000_parse_set_sink_caps);
+  parse_class->start = GST_DEBUG_FUNCPTR (gst_jpeg2000_parse_start);
+  parse_class->sink_event = GST_DEBUG_FUNCPTR (gst_jpeg2000_parse_event);
+  parse_class->handle_frame =
+      GST_DEBUG_FUNCPTR (gst_jpeg2000_parse_handle_frame);
+}
+
+static gboolean
+gst_jpeg2000_parse_start (GstBaseParse * parse)
+{
+  GstJPEG2000Parse *jpeg2000parse = GST_JPEG2000_PARSE (parse);
+  GST_DEBUG_OBJECT (jpeg2000parse, "start");
+  gst_base_parse_set_min_frame_size (parse, GST_JPEG2000_PARSE_MIN_FRAME_SIZE);
+
+  jpeg2000parse->width = 0;
+  jpeg2000parse->height = 0;
+
+  jpeg2000parse->sampling = GST_JPEG2000_SAMPLING_NONE;
+  jpeg2000parse->colorspace = GST_JPEG2000_COLORSPACE_NONE;
+  jpeg2000parse->codec_format = GST_JPEG2000_PARSE_NO_CODEC;
+  return TRUE;
+}
+
+
+static void
+gst_jpeg2000_parse_init (GstJPEG2000Parse * jpeg2000parse)
+{
+  GST_PAD_SET_ACCEPT_INTERSECT (GST_BASE_PARSE_SINK_PAD (jpeg2000parse));
+  GST_PAD_SET_ACCEPT_TEMPLATE (GST_BASE_PARSE_SINK_PAD (jpeg2000parse));
+}
+
+static gboolean
+gst_jpeg2000_parse_set_sink_caps (GstBaseParse * parse, GstCaps * caps)
+{
+  GstJPEG2000Parse *jpeg2000parse = GST_JPEG2000_PARSE (parse);
+  GstStructure *caps_struct = gst_caps_get_structure (caps, 0);
+
+  if (gst_structure_has_name (caps_struct, "image/jp2")) {
+    jpeg2000parse->codec_format = GST_JPEG2000_PARSE_JP2;
+  } else if (gst_structure_has_name (caps_struct, "image/x-j2c")) {
+    jpeg2000parse->codec_format = GST_JPEG2000_PARSE_J2C;
+  } else if (gst_structure_has_name (caps_struct, "image/x-jpc")) {
+    jpeg2000parse->codec_format = GST_JPEG2000_PARSE_JPC;
+  }
+
+  return TRUE;
+}
+
+static gboolean
+gst_jpeg2000_parse_event (GstBaseParse * parse, GstEvent * event)
+{
+  gboolean res = GST_BASE_PARSE_CLASS (parent_class)->sink_event (parse, event);
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_FLUSH_STOP:
+      gst_base_parse_set_min_frame_size (parse,
+          GST_JPEG2000_PARSE_MIN_FRAME_SIZE);
+      break;
+    default:
+      break;
+  }
+  return res;
+}
+
+static GstFlowReturn
+gst_jpeg2000_parse_handle_frame (GstBaseParse * parse,
+    GstBaseParseFrame * frame, gint * skipsize)
+{
+  GstJPEG2000Parse *jpeg2000parse = GST_JPEG2000_PARSE (parse);
+  GstMapInfo map;
+  GstByteReader reader;
+  GstFlowReturn ret = GST_FLOW_OK;
+  guint eoc_offset = 0;
+  GstCaps *current_caps = NULL;
+  GstStructure *current_caps_struct = NULL;
+  const gchar *colorspace_string = NULL;
+  GstJPEG2000Colorspace colorspace = GST_JPEG2000_COLORSPACE_NONE;
+  guint x0, y0, x1, y1;
+  guint width = 0, height = 0;
+  guint8 dx[GST_JPEG2000_PARSE_MAX_SUPPORTED_COMPONENTS];
+  guint8 dy[GST_JPEG2000_PARSE_MAX_SUPPORTED_COMPONENTS];
+  guint16 numcomps;
+  guint16 compno;
+  GstJPEG2000Sampling parsed_sampling = GST_JPEG2000_SAMPLING_NONE;
+  const gchar *sink_sampling_string = NULL;
+  GstJPEG2000Sampling sink_sampling = GST_JPEG2000_SAMPLING_NONE;
+  GstJPEG2000Sampling source_sampling = GST_JPEG2000_SAMPLING_NONE;
+  guint magic_offset = 0;
+  guint j2c_box_id_offset = 0;
+  guint num_prefix_bytes = 0;   /* number of bytes to skip before actual code stream */
+  GstCaps *src_caps = NULL;
+  guint frame_size = 0;
+  gboolean is_j2c = jpeg2000parse->codec_format == GST_JPEG2000_PARSE_J2C;
+
+  if (!gst_buffer_map (frame->buffer, &map, GST_MAP_READ)) {
+    GST_ERROR_OBJECT (jpeg2000parse, "Unable to map buffer");
+    return GST_FLOW_ERROR;
+  }
+
+  gst_byte_reader_init (&reader, map.data, map.size);
+  num_prefix_bytes = GST_JPEG2000_MARKER_SIZE;
+
+  if (is_j2c) {
+    num_prefix_bytes +=
+        GST_JPEG2000_JP2_SIZE_OF_BOX_LEN + GST_JPEG2000_JP2_SIZE_OF_BOX_ID;
+    /* check for "jp2c" */
+    j2c_box_id_offset = gst_byte_reader_masked_scan_uint32 (&reader, 0xffffffff,
+        GST_MAKE_FOURCC ('j', 'p', '2', 'c'), 0,
+        gst_byte_reader_get_remaining (&reader));
+
+    if (j2c_box_id_offset == -1) {
+      GST_ELEMENT_ERROR (jpeg2000parse, STREAM, DECODE, NULL,
+          ("Missing contiguous code stream box for j2c stream"));
+      ret = GST_FLOW_ERROR;
+      goto beach;
+    }
+  }
+
+  /* Look for magic. If found, skip to beginning of frame */
+  magic_offset = gst_byte_reader_masked_scan_uint32 (&reader, 0xffffffff,
+      GST_JPEG2000_PARSE_J2K_MAGIC, 0, gst_byte_reader_get_remaining (&reader));
+  if (magic_offset == -1) {
+    *skipsize = gst_byte_reader_get_size (&reader) - num_prefix_bytes;
+    goto beach;
+  }
+
+  /* see if we need to skip any bytes at beginning of frame */
+  GST_DEBUG_OBJECT (jpeg2000parse, "Found magic at offset = %d", magic_offset);
+  if (magic_offset > 0) {
+    *skipsize = magic_offset;
+    /* J2C has 8 bytes preceding J2K magic */
+    if (is_j2c)
+      *skipsize -= GST_JPEG2000_PARSE_SIZE_OF_J2C_PREFIX_BYTES;
+    if (*skipsize > 0)
+      goto beach;
+  }
+
+  if (is_j2c) {
+    /* sanity check on box id offset */
+    if (j2c_box_id_offset + GST_JPEG2000_JP2_SIZE_OF_BOX_ID != magic_offset) {
+      GST_ELEMENT_ERROR (jpeg2000parse, STREAM, DECODE, NULL,
+          ("Corrupt contiguous code stream box for j2c stream"));
+      ret = GST_FLOW_ERROR;
+      goto beach;
+    }
+
+    /* check that we have enough bytes for the J2C box length */
+    if (j2c_box_id_offset < GST_JPEG2000_JP2_SIZE_OF_BOX_LEN) {
+      *skipsize = gst_byte_reader_get_size (&reader) - num_prefix_bytes;
+      goto beach;
+    }
+
+    if (!gst_byte_reader_skip (&reader,
+            j2c_box_id_offset - GST_JPEG2000_JP2_SIZE_OF_BOX_LEN))
+      goto beach;
+
+    /* read the box length, and adjust num_prefix_bytes accordingly  */
+    if (!gst_byte_reader_get_uint32_be (&reader, &frame_size))
+      goto beach;
+    num_prefix_bytes -= GST_JPEG2000_JP2_SIZE_OF_BOX_LEN;
+
+    /* bail out if not enough data for frame */
+    if ((gst_byte_reader_get_size (&reader) < frame_size))
+      goto beach;
+  }
+
+  /* 2 to skip marker size, and another 2 to skip rsiz field */
+  if (!gst_byte_reader_skip (&reader, num_prefix_bytes + 2 + 2))
+    goto beach;
+
+  if (!gst_byte_reader_get_uint32_be (&reader, &x1))
+    goto beach;
+
+  if (!gst_byte_reader_get_uint32_be (&reader, &y1))
+    goto beach;
+
+  if (!gst_byte_reader_get_uint32_be (&reader, &x0))
+    goto beach;
+
+  if (!gst_byte_reader_get_uint32_be (&reader, &y0))
+    goto beach;
+
+  /* sanity check on image dimensions */
+  if (x1 < x0 || y1 < y0) {
+    GST_ELEMENT_ERROR (jpeg2000parse, STREAM, DECODE, NULL,
+        ("Nonsensical image dimensions %d,%d,%d,%d", x0, y0, x1, y1));
+    ret = GST_FLOW_ERROR;
+    goto beach;
+  }
+
+  width = x1 - x0;
+  height = y1 - y0;
+
+  GST_DEBUG_OBJECT (jpeg2000parse, "Parsed image dimensions %d,%d", width,
+      height);
+
+  /* skip tile dimensions */
+  if (!gst_byte_reader_skip (&reader, 4 * 4))
+    goto beach;
+
+  /* read number of components */
+  if (!gst_byte_reader_get_uint16_be (&reader, &numcomps))
+    goto beach;
+
+  if (numcomps == 2 || numcomps > GST_JPEG2000_PARSE_MAX_SUPPORTED_COMPONENTS) {
+    GST_ELEMENT_ERROR (jpeg2000parse, STREAM, DECODE, NULL,
+        ("Unsupported number of components %d", numcomps));
+    ret = GST_FLOW_NOT_NEGOTIATED;
+    goto beach;
+  }
+
+  current_caps = gst_pad_get_current_caps (GST_BASE_PARSE_SINK_PAD (parse));
+  if (!current_caps) {
+    GST_ERROR_OBJECT (jpeg2000parse, "Unable to get current caps");
+    ret = GST_FLOW_NOT_NEGOTIATED;
+    goto beach;
+  }
+
+  current_caps_struct = gst_caps_get_structure (current_caps, 0);
+  if (!current_caps_struct) {
+    GST_ERROR_OBJECT (jpeg2000parse,
+        "Unable to get structure of current caps struct");
+    ret = GST_FLOW_NOT_NEGOTIATED;
+    goto beach;
+  }
+
+  colorspace_string = gst_structure_get_string
+      (current_caps_struct, "colorspace");
+  if (colorspace_string)
+    colorspace = gst_jpeg2000_colorspace_from_string (colorspace_string);
+  sink_sampling_string = gst_structure_get_string
+      (current_caps_struct, "sampling");
+  if (sink_sampling_string)
+    sink_sampling = gst_jpeg2000_sampling_from_string (sink_sampling_string);
+
+  for (compno = 0; compno < numcomps; ++compno) {
+
+    /* skip Ssiz (precision and signed/unsigned bit )  */
+    if (!gst_byte_reader_skip (&reader, 1))
+      goto beach;
+
+    if (!gst_byte_reader_get_uint8 (&reader, dx + compno))
+      goto beach;
+
+    if (!gst_byte_reader_get_uint8 (&reader, dy + compno))
+      goto beach;
+
+    GST_DEBUG_OBJECT (jpeg2000parse,
+        "Parsed sub-sampling %d,%d for component %d", dx[compno], dy[compno],
+        compno);
+  }
+
+  /*** sanity check on sub-sampling *****/
+  if (dx[0] != 1 || dy[0] != 1) {
+    GST_WARNING_OBJECT (jpeg2000parse, "Sub-sampled luma channel");
+  }
+  if (dx[1] != dx[2] || dy[1] != dy[2]) {
+    GST_WARNING_OBJECT (jpeg2000parse,
+        "Chroma channel sub-sampling factors are not equal");
+  }
+  for (compno = 0; compno < numcomps; ++compno) {
+    if (colorspace != GST_JPEG2000_COLORSPACE_NONE
+        && (colorspace != GST_JPEG2000_COLORSPACE_YUV)
+        && (dx[compno] > 1 || dy[compno] > 1)) {
+      GST_WARNING_OBJECT (jpeg2000parse,
+          "Sub-sampled RGB or monochrome color spaces");
+    }
+    if (sink_sampling != GST_JPEG2000_SAMPLING_NONE) {
+      guint8 dx_caps, dy_caps;
+      gst_jpeg2000_parse_get_subsampling (sink_sampling, &dx_caps, &dy_caps);
+      if (dx_caps != dx[compno] || dy_caps != dy[compno]) {
+        GstJPEG2000Colorspace inferred_colorspace =
+            GST_JPEG2000_COLORSPACE_NONE;
+        GST_WARNING_OBJECT (jpeg2000parse,
+            "Sink caps sub-sampling %d,%d for channel %d does not match stream sub-sampling %d,%d",
+            dx_caps, dy_caps, compno, dx[compno], dy[compno]);
+        /* try to guess correct color space */
+        if (gst_jpeg2000_sampling_is_mono (sink_sampling))
+          inferred_colorspace = GST_JPEG2000_COLORSPACE_GRAY;
+        else if (gst_jpeg2000_sampling_is_rgb (sink_sampling))
+          inferred_colorspace = GST_JPEG2000_COLORSPACE_RGB;
+        else if (gst_jpeg2000_sampling_is_yuv (sink_sampling))
+          inferred_colorspace = GST_JPEG2000_COLORSPACE_YUV;
+        else if (colorspace)
+          inferred_colorspace = colorspace;
+        if (inferred_colorspace != GST_JPEG2000_COLORSPACE_NONE) {
+          sink_sampling = GST_JPEG2000_SAMPLING_NONE;
+          colorspace = inferred_colorspace;
+          break;
+        } else {
+          /* unrecognized sink_sampling and no colorspace */
+          GST_ERROR_OBJECT (jpeg2000parse,
+              "Unrecognized sink sampling field and no sink colorspace field");
+          ret = GST_FLOW_NOT_NEGOTIATED;
+          goto beach;
+        }
+      }
+    }
+  }
+  /*************************************/
+
+  /* if colorspace is present, we can work out the parsed_sampling field */
+  if (colorspace != GST_JPEG2000_COLORSPACE_NONE) {
+    if (colorspace == GST_JPEG2000_COLORSPACE_YUV) {
+      if (numcomps == 4) {
+        guint i;
+        parsed_sampling = GST_JPEG2000_SAMPLING_YBRA4444_EXT;
+        for (i = 0; i < 4; ++i) {
+          if (dx[i] > 1 || dy[i] > 1) {
+            GST_WARNING_OBJECT (jpeg2000parse, "Sub-sampled YUVA images");
+          }
+        }
+      } else if (numcomps == 3) {
+        /* use sub-sampling from U chroma channel */
+        if (dx[1] == 1 && dy[1] == 1) {
+          parsed_sampling = GST_JPEG2000_SAMPLING_YBR444;
+        } else if (dx[1] == 2 && dy[1] == 2) {
+          parsed_sampling = GST_JPEG2000_SAMPLING_YBR420;
+        } else if (dx[1] == 4 && dy[1] == 2) {
+          parsed_sampling = GST_JPEG2000_SAMPLING_YBR410;
+        } else if (dx[1] == 2 && dy[1] == 1) {
+          parsed_sampling = GST_JPEG2000_SAMPLING_YBR422;
+        } else {
+          GST_WARNING_OBJECT (jpeg2000parse,
+              "Unsupported sub-sampling factors %d,%d", dx[1], dy[1]);
+          /* best effort */
+          parsed_sampling = GST_JPEG2000_SAMPLING_YBR444;
+        }
+      }
+    } else if (colorspace == GST_JPEG2000_COLORSPACE_GRAY) {
+      parsed_sampling = GST_JPEG2000_SAMPLING_GRAYSCALE;
+    } else {
+      parsed_sampling =
+          (numcomps ==
+          4) ? GST_JPEG2000_SAMPLING_RGBA : GST_JPEG2000_SAMPLING_RGB;
+    }
+  } else {
+    if (gst_jpeg2000_sampling_is_mono (sink_sampling)) {
+      colorspace = GST_JPEG2000_COLORSPACE_GRAY;
+    } else if (gst_jpeg2000_sampling_is_rgb (sink_sampling)) {
+      colorspace = GST_JPEG2000_COLORSPACE_RGB;
+    } else {
+      /* best effort */
+      colorspace = GST_JPEG2000_COLORSPACE_YUV;
+    }
+  }
+
+  /* now we can set the source caps, if something has changed */
+  source_sampling =
+      sink_sampling !=
+      GST_JPEG2000_SAMPLING_NONE ? sink_sampling : parsed_sampling;
+  if (width != jpeg2000parse->width || height != jpeg2000parse->height
+      || jpeg2000parse->sampling != source_sampling
+      || jpeg2000parse->colorspace != colorspace) {
+    gint fr_num = 0, fr_denom = 0;
+
+    jpeg2000parse->width = width;
+    jpeg2000parse->height = height;
+    jpeg2000parse->sampling = source_sampling;
+    jpeg2000parse->colorspace = colorspace;
+
+    src_caps =
+        gst_caps_new_simple (gst_structure_get_name (current_caps_struct),
+        "width", G_TYPE_INT, width, "height", G_TYPE_INT, height,
+        "colorspace", G_TYPE_STRING,
+        gst_jpeg2000_colorspace_to_string (colorspace), "sampling",
+        G_TYPE_STRING, gst_jpeg2000_sampling_to_string (source_sampling), NULL);
+
+    if (gst_structure_get_fraction (current_caps_struct, "framerate", &fr_num,
+            &fr_denom)) {
+      gst_caps_set_simple (src_caps, "framerate", GST_TYPE_FRACTION, fr_num,
+          fr_denom, NULL);
+    } else {
+      GST_WARNING_OBJECT (jpeg2000parse, "No framerate set");
+    }
+    if (!gst_pad_set_caps (GST_BASE_PARSE_SRC_PAD (parse), src_caps)) {
+      GST_ERROR_OBJECT (jpeg2000parse, "Unable to set source caps");
+      ret = GST_FLOW_NOT_NEGOTIATED;
+      gst_caps_unref (src_caps);
+      goto beach;
+    }
+    gst_caps_unref (src_caps);
+  }
+  /*************************************************/
+
+  /* look for EOC to mark frame end */
+  /* look for EOC end of codestream marker  */
+  eoc_offset = gst_byte_reader_masked_scan_uint32 (&reader, 0x0000ffff,
+      0xFFD9, 0, gst_byte_reader_get_remaining (&reader));
+
+  if (eoc_offset != -1) {
+    /* add 4 for eoc marker and eoc marker size */
+    guint eoc_frame_size = gst_byte_reader_get_pos (&reader) + eoc_offset + 4;
+    GST_DEBUG_OBJECT (jpeg2000parse,
+        "Found EOC at offset = %d, frame size = %d", eoc_offset,
+        eoc_frame_size);
+
+    /* bail out if not enough data for frame */
+    if (gst_byte_reader_get_size (&reader) < eoc_frame_size)
+      goto beach;
+
+    if (frame_size && frame_size != eoc_frame_size) {
+      GST_WARNING_OBJECT (jpeg2000parse,
+          "Frame size %d from contiguous code size does not equal frame size %d signalled by eoc",
+          frame_size, eoc_frame_size);
+    }
+    frame_size = eoc_frame_size;
+  }
+
+  /* clean up and finish frame */
+  if (current_caps)
+    gst_caps_unref (current_caps);
+  gst_buffer_unmap (frame->buffer, &map);
+  return gst_base_parse_finish_frame (parse, frame, frame_size);
+
+beach:
+  if (current_caps)
+    gst_caps_unref (current_caps);
+  gst_buffer_unmap (frame->buffer, &map);
+  return ret;
+}
diff --git a/gst/videoparsers/gstjpeg2000parse.h b/gst/videoparsers/gstjpeg2000parse.h
new file mode 100644
index 0000000..93236db
--- /dev/null
+++ b/gst/videoparsers/gstjpeg2000parse.h
@@ -0,0 +1,79 @@
+/* GStreamer JPEG 2000 Parser
+ * Copyright (C) <2016> Grok Image Compression Inc.
+ *  @author Aaron Boxer <boxerab@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_JPEG2000_PARSE_H__
+#define __GST_JPEG2000_PARSE_H__
+
+#include <gst/gst.h>
+#include <gst/base/gstadapter.h>
+#include <gst/base/gstbaseparse.h>
+#include <gst/codecparsers/gstjpeg2000sampling.h>
+
+G_BEGIN_DECLS
+#define GST_TYPE_JPEG2000_PARSE \
+  (gst_jpeg2000_parse_get_type())
+#define GST_JPEG2000_PARSE(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_JPEG2000_PARSE,GstJPEG2000Parse))
+#define GST_JPEG2000_PARSE_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_JPEG2000_PARSE,GstJPEG2000ParseClass))
+#define GST_IS_JPEG2000_PARSE(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_JPEG2000_PARSE))
+#define GST_IS_JPEG2000_PARSE_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_JPEG2000_PARSE))
+    GType gst_jpeg2000_parse_get_type (void);
+
+typedef struct _GstJPEG2000Parse GstJPEG2000Parse;
+typedef struct _GstJPEG2000ParseClass GstJPEG2000ParseClass;
+
+#define GST_JPEG2000_PARSE_MAX_SUPPORTED_COMPONENTS 4
+
+typedef enum
+{
+  GST_JPEG2000_PARSE_NO_CODEC,
+  GST_JPEG2000_PARSE_JPC,       /* jpeg 2000 code stream */
+  GST_JPEG2000_PARSE_J2C,       /* jpeg 2000 contiguous code stream box plus code stream */
+  GST_JPEG2000_PARSE_JP2,       /* jpeg 2000 part I file format */
+
+} GstJPEG2000ParseFormats;
+
+
+struct _GstJPEG2000Parse
+{
+  GstBaseParse baseparse;
+
+
+  guint width;
+  guint height;
+
+  GstJPEG2000Sampling sampling;
+  GstJPEG2000Colorspace colorspace;
+  GstJPEG2000ParseFormats codec_format;
+};
+
+struct _GstJPEG2000ParseClass
+{
+  GstBaseParseClass parent_class;
+
+
+};
+
+
+G_END_DECLS
+#endif
diff --git a/gst/videoparsers/gstmpeg4videoparse.c b/gst/videoparsers/gstmpeg4videoparse.c
index a1fd3b2..83f6f94 100644
--- a/gst/videoparsers/gstmpeg4videoparse.c
+++ b/gst/videoparsers/gstmpeg4videoparse.c
@@ -154,10 +154,8 @@
           0, 3600, DEFAULT_CONFIG_INTERVAL,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (element_class, &src_template);
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
 
   gst_element_class_set_static_metadata (element_class,
       "MPEG 4 video elementary stream parser", "Codec/Parser/Video",
diff --git a/gst/videoparsers/gstmpegvideoparse.c b/gst/videoparsers/gstmpegvideoparse.c
index bf71a3e..6896339 100644
--- a/gst/videoparsers/gstmpegvideoparse.c
+++ b/gst/videoparsers/gstmpegvideoparse.c
@@ -146,10 +146,8 @@
           "Split frame when encountering GOP", DEFAULT_PROP_GOP_SPLIT,
           G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (element_class, &src_template);
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
 
   gst_element_class_set_static_metadata (element_class,
       "MPEG video elementary stream parser",
diff --git a/gst/videoparsers/gstpngparse.c b/gst/videoparsers/gstpngparse.c
index e9d0768..6df53bd 100644
--- a/gst/videoparsers/gstpngparse.c
+++ b/gst/videoparsers/gstpngparse.c
@@ -63,10 +63,8 @@
 
   GST_DEBUG_CATEGORY_INIT (png_parse_debug, "pngparse", 0, "png parser");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&srctemplate));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sinktemplate));
+  gst_element_class_add_static_pad_template (gstelement_class, &srctemplate);
+  gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate);
   gst_element_class_set_static_metadata (gstelement_class, "PNG parser",
       "Codec/Parser/Video/Image",
       "Parses PNG files", "Olivier Crete <olivier.crete@collabora.com>");
diff --git a/gst/videoparsers/gstvc1parse.c b/gst/videoparsers/gstvc1parse.c
index e72f4f6..915e0fc 100644
--- a/gst/videoparsers/gstvc1parse.c
+++ b/gst/videoparsers/gstvc1parse.c
@@ -222,10 +222,8 @@
 
   gobject_class->finalize = gst_vc1_parse_finalize;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&srctemplate));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sinktemplate));
+  gst_element_class_add_static_pad_template (element_class, &srctemplate);
+  gst_element_class_add_static_pad_template (element_class, &sinktemplate);
 
   gst_element_class_set_static_metadata (element_class, "VC1 parser",
       "Codec/Parser/Converter/Video",
diff --git a/gst/videoparsers/plugin.c b/gst/videoparsers/plugin.c
index 79d1df6..2deddf4 100644
--- a/gst/videoparsers/plugin.c
+++ b/gst/videoparsers/plugin.c
@@ -28,6 +28,7 @@
 #include "gstmpegvideoparse.h"
 #include "gstmpeg4videoparse.h"
 #include "gstpngparse.h"
+#include "gstjpeg2000parse.h"
 #include "gstvc1parse.h"
 #include "gsth265parse.h"
 
@@ -48,6 +49,8 @@
       GST_RANK_PRIMARY + 1, GST_TYPE_MPEG4VIDEO_PARSE);
   ret |= gst_element_register (plugin, "pngparse",
       GST_RANK_PRIMARY, GST_TYPE_PNG_PARSE);
+  ret |= gst_element_register (plugin, "jpeg2000parse",
+      GST_RANK_PRIMARY, GST_TYPE_JPEG2000_PARSE);
   ret |= gst_element_register (plugin, "h265parse",
       GST_RANK_SECONDARY, GST_TYPE_H265_PARSE);
   ret |= gst_element_register (plugin, "vc1parse",
diff --git a/gst/videosignal/Makefile.in b/gst/videosignal/Makefile.in
index 2561d03..afcb48b 100644
--- a/gst/videosignal/Makefile.in
+++ b/gst/videosignal/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/vmnc/Makefile.in b/gst/vmnc/Makefile.in
index c0c3e00..523a4a6 100644
--- a/gst/vmnc/Makefile.in
+++ b/gst/vmnc/Makefile.in
@@ -302,6 +302,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -323,6 +325,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -372,6 +376,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -517,6 +523,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -643,8 +651,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,8 +693,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/vmnc/vmncdec.c b/gst/vmnc/vmncdec.c
index 5504302..e8d498c 100644
--- a/gst/vmnc/vmncdec.c
+++ b/gst/vmnc/vmncdec.c
@@ -93,13 +93,12 @@
   decoder_class->set_format = gst_vmnc_dec_set_format;
   decoder_class->sink_event = gst_vmnc_dec_sink_event;
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&vmnc_dec_src_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&vmnc_dec_sink_factory));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &vmnc_dec_src_factory);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &vmnc_dec_sink_factory);
   gst_element_class_set_static_metadata (gstelement_class, "VMnc video decoder",
-      "Codec/Decoder/Video",
-      "Decode VmWare video to raw (RGB) video",
+      "Codec/Decoder/Video", "Decode VmWare video to raw (RGB) video",
       "Michael Smith <msmith@xiph.org>");
 
   GST_DEBUG_CATEGORY_INIT (vmnc_debug, "vmncdec", 0, "VMnc decoder");
diff --git a/gst/y4m/Makefile.in b/gst/y4m/Makefile.in
index eb19efb..03d499a 100644
--- a/gst/y4m/Makefile.in
+++ b/gst/y4m/Makefile.in
@@ -302,6 +302,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -323,6 +325,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -372,6 +376,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -517,6 +523,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -643,8 +651,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,8 +693,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/y4m/gsty4mdec.c b/gst/y4m/gsty4mdec.c
index c6b2065..30966b0 100644
--- a/gst/y4m/gsty4mdec.c
+++ b/gst/y4m/gsty4mdec.c
@@ -106,10 +106,10 @@
 
   element_class->change_state = GST_DEBUG_FUNCPTR (gst_y4m_dec_change_state);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_y4m_dec_src_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_y4m_dec_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_y4m_dec_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_y4m_dec_sink_template);
 
   gst_element_class_set_static_metadata (element_class,
       "YUV4MPEG demuxer/decoder", "Codec/Demuxer",
diff --git a/gst/yadif/Makefile.in b/gst/yadif/Makefile.in
index 724c7f7..19e5dae 100644
--- a/gst/yadif/Makefile.in
+++ b/gst/yadif/Makefile.in
@@ -300,6 +300,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -321,6 +323,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -370,6 +374,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -515,6 +521,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -641,8 +649,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -685,8 +691,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/yadif/gstyadif.c b/gst/yadif/gstyadif.c
index 1dcf2ca..b75894e 100644
--- a/gst/yadif/gstyadif.c
+++ b/gst/yadif/gstyadif.c
@@ -131,10 +131,10 @@
 
   /* Setting up pads and setting metadata should be moved to
      base_class_init if you intend to subclass this class. */
-  gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
-      gst_static_pad_template_get (&gst_yadif_sink_template));
-  gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
-      gst_static_pad_template_get (&gst_yadif_src_template));
+  gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+      &gst_yadif_sink_template);
+  gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+      &gst_yadif_src_template);
 
   gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass),
       "YADIF deinterlacer", "Video/Filter",
diff --git a/ltmain.sh b/ltmain.sh
index 2ad8be8..a736cf9 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -31,7 +31,7 @@
 
 PROGRAM=libtool
 PACKAGE=libtool
-VERSION="2.4.6 Debian-2.4.6-1"
+VERSION="2.4.6 Debian-2.4.6-2"
 package_revision=2.4.6
 
 
@@ -1977,7 +1977,7 @@
 # End:
 
 # Set a version string.
-scriptversion='(GNU libtool) 2.4.6 Debian-2.4.6-1'
+scriptversion='(GNU libtool) 2.4.6'
 
 
 # func_echo ARG...
@@ -2068,7 +2068,7 @@
        compiler:       $LTCC
        compiler flags: $LTCFLAGS
        linker:         $LD (gnu? $with_gnu_ld)
-       version:        $progname $scriptversion
+       version:        $progname $scriptversion Debian-2.4.6-2
        automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
        autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`
 
diff --git a/m4/Makefile.in b/m4/Makefile.in
index 83c49f2..41206e5 100644
--- a/m4/Makefile.in
+++ b/m4/Makefile.in
@@ -216,6 +216,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -237,6 +239,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -286,6 +290,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -431,6 +437,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -557,8 +565,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -601,8 +607,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/pkgconfig/Makefile.in b/pkgconfig/Makefile.in
index d70331d..e3e957f 100644
--- a/pkgconfig/Makefile.in
+++ b/pkgconfig/Makefile.in
@@ -278,6 +278,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -299,6 +301,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -348,6 +352,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -493,6 +499,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -619,8 +627,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -663,8 +669,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/pkgconfig/gstreamer-gl.pc.in b/pkgconfig/gstreamer-gl.pc.in
index 5589e2a..112ce21 100644
--- a/pkgconfig/gstreamer-gl.pc.in
+++ b/pkgconfig/gstreamer-gl.pc.in
@@ -10,4 +10,4 @@
 Requires: gstreamer-base-@GST_API_VERSION@ gstreamer-@GST_API_VERSION@
 
 Libs: -L${libdir} -lgstgl-@GST_API_VERSION@ @GL_LIBS@
-Cflags: -I${includedir} @GL_CFLAGS@
+Cflags: -I${includedir} -I${libdir}/gstreamer-@GST_API_VERSION@/include @GL_CFLAGS@
diff --git a/pkgconfig/gstreamer-player-uninstalled.pc.in b/pkgconfig/gstreamer-player-uninstalled.pc.in
index 5a495f4..5c2c0d7 100644
--- a/pkgconfig/gstreamer-player-uninstalled.pc.in
+++ b/pkgconfig/gstreamer-player-uninstalled.pc.in
@@ -5,7 +5,7 @@
 
 Name: GStreamer Player, Uninstalled
 Description: GStreamer Player convenience library, uninstalled
-Requires: gstreamer-@GST_API_VERSION@
+Requires: gstreamer-@GST_API_VERSION@ gstreamer-video-@GST_API_VERSION@
 Version: @VERSION@
 Libs: -L${libdir} -lgstplayer-@GST_API_VERSION@
 Cflags: -I${includedir}
diff --git a/pkgconfig/gstreamer-player.pc.in b/pkgconfig/gstreamer-player.pc.in
index f296e7f..6400261 100644
--- a/pkgconfig/gstreamer-player.pc.in
+++ b/pkgconfig/gstreamer-player.pc.in
@@ -5,7 +5,7 @@
 
 Name: GStreamer Player
 Description: GStreamer Player convenience library
-Requires: gstreamer-@GST_API_VERSION@
+Requires: gstreamer-@GST_API_VERSION@ gstreamer-video-@GST_API_VERSION@
 Version: @VERSION@
 Libs: -L${libdir} -lgstplayer-@GST_API_VERSION@
 Cflags: -I${includedir}
diff --git a/po/af.gmo b/po/af.gmo
index 716fa90..0c11cda 100644
--- a/po/af.gmo
+++ b/po/af.gmo
Binary files differ
diff --git a/po/af.po b/po/af.po
index e0d0471..afc2616 100644
--- a/po/af.po
+++ b/po/af.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins 0.7.6\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2004-03-18 14:16+0200\n"
 "Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n"
 "Language-Team: Afrikaans <i18n@af.org.za>\n"
@@ -16,6 +16,12 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
@@ -63,9 +69,6 @@
 msgid "Could not start sndio"
 msgstr "Kon nie skryf na lêer \"%s\" nie."
 
-msgid "Internal data flow error."
-msgstr ""
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 
@@ -85,10 +88,10 @@
 msgid "Failed to get fragment URL."
 msgstr ""
 
-msgid "Internal data stream error."
+msgid "Couldn't download fragments"
 msgstr ""
 
-msgid "Couldn't download fragments"
+msgid "Internal data stream error."
 msgstr ""
 
 #, fuzzy
@@ -130,11 +133,23 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr ""
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
 msgstr ""
 
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
 msgstr ""
 
 #~ msgid "Could not write to file \"%s\"."
diff --git a/po/az.gmo b/po/az.gmo
index 341801d..f1eb31e 100644
--- a/po/az.gmo
+++ b/po/az.gmo
Binary files differ
diff --git a/po/az.po b/po/az.po
index 7bef016..bae75a2 100644
--- a/po/az.po
+++ b/po/az.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-0.8.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2004-03-19 18:29+0200\n"
 "Last-Translator: Metin Amiroff <metin@karegen.com>\n"
 "Language-Team: Azerbaijani <translation-team-az@lists.sourceforge.net>\n"
@@ -17,6 +17,12 @@
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: KBabel 1.0.2\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
@@ -64,9 +70,6 @@
 msgid "Could not start sndio"
 msgstr "\"%s\" faylına yazıla bilmədi."
 
-msgid "Internal data flow error."
-msgstr ""
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 
@@ -86,10 +89,10 @@
 msgid "Failed to get fragment URL."
 msgstr ""
 
-msgid "Internal data stream error."
+msgid "Couldn't download fragments"
 msgstr ""
 
-msgid "Couldn't download fragments"
+msgid "Internal data stream error."
 msgstr ""
 
 #, fuzzy
@@ -131,11 +134,23 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr ""
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
 msgstr ""
 
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
 msgstr ""
 
 #~ msgid "Could not write to file \"%s\"."
diff --git a/po/bg.gmo b/po/bg.gmo
index bdc87b7..0a21e7f 100644
--- a/po/bg.gmo
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
index 9e3fbdf..8b52a90 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2016-02-21 21:03+0200\n"
 "Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
 "Language-Team: Bulgarian <dict@ludost.net>\n"
@@ -18,6 +18,12 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr "форматът не е бил уточнен преди извикване на функцията за получаване"
 
@@ -62,9 +68,6 @@
 msgid "Could not start sndio"
 msgstr "Не може да се стартира sndio"
 
-msgid "Internal data flow error."
-msgstr "Вътрешна грешка в потока на данни."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 "Генерираният файл е с по-дълго време за буфериране отколкото е самата му "
@@ -86,12 +89,12 @@
 msgid "Failed to get fragment URL."
 msgstr "Неуспешно получаване на адреса на фрагмента."
 
-msgid "Internal data stream error."
-msgstr "Вътрешна грешка в потока на данни."
-
 msgid "Couldn't download fragments"
 msgstr "Фрагментите не могат да бъдат свалени"
 
+msgid "Internal data stream error."
+msgstr "Вътрешна грешка в потока на данни."
+
 msgid "No file name specified for writing."
 msgstr "Не е указано име на файл за запис."
 
@@ -136,11 +139,28 @@
 "Файлът с настройките на цифровото видеоръзпръскване (DVB) „%s“ не може да "
 "бъде прочетен"
 
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
+msgstr "Липсват данни за канала за цифрово видеоръзпръскване (DVB) „%s“"
+
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Липсват данни за канала за цифрово видеоръзпръскване (DVB) „%s“"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Липсват данни за канала за цифрово видеоръзпръскване (DVB) „%s“"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+"Файлът с настройките на цифровото видеоръзпръскване (DVB) не може да бъде "
+"открит"
+
 msgid "DVB channel configuration file doesn't contain any channels"
 msgstr ""
 "Файлът с настройките на цифровото видеоръзпръскване (DVB) не съдържа никакви "
 "канали"
 
-#, c-format
-msgid "Couldn't find details for DVB channel %s"
-msgstr "Липсват данни за канала за цифрово видеоръзпръскване (DVB) „%s“"
+#~ msgid "Internal data flow error."
+#~ msgstr "Вътрешна грешка в потока на данни."
diff --git a/po/ca.gmo b/po/ca.gmo
index c7f6d0f..a3d82a1 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index aa9c17c..3c63fa6 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2012-01-01 14:19+0100\n"
 "Last-Translator: Gil Forcada <gforcada@gnome.org>\n"
 "Language-Team: Catalan <ca@dodds.net>\n"
@@ -19,6 +19,12 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
@@ -66,9 +72,6 @@
 msgid "Could not start sndio"
 msgstr "No s'ha pogut llegir el DVD."
 
-msgid "Internal data flow error."
-msgstr "S'ha produït un error intern de flux de dades."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 
@@ -88,12 +91,12 @@
 msgid "Failed to get fragment URL."
 msgstr ""
 
-msgid "Internal data stream error."
-msgstr "S'ha produït un error intern de flux de dades."
-
 msgid "Couldn't download fragments"
 msgstr ""
 
+msgid "Internal data stream error."
+msgstr "S'ha produït un error intern de flux de dades."
+
 msgid "No file name specified for writing."
 msgstr "No s'ha especificat cap nom de fitxer per a l'escriptura."
 
@@ -132,12 +135,27 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr ""
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr ""
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr ""
 
+#, c-format
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr ""
+
+#~ msgid "Internal data flow error."
+#~ msgstr "S'ha produït un error intern de flux de dades."
+
 #~ msgid "Could not write to file \"%s\"."
 #~ msgstr "No s'ha pogut escriure al fitxer «%s»."
diff --git a/po/cs.gmo b/po/cs.gmo
index 33bee40..58531f8 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index 11eb8a0..4d6c56e 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2015-10-15 20:54+0200\n"
 "Last-Translator: Marek Černocký <marek@manet.cz>\n"
 "Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
@@ -22,6 +22,12 @@
 "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
 "X-Generator: Gtranslator 2.91.7\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr "formát nebyl vyjednán před získáním funkce"
 
@@ -66,9 +72,6 @@
 msgid "Could not start sndio"
 msgstr "Nelze spustit sndio"
 
-msgid "Internal data flow error."
-msgstr "Vnitřní chyba datového toku."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 "Vygenerovaný soubor má delší čas videa vloženého před začátek (preroll) než "
@@ -92,12 +95,12 @@
 msgid "Failed to get fragment URL."
 msgstr "Selhalo získání adresy URL fragmentu."
 
-msgid "Internal data stream error."
-msgstr "Chyba proudu vnitřních dat."
-
 msgid "Couldn't download fragments"
 msgstr "Nelze stáhnout fragmenty"
 
+msgid "Internal data stream error."
+msgstr "Chyba proudu vnitřních dat."
+
 msgid "No file name specified for writing."
 msgstr "K zápisu nebyl zadán žádný název souboru."
 
@@ -138,13 +141,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr "Nelze načíst soubor s nastavením kanálu DVB: %s"
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "Soubor s nastavením kanálů DVB neobsahuje žádné kanály"
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Nelze najít podrobnosti ke kanálu DVB %s"
 
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Nelze najít podrobnosti ke kanálu DVB %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Nelze najít podrobnosti ke kanálu DVB %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Nelze najít soubor s nastavením kanálů DVB"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "Soubor s nastavením kanálů DVB neobsahuje žádné kanály"
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Vnitřní chyba datového toku."
+
 #~ msgid "default GStreamer sound events audiosink"
 #~ msgstr "výchozí zvukový cíl GStreamer pro zvukové události"
 
diff --git a/po/da.gmo b/po/da.gmo
index 0991191..3fde8f2 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index b075b39..ed4a584 100644
--- a/po/da.po
+++ b/po/da.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad-1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2015-12-05 11:28+0200\n"
 "Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
 "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
@@ -17,6 +17,12 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr "format blev ikke forhandlet før hent funktion"
 
@@ -61,9 +67,6 @@
 msgid "Could not start sndio"
 msgstr "Kunne ikke starte sndio"
 
-msgid "Internal data flow error."
-msgstr "Intern datastrømfejl."
-
 # pre-roll. The name of an online video commercial that appears prior to an online video,
 # http://en.wiktionary.org/wiki/preroll
 msgid "Generated file has a larger preroll time than its streams duration"
@@ -85,12 +88,12 @@
 msgid "Failed to get fragment URL."
 msgstr "Kunne ikke indhente fragmentadresse."
 
-msgid "Internal data stream error."
-msgstr "Intern datastrømfejl."
-
 msgid "Couldn't download fragments"
 msgstr "Kunne ikke hente fragmenter"
 
+msgid "Internal data stream error."
+msgstr "Intern datastrømfejl."
+
 msgid "No file name specified for writing."
 msgstr "Intet filnavn er angivet til skrivning."
 
@@ -130,13 +133,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr "Kunne ikke indlæse DVB-kanalens konfigurationsfil: %s"
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "DVB-kanalens konfigurationsfil indeholder ikke nogen kanaler"
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Kunne ikke finde detaljer for DVB-kanalen %s"
 
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Kunne ikke finde detaljer for DVB-kanalen %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Kunne ikke finde detaljer for DVB-kanalen %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Kunne ikke finde DVB-kanalens konfigurationsfil"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "DVB-kanalens konfigurationsfil indeholder ikke nogen kanaler"
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Intern datastrømfejl."
+
 #~ msgid "default GStreamer sound events audiosink"
 #~ msgstr "standardlydkanal for GStreamers lydhændelser"
 
diff --git a/po/de.gmo b/po/de.gmo
index 42c9d2a..4f6245c 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index f9be94c..64537bb 100644
--- a/po/de.po
+++ b/po/de.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2015-10-21 00:15+0200\n"
 "Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
@@ -19,6 +19,12 @@
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Poedit 1.8.5\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr "das Format wurde vor der get-Funktion nicht ausgehandelt"
 
@@ -65,9 +71,6 @@
 msgid "Could not start sndio"
 msgstr "sndio konnten nicht gestartet werden"
 
-msgid "Internal data flow error."
-msgstr "Interner Datenstromfehler."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 "Die erzeugte Datei hat eine größere Vorlaufzeit als die Dauer ihres "
@@ -92,12 +95,12 @@
 msgid "Failed to get fragment URL."
 msgstr "Ermitteln der Fragment-Adresse schlug fehl."
 
-msgid "Internal data stream error."
-msgstr "Interner Datenstromfehler."
-
 msgid "Couldn't download fragments"
 msgstr "Fragmente konnten nicht heruntergeladen werden"
 
+msgid "Internal data stream error."
+msgstr "Interner Datenstromfehler."
+
 msgid "No file name specified for writing."
 msgstr "Kein Dateiname zum Schreiben angegeben."
 
@@ -140,13 +143,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr "DVB Kanal-Konfigurationsdatei konnte nicht geladen werden: %s"
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "DVB Kanal-Konfigurationsdatei enthält keine Kanäle"
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Details zu DVB-Kanal %s konnten nicht gefunden werden"
 
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Details zu DVB-Kanal %s konnten nicht gefunden werden"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Details zu DVB-Kanal %s konnten nicht gefunden werden"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "DVB Kanal-Konfigurationsdatei konnte nicht gefunden werden"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "DVB Kanal-Konfigurationsdatei enthält keine Kanäle"
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Interner Datenstromfehler."
+
 #~ msgid "default GStreamer sound events audiosink"
 #~ msgstr "Voreingestellte GStreamer Tonereignis-Audioziel"
 
diff --git a/po/el.gmo b/po/el.gmo
index f4fcf78..7d5900e 100644
--- a/po/el.gmo
+++ b/po/el.gmo
Binary files differ
diff --git a/po/el.po b/po/el.po
index 367f5b1..1b6e0c1 100644
--- a/po/el.po
+++ b/po/el.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2012-05-05 19:17+0100\n"
 "Last-Translator: Savvas Radevic <vicedar@gmail.com>\n"
 "Language-Team: Greek <team@lists.gnome.gr>\n"
@@ -19,6 +19,12 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n>1;\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
@@ -67,9 +73,6 @@
 msgid "Could not start sndio"
 msgstr "Αδυναμία ανάγνωσης δίσκου DVD."
 
-msgid "Internal data flow error."
-msgstr "Εσωτερικό σφάλμα ροής δεδομένων."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 
@@ -89,12 +92,12 @@
 msgid "Failed to get fragment URL."
 msgstr ""
 
-msgid "Internal data stream error."
-msgstr "Εσωτερικό σφάλμα ροής δεδομένων."
-
 msgid "Couldn't download fragments"
 msgstr ""
 
+msgid "Internal data stream error."
+msgstr "Εσωτερικό σφάλμα ροής δεδομένων."
+
 msgid "No file name specified for writing."
 msgstr "Δεν έχει καθορισθεί όνομα αρχείου για εγγραφή."
 
@@ -133,12 +136,27 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr ""
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr ""
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr ""
 
+#, c-format
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr ""
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Εσωτερικό σφάλμα ροής δεδομένων."
+
 #~ msgid "Could not write to file \"%s\"."
 #~ msgstr "Αδυναμία εγγραφής στο αρχείο \"%s\"."
diff --git a/po/en_GB.gmo b/po/en_GB.gmo
index 809dd8c..7e4eec7 100644
--- a/po/en_GB.gmo
+++ b/po/en_GB.gmo
Binary files differ
diff --git a/po/en_GB.po b/po/en_GB.po
index 93db4e9..f4eea15 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins 0.8.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2004-04-26 10:41-0400\n"
 "Last-Translator: Gareth Owen <gowen72@yahoo.com>\n"
 "Language-Team: English (British) <en_gb@li.org>\n"
@@ -15,6 +15,12 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
@@ -62,9 +68,6 @@
 msgid "Could not start sndio"
 msgstr "Could not write to file \"%s\"."
 
-msgid "Internal data flow error."
-msgstr ""
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 
@@ -84,10 +87,10 @@
 msgid "Failed to get fragment URL."
 msgstr ""
 
-msgid "Internal data stream error."
+msgid "Couldn't download fragments"
 msgstr ""
 
-msgid "Couldn't download fragments"
+msgid "Internal data stream error."
 msgstr ""
 
 #, fuzzy
@@ -129,11 +132,23 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr ""
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
 msgstr ""
 
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
 msgstr ""
 
 #~ msgid "Could not write to file \"%s\"."
diff --git a/po/eo.gmo b/po/eo.gmo
index 93aa8b1..bd10fce 100644
--- a/po/eo.gmo
+++ b/po/eo.gmo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index 7b13ab4..45e2583 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2011-06-04 22:18+0200\n"
 "Last-Translator: Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>\n"
 "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
@@ -17,6 +17,12 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1)\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
@@ -64,9 +70,6 @@
 msgid "Could not start sndio"
 msgstr "Ne eblis legi la DVD-n."
 
-msgid "Internal data flow error."
-msgstr "Interna datum-flu-eraro."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 
@@ -86,12 +89,12 @@
 msgid "Failed to get fragment URL."
 msgstr ""
 
-msgid "Internal data stream error."
-msgstr "Interna datum-flu-eraro."
-
 msgid "Couldn't download fragments"
 msgstr ""
 
+msgid "Internal data stream error."
+msgstr "Interna datum-flu-eraro."
+
 msgid "No file name specified for writing."
 msgstr "Neniu dosiernomo estas specifite por skribi."
 
@@ -130,12 +133,27 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr ""
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr ""
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr ""
 
+#, c-format
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr ""
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Interna datum-flu-eraro."
+
 #~ msgid "Could not write to file \"%s\"."
 #~ msgstr "Ne eblis skribi al dosiero \"%s\"."
diff --git a/po/es.gmo b/po/es.gmo
index 4595c82..238d0a9 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index 016946c..898a4ec 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2011-10-02 15:47+0200\n"
 "Last-Translator: Jorge González González <aloriel@gmail.com>\n"
 "Language-Team: Spanish <es@li.org>\n"
@@ -17,6 +17,12 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n!=1);\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
@@ -64,9 +70,6 @@
 msgid "Could not start sndio"
 msgstr "No se pudo leer el DVD."
 
-msgid "Internal data flow error."
-msgstr "Error en el flujo de datos interno."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 
@@ -86,12 +89,12 @@
 msgid "Failed to get fragment URL."
 msgstr ""
 
-msgid "Internal data stream error."
-msgstr "Error en el flujo de datos interno."
-
 msgid "Couldn't download fragments"
 msgstr ""
 
+msgid "Internal data stream error."
+msgstr "Error en el flujo de datos interno."
+
 msgid "No file name specified for writing."
 msgstr "No se especificó un nombre de archivo para su escritura."
 
@@ -131,13 +134,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr "Configuración del canal del mezclador virtual"
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr ""
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr ""
 
+#, c-format
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Configuración del canal del mezclador virtual"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr ""
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Error en el flujo de datos interno."
+
 #~ msgid "Could not write to file \"%s\"."
 #~ msgstr "No se pudo escribir en el archivo «%s»."
 
diff --git a/po/eu.gmo b/po/eu.gmo
index d0ad0c4..3fedd14 100644
--- a/po/eu.gmo
+++ b/po/eu.gmo
Binary files differ
diff --git a/po/eu.po b/po/eu.po
index 3b5564a..52c80e5 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad-0.10.17.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2010-03-25 12:30+0100\n"
 "Last-Translator: Mikel Olasagasti Uranga <hey_neken@mundurat.net>\n"
 "Language-Team: Basque <translation-team-eu@lists.sourceforge.net>\n"
@@ -19,6 +19,12 @@
 "X-Generator: KBabel 1.11.4\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
@@ -65,9 +71,6 @@
 msgid "Could not start sndio"
 msgstr "Ezin izan da DVDaren tituluaren informazioa irakurri."
 
-msgid "Internal data flow error."
-msgstr "Datu-korrontearen barne-errorea."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 
@@ -87,12 +90,12 @@
 msgid "Failed to get fragment URL."
 msgstr ""
 
-msgid "Internal data stream error."
-msgstr "Datu-korrontearen barne-errorea."
-
 msgid "Couldn't download fragments"
 msgstr ""
 
+msgid "Internal data stream error."
+msgstr "Datu-korrontearen barne-errorea."
+
 msgid "No file name specified for writing."
 msgstr "Ez da fitxategi-izenik zehaztu idazteko."
 
@@ -131,13 +134,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr ""
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr ""
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr ""
 
+#, c-format
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr ""
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Datu-korrontearen barne-errorea."
+
 #~ msgid "Could not write to file \"%s\"."
 #~ msgstr "Ezin izan da idatzi \"%s\" fitxategian."
 
diff --git a/po/fi.gmo b/po/fi.gmo
index 70df6a9..d61e65e 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index 7fec6a0..c86d78e 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.13.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2009-08-12 22:13+0300\n"
 "Last-Translator: Tommi Vainikainen <Tommi.Vainikainen@iki.fi>\n"
 "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
@@ -22,6 +22,12 @@
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: KBabel 1.11.2\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
@@ -68,9 +74,6 @@
 msgid "Could not start sndio"
 msgstr "DVD:n otsikkotietoja ei voitu lukea."
 
-msgid "Internal data flow error."
-msgstr "Sisäinen tietovirtavirhe."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 
@@ -90,12 +93,12 @@
 msgid "Failed to get fragment URL."
 msgstr ""
 
-msgid "Internal data stream error."
-msgstr "Sisäisen tietovirran virhe."
-
 msgid "Couldn't download fragments"
 msgstr ""
 
+msgid "Internal data stream error."
+msgstr "Sisäisen tietovirran virhe."
+
 msgid "No file name specified for writing."
 msgstr "Kirjoitettavaa tiedostonimeä ei annettu."
 
@@ -135,13 +138,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr "Näennäinen mikserikanava-asetus"
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr ""
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr ""
 
+#, c-format
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Näennäinen mikserikanava-asetus"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr ""
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Sisäinen tietovirtavirhe."
+
 #~ msgid "Could not write to file \"%s\"."
 #~ msgstr "Tiedostoon \"%s\" ei voitu kirjoittaa."
 
diff --git a/po/fr.gmo b/po/fr.gmo
index b7a3b33..d7d5691 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index a3175cc..024fa49 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2016-02-20 16:27+0100\n"
 "Last-Translator: Stéphane Aulery <lkppo@free.fr>\n"
 "Language-Team: French <traduc@traduc.org>\n"
@@ -18,6 +18,12 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr "Format non négocié avant l'appel de la fonction get"
 
@@ -62,9 +68,6 @@
 msgid "Could not start sndio"
 msgstr "Impossible de démarrer sndio"
 
-msgid "Internal data flow error."
-msgstr "Erreur du flux de données interne."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 "Le fichier généré a un temps de lancement plus long que la durée du flux"
@@ -87,12 +90,12 @@
 msgid "Failed to get fragment URL."
 msgstr "Échec de la récupération de l’URL de fragment."
 
-msgid "Internal data stream error."
-msgstr "Erreur interne de flux de données."
-
 msgid "Couldn't download fragments"
 msgstr "Impossible de télécharger les fragments"
 
+msgid "Internal data stream error."
+msgstr "Erreur interne de flux de données."
+
 msgid "No file name specified for writing."
 msgstr "Aucun nom de fichier indiqué en écriture."
 
@@ -134,13 +137,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr "Impossible de charger le fichier de configuration de canal DVB : %s"
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "Le fichier de configuration de canal DVB ne contient aucun canal"
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Impossible de trouver des informations sur le canal DVB %s"
 
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Impossible de trouver des informations sur le canal DVB %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Impossible de trouver des informations sur le canal DVB %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Impossible de trouver le fichier de configuration de canal DVB"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "Le fichier de configuration de canal DVB ne contient aucun canal"
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Erreur du flux de données interne."
+
 #~ msgid "default GStreamer sound events audiosink"
 #~ msgstr "récepteur audio GStreamer par défaut pour les événements sonores"
 
diff --git a/po/gl.gmo b/po/gl.gmo
index b9eaab5..7173231 100644
--- a/po/gl.gmo
+++ b/po/gl.gmo
Binary files differ
diff --git a/po/gl.po b/po/gl.po
index 7af7d95..027a614 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2011-09-05 12:50+0200\n"
 "Last-Translator: Fran Dieguez <frandieguez@ubuntu.com>\n"
 "Language-Team: Galician <proxecto@trasno.net>\n"
@@ -19,6 +19,12 @@
 "Plural-Forms: nplurals=2; plural=(n!=1);\n"
 "X-Poedit-Language: galego\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
@@ -66,9 +72,6 @@
 msgid "Could not start sndio"
 msgstr "Non foi posíbel ler o DVD."
 
-msgid "Internal data flow error."
-msgstr "Produciuse un erro interno no fluxo de datos."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 
@@ -88,12 +91,12 @@
 msgid "Failed to get fragment URL."
 msgstr ""
 
-msgid "Internal data stream error."
-msgstr "Produciuse un erro interno no fluxo de datos."
-
 msgid "Couldn't download fragments"
 msgstr ""
 
+msgid "Internal data stream error."
+msgstr "Produciuse un erro interno no fluxo de datos."
+
 msgid "No file name specified for writing."
 msgstr "Non se especificou ningún nome de ficheiro para a súa escritura."
 
@@ -132,13 +135,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr ""
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr ""
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr ""
 
+#, c-format
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr ""
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Produciuse un erro interno no fluxo de datos."
+
 #~ msgid "Could not write to file \"%s\"."
 #~ msgstr "Non foi posíbel escribir no ficheiro «%s»."
 
diff --git a/po/gst-plugins-bad-1.0.pot b/po/gst-plugins-bad-1.0.pot
index e5346f6..a21ccb3 100644
--- a/po/gst-plugins-bad-1.0.pot
+++ b/po/gst-plugins-bad-1.0.pot
@@ -5,9 +5,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-bad 1.8.3\n"
+"Project-Id-Version: gst-plugins-bad 1.9.90\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,39 +16,47 @@
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ext/gl/gstgltestsrc.c:680
+#: ext/gl/gstgltestsrc.c:521
+msgid "failed to draw pattern"
+msgstr ""
+
+#: ext/gl/gstgltestsrc.c:522
+msgid "A GL error occured"
+msgstr ""
+
+#: ext/gl/gstgltestsrc.c:528
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-#: ext/opencv/gsttemplatematch.cpp:188
+#: ext/opencv/gsttemplatematch.cpp:186
 msgid "OpenCV failed to load template image"
 msgstr ""
 
-#: ext/resindvd/resindvdsrc.c:362
+#: ext/resindvd/resindvdsrc.c:361
 msgid "Could not read title information for DVD."
 msgstr ""
 
-#: ext/resindvd/resindvdsrc.c:368
+#: ext/resindvd/resindvdsrc.c:367
 #, c-format
 msgid "Failed to open DVD device '%s'."
 msgstr ""
 
-#: ext/resindvd/resindvdsrc.c:374
+#: ext/resindvd/resindvdsrc.c:373
 msgid "Failed to set PGC based seeking."
 msgstr ""
 
-#: ext/resindvd/resindvdsrc.c:1165
+#: ext/resindvd/resindvdsrc.c:1164
 msgid ""
 "Could not read DVD. This may be because the DVD is encrypted and a DVD "
 "decryption library is not installed."
 msgstr ""
 
-#: ext/resindvd/resindvdsrc.c:1170 ext/resindvd/resindvdsrc.c:1179
+#: ext/resindvd/resindvdsrc.c:1169 ext/resindvd/resindvdsrc.c:1178
 msgid "Could not read DVD."
 msgstr ""
 
 #: ext/smoothstreaming/gstmssdemux.c:405
-#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:647
+#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:695
 msgid "This file contains no playable streams."
 msgstr ""
 
@@ -56,37 +64,33 @@
 msgid "Could not open sndfile stream for reading."
 msgstr ""
 
-#: ext/sndio/sndiosink.c:324 ext/sndio/sndiosrc.c:321
+#: ext/sndio/sndiosink.c:324 ext/sndio/sndiosrc.c:320
 msgid "Could not establish connection to sndio"
 msgstr ""
 
-#: ext/sndio/sndiosink.c:331 ext/sndio/sndiosrc.c:328
+#: ext/sndio/sndiosink.c:331 ext/sndio/sndiosrc.c:327
 msgid "Failed to query sndio capabilities"
 msgstr ""
 
-#: ext/sndio/sndiosink.c:424 ext/sndio/sndiosrc.c:422
+#: ext/sndio/sndiosink.c:424 ext/sndio/sndiosrc.c:421
 msgid "Could not configure sndio"
 msgstr ""
 
-#: ext/sndio/sndiosink.c:430 ext/sndio/sndiosrc.c:428
+#: ext/sndio/sndiosink.c:430 ext/sndio/sndiosrc.c:427
 msgid "Could not start sndio"
 msgstr ""
 
-#: gst/aiff/aiffparse.c:1504
-msgid "Internal data flow error."
-msgstr ""
-
-#: gst/asfmux/gstasfmux.c:1832
+#: gst/asfmux/gstasfmux.c:1831
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 
-#: gst/camerabin2/camerabingeneral.c:166 gst/camerabin2/gstcamerabin2.c:1876
-#: gst/camerabin2/gstdigitalzoom.c:282 gst/camerabin2/gstviewfinderbin.c:271
+#: gst/camerabin2/camerabingeneral.c:166 gst/camerabin2/gstcamerabin2.c:1875
+#: gst/camerabin2/gstdigitalzoom.c:282 gst/camerabin2/gstviewfinderbin.c:270
 #, c-format
 msgid "Missing element '%s' - check your GStreamer installation."
 msgstr ""
 
-#: gst/camerabin2/gstcamerabin2.c:364
+#: gst/camerabin2/gstcamerabin2.c:363
 msgid "File location is set to NULL, please set it to a valid filename"
 msgstr ""
 
@@ -94,23 +98,21 @@
 msgid "Digitalzoom element couldn't be created"
 msgstr ""
 
-#: gst/dvdspu/gstdvdspu.c:1042
+#: gst/dvdspu/gstdvdspu.c:1041
 msgid "Subpicture format was not configured before data flow"
 msgstr ""
 
-#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:2740
+#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:3056
 msgid "Failed to get fragment URL."
 msgstr ""
 
-#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:2975
-#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:3170
-#: gst/mpegtsdemux/mpegtsbase.c:1383 gst/mpegtsdemux/mpegtsbase.c:1387
-#: gst/nuvdemux/gstnuvdemux.c:736
-msgid "Internal data stream error."
+#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:3407
+msgid "Couldn't download fragments"
 msgstr ""
 
-#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:3087
-msgid "Couldn't download fragments"
+#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:3496
+#: gst/mpegtsdemux/mpegtsbase.c:1392
+msgid "Internal data stream error."
 msgstr ""
 
 #: gst/videomeasure/gstvideomeasure_collector.c:294
@@ -127,45 +129,60 @@
 msgid "Could not open file \"%s\" for writing."
 msgstr ""
 
-#: sys/dvb/gstdvbsrc.c:1564 sys/dvb/gstdvbsrc.c:1753
+#: sys/dvb/gstdvbsrc.c:1567 sys/dvb/gstdvbsrc.c:1780
 #, c-format
 msgid "Device \"%s\" does not exist."
 msgstr ""
 
-#: sys/dvb/gstdvbsrc.c:1568
+#: sys/dvb/gstdvbsrc.c:1571
 #, c-format
 msgid "Could not open frontend device \"%s\"."
 msgstr ""
 
-#: sys/dvb/gstdvbsrc.c:1582
+#: sys/dvb/gstdvbsrc.c:1590
 #, c-format
 msgid "Could not get settings from frontend device \"%s\"."
 msgstr ""
 
-#: sys/dvb/gstdvbsrc.c:1599
+#: sys/dvb/gstdvbsrc.c:1607
 #, c-format
 msgid "Cannot enumerate delivery systems from frontend device \"%s\"."
 msgstr ""
 
-#: sys/dvb/gstdvbsrc.c:1757
+#: sys/dvb/gstdvbsrc.c:1784
 #, c-format
 msgid "Could not open file \"%s\" for reading."
 msgstr ""
 
-#: sys/dvb/parsechannels.c:165
+#: sys/dvb/parsechannels.c:359
 msgid "Couldn't find DVB channel configuration file"
 msgstr ""
 
-#: sys/dvb/parsechannels.c:168
+#: sys/dvb/parsechannels.c:362 sys/dvb/parsechannels.c:518
 #, c-format
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr ""
 
-#: sys/dvb/parsechannels.c:175
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr ""
-
-#: sys/dvb/parsechannels.c:449
+#: sys/dvb/parsechannels.c:371 sys/dvb/parsechannels.c:803
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr ""
+
+#: sys/dvb/parsechannels.c:381
+#, c-format
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#: sys/dvb/parsechannels.c:391
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#: sys/dvb/parsechannels.c:515
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+#: sys/dvb/parsechannels.c:525
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr ""
diff --git a/po/hr.gmo b/po/hr.gmo
index 3e85119..b15b5c8 100644
--- a/po/hr.gmo
+++ b/po/hr.gmo
Binary files differ
diff --git a/po/hr.po b/po/hr.po
index dfb86e6..0f18211 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2016-05-27 12:45-0700\n"
 "Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n"
 "Language-Team: Croatian <lokalizacija@linux.hr>\n"
@@ -19,6 +19,12 @@
 "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
 "X-Generator: Lokalize 2.0\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr "format nije bio dogovoren prije ‘get’ funkcije"
 
@@ -65,9 +71,6 @@
 msgid "Could not start sndio"
 msgstr "‘sndio’ nije moguće pokrenuti"
 
-msgid "Internal data flow error."
-msgstr "Interna greška u protoku podataka."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 "U generiranoj datoteci priprema (preroll vrijeme) je duža od ukupnog "
@@ -90,12 +93,12 @@
 msgid "Failed to get fragment URL."
 msgstr "Nije uspjelo dobiti fragmente adrese URL-a."
 
-msgid "Internal data stream error."
-msgstr "Interna greška toka (stream) podataka."
-
 msgid "Couldn't download fragments"
 msgstr "Nije moguće preuzeti fragmente"
 
+msgid "Internal data stream error."
+msgstr "Interna greška toka (stream) podataka."
+
 msgid "No file name specified for writing."
 msgstr "Nedostaje naziv (nema ga) datoteke za pisanje."
 
@@ -137,12 +140,27 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr "Nije moguće učitati konfiguracijsku datoteku za DVB kanal: %s"
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "Konfiguracijska datoteka za DVB kanal ne sadrži nijedan kanal"
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Pojedinosti za DVB kanal %s nije moguće pronaći"
 
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Pojedinosti za DVB kanal %s nije moguće pronaći"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Pojedinosti za DVB kanal %s nije moguće pronaći"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Konfiguracijsku datoteku za DVB kanal nije moguće pronaći"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "Konfiguracijska datoteka za DVB kanal ne sadrži nijedan kanal"
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Interna greška u protoku podataka."
+
 #~ msgid "Could not write to file \"%s\"."
 #~ msgstr "Ne mogu pisati u datoteku „%s”."
diff --git a/po/hu.gmo b/po/hu.gmo
index 7d36384..c4ee658 100644
--- a/po/hu.gmo
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index 43a29aa..1079e61 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2015-11-20 23:46+0100\n"
 "Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
 "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
@@ -19,6 +19,12 @@
 "X-Generator: Lokalize 1.2\n"
 "Plural-Forms:  nplurals=2; plural=(n != 1);\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr "a formátum nem lett egyeztetve a függvény lekérése előtt"
 
@@ -63,9 +69,6 @@
 msgid "Could not start sndio"
 msgstr "Nem sikerült az sndio indítása"
 
-msgid "Internal data flow error."
-msgstr "Belső adatfolyamhiba."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 "Az előállított fájlnak nagyobb előtekerési ideje van, mint a folyamának "
@@ -89,12 +92,12 @@
 msgid "Failed to get fragment URL."
 msgstr "Nem sikerült lekérni a töredék URL-t."
 
-msgid "Internal data stream error."
-msgstr "Belső adatfolyamhiba."
-
 msgid "Couldn't download fragments"
 msgstr "Nem sikerült letölteni a töredékeket"
 
+msgid "Internal data stream error."
+msgstr "Belső adatfolyamhiba."
+
 msgid "No file name specified for writing."
 msgstr "Nincs megadva fájlnév az íráshoz."
 
@@ -135,13 +138,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr "Nem sikerült betölteni a DVB-csatorna beállítófájlt: %s"
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "A DVB-csatorna beállítófájl nem tartalmaz egyetlen csatornát sem"
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Nem találhatók a(z) %s DVB-csatorna részletei"
 
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Nem találhatók a(z) %s DVB-csatorna részletei"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Nem találhatók a(z) %s DVB-csatorna részletei"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Nem található DVB-csatorna beállítófájl"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "A DVB-csatorna beállítófájl nem tartalmaz egyetlen csatornát sem"
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Belső adatfolyamhiba."
+
 #~ msgid "default GStreamer sound events audiosink"
 #~ msgstr "alapértelmezett GStreamer hangesemények audiosink"
 
diff --git a/po/id.gmo b/po/id.gmo
index ec71c06..4744a0b 100644
--- a/po/id.gmo
+++ b/po/id.gmo
Binary files differ
diff --git a/po/id.po b/po/id.po
index 000be50..5792ac2 100644
--- a/po/id.po
+++ b/po/id.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.3.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2014-05-31 22:16+0700\n"
 "Last-Translator: Andhika Padmawan <andhika.padmawan@gmail.com>\n"
 "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
@@ -17,6 +17,12 @@
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 1.5.7\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
@@ -61,9 +67,6 @@
 msgid "Could not start sndio"
 msgstr "Tak dapat memulai sndio"
 
-msgid "Internal data flow error."
-msgstr "Galat arus data internal."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 "Berkas yang dihasilkan memiliki waktu preroll lebih besar daripada durasi "
@@ -85,12 +88,12 @@
 msgid "Failed to get fragment URL."
 msgstr "Gagal mendapat URL fragmen."
 
-msgid "Internal data stream error."
-msgstr "Galat arus data internal."
-
 msgid "Couldn't download fragments"
 msgstr "Tak bisa mengunduh fragmen."
 
+msgid "Internal data stream error."
+msgstr "Galat arus data internal."
+
 msgid "No file name specified for writing."
 msgstr "Tak ada nama berkas yang ditentukan untuk ditulis."
 
@@ -132,13 +135,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr "Tak bisa memuat berka konfigurasi kanal DVB: %s"
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "Berkas konfigurasi kanal DVB tak memuat kanal apapun"
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Tak bisa temukan rincian untuk kanal DVB %s"
 
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Tak bisa temukan rincian untuk kanal DVB %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Tak bisa temukan rincian untuk kanal DVB %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Tak bisa temukan berkas konfigurasi kanal DVB"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "Berkas konfigurasi kanal DVB tak memuat kanal apapun"
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Galat arus data internal."
+
 #~ msgid "Couldn't get the Manifest's URI"
 #~ msgstr "Tak bisa memperoleh URI Manifes"
 
diff --git a/po/it.gmo b/po/it.gmo
index 07e061a..7368349 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 7eaec7c..160c36d 100644
--- a/po/it.po
+++ b/po/it.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.13.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2009-08-14 00:12+0200\n"
 "Last-Translator: Luca Ferretti <elle.uca@infinito.it>\n"
 "Language-Team: Italian <tp@lists.linux.it>\n"
@@ -16,6 +16,12 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
@@ -62,9 +68,6 @@
 msgid "Could not start sndio"
 msgstr "Impossibile leggere le informazioni del titolo per il DVD."
 
-msgid "Internal data flow error."
-msgstr "Errore interno nel flusso di dati."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 
@@ -84,12 +87,12 @@
 msgid "Failed to get fragment URL."
 msgstr ""
 
-msgid "Internal data stream error."
-msgstr "Errore interno nello stream di dati."
-
 msgid "Couldn't download fragments"
 msgstr ""
 
+msgid "Internal data stream error."
+msgstr "Errore interno nello stream di dati."
+
 msgid "No file name specified for writing."
 msgstr "Nessun nome di file specificato per la scrittura."
 
@@ -128,13 +131,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr ""
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr ""
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr ""
 
+#, c-format
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr ""
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Errore interno nel flusso di dati."
+
 #~ msgid "Could not write to file \"%s\"."
 #~ msgstr "Impossibile scrivere sul file «%s»."
 
diff --git a/po/ja.gmo b/po/ja.gmo
index db69d30..c7668ab 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index d4922c2..d813aea 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2011-04-26 19:38+0900\n"
 "Last-Translator: Makoto Kato <makoto.kt@gmail.com>\n"
 "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
@@ -17,6 +17,12 @@
 "X-Generator: Lokalize 0.3\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
@@ -64,9 +70,6 @@
 msgid "Could not start sndio"
 msgstr "DVDを読み込むことができませんでした。"
 
-msgid "Internal data flow error."
-msgstr "内部データフローエラー。"
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 
@@ -86,12 +89,12 @@
 msgid "Failed to get fragment URL."
 msgstr ""
 
-msgid "Internal data stream error."
-msgstr "内部データストリームエラー。"
-
 msgid "Couldn't download fragments"
 msgstr ""
 
+msgid "Internal data stream error."
+msgstr "内部データストリームエラー。"
+
 msgid "No file name specified for writing."
 msgstr "書き込み用にファイル名が指定されていません。"
 
@@ -131,13 +134,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr "仮想ミックスチャンネル設定"
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr ""
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr ""
 
+#, c-format
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "仮想ミックスチャンネル設定"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr ""
+
+#~ msgid "Internal data flow error."
+#~ msgstr "内部データフローエラー。"
+
 #~ msgid "Could not write to file \"%s\"."
 #~ msgstr "ファイル \"%s\" へ書き込むことができませんでした。"
 
diff --git a/po/ky.gmo b/po/ky.gmo
index 048d337..6afd057 100644
--- a/po/ky.gmo
+++ b/po/ky.gmo
Binary files differ
diff --git a/po/ky.po b/po/ky.po
index 4349122..65ccb6c 100644
--- a/po/ky.po
+++ b/po/ky.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.5\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2007-11-13 17:16+0600\n"
 "Last-Translator: Ilyas Bakirov <just_ilyas@yahoo.com>\n"
 "Language-Team: Kirghiz <i18n-team-ky-kyrgyz@lists.sourceforge.net>\n"
@@ -14,9 +14,16 @@
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "X-Poedit-Language: Kyrgyz\n"
 "X-Poedit-Country: KYRGYZSTAN\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
@@ -61,9 +68,6 @@
 msgid "Could not start sndio"
 msgstr ""
 
-msgid "Internal data flow error."
-msgstr ""
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 
@@ -83,10 +87,10 @@
 msgid "Failed to get fragment URL."
 msgstr ""
 
-msgid "Internal data stream error."
+msgid "Couldn't download fragments"
 msgstr ""
 
-msgid "Couldn't download fragments"
+msgid "Internal data stream error."
 msgstr ""
 
 msgid "No file name specified for writing."
@@ -127,9 +131,21 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr ""
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
 msgstr ""
 
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
 msgstr ""
diff --git a/po/lt.gmo b/po/lt.gmo
index b053f78..5a7c491 100644
--- a/po/lt.gmo
+++ b/po/lt.gmo
Binary files differ
diff --git a/po/lt.po b/po/lt.po
index 4d0407e..3b0995f 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad-0.10.6.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2008-05-14 02:13+0300\n"
 "Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n"
 "Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
@@ -18,6 +18,12 @@
 "Plural-Forms:  nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
 "%100<10 || n%100>=20) ? 1 : 2);\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
@@ -65,10 +71,6 @@
 msgid "Could not start sndio"
 msgstr "Nepavyko rašyti į failą „%s“."
 
-#, fuzzy
-msgid "Internal data flow error."
-msgstr "Vidinė duomenų srauto klaida."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 
@@ -88,12 +90,12 @@
 msgid "Failed to get fragment URL."
 msgstr ""
 
-msgid "Internal data stream error."
-msgstr "Vidinė duomenų srauto klaida."
-
 msgid "Couldn't download fragments"
 msgstr ""
 
+msgid "Internal data stream error."
+msgstr "Vidinė duomenų srauto klaida."
+
 msgid "No file name specified for writing."
 msgstr "Nenurodytas failo rašymui pavadinimas."
 
@@ -132,13 +134,29 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr ""
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr ""
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr ""
 
+#, c-format
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr ""
+
+#, fuzzy
+#~ msgid "Internal data flow error."
+#~ msgstr "Vidinė duomenų srauto klaida."
+
 #~ msgid "Could not write to file \"%s\"."
 #~ msgstr "Nepavyko rašyti į failą „%s“."
 
diff --git a/po/lv.gmo b/po/lv.gmo
index dd797e3..d66ee0f 100644
--- a/po/lv.gmo
+++ b/po/lv.gmo
Binary files differ
diff --git a/po/lv.po b/po/lv.po
index ef5ba5f..536869a 100644
--- a/po/lv.po
+++ b/po/lv.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2014-04-20 15:52+0300\n"
 "Last-Translator: Rihards Prieditis <rprieditis@gmail.com>\n"
 "Language-Team: Latvian <translation-team-lv@lists.sourceforge.net>\n"
@@ -22,6 +22,12 @@
 "2);\n"
 "X-Generator: Lokalize 1.5\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
@@ -67,9 +73,6 @@
 msgid "Could not start sndio"
 msgstr "Nevarēja palaist sndio"
 
-msgid "Internal data flow error."
-msgstr "Iekšēja datu plūsmas kļūda."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 "Izveidotajai datnei ir lielāks pirms-atskaņojuma laiks, kā straumes garums"
@@ -91,12 +94,12 @@
 msgid "Failed to get fragment URL."
 msgstr "Neizdevās saņemt fragmenta URL."
 
-msgid "Internal data stream error."
-msgstr "Iekšējās datu plūsmas kļūda."
-
 msgid "Couldn't download fragments"
 msgstr "Nevarēja lejupielādēt fragmentus"
 
+msgid "Internal data stream error."
+msgstr "Iekšējās datu plūsmas kļūda."
+
 msgid "No file name specified for writing."
 msgstr "Ierakstīšanai nav norādīts neviens datnes nosaukums."
 
@@ -137,13 +140,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr "Nevarēja ielādēt DVB kanāla konfigurācijas datni: %s"
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "DVB kanāla konfigurācijas datne nesatur nevienu kanālu"
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Nevarēja atrast sīkāku informāciju par DVB kanālu %s"
 
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Nevarēja atrast sīkāku informāciju par DVB kanālu %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Nevarēja atrast sīkāku informāciju par DVB kanālu %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Nevarēja atrast DVB kanāla konfigurācijas datni"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "DVB kanāla konfigurācijas datne nesatur nevienu kanālu"
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Iekšēja datu plūsmas kļūda."
+
 #~ msgid "Couldn't get the Manifest's URI"
 #~ msgstr "Nevarēja saņemt manifesta URI"
 
diff --git a/po/mt.gmo b/po/mt.gmo
index 80d8487..b5e536a 100644
--- a/po/mt.gmo
+++ b/po/mt.gmo
Binary files differ
diff --git a/po/mt.po b/po/mt.po
index 93f5adc..a31a907 100644
--- a/po/mt.po
+++ b/po/mt.po
@@ -5,7 +5,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad-0.10.8.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2008-10-26 20:27+0100\n"
 "Last-Translator: Michel Bugeja <michelbugeja@rabatmalta.com>\n"
 "Language-Team: Maltese <translation-team-mt@lists.sourceforge.net>\n"
@@ -18,6 +18,12 @@
 "X-Poedit-SourceCharset: utf-8\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
@@ -64,9 +70,6 @@
 msgid "Could not start sndio"
 msgstr "Ma stajtx naqra informazzjoni fuq it-titlu tad-DVD."
 
-msgid "Internal data flow error."
-msgstr "Internal data flow error."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 
@@ -86,12 +89,12 @@
 msgid "Failed to get fragment URL."
 msgstr ""
 
-msgid "Internal data stream error."
-msgstr "Internal data stream error."
-
 msgid "Couldn't download fragments"
 msgstr ""
 
+msgid "Internal data stream error."
+msgstr "Internal data stream error."
+
 msgid "No file name specified for writing."
 msgstr "L-ebda isem speċifikat biex nikteb."
 
@@ -131,13 +134,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr "Virtual mixer channel configuration"
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr ""
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr ""
 
+#, c-format
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Virtual mixer channel configuration"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr ""
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Internal data flow error."
+
 #~ msgid "Could not write to file \"%s\"."
 #~ msgstr "Ma nistax nikteb fil-fajl \"%s\". "
 
diff --git a/po/nb.gmo b/po/nb.gmo
index e75229c..396abde 100644
--- a/po/nb.gmo
+++ b/po/nb.gmo
Binary files differ
diff --git a/po/nb.po b/po/nb.po
index 52dfb5b..745045c 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2015-12-22 21:08+0100\n"
 "Last-Translator: Johnny A. Solbu <johnny@solbu.net>\n"
 "Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
@@ -18,6 +18,12 @@
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 1.6.9\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr "formatet ble ikke forhandlet før get-funksjon"
 
@@ -62,9 +68,6 @@
 msgid "Could not start sndio"
 msgstr "Kunne ikke starte sndio"
 
-msgid "Internal data flow error."
-msgstr "Intern feil i datastrøm."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr "Genererte filen har en større preroll tid enn strømmens varighet"
 
@@ -85,12 +88,12 @@
 msgid "Failed to get fragment URL."
 msgstr "Klarte ikke å hente fragment-nettadresse."
 
-msgid "Internal data stream error."
-msgstr "Intern feil i datastrøm."
-
 msgid "Couldn't download fragments"
 msgstr "Kunne ikke laste ned fragmenter"
 
+msgid "Internal data stream error."
+msgstr "Intern feil i datastrøm."
+
 msgid "No file name specified for writing."
 msgstr "Ingen filnavn oppgitt for skriving."
 
@@ -129,13 +132,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr "Kunne ikke finne DVB-kanalkonfigurasjonsfil: %s"
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "DVB-kanalkonfigurasjonsfilen inneholder ingen kanaler"
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Kunne ikke finne detaljer for DVB-kanal %s"
 
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Kunne ikke finne detaljer for DVB-kanal %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Kunne ikke finne detaljer for DVB-kanal %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Kunne ikke finne DVB-kanal-konfigurasjonsfil"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "DVB-kanalkonfigurasjonsfilen inneholder ingen kanaler"
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Intern feil i datastrøm."
+
 #~ msgid "default GStreamer sound events audiosink"
 #~ msgstr "standard GStreamer lydhendelser-audiosink"
 
diff --git a/po/nl.gmo b/po/nl.gmo
index 01a6040..c0e4769 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index 65f6506..8d26663 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2016-02-20 12:35+0100\n"
 "Last-Translator: Freek de Kruijf <f.de.kruijf@gmail.com>\n"
 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
@@ -18,6 +18,12 @@
 "X-Generator: Lokalize 1.5\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr "formaat is niet onderhandeld vóór get-functie"
 
@@ -62,9 +68,6 @@
 msgid "Could not start sndio"
 msgstr "Kon sndio niet starten"
 
-msgid "Internal data flow error."
-msgstr "Interne fout met gegevensdoorvoer."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 "Gegenereerd bestand heeft een grotere voorlooptijd dan de duur van zijn "
@@ -88,12 +91,12 @@
 msgid "Failed to get fragment URL."
 msgstr "Verkrijgen van de URL van het fragment is mislukt."
 
-msgid "Internal data stream error."
-msgstr "Interne fout in gegevensstroom."
-
 msgid "Couldn't download fragments"
 msgstr "Kan fragmenten niet downloaden"
 
+msgid "Internal data stream error."
+msgstr "Interne fout in gegevensstroom."
+
 msgid "No file name specified for writing."
 msgstr "Geen bestandsnaam gespecificeerd voor de uitvoer."
 
@@ -134,13 +137,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr "Kon het instellingenbestand \"%s\" van het DVB-kanaal niet laden"
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "Het instellingenbestand van het DVB-kanaal bevat geen kanalen"
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Kon de details voor het DVB-kanaal %s niet vinden"
 
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Kon de details voor het DVB-kanaal %s niet vinden"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Kon de details voor het DVB-kanaal %s niet vinden"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Kon het instellingenbestand van het DVB-kanaal niet vinden"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "Het instellingenbestand van het DVB-kanaal bevat geen kanalen"
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Interne fout met gegevensdoorvoer."
+
 #~ msgid "default GStreamer sound events audiosink"
 #~ msgstr "standaard GStreamer audiosink voor geluidsgebeurtenissen"
 
diff --git a/po/or.gmo b/po/or.gmo
index 976f1f7..319cc21 100644
--- a/po/or.gmo
+++ b/po/or.gmo
Binary files differ
diff --git a/po/or.po b/po/or.po
index 6b910ae..86a10ee 100644
--- a/po/or.po
+++ b/po/or.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-0.8.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2004-09-27 13:32+0530\n"
 "Last-Translator: Gora Mohanty <gora_mohanty@yahoo.co.in>\n"
 "Language-Team: Oriya <gora_mohanty@yahoo.co.in>\n"
@@ -17,6 +17,12 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
@@ -64,9 +70,6 @@
 msgid "Could not start sndio"
 msgstr "\"%s\" ଫାଇଲ ଲେଖିହେଲା ନାହିଁ."
 
-msgid "Internal data flow error."
-msgstr ""
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 
@@ -86,10 +89,10 @@
 msgid "Failed to get fragment URL."
 msgstr ""
 
-msgid "Internal data stream error."
+msgid "Couldn't download fragments"
 msgstr ""
 
-msgid "Couldn't download fragments"
+msgid "Internal data stream error."
 msgstr ""
 
 #, fuzzy
@@ -131,11 +134,23 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr ""
 
-msgid "DVB channel configuration file doesn't contain any channels"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
 msgstr ""
 
 #, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
 msgstr ""
 
 #~ msgid "Could not write to file \"%s\"."
diff --git a/po/pl.gmo b/po/pl.gmo
index 712276d..a1ea176 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 14d0397..1bd5f3b 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2015-10-15 20:50+0200\n"
 "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
 "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
@@ -15,6 +15,12 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr "format nie został wynegocjowany przed funkcją pobrania"
 
@@ -59,9 +65,6 @@
 msgid "Could not start sndio"
 msgstr "Nie udało się uruchomić sndio"
 
-msgid "Internal data flow error."
-msgstr "Błąd wewnętrzny przepływu danych."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 "Wygenerowany plik ma dłuższy czas rozbiegówki niż czas trwania strumieni"
@@ -83,12 +86,12 @@
 msgid "Failed to get fragment URL."
 msgstr "Nie udało się uzyskać URL-a fragmentu."
 
-msgid "Internal data stream error."
-msgstr "Błąd wewnętrzny strumienia danych."
-
 msgid "Couldn't download fragments"
 msgstr "Nie udało się pobrać fragmentów"
 
+msgid "Internal data stream error."
+msgstr "Błąd wewnętrzny strumienia danych."
+
 msgid "No file name specified for writing."
 msgstr "Nie określono nazwy pliku do zapisu."
 
@@ -130,13 +133,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr "Nie udało się wczytać pliku konfiguracyjnego kanałów DVB: %s"
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "Plik konfiguracyjny kanałów DVB nie zawiera żadnych kanałów"
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Nie udało się odnaleźć szczegółów dla kanału DVB %s"
 
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Nie udało się odnaleźć szczegółów dla kanału DVB %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Nie udało się odnaleźć szczegółów dla kanału DVB %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Nie udało się odnaleźć pliku konfiguracyjnego kanałów DVB"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "Plik konfiguracyjny kanałów DVB nie zawiera żadnych kanałów"
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Błąd wewnętrzny przepływu danych."
+
 #~ msgid "default GStreamer sound events audiosink"
 #~ msgstr "domyślny element GStreamera pochłaniający zdarzenia dźwiękowe"
 
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index 51516e0..c9f898c 100644
--- a/po/pt_BR.gmo
+++ b/po/pt_BR.gmo
Binary files differ
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 40233cd..ef9de04 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad-1.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2016-05-06 16:02-0300\n"
 "Last-Translator: Fabrício Godoy <skarllot@gmail.com>\n"
 "Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
@@ -19,6 +19,12 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr "O formato não foi negociado antes da chamada da função"
 
@@ -63,9 +69,6 @@
 msgid "Could not start sndio"
 msgstr "Não foi possível iniciar o sndio"
 
-msgid "Internal data flow error."
-msgstr "Erro interno de fluxo de dados."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 "O arquivo gerado tem um tempo de preparação maior que a sua duração de fluxo"
@@ -88,12 +91,12 @@
 msgid "Failed to get fragment URL."
 msgstr "Falha ao obter um fragmento de URL."
 
-msgid "Internal data stream error."
-msgstr "Erro interno de fluxo de dados."
-
 msgid "Couldn't download fragments"
 msgstr "Não foi possível baixar os fragmentos"
 
+msgid "Internal data stream error."
+msgstr "Erro interno de fluxo de dados."
+
 msgid "No file name specified for writing."
 msgstr "Nenhum nome de arquivo especificado para gravação."
 
@@ -137,13 +140,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr "Não foi possível carregar o arquivo de configuração de canal DVB: %s"
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "O arquivo de configuração de canal DVB não contém nenhum canal"
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Não foi possível encontrar detalhes para o canal DVB %s"
 
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Não foi possível encontrar detalhes para o canal DVB %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Não foi possível encontrar detalhes para o canal DVB %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Não foi possível encontrar o arquivo de configuração de canal DVB"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "O arquivo de configuração de canal DVB não contém nenhum canal"
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Erro interno de fluxo de dados."
+
 #~ msgid "default GStreamer sound events audiosink"
 #~ msgstr "audiosink do GStreamer pré-definido para eventos de som"
 
diff --git a/po/ro.gmo b/po/ro.gmo
index a4bcea0..c72ee99 100644
--- a/po/ro.gmo
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
index bc7c7a0..922d43e 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -5,7 +5,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.18.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2010-08-16 03:11+0300\n"
 "Last-Translator: Lucian Adrian Grijincu <lucian.grijincu@gmail.com>\n"
 "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
@@ -17,6 +17,12 @@
 "20)) ? 1 : 2);;\n"
 "X-Generator: Virtaal 0.6.1\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
@@ -63,9 +69,6 @@
 msgid "Could not start sndio"
 msgstr "Nu s-au putut citi informațiile despre titlu pentru DVD."
 
-msgid "Internal data flow error."
-msgstr "Eroare internă de flux al datelor."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 
@@ -85,12 +88,12 @@
 msgid "Failed to get fragment URL."
 msgstr ""
 
-msgid "Internal data stream error."
-msgstr "Eroare internă a fluxului de date."
-
 msgid "Couldn't download fragments"
 msgstr ""
 
+msgid "Internal data stream error."
+msgstr "Eroare internă a fluxului de date."
+
 msgid "No file name specified for writing."
 msgstr "Niciun nume de fișier specificat pentru scriere."
 
@@ -129,12 +132,27 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr ""
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr ""
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr ""
 
+#, c-format
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr ""
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Eroare internă de flux al datelor."
+
 #~ msgid "Could not write to file \"%s\"."
 #~ msgstr "Nu s-a putut scrie în fișierul „%s”."
diff --git a/po/ru.gmo b/po/ru.gmo
index 548156a..e326719 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index a31b92b..41f8799 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2015-10-18 13:40+0300\n"
 "Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
 "Language-Team: Russian <gnu@d07.ru>\n"
@@ -20,6 +20,12 @@
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
 "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr "перед функцией получения не был согласован формат"
 
@@ -64,9 +70,6 @@
 msgid "Could not start sndio"
 msgstr "Не удалось запустить sndio"
 
-msgid "Internal data flow error."
-msgstr "Внутренняя ошибка передачи данных."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 "В сгенерированном файле время предпуска (preroll) больше чем длительность "
@@ -88,12 +91,12 @@
 msgid "Failed to get fragment URL."
 msgstr "Ошибка при получении URL фрагмента."
 
-msgid "Internal data stream error."
-msgstr "Внутренняя ошибка потока данных."
-
 msgid "Couldn't download fragments"
 msgstr "Не удалось скачать фрагменты"
 
+msgid "Internal data stream error."
+msgstr "Внутренняя ошибка потока данных."
+
 msgid "No file name specified for writing."
 msgstr "Не указано имя файла для записи."
 
@@ -134,13 +137,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr "Не удалось загрузить файл настройки каналов DVB: %s"
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "Файл настройки каналов DVB не содержит каналов"
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Не удалось найти настройки DVB-канала %s"
 
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Не удалось найти настройки DVB-канала %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Не удалось найти настройки DVB-канала %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Не удалось найти файл настройки каналов DVB"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "Файл настройки каналов DVB не содержит каналов"
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Внутренняя ошибка передачи данных."
+
 #~ msgid "default GStreamer sound events audiosink"
 #~ msgstr "GStreamer audiosink по умолчанию для звуковых событий"
 
diff --git a/po/sk.gmo b/po/sk.gmo
index a56bd17..086f682 100644
--- a/po/sk.gmo
+++ b/po/sk.gmo
Binary files differ
diff --git a/po/sk.po b/po/sk.po
index 3107617..1fc661e 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2016-05-20 12:33+0100\n"
 "Last-Translator: Peter Tuhársky <tuharsky@misbb.sk>\n"
 "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
@@ -20,6 +20,12 @@
 "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Poedit 1.6.10\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr "formát nebol dohodnutý pred funkciou stiahnutia"
 
@@ -64,9 +70,6 @@
 msgid "Could not start sndio"
 msgstr "Nepodarilo sa spustiť sndio"
 
-msgid "Internal data flow error."
-msgstr "Vnútorná chyba prúdu údajov."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 "Vytvorený súbor má väčší prerolovací čas než je trvanie jeho prúdu údajov"
@@ -89,12 +92,12 @@
 msgid "Failed to get fragment URL."
 msgstr "Nepodarilo sa získať URL fragmentu."
 
-msgid "Internal data stream error."
-msgstr "Vnútorná chyba prúdu údajov."
-
 msgid "Couldn't download fragments"
 msgstr "Nepodarilo sa získať fragmenty"
 
+msgid "Internal data stream error."
+msgstr "Vnútorná chyba prúdu údajov."
+
 msgid "No file name specified for writing."
 msgstr "Nebolo zadané žiadne meno súboru pre zápis."
 
@@ -135,13 +138,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr "Nepodarilo sa načítať konfiguračný súbor DVB kanálu: %s"
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "Konfiguračný súbor DVB kanála neobsahuje žiadne kanály"
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Nepodarilo sa nájsť podrobnosti o DVB kanáli %s"
 
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Nepodarilo sa nájsť podrobnosti o DVB kanáli %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Nepodarilo sa nájsť podrobnosti o DVB kanáli %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Nepodarilo sa nájsť konfiguračný súbor DVB kanálu"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "Konfiguračný súbor DVB kanála neobsahuje žiadne kanály"
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Vnútorná chyba prúdu údajov."
+
 #~ msgid "Couldn't get the Manifest's URI"
 #~ msgstr "Nepodarilo sa získať URI Manifestu"
 
diff --git a/po/sl.gmo b/po/sl.gmo
index ba195a6..2593e16 100644
--- a/po/sl.gmo
+++ b/po/sl.gmo
Binary files differ
diff --git a/po/sl.po b/po/sl.po
index ad5cea2..cd58f1c 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.21.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2011-04-26 15:21+0100\n"
 "Last-Translator: Klemen Košir <klemen.kosir@gmx.com>\n"
 "Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
@@ -22,6 +22,12 @@
 "X-Poedit-Country: SLOVENIA\n"
 "X-Poedit-SourceCharset: utf-8\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
@@ -69,9 +75,6 @@
 msgid "Could not start sndio"
 msgstr "DVD-ja ni mogoče prebrati."
 
-msgid "Internal data flow error."
-msgstr "Notranja napaka pretočnosti podatkov."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 
@@ -91,12 +94,12 @@
 msgid "Failed to get fragment URL."
 msgstr ""
 
-msgid "Internal data stream error."
-msgstr "Notranja napaka pretoka podatkov."
-
 msgid "Couldn't download fragments"
 msgstr ""
 
+msgid "Internal data stream error."
+msgstr "Notranja napaka pretoka podatkov."
+
 msgid "No file name specified for writing."
 msgstr "Ni navedenega imena datoteke za pisanje."
 
@@ -135,13 +138,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr ""
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr ""
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr ""
 
+#, c-format
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr ""
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Notranja napaka pretočnosti podatkov."
+
 #~ msgid "Could not write to file \"%s\"."
 #~ msgstr "V datoteko \"%s\" ni mogoče pisati."
 
diff --git a/po/sq.gmo b/po/sq.gmo
index 4ab513d..89835e8 100644
--- a/po/sq.gmo
+++ b/po/sq.gmo
Binary files differ
diff --git a/po/sq.po b/po/sq.po
index 973d96a..82c2710 100644
--- a/po/sq.po
+++ b/po/sq.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 0.10.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2008-08-15 16:07+0200\n"
 "Last-Translator: Laurent Dhima <laurenti@alblinux.net>\n"
 "Language-Team: Albanian <translation-team-sq@lists.sourceforge.net>\n"
@@ -15,6 +15,12 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
@@ -62,10 +68,6 @@
 msgid "Could not start sndio"
 msgstr "I pamundur shkrimi tek file \"%s\"."
 
-#, fuzzy
-msgid "Internal data flow error."
-msgstr "Gabim i brendshëm tek stream i të dhënave."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 
@@ -85,12 +87,12 @@
 msgid "Failed to get fragment URL."
 msgstr ""
 
-msgid "Internal data stream error."
-msgstr "Gabim i brendshëm tek stream i të dhënave."
-
 msgid "Couldn't download fragments"
 msgstr ""
 
+msgid "Internal data stream error."
+msgstr "Gabim i brendshëm tek stream i të dhënave."
+
 msgid "No file name specified for writing."
 msgstr "Asnjë emër file specifikuar për shkrim."
 
@@ -129,13 +131,29 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr ""
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr ""
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr ""
 
+#, c-format
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr ""
+
+#, fuzzy
+#~ msgid "Internal data flow error."
+#~ msgstr "Gabim i brendshëm tek stream i të dhënave."
+
 #~ msgid "Could not write to file \"%s\"."
 #~ msgstr "I pamundur shkrimi tek file \"%s\"."
 
diff --git a/po/sr.gmo b/po/sr.gmo
index 9312574..57abefe 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index 60d1758..e064215 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad-1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2015-12-24 11:34+0200\n"
 "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
 "Language-Team: Serbian <(nothing)>\n"
@@ -18,6 +18,12 @@
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
 "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr "запис није договорен пре функције добављања (get)"
 
@@ -62,9 +68,6 @@
 msgid "Could not start sndio"
 msgstr "Не могу да покренем улаз/излаз звука"
 
-msgid "Internal data flow error."
-msgstr "Унутрашња грешка протока података."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr "Створена датотека има дуже време припреме од трајања њеног тока"
 
@@ -85,12 +88,12 @@
 msgid "Failed to get fragment URL."
 msgstr "Нисам успео да добијем адресу одломка."
 
-msgid "Internal data stream error."
-msgstr "Унутрашња грешка тока података."
-
 msgid "Couldn't download fragments"
 msgstr "Не могу да преузмем одломке"
 
+msgid "Internal data stream error."
+msgstr "Унутрашња грешка тока података."
+
 msgid "No file name specified for writing."
 msgstr "Није наведен назив датотеке за упис."
 
@@ -131,13 +134,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr "Не могу да учитам датотеку подешавања ДВБ канала: %s"
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "Датотека подешавања ДВБ канала не садржи ниједан канал"
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Не могу да пронађем податке за ДВБ канал „%s“"
 
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Не могу да пронађем податке за ДВБ канал „%s“"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Не могу да пронађем податке за ДВБ канал „%s“"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Не могу да пронађем датотеку подешавања ДВБ канала"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "Датотека подешавања ДВБ канала не садржи ниједан канал"
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Унутрашња грешка протока података."
+
 #~ msgid "default GStreamer sound events audiosink"
 #~ msgstr "основни аудио усклађивач звучних догађаја Гстримера"
 
diff --git a/po/sv.gmo b/po/sv.gmo
index bf7f34f..fdee880 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index 35cd4c6..d0ebea0 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2015-11-01 00:48+0100\n"
 "Last-Translator: Sebastian Rasmussen <sebras@gmail.com>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
@@ -16,8 +16,15 @@
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "X-Generator: Poedit 1.8.6\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr "formatet förhandlades inte fram innan hämtfunktionen"
 
@@ -62,9 +69,6 @@
 msgid "Could not start sndio"
 msgstr "Kunde ej starta sndio"
 
-msgid "Internal data flow error."
-msgstr "Internt fel i dataflöde."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr "Den genererade filen har en längre förrullningstid än dess strömlängd"
 
@@ -85,12 +89,12 @@
 msgid "Failed to get fragment URL."
 msgstr "Misslyckades att hämta fragment-URL"
 
-msgid "Internal data stream error."
-msgstr "Internt fel i dataström."
-
 msgid "Couldn't download fragments"
 msgstr "Kunde ej ladda ner fragment"
 
+msgid "Internal data stream error."
+msgstr "Internt fel i dataström."
+
 msgid "No file name specified for writing."
 msgstr "Inget filnamn angavs för skrivning."
 
@@ -129,13 +133,25 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr "Kunde ej ladda konfigurationsfil för DVB-kanal: %s"
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "Konfigurationsfil för DVB-kanal innehåller inga kanaler"
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Kunde ej hitta detaljer för DVB-kanal %s"
 
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Kunde ej hitta detaljer för DVB-kanal %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Kunde ej hitta detaljer för DVB-kanal %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Kunde ej hitta konfigurationsfil för DVB-kanal"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "Konfigurationsfil för DVB-kanal innehåller inga kanaler"
+
 #~ msgid "default GStreamer sound events audiosink"
 #~ msgstr "standard GStreamer-ljudutgång för ljudhändelser"
 
@@ -242,6 +258,9 @@
 #~ msgid "Describes the selected visualization element."
 #~ msgstr "Beskriver det valda visualiseringselementet."
 
+#~ msgid "Internal data flow error."
+#~ msgstr "Internt fel i dataflöde."
+
 #~ msgid "Couldn't get the Manifest's URI"
 #~ msgstr "Kunde ej hämta manifestets URI"
 
diff --git a/po/tr.gmo b/po/tr.gmo
index c73634c..dcf7340 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index 7565d46..10c14c0 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad-1.4.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2015-01-10 21:07+0100\n"
 "Last-Translator: Volkan Gezer <volkangezer@gmail.com>\n"
 "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
@@ -18,6 +18,12 @@
 "X-Generator: Lokalize 1.5\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr "get fonksiyonundan önce biçim görüşülemedi"
 
@@ -62,9 +68,6 @@
 msgid "Could not start sndio"
 msgstr "Sndio başlatılamadı"
 
-msgid "Internal data flow error."
-msgstr "İç veri akış hatası."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 "Oluşturlmuş dosya, akışlarının süresinden daha büyük preroll zamanına sahip"
@@ -87,12 +90,12 @@
 msgid "Failed to get fragment URL."
 msgstr "Parça adresi alınamadı."
 
-msgid "Internal data stream error."
-msgstr "İç veri akım hatası."
-
 msgid "Couldn't download fragments"
 msgstr "Parçalar indirilemedi"
 
+msgid "Internal data stream error."
+msgstr "İç veri akım hatası."
+
 msgid "No file name specified for writing."
 msgstr "Yazmak için dosya adı belirtilmedi."
 
@@ -131,13 +134,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr "DVB kanal yapılandırma dosyası yüklenemedi: %s"
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "DVB kanal yapılandırma dosyası herhangi bir kanal içermiyor"
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr "DVB kanalı %s için ayrıntılar bulunamadı"
 
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "DVB kanalı %s için ayrıntılar bulunamadı"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "DVB kanalı %s için ayrıntılar bulunamadı"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "DVB kanal yapılandırma dosyası bulunamadı"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "DVB kanal yapılandırma dosyası herhangi bir kanal içermiyor"
+
+#~ msgid "Internal data flow error."
+#~ msgstr "İç veri akış hatası."
+
 #~ msgid "Couldn't get the Manifest's URI"
 #~ msgstr "Manifest URI alınamadı"
 
diff --git a/po/uk.gmo b/po/uk.gmo
index 830daae..d2860f7 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index 54de90f..73152fb 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2015-10-15 20:44+0300\n"
 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
 "Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
@@ -20,6 +20,12 @@
 "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Lokalize 1.5\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr "формат не було узгоджено до виклику функції get"
 
@@ -64,9 +70,6 @@
 msgid "Could not start sndio"
 msgstr "Не вдалося задіяти sndio"
 
-msgid "Internal data flow error."
-msgstr "Помилка внутрішнього перенесення даних."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 "Створений файл має більше значення випереджувального просування даних ніж "
@@ -91,12 +94,12 @@
 msgid "Failed to get fragment URL."
 msgstr "Не вдалося отримати адреси фрагмента."
 
-msgid "Internal data stream error."
-msgstr "Помилка внутрішнього потоку даних."
-
 msgid "Couldn't download fragments"
 msgstr "Не вдалося отримати фрагменти"
 
+msgid "Internal data stream error."
+msgstr "Помилка внутрішнього потоку даних."
+
 msgid "No file name specified for writing."
 msgstr "Не вказано назви файла для запису."
 
@@ -139,13 +142,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr "Не вдалося завантажити файл налаштувань каналів DVB: %s"
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "У файлі налаштувань каналів DVB не міститься даних щодо жодного каналу"
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Не вдалося знайти параметрів каналу DVB %s"
 
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Не вдалося знайти параметрів каналу DVB %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Не вдалося знайти параметрів каналу DVB %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Не вдалося знайти файла налаштувань каналів DVB"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "У файлі налаштувань каналів DVB не міститься даних щодо жодного каналу"
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Помилка внутрішнього перенесення даних."
+
 #~ msgid "default GStreamer sound events audiosink"
 #~ msgstr "типовий приймач звукових подій GStreamer"
 
diff --git a/po/vi.gmo b/po/vi.gmo
index 0acfb82..cdf9df8 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index 72fcd76..35eeb0f 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2015-10-16 08:27+0700\n"
 "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
 "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
@@ -20,6 +20,12 @@
 "X-Language-Team-Website: <http://translationproject.org/team/vi.html>\n"
 "X-Generator: Gtranslator 2.91.7\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr "định dạng không được dàn xếp trước hàm"
 
@@ -64,9 +70,6 @@
 msgid "Could not start sndio"
 msgstr "Không thể khởi chạy sndio"
 
-msgid "Internal data flow error."
-msgstr "Lỗi tràn luồng dữ liệu nội bộ."
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
 "Tập tin đã tạo có thời gian cuộn trước lớn hơn thời lượng của dòng dữ liệu"
@@ -88,12 +91,12 @@
 msgid "Failed to get fragment URL."
 msgstr "Gặp lỗi khi lấy URL phân mảnh."
 
-msgid "Internal data stream error."
-msgstr "Lỗi luồng dữ liệu nội bộ."
-
 msgid "Couldn't download fragments"
 msgstr "Không thể tải về các phân mảnh"
 
+msgid "Internal data stream error."
+msgstr "Lỗi luồng dữ liệu nội bộ."
+
 msgid "No file name specified for writing."
 msgstr "Chưa chỉ định tên tập tin để ghi vào."
 
@@ -135,13 +138,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr "Không thể tải tập tin cấu hình kênh DVB: %s"
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "Tập tin cấu hình kênh DVB chẳng chứa kênh nào cả"
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Không thể tìm thấy chi tiết cho kênh DVB %s"
 
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Không thể tìm thấy chi tiết cho kênh DVB %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Không thể tìm thấy chi tiết cho kênh DVB %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Không thể tìm thấy tập tin cấu hình kênh DVB"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "Tập tin cấu hình kênh DVB chẳng chứa kênh nào cả"
+
+#~ msgid "Internal data flow error."
+#~ msgstr "Lỗi tràn luồng dữ liệu nội bộ."
+
 #~ msgid "default GStreamer sound events audiosink"
 #~ msgstr "các sự kiện âm thanh GStreamer mặc định cho “audiosink”"
 
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
index 9977e18..cbe0a8c 100644
--- a/po/zh_CN.gmo
+++ b/po/zh_CN.gmo
Binary files differ
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 9a6e54c..25cc2f2 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gst-plugins-bad 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:59+0300\n"
+"POT-Creation-Date: 2016-09-30 12:19+0300\n"
 "PO-Revision-Date: 2015-10-16 19:27+0800\n"
 "Last-Translator: Tianze Wang <zwpwjwtz@126.com>\n"
 "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
@@ -19,6 +19,12 @@
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 1.8.5\n"
 
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
 msgid "format wasn't negotiated before get function"
 msgstr "在调用get函数之前未确定合适的格式"
 
@@ -61,9 +67,6 @@
 msgid "Could not start sndio"
 msgstr "无法启动sndio。"
 
-msgid "Internal data flow error."
-msgstr "内部数据流错误。"
-
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr "生成文件的预告片段超过其自身流长度。"
 
@@ -83,12 +86,12 @@
 msgid "Failed to get fragment URL."
 msgstr "无法获取片段URL。"
 
-msgid "Internal data stream error."
-msgstr "内部数据流错误。"
-
 msgid "Couldn't download fragments"
 msgstr "无法下载片段。"
 
+msgid "Internal data stream error."
+msgstr "内部数据流错误。"
+
 msgid "No file name specified for writing."
 msgstr "未指定写入文件名。"
 
@@ -127,13 +130,28 @@
 msgid "Couldn't load DVB channel configuration file: %s"
 msgstr "无法加载DVB通道配置文件：%s"
 
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "DVB通道配置文件不包含任何通道"
-
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr "无法获取DVB通道 %s 的详细信息"
 
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "无法获取DVB通道 %s 的详细信息"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "无法获取DVB通道 %s 的详细信息"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "无法找到DVB通道配置文件"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "DVB通道配置文件不包含任何通道"
+
+#~ msgid "Internal data flow error."
+#~ msgstr "内部数据流错误。"
+
 #~ msgid "default GStreamer sound events audiosink"
 #~ msgstr "默认GStreamer声音事件的音频汇"
 
diff --git a/sys/Makefile.am b/sys/Makefile.am
index 32f79fb..5365316 100644
--- a/sys/Makefile.am
+++ b/sys/Makefile.am
@@ -11,7 +11,7 @@
 endif
 
 if USE_APPLE_MEDIA
-APPLE_MEDIA_DIR=applemedia applemedia-nonpublic
+APPLE_MEDIA_DIR=applemedia
 else
 APPLE_MEDIA_DIR=
 endif
@@ -64,6 +64,12 @@
 FBDEV_DIR=
 endif
 
+if USE_KMS
+KMS_DIR=kms
+else
+KMS_DIR=
+endif
+
 if USE_DVB
 DVB_DIR=dvb
 else
@@ -148,9 +154,9 @@
 TINYALSA_DIR=
 endif
 
-SUBDIRS = $(ACM_DIR) $(ANDROID_MEDIA_DIR) $(APPLE_MEDIA_DIR) $(AVC_DIR) $(BLUEZ_DIR) $(D3DVIDEOSINK_DIR) $(DECKLINK_DIR) $(DIRECTSOUND_DIR) $(WINKS_DIR) $(DVB_DIR) $(FBDEV_DIR) $(LINSYS_DIR) $(OPENSLES_DIR) $(PVR_DIR) $(SHM_DIR) $(UVCH264_DIR) $(VCD_DIR) $(VDPAU_DIR) $(WININET_DIR) $(WINSCREENCAP_DIR) $(WASAPI_DIR) $(NVENC_DIR) $(TINYALSA_DIR)
+SUBDIRS = $(ACM_DIR) $(ANDROID_MEDIA_DIR) $(APPLE_MEDIA_DIR) $(AVC_DIR) $(BLUEZ_DIR) $(D3DVIDEOSINK_DIR) $(DECKLINK_DIR) $(DIRECTSOUND_DIR) $(WINKS_DIR) $(DVB_DIR) $(FBDEV_DIR) $(KMS_DIR) $(LINSYS_DIR) $(OPENSLES_DIR) $(PVR_DIR) $(SHM_DIR) $(UVCH264_DIR) $(VCD_DIR) $(VDPAU_DIR) $(WININET_DIR) $(WINSCREENCAP_DIR) $(WASAPI_DIR) $(NVENC_DIR) $(TINYALSA_DIR)
 
-DIST_SUBDIRS = acmenc acmmp3dec androidmedia applemedia applemedia-nonpublic avc bluez d3dvideosink decklink directsound dvb linsys fbdev dshowdecwrapper dshowsrcwrapper dshowvideosink \
+DIST_SUBDIRS = acmenc acmmp3dec androidmedia applemedia avc bluez d3dvideosink decklink directsound dvb linsys fbdev kms dshowdecwrapper dshowsrcwrapper dshowvideosink \
 		opensles pvr2d shm uvch264 vcd vdpau wasapi wininet winks winscreencap \
 		nvenc tinyalsa
 
diff --git a/sys/Makefile.in b/sys/Makefile.in
index 825e341..781fd1d 100644
--- a/sys/Makefile.in
+++ b/sys/Makefile.in
@@ -281,6 +281,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -302,6 +304,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -351,6 +355,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -496,6 +502,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -622,8 +630,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -666,8 +672,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -761,7 +772,7 @@
 @USE_ANDROID_MEDIA_FALSE@ANDROID_MEDIA_DIR = 
 @USE_ANDROID_MEDIA_TRUE@ANDROID_MEDIA_DIR = androidmedia
 @USE_APPLE_MEDIA_FALSE@APPLE_MEDIA_DIR = 
-@USE_APPLE_MEDIA_TRUE@APPLE_MEDIA_DIR = applemedia applemedia-nonpublic
+@USE_APPLE_MEDIA_TRUE@APPLE_MEDIA_DIR = applemedia
 @USE_AVC_FALSE@AVC_DIR = 
 @USE_AVC_TRUE@AVC_DIR = avc
 @USE_BLUEZ_FALSE@BLUEZ_DIR = 
@@ -778,6 +789,8 @@
 @USE_DIRECTSOUND_TRUE@DIRECTSOUND_DIR = directsound
 @USE_FBDEV_FALSE@FBDEV_DIR = 
 @USE_FBDEV_TRUE@FBDEV_DIR = fbdev
+@USE_KMS_FALSE@KMS_DIR = 
+@USE_KMS_TRUE@KMS_DIR = kms
 @USE_DVB_FALSE@DVB_DIR = 
 @USE_DVB_TRUE@DVB_DIR = dvb
 @USE_LINSYS_FALSE@LINSYS_DIR = 
@@ -814,8 +827,8 @@
 @USE_NVENC_TRUE@NVENC_DIR = nvenc
 @USE_TINYALSA_FALSE@TINYALSA_DIR = 
 @USE_TINYALSA_TRUE@TINYALSA_DIR = tinyalsa
-SUBDIRS = $(ACM_DIR) $(ANDROID_MEDIA_DIR) $(APPLE_MEDIA_DIR) $(AVC_DIR) $(BLUEZ_DIR) $(D3DVIDEOSINK_DIR) $(DECKLINK_DIR) $(DIRECTSOUND_DIR) $(WINKS_DIR) $(DVB_DIR) $(FBDEV_DIR) $(LINSYS_DIR) $(OPENSLES_DIR) $(PVR_DIR) $(SHM_DIR) $(UVCH264_DIR) $(VCD_DIR) $(VDPAU_DIR) $(WININET_DIR) $(WINSCREENCAP_DIR) $(WASAPI_DIR) $(NVENC_DIR) $(TINYALSA_DIR)
-DIST_SUBDIRS = acmenc acmmp3dec androidmedia applemedia applemedia-nonpublic avc bluez d3dvideosink decklink directsound dvb linsys fbdev dshowdecwrapper dshowsrcwrapper dshowvideosink \
+SUBDIRS = $(ACM_DIR) $(ANDROID_MEDIA_DIR) $(APPLE_MEDIA_DIR) $(AVC_DIR) $(BLUEZ_DIR) $(D3DVIDEOSINK_DIR) $(DECKLINK_DIR) $(DIRECTSOUND_DIR) $(WINKS_DIR) $(DVB_DIR) $(FBDEV_DIR) $(KMS_DIR) $(LINSYS_DIR) $(OPENSLES_DIR) $(PVR_DIR) $(SHM_DIR) $(UVCH264_DIR) $(VCD_DIR) $(VDPAU_DIR) $(WININET_DIR) $(WINSCREENCAP_DIR) $(WASAPI_DIR) $(NVENC_DIR) $(TINYALSA_DIR)
+DIST_SUBDIRS = acmenc acmmp3dec androidmedia applemedia avc bluez d3dvideosink decklink directsound dvb linsys fbdev kms dshowdecwrapper dshowsrcwrapper dshowvideosink \
 		opensles pvr2d shm uvch264 vcd vdpau wasapi wininet winks winscreencap \
 		nvenc tinyalsa
 
diff --git a/sys/acmenc/Makefile.in b/sys/acmenc/Makefile.in
index ec745ee..9f53580 100644
--- a/sys/acmenc/Makefile.in
+++ b/sys/acmenc/Makefile.in
@@ -299,6 +299,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -320,6 +322,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -369,6 +373,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -514,6 +520,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -640,8 +648,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -684,8 +690,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/acmenc/acmenc.c b/sys/acmenc/acmenc.c
index 7a1c1ff..7fed6c7 100644
--- a/sys/acmenc/acmenc.c
+++ b/sys/acmenc/acmenc.c
@@ -485,10 +485,10 @@
       g_param_spec_int ("bitrate", "Bitrate", "Bitrate to encode at (in bps)",
           0, 1000000, DEFAULT_BITRATE, G_PARAM_READWRITE));
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&acmenc_sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&acmenc_src_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &acmenc_sink_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &acmenc_src_template);
   params =
       (ACMEncParams *) g_type_get_qdata (G_OBJECT_CLASS_TYPE (klass),
       ACMENC_PARAMS_QDATA);
diff --git a/sys/acmmp3dec/Makefile.in b/sys/acmmp3dec/Makefile.in
index 2e0b71d..4dabd3c 100644
--- a/sys/acmmp3dec/Makefile.in
+++ b/sys/acmmp3dec/Makefile.in
@@ -299,6 +299,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -320,6 +322,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -369,6 +373,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -514,6 +520,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -640,8 +648,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -684,8 +690,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/acmmp3dec/acmmp3dec.c b/sys/acmmp3dec/acmmp3dec.c
index 7537691..4ec3385 100644
--- a/sys/acmmp3dec/acmmp3dec.c
+++ b/sys/acmmp3dec/acmmp3dec.c
@@ -417,13 +417,12 @@
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
   gobjectclass->dispose = acmmp3dec_dispose;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&acmmp3dec_sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&acmmp3dec_src_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &acmmp3dec_sink_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &acmmp3dec_src_template);
   gst_element_class_set_static_metadata (element_class, "ACM MP3 decoder",
-      "Codec/Decoder/Audio",
-      "Decode MP3 using ACM decoder",
+      "Codec/Decoder/Audio", "Decode MP3 using ACM decoder",
       "Pioneers of the Inevitable <songbird@songbirdnest.com");
 }
 
diff --git a/sys/androidmedia/Makefile.am b/sys/androidmedia/Makefile.am
index 7ad9b6e..c56eee2 100644
--- a/sys/androidmedia/Makefile.am
+++ b/sys/androidmedia/Makefile.am
@@ -2,6 +2,7 @@
 
 libgstandroidmedia_la_SOURCES = \
 	gstahcsrc.c \
+	gstahssrc.c \
 	gstamcaudiodec.c \
 	gstamc.c \
 	gstamcsurface.c \
@@ -9,12 +10,13 @@
 	gstamcvideodec.c \
 	gstamcvideoenc.c \
 	gst-android-graphics-imageformat.c \
-	gst-android-graphics-surfacetexture.c \
 	gst-android-hardware-camera.c \
+	gst-android-hardware-sensor.c \
 	gstjniutils.c
 
 noinst_HEADERS = \
 	gstahcsrc.h \
+	gstahssrc.h \
 	gstamcaudiodec.h \
 	gstamc-constants.h \
 	gstamc.h \
@@ -23,8 +25,8 @@
 	gstamcvideodec.h \
 	gstamcvideoenc.h \
 	gst-android-graphics-imageformat.h \
-	gst-android-graphics-surfacetexture.h \
 	gst-android-hardware-camera.h \
+	gst-android-hardware-sensor.h \
 	gstjniutils.h
 
 libgstandroidmedia_la_CFLAGS = \
@@ -52,4 +54,5 @@
 androidmedia_java_classesdir = $(datadir)/gst-android/ndk-build/androidmedia/
 androidmedia_java_classes_DATA = \
 	org/freedesktop/gstreamer/androidmedia/GstAhcCallback.java \
+	org/freedesktop/gstreamer/androidmedia/GstAhsCallback.java \
 	org/freedesktop/gstreamer/androidmedia/GstAmcOnFrameAvailableListener.java
diff --git a/sys/androidmedia/Makefile.in b/sys/androidmedia/Makefile.in
index 0f5ca04..ab2e4ea 100644
--- a/sys/androidmedia/Makefile.in
+++ b/sys/androidmedia/Makefile.in
@@ -170,6 +170,7 @@
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
 am_libgstandroidmedia_la_OBJECTS = libgstandroidmedia_la-gstahcsrc.lo \
+	libgstandroidmedia_la-gstahssrc.lo \
 	libgstandroidmedia_la-gstamcaudiodec.lo \
 	libgstandroidmedia_la-gstamc.lo \
 	libgstandroidmedia_la-gstamcsurface.lo \
@@ -177,8 +178,8 @@
 	libgstandroidmedia_la-gstamcvideodec.lo \
 	libgstandroidmedia_la-gstamcvideoenc.lo \
 	libgstandroidmedia_la-gst-android-graphics-imageformat.lo \
-	libgstandroidmedia_la-gst-android-graphics-surfacetexture.lo \
 	libgstandroidmedia_la-gst-android-hardware-camera.lo \
+	libgstandroidmedia_la-gst-android-hardware-sensor.lo \
 	libgstandroidmedia_la-gstjniutils.lo
 libgstandroidmedia_la_OBJECTS = $(am_libgstandroidmedia_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
@@ -317,6 +318,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -338,6 +341,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -387,6 +392,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -532,6 +539,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -658,8 +667,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -702,8 +709,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -795,6 +807,7 @@
 plugin_LTLIBRARIES = libgstandroidmedia.la
 libgstandroidmedia_la_SOURCES = \
 	gstahcsrc.c \
+	gstahssrc.c \
 	gstamcaudiodec.c \
 	gstamc.c \
 	gstamcsurface.c \
@@ -802,12 +815,13 @@
 	gstamcvideodec.c \
 	gstamcvideoenc.c \
 	gst-android-graphics-imageformat.c \
-	gst-android-graphics-surfacetexture.c \
 	gst-android-hardware-camera.c \
+	gst-android-hardware-sensor.c \
 	gstjniutils.c
 
 noinst_HEADERS = \
 	gstahcsrc.h \
+	gstahssrc.h \
 	gstamcaudiodec.h \
 	gstamc-constants.h \
 	gstamc.h \
@@ -816,8 +830,8 @@
 	gstamcvideodec.h \
 	gstamcvideoenc.h \
 	gst-android-graphics-imageformat.h \
-	gst-android-graphics-surfacetexture.h \
 	gst-android-hardware-camera.h \
+	gst-android-hardware-sensor.h \
 	gstjniutils.h
 
 libgstandroidmedia_la_CFLAGS = \
@@ -845,6 +859,7 @@
 androidmedia_java_classesdir = $(datadir)/gst-android/ndk-build/androidmedia/
 androidmedia_java_classes_DATA = \
 	org/freedesktop/gstreamer/androidmedia/GstAhcCallback.java \
+	org/freedesktop/gstreamer/androidmedia/GstAhsCallback.java \
 	org/freedesktop/gstreamer/androidmedia/GstAmcOnFrameAvailableListener.java
 
 all: all-am
@@ -926,9 +941,10 @@
 	-rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstandroidmedia_la-gst-android-graphics-imageformat.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstandroidmedia_la-gst-android-graphics-surfacetexture.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstandroidmedia_la-gst-android-hardware-camera.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstandroidmedia_la-gst-android-hardware-sensor.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstandroidmedia_la-gstahcsrc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstandroidmedia_la-gstahssrc.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstandroidmedia_la-gstamc.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstandroidmedia_la-gstamcaudiodec.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstandroidmedia_la-gstamcsurface.Plo@am__quote@
@@ -968,6 +984,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -c -o libgstandroidmedia_la-gstahcsrc.lo `test -f 'gstahcsrc.c' || echo '$(srcdir)/'`gstahcsrc.c
 
+libgstandroidmedia_la-gstahssrc.lo: gstahssrc.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -MT libgstandroidmedia_la-gstahssrc.lo -MD -MP -MF $(DEPDIR)/libgstandroidmedia_la-gstahssrc.Tpo -c -o libgstandroidmedia_la-gstahssrc.lo `test -f 'gstahssrc.c' || echo '$(srcdir)/'`gstahssrc.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstandroidmedia_la-gstahssrc.Tpo $(DEPDIR)/libgstandroidmedia_la-gstahssrc.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstahssrc.c' object='libgstandroidmedia_la-gstahssrc.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -c -o libgstandroidmedia_la-gstahssrc.lo `test -f 'gstahssrc.c' || echo '$(srcdir)/'`gstahssrc.c
+
 libgstandroidmedia_la-gstamcaudiodec.lo: gstamcaudiodec.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -MT libgstandroidmedia_la-gstamcaudiodec.lo -MD -MP -MF $(DEPDIR)/libgstandroidmedia_la-gstamcaudiodec.Tpo -c -o libgstandroidmedia_la-gstamcaudiodec.lo `test -f 'gstamcaudiodec.c' || echo '$(srcdir)/'`gstamcaudiodec.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstandroidmedia_la-gstamcaudiodec.Tpo $(DEPDIR)/libgstandroidmedia_la-gstamcaudiodec.Plo
@@ -1017,13 +1040,6 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -c -o libgstandroidmedia_la-gst-android-graphics-imageformat.lo `test -f 'gst-android-graphics-imageformat.c' || echo '$(srcdir)/'`gst-android-graphics-imageformat.c
 
-libgstandroidmedia_la-gst-android-graphics-surfacetexture.lo: gst-android-graphics-surfacetexture.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -MT libgstandroidmedia_la-gst-android-graphics-surfacetexture.lo -MD -MP -MF $(DEPDIR)/libgstandroidmedia_la-gst-android-graphics-surfacetexture.Tpo -c -o libgstandroidmedia_la-gst-android-graphics-surfacetexture.lo `test -f 'gst-android-graphics-surfacetexture.c' || echo '$(srcdir)/'`gst-android-graphics-surfacetexture.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstandroidmedia_la-gst-android-graphics-surfacetexture.Tpo $(DEPDIR)/libgstandroidmedia_la-gst-android-graphics-surfacetexture.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gst-android-graphics-surfacetexture.c' object='libgstandroidmedia_la-gst-android-graphics-surfacetexture.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -c -o libgstandroidmedia_la-gst-android-graphics-surfacetexture.lo `test -f 'gst-android-graphics-surfacetexture.c' || echo '$(srcdir)/'`gst-android-graphics-surfacetexture.c
-
 libgstandroidmedia_la-gst-android-hardware-camera.lo: gst-android-hardware-camera.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -MT libgstandroidmedia_la-gst-android-hardware-camera.lo -MD -MP -MF $(DEPDIR)/libgstandroidmedia_la-gst-android-hardware-camera.Tpo -c -o libgstandroidmedia_la-gst-android-hardware-camera.lo `test -f 'gst-android-hardware-camera.c' || echo '$(srcdir)/'`gst-android-hardware-camera.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstandroidmedia_la-gst-android-hardware-camera.Tpo $(DEPDIR)/libgstandroidmedia_la-gst-android-hardware-camera.Plo
@@ -1031,6 +1047,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -c -o libgstandroidmedia_la-gst-android-hardware-camera.lo `test -f 'gst-android-hardware-camera.c' || echo '$(srcdir)/'`gst-android-hardware-camera.c
 
+libgstandroidmedia_la-gst-android-hardware-sensor.lo: gst-android-hardware-sensor.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -MT libgstandroidmedia_la-gst-android-hardware-sensor.lo -MD -MP -MF $(DEPDIR)/libgstandroidmedia_la-gst-android-hardware-sensor.Tpo -c -o libgstandroidmedia_la-gst-android-hardware-sensor.lo `test -f 'gst-android-hardware-sensor.c' || echo '$(srcdir)/'`gst-android-hardware-sensor.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstandroidmedia_la-gst-android-hardware-sensor.Tpo $(DEPDIR)/libgstandroidmedia_la-gst-android-hardware-sensor.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gst-android-hardware-sensor.c' object='libgstandroidmedia_la-gst-android-hardware-sensor.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -c -o libgstandroidmedia_la-gst-android-hardware-sensor.lo `test -f 'gst-android-hardware-sensor.c' || echo '$(srcdir)/'`gst-android-hardware-sensor.c
+
 libgstandroidmedia_la-gstjniutils.lo: gstjniutils.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -MT libgstandroidmedia_la-gstjniutils.lo -MD -MP -MF $(DEPDIR)/libgstandroidmedia_la-gstjniutils.Tpo -c -o libgstandroidmedia_la-gstjniutils.lo `test -f 'gstjniutils.c' || echo '$(srcdir)/'`gstjniutils.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstandroidmedia_la-gstjniutils.Tpo $(DEPDIR)/libgstandroidmedia_la-gstjniutils.Plo
diff --git a/sys/androidmedia/gst-android-graphics-surfacetexture.c b/sys/androidmedia/gst-android-graphics-surfacetexture.c
deleted file mode 100644
index 84993a8..0000000
--- a/sys/androidmedia/gst-android-graphics-surfacetexture.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (C) 2012, Collabora Ltd.
- * Copyright (C) 2012, Cisco Systems, Inc.
- *   Author: Youness Alaoui <youness.alaoui@collabora.co.uk>
- *
- * Copyright (C) 2015, Collabora Ltd.
- *   Author: Justin Kim <justin.kim@collabora.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation
- * version 2.1 of the License.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "gstjniutils.h"
-
-#include "gst-android-graphics-surfacetexture.h"
-
-static struct
-{
-  jclass klass;
-  jmethodID constructor;
-  jmethodID release;
-} android_graphics_surfacetexture = {
-0};
-
-static gboolean
-_init_classes (void)
-{
-  JNIEnv *env;
-  GError *err = NULL;
-
-  env = gst_amc_jni_get_env ();
-
-  /* android.graphics.SurfaceTexture */
-  android_graphics_surfacetexture.klass =
-      gst_amc_jni_get_class (env, &err, "android/graphics/SurfaceTexture");
-
-  if (!android_graphics_surfacetexture.klass) {
-    GST_ERROR ("Failed to get android.graphics.SurfaceTexture class: %s",
-        err->message);
-    g_clear_error (&err);
-    return FALSE;
-  }
-
-  android_graphics_surfacetexture.constructor =
-      gst_amc_jni_get_method_id (env, &err,
-      android_graphics_surfacetexture.klass, "<init>", "(I)V");
-  android_graphics_surfacetexture.release =
-      gst_amc_jni_get_method_id (env, &err,
-      android_graphics_surfacetexture.klass, "release", "()V");
-
-  return TRUE;
-}
-
-gboolean
-gst_android_graphics_surfacetexture_init (void)
-{
-  if (!_init_classes ()) {
-    gst_android_graphics_surfacetexture_deinit ();
-    return FALSE;
-  }
-
-  return TRUE;
-}
-
-void
-gst_android_graphics_surfacetexture_deinit (void)
-{
-  JNIEnv *env = gst_amc_jni_get_env ();
-
-  if (android_graphics_surfacetexture.klass)
-    (*env)->DeleteGlobalRef (env, android_graphics_surfacetexture.klass);
-  android_graphics_surfacetexture.klass = NULL;
-}
-
-/* android.graphics.SurfaceTexture */
-GstAGSurfaceTexture *
-gst_ag_surfacetexture_new (gint texture_id)
-{
-  JNIEnv *env = gst_amc_jni_get_env ();
-  jobject object = NULL;
-  GstAGSurfaceTexture *tex = NULL;
-
-  object = (*env)->NewObject (env,
-      android_graphics_surfacetexture.klass,
-      android_graphics_surfacetexture.constructor, texture_id);
-  if ((*env)->ExceptionCheck (env) || !object) {
-    GST_ERROR ("Failed to call Java method");
-    (*env)->ExceptionClear (env);
-    return NULL;
-  }
-
-  tex = g_slice_new0 (GstAGSurfaceTexture);
-  tex->object = (*env)->NewGlobalRef (env, object);
-  if (!tex->object) {
-    GST_ERROR ("Failed to create global reference");
-    (*env)->ExceptionClear (env);
-    g_slice_free (GstAGSurfaceTexture, tex);
-    tex = NULL;
-  }
-  (*env)->DeleteLocalRef (env, object);
-
-  return tex;
-}
-
-void
-gst_ag_surfacetexture_release (GstAGSurfaceTexture * self)
-{
-  JNIEnv *env;
-  GError *err = NULL;
-
-  env = gst_amc_jni_get_env ();
-
-  if (!gst_amc_jni_call_void_method (env, &err, self->object,
-          android_graphics_surfacetexture.release)) {
-    GST_ERROR ("Failed to call release: %s", err->message);
-    g_clear_error (&err);
-  }
-
-}
-
-void
-gst_ag_surfacetexture_free (GstAGSurfaceTexture * self)
-{
-  JNIEnv *env = gst_amc_jni_get_env ();
-
-  (*env)->DeleteGlobalRef (env, self->object);
-  g_slice_free (GstAGSurfaceTexture, self);
-}
diff --git a/sys/androidmedia/gst-android-graphics-surfacetexture.h b/sys/androidmedia/gst-android-graphics-surfacetexture.h
deleted file mode 100644
index 3bb80ca..0000000
--- a/sys/androidmedia/gst-android-graphics-surfacetexture.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2012, Collabora Ltd.
- * Copyright (C) 2012, Cisco Systems, Inc.
- *   Author: Youness Alaoui <youness.alaoui@collabora.co.uk>
- *
- * Copyright (C) 2015, Collabora Ltd.
- *   Author: Justin Kim <justin.kim@collabora.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation
- * version 2.1 of the License.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
- *
- */
-
-#ifndef __GST_ANDROID_GRAPHICS_SURFACETEXTURE_H__
-#define __GST_ANDROID_GRAPHICS_SURFACETEXTURE_H__
-
-#include <gst/gst.h>
-#include <jni.h>
-
-
-G_BEGIN_DECLS
-
-typedef struct _GstAGSurfaceTexture GstAGSurfaceTexture;
-
-/* android.graphics.SurfaceTexture */
-struct _GstAGSurfaceTexture {
-  /* < private > */
-  jobject object; /* global reference */
-};
-
-
-gboolean gst_android_graphics_surfacetexture_init (void);
-void gst_android_graphics_surfacetexture_deinit (void);
-
-/* android.graphics.SurfaceTexture */
-GstAGSurfaceTexture *gst_ag_surfacetexture_new (gint texture_id);
-void gst_ag_surfacetexture_release (GstAGSurfaceTexture *self);
-void gst_ag_surfacetexture_free (GstAGSurfaceTexture *self);
-
-G_END_DECLS
-
-#endif /* __GST_ANDROID_GRAPHICS_SURFACETEXTURE_H__ */
-
diff --git a/sys/androidmedia/gst-android-hardware-camera.c b/sys/androidmedia/gst-android-hardware-camera.c
index 11c9253..aa574bd 100644
--- a/sys/androidmedia/gst-android-hardware-camera.c
+++ b/sys/androidmedia/gst-android-hardware-camera.c
@@ -33,26 +33,6 @@
 GST_DEBUG_CATEGORY_STATIC (ahc_debug);
 #define GST_CAT_DEFAULT ahc_debug
 
-#define GST_DVM_STATIC_CALL(error_statement, type, k, method, ...)      \
-  (*env)->CallStatic##type##Method (env, k.klass, k.method, ## __VA_ARGS__); \
-  if ((*env)->ExceptionCheck (env)) {                                   \
-    GST_ERROR ("Failed to call Java method");                           \
-    (*env)->ExceptionDescribe (env);                                    \
-    (*env)->ExceptionClear (env);                                       \
-    error_statement;                                                    \
-  }
-
-#define GST_DVM_CALL(error_statement, obj, type, k, method, ...)        \
-  (*env)->Call##type##Method (env, obj, k.method, ## __VA_ARGS__);      \
-  if ((*env)->ExceptionCheck (env)) {                                   \
-    GST_ERROR ("Failed to call Java method");                           \
-    (*env)->ExceptionDescribe (env);                                    \
-    (*env)->ExceptionClear (env);                                       \
-    error_statement;                                                    \
-  }
-
-
-
 static struct
 {
   jclass klass;
@@ -657,8 +637,7 @@
     jobject local = android_hardware_camera_parameters.WHITE_BALANCE_AUTO;
 
     android_hardware_camera_parameters.WHITE_BALANCE_AUTO =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -678,8 +657,7 @@
         android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT;
 
     android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -699,8 +677,7 @@
         android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT;
 
     android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -720,8 +697,7 @@
         android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT;
 
     android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -740,8 +716,7 @@
     jobject local = android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT;
 
     android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -760,8 +735,7 @@
         android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT;
 
     android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -779,8 +753,7 @@
     jobject local = android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT;
 
     android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -799,8 +772,7 @@
     jobject local = android_hardware_camera_parameters.WHITE_BALANCE_SHADE;
 
     android_hardware_camera_parameters.WHITE_BALANCE_SHADE =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -819,8 +791,7 @@
     jobject local = android_hardware_camera_parameters.EFFECT_NONE;
 
     android_hardware_camera_parameters.EFFECT_NONE =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -839,8 +810,7 @@
     jobject local = android_hardware_camera_parameters.EFFECT_MONO;
 
     android_hardware_camera_parameters.EFFECT_MONO =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -859,8 +829,7 @@
     jobject local = android_hardware_camera_parameters.EFFECT_NEGATIVE;
 
     android_hardware_camera_parameters.EFFECT_NEGATIVE =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -879,8 +848,7 @@
     jobject local = android_hardware_camera_parameters.EFFECT_SOLARIZE;
 
     android_hardware_camera_parameters.EFFECT_SOLARIZE =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -899,8 +867,7 @@
     jobject local = android_hardware_camera_parameters.EFFECT_SEPIA;
 
     android_hardware_camera_parameters.EFFECT_SEPIA =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -919,8 +886,7 @@
     jobject local = android_hardware_camera_parameters.EFFECT_POSTERIZE;
 
     android_hardware_camera_parameters.EFFECT_POSTERIZE =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -939,8 +905,7 @@
     jobject local = android_hardware_camera_parameters.EFFECT_WHITEBOARD;
 
     android_hardware_camera_parameters.EFFECT_WHITEBOARD =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -959,8 +924,7 @@
     jobject local = android_hardware_camera_parameters.EFFECT_BLACKBOARD;
 
     android_hardware_camera_parameters.EFFECT_BLACKBOARD =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -979,8 +943,7 @@
     jobject local = android_hardware_camera_parameters.EFFECT_AQUA;
 
     android_hardware_camera_parameters.EFFECT_AQUA =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -999,8 +962,7 @@
     jobject local = android_hardware_camera_parameters.ANTIBANDING_AUTO;
 
     android_hardware_camera_parameters.ANTIBANDING_AUTO =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1019,8 +981,7 @@
     jobject local = android_hardware_camera_parameters.ANTIBANDING_50HZ;
 
     android_hardware_camera_parameters.ANTIBANDING_50HZ =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1039,8 +1000,7 @@
     jobject local = android_hardware_camera_parameters.ANTIBANDING_60HZ;
 
     android_hardware_camera_parameters.ANTIBANDING_60HZ =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1059,8 +1019,7 @@
     jobject local = android_hardware_camera_parameters.ANTIBANDING_OFF;
 
     android_hardware_camera_parameters.ANTIBANDING_OFF =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1079,8 +1038,7 @@
     jobject local = android_hardware_camera_parameters.FLASH_MODE_OFF;
 
     android_hardware_camera_parameters.FLASH_MODE_OFF =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1099,8 +1057,7 @@
     jobject local = android_hardware_camera_parameters.FLASH_MODE_AUTO;
 
     android_hardware_camera_parameters.FLASH_MODE_AUTO =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1119,8 +1076,7 @@
     jobject local = android_hardware_camera_parameters.FLASH_MODE_ON;
 
     android_hardware_camera_parameters.FLASH_MODE_ON =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1139,8 +1095,7 @@
     jobject local = android_hardware_camera_parameters.FLASH_MODE_RED_EYE;
 
     android_hardware_camera_parameters.FLASH_MODE_RED_EYE =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1159,8 +1114,7 @@
     jobject local = android_hardware_camera_parameters.FLASH_MODE_TORCH;
 
     android_hardware_camera_parameters.FLASH_MODE_TORCH =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1179,8 +1133,7 @@
     jobject local = android_hardware_camera_parameters.SCENE_MODE_AUTO;
 
     android_hardware_camera_parameters.SCENE_MODE_AUTO =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1199,8 +1152,7 @@
     jobject local = android_hardware_camera_parameters.SCENE_MODE_ACTION;
 
     android_hardware_camera_parameters.SCENE_MODE_ACTION =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1219,8 +1171,7 @@
     jobject local = android_hardware_camera_parameters.SCENE_MODE_PORTRAIT;
 
     android_hardware_camera_parameters.SCENE_MODE_PORTRAIT =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1238,8 +1189,7 @@
     jobject local = android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE;
 
     android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1258,8 +1208,7 @@
     jobject local = android_hardware_camera_parameters.SCENE_MODE_NIGHT;
 
     android_hardware_camera_parameters.SCENE_MODE_NIGHT =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1278,8 +1227,7 @@
         android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT;
 
     android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
   fieldID =
       gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_THEATRE",
@@ -1297,8 +1245,7 @@
     jobject local = android_hardware_camera_parameters.SCENE_MODE_THEATRE;
 
     android_hardware_camera_parameters.SCENE_MODE_THEATRE =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1317,8 +1264,7 @@
     jobject local = android_hardware_camera_parameters.SCENE_MODE_BEACH;
 
     android_hardware_camera_parameters.SCENE_MODE_BEACH =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1337,8 +1283,7 @@
     jobject local = android_hardware_camera_parameters.SCENE_MODE_SNOW;
 
     android_hardware_camera_parameters.SCENE_MODE_SNOW =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1358,8 +1303,7 @@
     jobject local = android_hardware_camera_parameters.SCENE_MODE_SUNSET;
 
     android_hardware_camera_parameters.SCENE_MODE_SUNSET =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1379,8 +1323,7 @@
     jobject local = android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO;
 
     android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1399,8 +1342,7 @@
     jobject local = android_hardware_camera_parameters.SCENE_MODE_FIREWORKS;
 
     android_hardware_camera_parameters.SCENE_MODE_FIREWORKS =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1420,8 +1362,7 @@
     jobject local = android_hardware_camera_parameters.SCENE_MODE_SPORTS;
 
     android_hardware_camera_parameters.SCENE_MODE_SPORTS =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1440,8 +1381,7 @@
     jobject local = android_hardware_camera_parameters.SCENE_MODE_PARTY;
 
     android_hardware_camera_parameters.SCENE_MODE_PARTY =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1460,8 +1400,7 @@
     jobject local = android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT;
 
     android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
 
@@ -1481,8 +1420,7 @@
     jobject local = android_hardware_camera_parameters.SCENE_MODE_BARCODE;
 
     android_hardware_camera_parameters.SCENE_MODE_BARCODE =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1501,8 +1439,7 @@
     jobject local = android_hardware_camera_parameters.FOCUS_MODE_AUTO;
 
     android_hardware_camera_parameters.FOCUS_MODE_AUTO =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1521,8 +1458,7 @@
     jobject local = android_hardware_camera_parameters.FOCUS_MODE_INFINITY;
 
     android_hardware_camera_parameters.FOCUS_MODE_INFINITY =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1541,8 +1477,7 @@
     jobject local = android_hardware_camera_parameters.FOCUS_MODE_MACRO;
 
     android_hardware_camera_parameters.FOCUS_MODE_MACRO =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1561,8 +1496,7 @@
     jobject local = android_hardware_camera_parameters.FOCUS_MODE_FIXED;
 
     android_hardware_camera_parameters.FOCUS_MODE_FIXED =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1581,8 +1515,7 @@
     jobject local = android_hardware_camera_parameters.FOCUS_MODE_EDOF;
 
     android_hardware_camera_parameters.FOCUS_MODE_EDOF =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1602,8 +1535,7 @@
         android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO;
 
     android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   fieldID =
@@ -1624,8 +1556,7 @@
         android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE;
 
     android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE =
-        (*env)->NewGlobalRef (env, local);
-    (*env)->DeleteLocalRef (env, local);
+        gst_amc_jni_object_make_global (env, local);
   }
 
   /* java.lang.String */
@@ -1710,19 +1641,19 @@
   JNIEnv *env = gst_amc_jni_get_env ();
 
   if (android_hardware_camera.klass)
-    (*env)->DeleteGlobalRef (env, android_hardware_camera.klass);
+    gst_amc_jni_object_unref (env, android_hardware_camera.klass);
   android_hardware_camera.klass = NULL;
 
   if (android_hardware_camera_camerainfo.klass)
-    (*env)->DeleteGlobalRef (env, android_hardware_camera_camerainfo.klass);
+    gst_amc_jni_object_unref (env, android_hardware_camera_camerainfo.klass);
   android_hardware_camera_camerainfo.klass = NULL;
 
   if (android_hardware_camera_size.klass)
-    (*env)->DeleteGlobalRef (env, android_hardware_camera_size.klass);
+    gst_amc_jni_object_unref (env, android_hardware_camera_size.klass);
   android_hardware_camera_size.klass = NULL;
 
   if (android_hardware_camera_parameters.klass)
-    (*env)->DeleteGlobalRef (env, android_hardware_camera_parameters.klass);
+    gst_amc_jni_object_unref (env, android_hardware_camera_parameters.klass);
   android_hardware_camera_parameters.klass = NULL;
   if (Parameters_WHITE_BALANCE_AUTO)
     (*env)->ReleaseStringUTFChars (env,
@@ -1730,7 +1661,7 @@
         Parameters_WHITE_BALANCE_AUTO);
   Parameters_WHITE_BALANCE_AUTO = NULL;
   if (android_hardware_camera_parameters.WHITE_BALANCE_AUTO)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.WHITE_BALANCE_AUTO);
   android_hardware_camera_parameters.WHITE_BALANCE_AUTO = NULL;
   if (Parameters_WHITE_BALANCE_INCANDESCENT)
@@ -1739,7 +1670,7 @@
         Parameters_WHITE_BALANCE_INCANDESCENT);
   Parameters_WHITE_BALANCE_INCANDESCENT = NULL;
   if (android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT);
   android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT = NULL;
   if (Parameters_WHITE_BALANCE_FLUORESCENT)
@@ -1748,7 +1679,7 @@
         Parameters_WHITE_BALANCE_FLUORESCENT);
   Parameters_WHITE_BALANCE_FLUORESCENT = NULL;
   if (android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT);
   android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT = NULL;
   if (Parameters_WHITE_BALANCE_WARM_FLUORESCENT)
@@ -1757,7 +1688,7 @@
         Parameters_WHITE_BALANCE_WARM_FLUORESCENT);
   Parameters_WHITE_BALANCE_WARM_FLUORESCENT = NULL;
   if (android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT);
   android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT = NULL;
   if (Parameters_WHITE_BALANCE_DAYLIGHT)
@@ -1766,7 +1697,7 @@
         Parameters_WHITE_BALANCE_DAYLIGHT);
   Parameters_WHITE_BALANCE_DAYLIGHT = NULL;
   if (android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT);
   android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT = NULL;
   if (Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT)
@@ -1775,7 +1706,7 @@
         Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT);
   Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT = NULL;
   if (android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT);
   android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT = NULL;
   if (Parameters_WHITE_BALANCE_TWILIGHT)
@@ -1784,7 +1715,7 @@
         Parameters_WHITE_BALANCE_TWILIGHT);
   Parameters_WHITE_BALANCE_TWILIGHT = NULL;
   if (android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT);
   android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT = NULL;
   if (Parameters_WHITE_BALANCE_SHADE)
@@ -1793,7 +1724,7 @@
         Parameters_WHITE_BALANCE_SHADE);
   Parameters_WHITE_BALANCE_SHADE = NULL;
   if (android_hardware_camera_parameters.WHITE_BALANCE_SHADE)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.WHITE_BALANCE_SHADE);
   android_hardware_camera_parameters.WHITE_BALANCE_SHADE = NULL;
   if (Parameters_EFFECT_NONE)
@@ -1801,7 +1732,7 @@
         android_hardware_camera_parameters.EFFECT_NONE, Parameters_EFFECT_NONE);
   Parameters_EFFECT_NONE = NULL;
   if (android_hardware_camera_parameters.EFFECT_NONE)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.EFFECT_NONE);
   android_hardware_camera_parameters.EFFECT_NONE = NULL;
   if (Parameters_EFFECT_MONO)
@@ -1809,7 +1740,7 @@
         android_hardware_camera_parameters.EFFECT_MONO, Parameters_EFFECT_MONO);
   Parameters_EFFECT_MONO = NULL;
   if (android_hardware_camera_parameters.EFFECT_MONO)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.EFFECT_MONO);
   android_hardware_camera_parameters.EFFECT_MONO = NULL;
   if (Parameters_EFFECT_NEGATIVE)
@@ -1818,7 +1749,7 @@
         Parameters_EFFECT_NEGATIVE);
   Parameters_EFFECT_NEGATIVE = NULL;
   if (android_hardware_camera_parameters.EFFECT_NEGATIVE)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.EFFECT_NEGATIVE);
   android_hardware_camera_parameters.EFFECT_NEGATIVE = NULL;
   if (Parameters_EFFECT_SOLARIZE)
@@ -1827,7 +1758,7 @@
         Parameters_EFFECT_SOLARIZE);
   Parameters_EFFECT_SOLARIZE = NULL;
   if (android_hardware_camera_parameters.EFFECT_SOLARIZE)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.EFFECT_SOLARIZE);
   android_hardware_camera_parameters.EFFECT_SOLARIZE = NULL;
   if (Parameters_EFFECT_SEPIA)
@@ -1836,7 +1767,7 @@
         Parameters_EFFECT_SEPIA);
   Parameters_EFFECT_SEPIA = NULL;
   if (android_hardware_camera_parameters.EFFECT_SEPIA)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.EFFECT_SEPIA);
   android_hardware_camera_parameters.EFFECT_SEPIA = NULL;
   if (Parameters_EFFECT_POSTERIZE)
@@ -1845,7 +1776,7 @@
         Parameters_EFFECT_POSTERIZE);
   Parameters_EFFECT_POSTERIZE = NULL;
   if (android_hardware_camera_parameters.EFFECT_POSTERIZE)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.EFFECT_POSTERIZE);
   android_hardware_camera_parameters.EFFECT_POSTERIZE = NULL;
   if (Parameters_EFFECT_WHITEBOARD)
@@ -1854,7 +1785,7 @@
         Parameters_EFFECT_WHITEBOARD);
   Parameters_EFFECT_WHITEBOARD = NULL;
   if (android_hardware_camera_parameters.EFFECT_WHITEBOARD)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.EFFECT_WHITEBOARD);
   android_hardware_camera_parameters.EFFECT_WHITEBOARD = NULL;
   if (Parameters_EFFECT_BLACKBOARD)
@@ -1863,7 +1794,7 @@
         Parameters_EFFECT_BLACKBOARD);
   Parameters_EFFECT_BLACKBOARD = NULL;
   if (android_hardware_camera_parameters.EFFECT_BLACKBOARD)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.EFFECT_BLACKBOARD);
   android_hardware_camera_parameters.EFFECT_BLACKBOARD = NULL;
   if (Parameters_EFFECT_AQUA)
@@ -1871,7 +1802,7 @@
         android_hardware_camera_parameters.EFFECT_AQUA, Parameters_EFFECT_AQUA);
   Parameters_EFFECT_AQUA = NULL;
   if (android_hardware_camera_parameters.EFFECT_AQUA)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.EFFECT_AQUA);
   android_hardware_camera_parameters.EFFECT_AQUA = NULL;
   if (Parameters_ANTIBANDING_AUTO)
@@ -1880,7 +1811,7 @@
         Parameters_ANTIBANDING_AUTO);
   Parameters_ANTIBANDING_AUTO = NULL;
   if (android_hardware_camera_parameters.ANTIBANDING_AUTO)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.ANTIBANDING_AUTO);
   android_hardware_camera_parameters.ANTIBANDING_AUTO = NULL;
   if (Parameters_ANTIBANDING_50HZ)
@@ -1889,7 +1820,7 @@
         Parameters_ANTIBANDING_50HZ);
   Parameters_ANTIBANDING_50HZ = NULL;
   if (android_hardware_camera_parameters.ANTIBANDING_50HZ)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.ANTIBANDING_50HZ);
   android_hardware_camera_parameters.ANTIBANDING_50HZ = NULL;
   if (Parameters_ANTIBANDING_60HZ)
@@ -1898,7 +1829,7 @@
         Parameters_ANTIBANDING_60HZ);
   Parameters_ANTIBANDING_60HZ = NULL;
   if (android_hardware_camera_parameters.ANTIBANDING_60HZ)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.ANTIBANDING_60HZ);
   android_hardware_camera_parameters.ANTIBANDING_60HZ = NULL;
   if (Parameters_ANTIBANDING_OFF)
@@ -1907,7 +1838,7 @@
         Parameters_ANTIBANDING_OFF);
   Parameters_ANTIBANDING_OFF = NULL;
   if (android_hardware_camera_parameters.ANTIBANDING_OFF)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.ANTIBANDING_OFF);
   android_hardware_camera_parameters.ANTIBANDING_OFF = NULL;
   if (Parameters_FLASH_MODE_OFF)
@@ -1916,7 +1847,7 @@
         Parameters_FLASH_MODE_OFF);
   Parameters_FLASH_MODE_OFF = NULL;
   if (android_hardware_camera_parameters.FLASH_MODE_OFF)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.FLASH_MODE_OFF);
   android_hardware_camera_parameters.FLASH_MODE_OFF = NULL;
   if (Parameters_FLASH_MODE_AUTO)
@@ -1925,7 +1856,7 @@
         Parameters_FLASH_MODE_AUTO);
   Parameters_FLASH_MODE_AUTO = NULL;
   if (android_hardware_camera_parameters.FLASH_MODE_AUTO)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.FLASH_MODE_AUTO);
   android_hardware_camera_parameters.FLASH_MODE_AUTO = NULL;
   if (Parameters_FLASH_MODE_ON)
@@ -1934,7 +1865,7 @@
         Parameters_FLASH_MODE_ON);
   Parameters_FLASH_MODE_ON = NULL;
   if (android_hardware_camera_parameters.FLASH_MODE_ON)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.FLASH_MODE_ON);
   android_hardware_camera_parameters.FLASH_MODE_ON = NULL;
   if (Parameters_FLASH_MODE_RED_EYE)
@@ -1943,7 +1874,7 @@
         Parameters_FLASH_MODE_RED_EYE);
   Parameters_FLASH_MODE_RED_EYE = NULL;
   if (android_hardware_camera_parameters.FLASH_MODE_RED_EYE)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.FLASH_MODE_RED_EYE);
   android_hardware_camera_parameters.FLASH_MODE_RED_EYE = NULL;
   if (Parameters_FLASH_MODE_TORCH)
@@ -1952,7 +1883,7 @@
         Parameters_FLASH_MODE_TORCH);
   Parameters_FLASH_MODE_TORCH = NULL;
   if (android_hardware_camera_parameters.FLASH_MODE_TORCH)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.FLASH_MODE_TORCH);
   android_hardware_camera_parameters.FLASH_MODE_TORCH = NULL;
   if (Parameters_SCENE_MODE_AUTO)
@@ -1961,7 +1892,7 @@
         Parameters_SCENE_MODE_AUTO);
   Parameters_SCENE_MODE_AUTO = NULL;
   if (android_hardware_camera_parameters.SCENE_MODE_AUTO)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.SCENE_MODE_AUTO);
   android_hardware_camera_parameters.SCENE_MODE_AUTO = NULL;
   if (Parameters_SCENE_MODE_ACTION)
@@ -1970,7 +1901,7 @@
         Parameters_SCENE_MODE_ACTION);
   Parameters_SCENE_MODE_ACTION = NULL;
   if (android_hardware_camera_parameters.SCENE_MODE_ACTION)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.SCENE_MODE_ACTION);
   android_hardware_camera_parameters.SCENE_MODE_ACTION = NULL;
   if (Parameters_SCENE_MODE_PORTRAIT)
@@ -1979,7 +1910,7 @@
         Parameters_SCENE_MODE_PORTRAIT);
   Parameters_SCENE_MODE_PORTRAIT = NULL;
   if (android_hardware_camera_parameters.SCENE_MODE_PORTRAIT)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.SCENE_MODE_PORTRAIT);
   android_hardware_camera_parameters.SCENE_MODE_PORTRAIT = NULL;
   if (Parameters_SCENE_MODE_LANDSCAPE)
@@ -1988,7 +1919,7 @@
         Parameters_SCENE_MODE_LANDSCAPE);
   Parameters_SCENE_MODE_LANDSCAPE = NULL;
   if (android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE);
   android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE = NULL;
   if (Parameters_SCENE_MODE_NIGHT)
@@ -1997,7 +1928,7 @@
         Parameters_SCENE_MODE_NIGHT);
   Parameters_SCENE_MODE_NIGHT = NULL;
   if (android_hardware_camera_parameters.SCENE_MODE_NIGHT)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.SCENE_MODE_NIGHT);
   android_hardware_camera_parameters.SCENE_MODE_NIGHT = NULL;
   if (Parameters_SCENE_MODE_NIGHT_PORTRAIT)
@@ -2006,7 +1937,7 @@
         Parameters_SCENE_MODE_NIGHT_PORTRAIT);
   Parameters_SCENE_MODE_NIGHT_PORTRAIT = NULL;
   if (android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT);
   android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT = NULL;
   if (Parameters_SCENE_MODE_THEATRE)
@@ -2015,7 +1946,7 @@
         Parameters_SCENE_MODE_THEATRE);
   Parameters_SCENE_MODE_THEATRE = NULL;
   if (android_hardware_camera_parameters.SCENE_MODE_THEATRE)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.SCENE_MODE_THEATRE);
   android_hardware_camera_parameters.SCENE_MODE_THEATRE = NULL;
   if (Parameters_SCENE_MODE_BEACH)
@@ -2024,7 +1955,7 @@
         Parameters_SCENE_MODE_BEACH);
   Parameters_SCENE_MODE_BEACH = NULL;
   if (android_hardware_camera_parameters.SCENE_MODE_BEACH)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.SCENE_MODE_BEACH);
   android_hardware_camera_parameters.SCENE_MODE_BEACH = NULL;
   if (Parameters_SCENE_MODE_SNOW)
@@ -2033,7 +1964,7 @@
         Parameters_SCENE_MODE_SNOW);
   Parameters_SCENE_MODE_SNOW = NULL;
   if (android_hardware_camera_parameters.SCENE_MODE_SNOW)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.SCENE_MODE_SNOW);
   android_hardware_camera_parameters.SCENE_MODE_SNOW = NULL;
   if (Parameters_SCENE_MODE_SUNSET)
@@ -2042,7 +1973,7 @@
         Parameters_SCENE_MODE_SUNSET);
   Parameters_SCENE_MODE_SUNSET = NULL;
   if (android_hardware_camera_parameters.SCENE_MODE_SUNSET)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.SCENE_MODE_SUNSET);
   android_hardware_camera_parameters.SCENE_MODE_SUNSET = NULL;
   if (Parameters_SCENE_MODE_STEADYPHOTO)
@@ -2051,7 +1982,7 @@
         Parameters_SCENE_MODE_STEADYPHOTO);
   Parameters_SCENE_MODE_STEADYPHOTO = NULL;
   if (android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO);
   android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO = NULL;
   if (Parameters_SCENE_MODE_FIREWORKS)
@@ -2060,7 +1991,7 @@
         Parameters_SCENE_MODE_FIREWORKS);
   Parameters_SCENE_MODE_FIREWORKS = NULL;
   if (android_hardware_camera_parameters.SCENE_MODE_FIREWORKS)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.SCENE_MODE_FIREWORKS);
   android_hardware_camera_parameters.SCENE_MODE_FIREWORKS = NULL;
   if (Parameters_SCENE_MODE_SPORTS)
@@ -2069,7 +2000,7 @@
         Parameters_SCENE_MODE_SPORTS);
   Parameters_SCENE_MODE_SPORTS = NULL;
   if (android_hardware_camera_parameters.SCENE_MODE_SPORTS)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.SCENE_MODE_SPORTS);
   android_hardware_camera_parameters.SCENE_MODE_SPORTS = NULL;
   if (Parameters_SCENE_MODE_PARTY)
@@ -2078,7 +2009,7 @@
         Parameters_SCENE_MODE_PARTY);
   Parameters_SCENE_MODE_PARTY = NULL;
   if (android_hardware_camera_parameters.SCENE_MODE_PARTY)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.SCENE_MODE_PARTY);
   android_hardware_camera_parameters.SCENE_MODE_PARTY = NULL;
   if (Parameters_SCENE_MODE_CANDLELIGHT)
@@ -2087,7 +2018,7 @@
         Parameters_SCENE_MODE_CANDLELIGHT);
   Parameters_SCENE_MODE_CANDLELIGHT = NULL;
   if (android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT);
   android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT = NULL;
   if (Parameters_SCENE_MODE_BARCODE)
@@ -2096,7 +2027,7 @@
         Parameters_SCENE_MODE_BARCODE);
   Parameters_SCENE_MODE_BARCODE = NULL;
   if (android_hardware_camera_parameters.SCENE_MODE_BARCODE)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.SCENE_MODE_BARCODE);
   android_hardware_camera_parameters.SCENE_MODE_BARCODE = NULL;
   if (Parameters_FOCUS_MODE_AUTO)
@@ -2105,7 +2036,7 @@
         Parameters_FOCUS_MODE_AUTO);
   Parameters_FOCUS_MODE_AUTO = NULL;
   if (android_hardware_camera_parameters.FOCUS_MODE_AUTO)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.FOCUS_MODE_AUTO);
   android_hardware_camera_parameters.FOCUS_MODE_AUTO = NULL;
   if (Parameters_FOCUS_MODE_INFINITY)
@@ -2114,7 +2045,7 @@
         Parameters_FOCUS_MODE_INFINITY);
   Parameters_FOCUS_MODE_INFINITY = NULL;
   if (android_hardware_camera_parameters.FOCUS_MODE_INFINITY)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.FOCUS_MODE_INFINITY);
   android_hardware_camera_parameters.FOCUS_MODE_INFINITY = NULL;
   if (Parameters_FOCUS_MODE_MACRO)
@@ -2123,7 +2054,7 @@
         Parameters_FOCUS_MODE_MACRO);
   Parameters_FOCUS_MODE_MACRO = NULL;
   if (android_hardware_camera_parameters.FOCUS_MODE_MACRO)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.FOCUS_MODE_MACRO);
   android_hardware_camera_parameters.FOCUS_MODE_MACRO = NULL;
   if (Parameters_FOCUS_MODE_FIXED)
@@ -2132,7 +2063,7 @@
         Parameters_FOCUS_MODE_FIXED);
   Parameters_FOCUS_MODE_FIXED = NULL;
   if (android_hardware_camera_parameters.FOCUS_MODE_FIXED)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.FOCUS_MODE_FIXED);
   android_hardware_camera_parameters.FOCUS_MODE_FIXED = NULL;
   if (Parameters_FOCUS_MODE_EDOF)
@@ -2141,7 +2072,7 @@
         Parameters_FOCUS_MODE_EDOF);
   Parameters_FOCUS_MODE_EDOF = NULL;
   if (android_hardware_camera_parameters.FOCUS_MODE_EDOF)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.FOCUS_MODE_EDOF);
   android_hardware_camera_parameters.FOCUS_MODE_EDOF = NULL;
   if (Parameters_FOCUS_MODE_CONTINUOUS_VIDEO)
@@ -2150,7 +2081,7 @@
         Parameters_FOCUS_MODE_CONTINUOUS_VIDEO);
   Parameters_FOCUS_MODE_CONTINUOUS_VIDEO = NULL;
   if (android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
   android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO = NULL;
   if (Parameters_FOCUS_MODE_CONTINUOUS_PICTURE)
@@ -2159,51 +2090,51 @@
         Parameters_FOCUS_MODE_CONTINUOUS_PICTURE);
   Parameters_FOCUS_MODE_CONTINUOUS_PICTURE = NULL;
   if (android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE)
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
   android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE = NULL;
 
   if (java_lang_string.klass)
-    (*env)->DeleteGlobalRef (env, java_lang_string.klass);
+    gst_amc_jni_object_unref (env, java_lang_string.klass);
   java_lang_string.klass = NULL;
 
   if (java_util_list.klass)
-    (*env)->DeleteGlobalRef (env, java_util_list.klass);
+    gst_amc_jni_object_unref (env, java_util_list.klass);
   java_util_list.klass = NULL;
 
   if (java_util_iterator.klass)
-    (*env)->DeleteGlobalRef (env, java_util_iterator.klass);
+    gst_amc_jni_object_unref (env, java_util_iterator.klass);
   java_util_iterator.klass = NULL;
 
   if (java_lang_integer.klass)
-    (*env)->DeleteGlobalRef (env, java_lang_integer.klass);
+    gst_amc_jni_object_unref (env, java_lang_integer.klass);
   java_lang_integer.klass = NULL;
 
   if (org_freedesktop_gstreamer_androidmedia_gstahccallback.klass) {
     (*env)->UnregisterNatives (env,
         org_freedesktop_gstreamer_androidmedia_gstahccallback.klass);
-    (*env)->DeleteGlobalRef (env,
+    gst_amc_jni_object_unref (env,
         org_freedesktop_gstreamer_androidmedia_gstahccallback.klass);
   }
   org_freedesktop_gstreamer_androidmedia_gstahccallback.klass = NULL;
 }
 
 /* android.hardware.Camera */
-#define AHC_CALL(error_statement, type, method, ...)                    \
-  GST_DVM_CALL (error_statement, self->object, type, android_hardware_camera, \
-      method, ## __VA_ARGS__);
-#define AHC_STATIC_CALL(error_statement, type, method, ...)             \
-  GST_DVM_STATIC_CALL (error_statement, type, android_hardware_camera,  \
-      method, ## __VA_ARGS__);
-
 void
 gst_ah_camera_add_callback_buffer (GstAHCamera * self, jbyteArray buffer)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
 
   GST_DEBUG ("add callback_buffer %p", buffer);
 
-  AHC_CALL (, Void, addCallbackBuffer, buffer);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera.addCallbackBuffer, buffer);
+  if (err) {
+    GST_ERROR ("Failed to call android.hardware.Camera.addCallbackBuffer: %s",
+        err->message);
+    g_clear_error (&err);
+  }
 }
 
 gboolean
@@ -2211,27 +2142,39 @@
     GstAHCAutoFocusCallback cb, gpointer user_data)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jobject object = NULL;
   gboolean ret = FALSE;
 
   if (cb) {
-    object = (*env)->NewObject (env,
+    object = gst_amc_jni_new_object (env,
+        &err,
+        FALSE,
         org_freedesktop_gstreamer_androidmedia_gstahccallback.klass,
         org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor,
         *((jlong *) & cb), *((jlong *) & user_data));
-    if (!object) {
-      GST_ERROR ("Failed to create callback object");
-      (*env)->ExceptionClear (env);
+    if (err) {
+      GST_ERROR
+          ("Failed to create org.freedesktop.gstreamer.androidmedia.GstAhcCallback object");
+      g_clear_error (&err);
       goto done;
     }
   }
 
-  AHC_CALL (goto done, Void, autoFocus, object);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera.autoFocus, object);
+  if (err) {
+    GST_ERROR ("Failed to call android.hardware.Camera.autoFocus: %s",
+        err->message);
+    goto done;
+  }
 
   ret = TRUE;
 done:
+  if (err)
+    g_clear_error (&err);
   if (object)
-    (*env)->DeleteLocalRef (env, object);
+    gst_amc_jni_object_local_unref (env, object);
 
   return ret;
 }
@@ -2240,8 +2183,16 @@
 gst_ah_camera_cancel_auto_focus (GstAHCamera * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
 
-  AHC_CALL (return FALSE, Void, cancelAutoFocus);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera.cancelAutoFocus);
+  if (err) {
+    GST_ERROR ("Failed to call android.hardware.Camera.cancelAutoFocus: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return TRUE;
 }
@@ -2250,19 +2201,28 @@
 gst_ah_camera_get_camera_info (gint camera_id, GstAHCCameraInfo * camera_info)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jobject jcamera_info = NULL;
   gboolean ret = FALSE;
 
-  jcamera_info = (*env)->NewObject (env,
+  jcamera_info = gst_amc_jni_new_object (env,
+      &err,
+      FALSE,
       android_hardware_camera_camerainfo.klass,
       android_hardware_camera_camerainfo.constructor);
-  if (!jcamera_info) {
-    GST_ERROR ("Failed to call Java method");
-    (*env)->ExceptionClear (env);
+  if (err) {
+    GST_ERROR ("Failed to create android.hardware.camera.CameraInfo object");
+    g_clear_error (&err);
     goto done;
   }
 
-  AHC_STATIC_CALL (goto done, Void, getCameraInfo, camera_id, jcamera_info);
+  gst_amc_jni_call_static_void_method (env, &err, android_hardware_camera.klass,
+      android_hardware_camera.getCameraInfo, camera_id, jcamera_info);
+  if (err) {
+    GST_ERROR ("Failed to call android.hardware.Camera.getCameraInfo: %s",
+        err->message);
+    goto done;
+  }
 
   camera_info->facing = (*env)->GetIntField (env, jcamera_info,
       android_hardware_camera_camerainfo.facing);
@@ -2282,8 +2242,10 @@
 
   ret = TRUE;
 done:
+  if (err)
+    g_clear_error (&err);
   if (jcamera_info)
-    (*env)->DeleteLocalRef (env, jcamera_info);
+    gst_amc_jni_object_local_unref (env, jcamera_info);
 
   return ret;
 }
@@ -2292,9 +2254,17 @@
 gst_ah_camera_get_number_of_cameras (void)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   gint num_cameras;
 
-  num_cameras = AHC_STATIC_CALL (return -1, Int, getNumberOfCameras);
+  gst_amc_jni_call_static_int_method (env, &err, android_hardware_camera.klass,
+      android_hardware_camera.getNumberOfCameras, &num_cameras);
+  if (err) {
+    GST_ERROR ("Failed to call android.hardware.Camera.getNumberOfCameras: %s",
+        err->message);
+    g_clear_error (&err);
+    return -1;
+  }
 
   return num_cameras;
 }
@@ -2303,18 +2273,26 @@
 gst_ah_camera_get_parameters (GstAHCamera * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jobject object = NULL;
   GstAHCParameters *params = NULL;
 
-  object = AHC_CALL (return NULL, Object, getParameters);
+  gst_amc_jni_call_object_method (env, &err, self->object,
+      android_hardware_camera.getParameters, &object);
+  if (err) {
+    GST_ERROR ("Failed to call android.hardware.Camera.getParameters: %s",
+        err->message);
+    g_clear_error (&err);
+    return NULL;
+  }
   if (!object) {
     GST_WARNING ("android.hardware.Camera.getParameter is NULL");
     return NULL;
   }
 
   params = g_slice_new0 (GstAHCParameters);
-  params->object = (*env)->NewGlobalRef (env, object);
-  (*env)->DeleteLocalRef (env, object);
+  params->object = gst_amc_jni_object_ref (env, object);
+  gst_amc_jni_object_local_unref (env, object);
   if (!params->object) {
     GST_ERROR ("Failed to create global reference");
     (*env)->ExceptionClear (env);
@@ -2331,8 +2309,15 @@
 gst_ah_camera_lock (GstAHCamera * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
 
-  AHC_CALL (return FALSE, Void, lock);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera.lock);
+  if (err) {
+    GST_ERROR ("Failed to call android.hardware.Camera.lock: %s", err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return TRUE;
 }
@@ -2341,14 +2326,23 @@
 gst_ah_camera_open (gint camera_id)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jobject object = NULL;
   GstAHCamera *camera = NULL;
 
-  object = AHC_STATIC_CALL (goto done, Object, open, camera_id);
+  gst_amc_jni_call_static_object_method (env, &err,
+      android_hardware_camera.klass, android_hardware_camera.open, &object,
+      camera_id);
+  if (err) {
+    GST_ERROR ("Failed to call android.hardware.Camera.open: %s", err->message);
+    g_clear_error (&err);
+    goto done;
+  }
+
   if (object) {
     camera = g_slice_new0 (GstAHCamera);
-    camera->object = (*env)->NewGlobalRef (env, object);
-    (*env)->DeleteLocalRef (env, object);
+    camera->object = gst_amc_jni_object_ref (env, object);
+    gst_amc_jni_object_local_unref (env, object);
     if (!camera->object) {
       GST_ERROR ("Failed to create global reference");
       (*env)->ExceptionClear (env);
@@ -2365,8 +2359,16 @@
 gst_ah_camera_reconnect (GstAHCamera * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
 
-  AHC_CALL (return FALSE, Void, reconnect);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera.reconnect);
+  if (err) {
+    GST_ERROR ("Failed to call android.hardware.Camera.reconnect: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return TRUE;
 }
@@ -2375,8 +2377,15 @@
 gst_ah_camera_release (GstAHCamera * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
 
-  AHC_CALL (, Void, release);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera.release);
+  if (err) {
+    GST_ERROR ("Failed to call android.hardware.Camera.release: %s",
+        err->message);
+    g_clear_error (&err);
+  }
 }
 
 void
@@ -2384,7 +2393,7 @@
 {
   JNIEnv *env = gst_amc_jni_get_env ();
 
-  (*env)->DeleteGlobalRef (env, self->object);
+  gst_amc_jni_object_unref (env, self->object);
   g_slice_free (GstAHCamera, self);
 }
 
@@ -2393,8 +2402,16 @@
 gst_ah_camera_set_parameters (GstAHCamera * self, GstAHCParameters * params)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
 
-  AHC_CALL (return FALSE, Void, setParameters, params->object);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera.setParameters, params->object);
+  if (err) {
+    GST_ERROR ("Failed to call android.hardware.Camera.setParameters: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return TRUE;
 }
@@ -2404,27 +2421,39 @@
     gpointer user_data)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jobject object = NULL;
   gboolean ret = FALSE;
 
   if (cb) {
-    object = (*env)->NewObject (env,
+    object = gst_amc_jni_new_object (env,
+        &err,
+        FALSE,
         org_freedesktop_gstreamer_androidmedia_gstahccallback.klass,
         org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor,
         *((jlong *) & cb), *((jlong *) & user_data));
-    if (!object) {
-      GST_ERROR ("Failed to create callback object");
-      (*env)->ExceptionClear (env);
+    if (err) {
+      GST_ERROR
+          ("Failed to create org.freedesktop.gstreamer.androidmedia.GstAhcCallback object");
+      g_clear_error (&err);
       goto done;
     }
   }
 
-  AHC_CALL (goto done, Void, setErrorCallback, object);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera.setErrorCallback, object);
+  if (err) {
+    GST_ERROR ("Failed to call android.hardware.Camera.setErrorCallback: %s",
+        err->message);
+    goto done;
+  }
 
   ret = TRUE;
 done:
+  if (err)
+    g_clear_error (&err);
   if (object)
-    (*env)->DeleteLocalRef (env, object);
+    gst_amc_jni_object_local_unref (env, object);
 
   return ret;
 }
@@ -2434,46 +2463,74 @@
     GstAHCPreviewCallback cb, gpointer user_data)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jobject object = NULL;
   gboolean ret = FALSE;
 
   if (cb) {
-    object = (*env)->NewObject (env,
+    object = gst_amc_jni_new_object (env,
+        &err,
+        FALSE,
         org_freedesktop_gstreamer_androidmedia_gstahccallback.klass,
         org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor,
         *((jlong *) & cb), *((jlong *) & user_data));
-    if (!object) {
-      GST_ERROR ("Failed to create callback object");
-      (*env)->ExceptionClear (env);
+    if (err) {
+      GST_ERROR
+          ("Failed to create org.freedesktop.gstreamer.androidmedia.GstAhcCallback object");
+      g_clear_error (&err);
       goto done;
     }
   }
 
-  AHC_CALL (goto done, Void, setPreviewCallbackWithBuffer, object);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera.setPreviewCallbackWithBuffer, object);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.setPreviewCallbackWithBuffer: %s",
+        err->message);
+    goto done;
+  }
 
   ret = TRUE;
 done:
+  if (err)
+    g_clear_error (&err);
   if (object)
-    (*env)->DeleteLocalRef (env, object);
+    gst_amc_jni_object_local_unref (env, object);
 
   return ret;
 }
 
 void
 gst_ah_camera_set_preview_texture (GstAHCamera * self,
-    GstAGSurfaceTexture * surfaceTexture)
+    GstAmcSurfaceTexture * surfaceTexture)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
 
-  AHC_CALL (, Void, setPreviewTexture, surfaceTexture->object);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera.setPreviewTexture, surfaceTexture->jobject);
+  if (err) {
+    GST_ERROR ("Failed to call android.hardware.Camera.setPreviewTexture: %s",
+        err->message);
+    g_clear_error (&err);
+  }
 }
 
 gboolean
 gst_ah_camera_start_preview (GstAHCamera * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
 
-  AHC_CALL (return FALSE, Void, startPreview);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera.startPreview);
+  if (err) {
+    GST_ERROR ("Failed to call android.hardware.Camera.startPreview: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return TRUE;
 }
@@ -2482,8 +2539,16 @@
 gst_ah_camera_start_smooth_zoom (GstAHCamera * self, gint value)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
 
-  AHC_CALL (return FALSE, Void, startSmoothZoom, value);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera.startSmoothZoom, value);
+  if (err) {
+    GST_ERROR ("Failed to call android.hardware.Camera.startSmoothZoom: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return TRUE;
 }
@@ -2492,8 +2557,16 @@
 gst_ah_camera_stop_preview (GstAHCamera * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
 
-  AHC_CALL (return FALSE, Void, stopPreview);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera.stopPreview);
+  if (err) {
+    GST_ERROR ("Failed to call android.hardware.Camera.stopPreview: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return TRUE;
 }
@@ -2502,8 +2575,16 @@
 gst_ah_camera_stop_smooth_zoom (GstAHCamera * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
 
-  AHC_CALL (return FALSE, Void, stopSmoothZoom);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera.stopSmoothZoom);
+  if (err) {
+    GST_ERROR ("Failed to call android.hardware.Camera.stopSmoothZoom: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return TRUE;
 }
@@ -2512,20 +2593,25 @@
 gst_ah_camera_unlock (GstAHCamera * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
 
-  AHC_CALL (return FALSE, Void, unlock);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera.unlock);
+  if (err) {
+    GST_ERROR ("Failed to call android.hardware.Camera.unlock: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return TRUE;
 }
 
-#undef AHC_CALL
-#undef AHC_STATIC_CALL
-
 /* android.hardware.Camera.Size */
 GstAHCSize *
 gst_ahc_size_new (gint width, gint height)
 {
-  GstAHCSize *self = g_slice_new0 (GstAHCSize);
+  GstAHCSize *self = g_slice_new (GstAHCSize);
 
   self->width = width;
   self->height = height;
@@ -2575,14 +2661,6 @@
 
 
 /* android.hardware.Camera.Parameters */
-#define AHCP_CALL(error_statement, type, method, ...)                   \
-  GST_DVM_CALL (error_statement, self->object, type,                    \
-      android_hardware_camera_parameters, method, ## __VA_ARGS__);
-
-#define AHCP_STATIC_CALL(error_statement, type, method, ...)            \
-  GST_DVM_STATIC_CALL (error_statement, type,                           \
-      android_hardware_camera_parameters, method, ## __VA_ARGS__);
-
 static const gchar *
 _white_balance_to_gchar (JNIEnv * env, jstring white_balance)
 {
@@ -2953,11 +3031,19 @@
 gst_ahc_parameters_flatten (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jstring v_str = NULL;
   const gchar *v = NULL;
   gchar *ret = NULL;
 
-  v_str = AHCP_CALL (goto done, Object, flatten);
+  gst_amc_jni_call_object_method (env, &err, self->object,
+      android_hardware_camera_parameters.flatten, &v_str);
+  if (err) {
+    GST_ERROR ("Failed to call android.hardware.Camera.Parameters.flatten: %s",
+        err->message);
+    goto done;
+  }
+
   v = (*env)->GetStringUTFChars (env, v_str, NULL);
   if (!v) {
     GST_ERROR ("Failed to convert string to UTF8");
@@ -2967,10 +3053,12 @@
 
   ret = g_strdup (v);
 done:
+  if (err)
+    g_clear_error (&err);
   if (v)
     (*env)->ReleaseStringUTFChars (env, v_str, v);
   if (v_str)
-    (*env)->DeleteLocalRef (env, v_str);
+    gst_amc_jni_object_local_unref (env, v_str);
 
   return ret;
 }
@@ -2979,15 +3067,24 @@
 gst_ahc_parameters_get_antibanding (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   const gchar *ret = NULL;
   jstring antibanding;
 
-  antibanding = AHCP_CALL (return NULL, Object, getAntibanding);
+  gst_amc_jni_call_object_method (env, &err, self->object,
+      android_hardware_camera_parameters.getAntibanding, &antibanding);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getAntibanding: %s",
+        err->message);
+    g_clear_error (&err);
+    return NULL;
+  }
 
   ret = _antibanding_to_gchar (env, antibanding);
 
   if (antibanding)
-    (*env)->DeleteLocalRef (env, antibanding);
+    gst_amc_jni_object_local_unref (env, antibanding);
 
   return ret;
 }
@@ -2996,15 +3093,24 @@
 gst_ahc_parameters_get_color_effect (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   const gchar *ret = NULL;
   jstring color_effect;
 
-  color_effect = AHCP_CALL (return NULL, Object, getColorEffect);
+  gst_amc_jni_call_object_method (env, &err, self->object,
+      android_hardware_camera_parameters.getColorEffect, &color_effect);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getColorEffect: %s",
+        err->message);
+    g_clear_error (&err);
+    return NULL;
+  }
 
   ret = _color_effect_to_gchar (env, color_effect);
 
   if (color_effect)
-    (*env)->DeleteLocalRef (env, color_effect);
+    gst_amc_jni_object_local_unref (env, color_effect);
 
   return ret;
 }
@@ -3013,9 +3119,18 @@
 gst_ahc_parameters_get_exposure_compensation (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   gint ev;
 
-  ev = AHCP_CALL (return -1, Int, getExposureCompensation);
+  gst_amc_jni_call_int_method (env, &err, self->object,
+      android_hardware_camera_parameters.getExposureCompensation, &ev);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getExposureCompensation: %s",
+        err->message);
+    g_clear_error (&err);
+    return -1;
+  }
 
   return ev;
 }
@@ -3024,9 +3139,18 @@
 gst_ahc_parameters_get_exposure_compensation_step (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   gfloat step;
 
-  step = AHCP_CALL (return 0.0, Float, getExposureCompensationStep);
+  gst_amc_jni_call_float_method (env, &err, self->object,
+      android_hardware_camera_parameters.getExposureCompensationStep, &step);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getExposureCompensationStep: %s",
+        err->message);
+    g_clear_error (&err);
+    return 0.0;
+  }
 
   return step;
 }
@@ -3035,15 +3159,24 @@
 gst_ahc_parameters_get_flash_mode (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   const gchar *ret = NULL;
   jstring flash_mode;
 
-  flash_mode = AHCP_CALL (return NULL, Object, getFlashMode);
+  gst_amc_jni_call_object_method (env, &err, self->object,
+      android_hardware_camera_parameters.getFlashMode, &flash_mode);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getFlashMode: %s",
+        err->message);
+    g_clear_error (&err);
+    return NULL;
+  }
 
   ret = _flash_mode_to_gchar (env, flash_mode);
 
   if (flash_mode)
-    (*env)->DeleteLocalRef (env, flash_mode);
+    gst_amc_jni_object_local_unref (env, flash_mode);
 
   return ret;
 }
@@ -3052,9 +3185,18 @@
 gst_ahc_parameters_get_focal_length (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   gfloat length;
 
-  length = AHCP_CALL (return 0.0, Float, getFocalLength);
+  gst_amc_jni_call_float_method (env, &err, self->object,
+      android_hardware_camera_parameters.getFocalLength, &length);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getFocalLength: %s",
+        err->message);
+    g_clear_error (&err);
+    return 0.0;
+  }
 
   return length;
 }
@@ -3063,15 +3205,24 @@
 gst_ahc_parameters_get_focus_mode (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   const gchar *ret = NULL;
   jstring focus_mode;
 
-  focus_mode = AHCP_CALL (return NULL, Object, getFocusMode);
+  gst_amc_jni_call_object_method (env, &err, self->object,
+      android_hardware_camera_parameters.getFocusMode, &focus_mode);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getFocusMode: %s",
+        err->message);
+    g_clear_error (&err);
+    return NULL;
+  }
 
   ret = _focus_mode_to_gchar (env, focus_mode);
 
   if (focus_mode)
-    (*env)->DeleteLocalRef (env, focus_mode);
+    gst_amc_jni_object_local_unref (env, focus_mode);
 
   return ret;
 }
@@ -3080,9 +3231,18 @@
 gst_ahc_parameters_get_horizontal_view_angle (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   gfloat angle;
 
-  angle = AHCP_CALL (return 0.0, Float, getHorizontalViewAngle);
+  gst_amc_jni_call_float_method (env, &err, self->object,
+      android_hardware_camera_parameters.getHorizontalViewAngle, &angle);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getHorizontalViewAngle: %s",
+        err->message);
+    g_clear_error (&err);
+    return 0.0;
+  }
 
   return angle;
 }
@@ -3091,9 +3251,18 @@
 gst_ahc_parameters_get_max_exposure_compensation (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   gint max;
 
-  max = AHCP_CALL (return 0, Int, getMaxExposureCompensation);
+  gst_amc_jni_call_int_method (env, &err, self->object,
+      android_hardware_camera_parameters.getMaxExposureCompensation, &max);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getMaxExposureCompensation: %s",
+        err->message);
+    g_clear_error (&err);
+    return 0;
+  }
 
   return max;
 }
@@ -3102,9 +3271,18 @@
 gst_ahc_parameters_get_max_zoom (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   gint max;
 
-  max = AHCP_CALL (return -1, Int, getMaxZoom);
+  gst_amc_jni_call_int_method (env, &err, self->object,
+      android_hardware_camera_parameters.getMaxZoom, &max);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getMaxZoom: %s",
+        err->message);
+    g_clear_error (&err);
+    return -1;
+  }
 
   return max;
 }
@@ -3113,9 +3291,18 @@
 gst_ahc_parameters_get_min_exposure_compensation (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   gint min;
 
-  min = AHCP_CALL (return 0, Int, getMinExposureCompensation);
+  gst_amc_jni_call_int_method (env, &err, self->object,
+      android_hardware_camera_parameters.getMinExposureCompensation, &min);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getMinExposureCompensation: %s",
+        err->message);
+    g_clear_error (&err);
+    return 0;
+  }
 
   return min;
 }
@@ -3124,9 +3311,18 @@
 gst_ahc_parameters_get_preview_format (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   gint format;
 
-  format = AHCP_CALL (return 0, Int, getPreviewFormat);
+  gst_amc_jni_call_int_method (env, &err, self->object,
+      android_hardware_camera_parameters.getPreviewFormat, &format);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getPreviewFormat: %s",
+        err->message);
+    g_clear_error (&err);
+    return 0;
+  }
 
   return format;
 }
@@ -3136,6 +3332,7 @@
     gint * min, gint * max)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   gboolean ret = FALSE;
   jintArray range = NULL;
   jint *fps = NULL;
@@ -3147,7 +3344,14 @@
     goto done;
   }
 
-  AHCP_CALL (goto done, Void, getPreviewFpsRange, range);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera_parameters.getPreviewFpsRange, range);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getPreviewFpsRange: %s",
+        err->message);
+    goto done;
+  }
 
   fps = (*env)->GetIntArrayElements (env, range, NULL);
   if ((*env)->ExceptionCheck (env) || !fps) {
@@ -3162,10 +3366,12 @@
 
   ret = TRUE;
 done:
+  if (err)
+    g_clear_error (&err);
   if (fps)
     (*env)->ReleaseIntArrayElements (env, range, fps, JNI_ABORT);
   if (range)
-    (*env)->DeleteLocalRef (env, range);
+    gst_amc_jni_object_local_unref (env, range);
 
   return ret;
 }
@@ -3174,13 +3380,20 @@
 gst_ahc_parameters_get_preview_size (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jobject jsize = NULL;
   GstAHCSize *size = NULL;
 
-  jsize = AHCP_CALL (goto done, Object, getPreviewSize);
+  gst_amc_jni_call_object_method (env, &err, self->object,
+      android_hardware_camera_parameters.getPreviewSize, &jsize);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getPreviewSize: %s",
+        err->message);
+    goto done;
+  }
 
-  size = g_slice_new0 (GstAHCSize);
-
+  size = g_slice_new (GstAHCSize);
   size->width = (*env)->GetIntField (env, jsize,
       android_hardware_camera_size.width);
   if ((*env)->ExceptionCheck (env)) {
@@ -3202,8 +3415,10 @@
   }
 
 done:
+  if (err)
+    g_clear_error (&err);
   if (jsize)
-    (*env)->DeleteLocalRef (env, jsize);
+    gst_amc_jni_object_local_unref (env, jsize);
 
   return size;
 }
@@ -3212,15 +3427,24 @@
 gst_ahc_parameters_get_scene_mode (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   const gchar *ret = NULL;
   jstring scene_mode;
 
-  scene_mode = AHCP_CALL (return NULL, Object, getSceneMode);
+  gst_amc_jni_call_object_method (env, &err, self->object,
+      android_hardware_camera_parameters.getSceneMode, &scene_mode);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getSceneMode: %s",
+        err->message);
+    g_clear_error (&err);
+    return NULL;
+  }
 
   ret = _scene_mode_to_gchar (env, scene_mode);
 
   if (scene_mode)
-    (*env)->DeleteLocalRef (env, scene_mode);
+    gst_amc_jni_object_local_unref (env, scene_mode);
 
   return ret;
 }
@@ -3229,10 +3453,19 @@
 gst_ahc_parameters_get_supported_antibanding (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jobject list = NULL;
   GList *ret = NULL;
 
-  list = AHCP_CALL (return NULL, Object, getSupportedAntibanding);
+  gst_amc_jni_call_object_method (env, &err, self->object,
+      android_hardware_camera_parameters.getSupportedAntibanding, &list);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getSupportedAntibanding: %s",
+        err->message);
+    g_clear_error (&err);
+    return NULL;
+  }
 
   if (list) {
     jobject iterator = NULL;
@@ -3246,12 +3479,12 @@
           const gchar *value = _antibanding_to_gchar (env, str);
 
           ret = g_list_append (ret, (gchar *) value);
-          (*env)->DeleteLocalRef (env, str);
+          gst_amc_jni_object_local_unref (env, str);
         }
       }
-      (*env)->DeleteLocalRef (env, iterator);
+      gst_amc_jni_object_local_unref (env, iterator);
     }
-    (*env)->DeleteLocalRef (env, list);
+    gst_amc_jni_object_local_unref (env, list);
   }
 
   return ret;
@@ -3267,10 +3500,19 @@
 gst_ahc_parameters_get_supported_color_effects (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jobject list = NULL;
   GList *ret = NULL;
 
-  list = AHCP_CALL (return NULL, Object, getSupportedColorEffects);
+  gst_amc_jni_call_object_method (env, &err, self->object,
+      android_hardware_camera_parameters.getSupportedColorEffects, &list);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getSupportedColorEffects: %s",
+        err->message);
+    g_clear_error (&err);
+    return NULL;
+  }
 
   if (list) {
     jobject iterator = NULL;
@@ -3284,12 +3526,12 @@
           const gchar *value = _color_effect_to_gchar (env, str);
 
           ret = g_list_append (ret, (gchar *) value);
-          (*env)->DeleteLocalRef (env, str);
+          gst_amc_jni_object_local_unref (env, str);
         }
       }
-      (*env)->DeleteLocalRef (env, iterator);
+      gst_amc_jni_object_local_unref (env, iterator);
     }
-    (*env)->DeleteLocalRef (env, list);
+    gst_amc_jni_object_local_unref (env, list);
   }
 
   return ret;
@@ -3305,10 +3547,19 @@
 gst_ahc_parameters_get_supported_flash_modes (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jobject list = NULL;
   GList *ret = NULL;
 
-  list = AHCP_CALL (return NULL, Object, getSupportedFlashModes);
+  gst_amc_jni_call_object_method (env, &err, self->object,
+      android_hardware_camera_parameters.getSupportedFlashModes, &list);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getSupportedFlashModes: %s",
+        err->message);
+    g_clear_error (&err);
+    return NULL;
+  }
 
   if (list) {
     jobject iterator = NULL;
@@ -3322,12 +3573,12 @@
           const gchar *value = _flash_mode_to_gchar (env, str);
 
           ret = g_list_append (ret, (gchar *) value);
-          (*env)->DeleteLocalRef (env, str);
+          gst_amc_jni_object_local_unref (env, str);
         }
       }
-      (*env)->DeleteLocalRef (env, iterator);
+      gst_amc_jni_object_local_unref (env, iterator);
     }
-    (*env)->DeleteLocalRef (env, list);
+    gst_amc_jni_object_local_unref (env, list);
   }
 
   return ret;
@@ -3343,10 +3594,19 @@
 gst_ahc_parameters_get_supported_focus_modes (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jobject list = NULL;
   GList *ret = NULL;
 
-  list = AHCP_CALL (return NULL, Object, getSupportedFocusModes);
+  gst_amc_jni_call_object_method (env, &err, self->object,
+      android_hardware_camera_parameters.getSupportedFocusModes, &list);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getSupportedFocusModes: %s",
+        err->message);
+    g_clear_error (&err);
+    return NULL;
+  }
 
   if (list) {
     jobject iterator = NULL;
@@ -3360,12 +3620,12 @@
           const gchar *value = _focus_mode_to_gchar (env, str);
 
           ret = g_list_append (ret, (gchar *) value);
-          (*env)->DeleteLocalRef (env, str);
+          gst_amc_jni_object_local_unref (env, str);
         }
       }
-      (*env)->DeleteLocalRef (env, iterator);
+      gst_amc_jni_object_local_unref (env, iterator);
     }
-    (*env)->DeleteLocalRef (env, list);
+    gst_amc_jni_object_local_unref (env, list);
   }
 
   return ret;
@@ -3381,10 +3641,19 @@
 gst_ahc_parameters_get_supported_preview_formats (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jobject list = NULL;
   GList *ret = NULL;
 
-  list = AHCP_CALL (return NULL, Object, getSupportedPreviewFormats);
+  gst_amc_jni_call_object_method (env, &err, self->object,
+      android_hardware_camera_parameters.getSupportedPreviewFormats, &list);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getSupportedPreviewFormats: %s",
+        err->message);
+    g_clear_error (&err);
+    return NULL;
+  }
 
   if (list) {
     jobject iterator = NULL;
@@ -3398,12 +3667,12 @@
           jint value = java_lang_integer_int_value (env, integer);
 
           ret = g_list_append (ret, GINT_TO_POINTER (value));
-          (*env)->DeleteLocalRef (env, integer);
+          gst_amc_jni_object_local_unref (env, integer);
         }
       }
-      (*env)->DeleteLocalRef (env, iterator);
+      gst_amc_jni_object_local_unref (env, iterator);
     }
-    (*env)->DeleteLocalRef (env, list);
+    gst_amc_jni_object_local_unref (env, list);
   }
 
   return ret;
@@ -3419,10 +3688,19 @@
 gst_ahc_parameters_get_supported_preview_fps_range (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jobject list = NULL;
   GList *ret = NULL;
 
-  list = AHCP_CALL (return NULL, Object, getSupportedPreviewFpsRange);
+  gst_amc_jni_call_object_method (env, &err, self->object,
+      android_hardware_camera_parameters.getSupportedPreviewFpsRange, &list);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getSupportedPreviewFpsRange: %s",
+        err->message);
+    g_clear_error (&err);
+    return NULL;
+  }
 
   if (list) {
     jobject iterator = NULL;
@@ -3437,12 +3715,12 @@
 
           (*env)->GetIntArrayRegion (env, range, 0, 2, fps);
           ret = g_list_append (ret, fps);
-          (*env)->DeleteLocalRef (env, range);
+          gst_amc_jni_object_local_unref (env, range);
         }
       }
-      (*env)->DeleteLocalRef (env, iterator);
+      gst_amc_jni_object_local_unref (env, iterator);
     }
-    (*env)->DeleteLocalRef (env, list);
+    gst_amc_jni_object_local_unref (env, list);
   }
 
   return ret;
@@ -3459,10 +3737,19 @@
 gst_ahc_parameters_get_supported_preview_sizes (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jobject list = NULL;
   GList *ret = NULL;
 
-  list = AHCP_CALL (return NULL, Object, getSupportedPreviewSizes);
+  gst_amc_jni_call_object_method (env, &err, self->object,
+      android_hardware_camera_parameters.getSupportedPreviewSizes, &list);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getSupportedPreviewSizes: %s",
+        err->message);
+    g_clear_error (&err);
+    return NULL;
+  }
 
   if (list) {
     jobject iterator = NULL;
@@ -3481,12 +3768,12 @@
               android_hardware_camera_size.height);
 
           ret = g_list_append (ret, gst_ahc_size_new (width, height));
-          (*env)->DeleteLocalRef (env, jsize);
+          gst_amc_jni_object_local_unref (env, jsize);
         }
       }
-      (*env)->DeleteLocalRef (env, iterator);
+      gst_amc_jni_object_local_unref (env, iterator);
     }
-    (*env)->DeleteLocalRef (env, list);
+    gst_amc_jni_object_local_unref (env, list);
   }
 
   return ret;
@@ -3503,10 +3790,19 @@
 gst_ahc_parameters_get_supported_scene_modes (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jobject list = NULL;
   GList *ret = NULL;
 
-  list = AHCP_CALL (return NULL, Object, getSupportedSceneModes);
+  gst_amc_jni_call_object_method (env, &err, self->object,
+      android_hardware_camera_parameters.getSupportedSceneModes, &list);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getSupportedSceneModes: %s",
+        err->message);
+    g_clear_error (&err);
+    return NULL;
+  }
 
   if (list) {
     jobject iterator = NULL;
@@ -3520,12 +3816,12 @@
           const gchar *value = _scene_mode_to_gchar (env, str);
 
           ret = g_list_append (ret, (gchar *) value);
-          (*env)->DeleteLocalRef (env, str);
+          gst_amc_jni_object_local_unref (env, str);
         }
       }
-      (*env)->DeleteLocalRef (env, iterator);
+      gst_amc_jni_object_local_unref (env, iterator);
     }
-    (*env)->DeleteLocalRef (env, list);
+    gst_amc_jni_object_local_unref (env, list);
   }
 
   return ret;
@@ -3541,10 +3837,19 @@
 gst_ahc_parameters_get_supported_white_balance (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jobject list = NULL;
   GList *ret = NULL;
 
-  list = AHCP_CALL (return NULL, Object, getSupportedWhiteBalance);
+  gst_amc_jni_call_object_method (env, &err, self->object,
+      android_hardware_camera_parameters.getSupportedWhiteBalance, &list);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getSupportedWhiteBalance: %s",
+        err->message);
+    g_clear_error (&err);
+    return NULL;
+  }
 
   if (list) {
     jobject iterator = NULL;
@@ -3558,12 +3863,12 @@
           const gchar *value = _white_balance_to_gchar (env, str);
 
           ret = g_list_append (ret, (gchar *) value);
-          (*env)->DeleteLocalRef (env, str);
+          gst_amc_jni_object_local_unref (env, str);
         }
       }
-      (*env)->DeleteLocalRef (env, iterator);
+      gst_amc_jni_object_local_unref (env, iterator);
     }
-    (*env)->DeleteLocalRef (env, list);
+    gst_amc_jni_object_local_unref (env, list);
   }
 
   return ret;
@@ -3579,9 +3884,18 @@
 gst_ahc_parameters_get_vertical_view_angle (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   gfloat angle;
 
-  angle = AHCP_CALL (return 0.0, Float, getVerticalViewAngle);
+  gst_amc_jni_call_float_method (env, &err, self->object,
+      android_hardware_camera_parameters.getVerticalViewAngle, &angle);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getVerticalViewAngle: %s",
+        err->message);
+    g_clear_error (&err);
+    return 0.0;
+  }
 
   return angle;
 }
@@ -3590,9 +3904,18 @@
 gst_ahc_parameters_get_video_stabilization (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   gboolean ret;
 
-  ret = AHCP_CALL (return FALSE, Boolean, getVideoStabilization);
+  gst_amc_jni_call_boolean_method (env, &err, self->object,
+      android_hardware_camera_parameters.getVideoStabilization, &ret);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getVideoStabilization: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return ret;
 }
@@ -3601,15 +3924,24 @@
 gst_ahc_parameters_get_white_balance (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   const gchar *ret = NULL;
   jstring white_balance;
 
-  white_balance = AHCP_CALL (return NULL, Object, getWhiteBalance);
+  gst_amc_jni_call_object_method (env, &err, self->object,
+      android_hardware_camera_parameters.getWhiteBalance, &white_balance);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getWhiteBalance: %s",
+        err->message);
+    g_clear_error (&err);
+    return NULL;
+  }
 
   ret = _white_balance_to_gchar (env, white_balance);
 
   if (white_balance)
-    (*env)->DeleteLocalRef (env, white_balance);
+    gst_amc_jni_object_local_unref (env, white_balance);
 
   return ret;
 }
@@ -3618,9 +3950,17 @@
 gst_ahc_parameters_get_zoom (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   gint zoom;
 
-  zoom = AHCP_CALL (return -1, Int, getZoom);
+  gst_amc_jni_call_int_method (env, &err, self->object,
+      android_hardware_camera_parameters.getZoom, &zoom);
+  if (err) {
+    GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getZoom: %s",
+        err->message);
+    g_clear_error (&err);
+    return -1;
+  }
 
   return zoom;
 }
@@ -3629,10 +3969,19 @@
 gst_ahc_parameters_get_zoom_ratios (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jobject list = NULL;
   GList *ret = NULL;
 
-  list = AHCP_CALL (return NULL, Object, getZoomRatios);
+  gst_amc_jni_call_object_method (env, &err, self->object,
+      android_hardware_camera_parameters.getZoomRatios, &list);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.getZoomRatios: %s",
+        err->message);
+    g_clear_error (&err);
+    return NULL;
+  }
 
   if (list) {
     jobject iterator = NULL;
@@ -3646,12 +3995,12 @@
           jint value = java_lang_integer_int_value (env, integer);
 
           ret = g_list_append (ret, GINT_TO_POINTER (value));
-          (*env)->DeleteLocalRef (env, integer);
+          gst_amc_jni_object_local_unref (env, integer);
         }
       }
-      (*env)->DeleteLocalRef (env, iterator);
+      gst_amc_jni_object_local_unref (env, iterator);
     }
-    (*env)->DeleteLocalRef (env, list);
+    gst_amc_jni_object_local_unref (env, list);
   }
 
   return ret;
@@ -3667,9 +4016,18 @@
 gst_ahc_parameters_is_smooth_zoom_supported (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   gboolean supported;
 
-  supported = AHCP_CALL (return FALSE, Boolean, isSmoothZoomSupported);
+  gst_amc_jni_call_boolean_method (env, &err, self->object,
+      android_hardware_camera_parameters.isSmoothZoomSupported, &supported);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.isSmoothZoomSupported: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return supported;
 }
@@ -3678,9 +4036,19 @@
 gst_ahc_parameters_is_video_stabilization_supported (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   gboolean supported;
 
-  supported = AHCP_CALL (return FALSE, Boolean, isVideoStabilizationSupported);
+  gst_amc_jni_call_boolean_method (env, &err, self->object,
+      android_hardware_camera_parameters.isVideoStabilizationSupported,
+      &supported);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.isVideoStabilizationSupported: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return supported;
 }
@@ -3689,9 +4057,18 @@
 gst_ahc_parameters_is_zoom_supported (GstAHCParameters * self)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   gboolean supported;
 
-  supported = AHCP_CALL (return FALSE, Boolean, isZoomSupported);
+  gst_amc_jni_call_boolean_method (env, &err, self->object,
+      android_hardware_camera_parameters.isZoomSupported, &supported);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.isZoomSupported: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return supported;
 }
@@ -3701,13 +4078,22 @@
     const gchar * value)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jstring antibanding;
 
   antibanding = _antibanding_to_jstring (value);
   if (!antibanding)
     return FALSE;
 
-  AHCP_CALL (return FALSE, Void, setAntibanding, antibanding);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera_parameters.setAntibanding, antibanding);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.setAntibanding: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return TRUE;
 }
@@ -3717,13 +4103,22 @@
     const gchar * value)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jstring color_effect;
 
   color_effect = _color_effect_to_jstring (value);
   if (!color_effect)
     return FALSE;
 
-  AHCP_CALL (return FALSE, Void, setColorEffect, color_effect);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera_parameters.setColorEffect, color_effect);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.setColorEffect: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return TRUE;
 }
@@ -3733,8 +4128,17 @@
     gint value)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
 
-  AHCP_CALL (return FALSE, Void, setExposureCompensation, value);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera_parameters.setExposureCompensation, value);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.setExposureCompensation: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return TRUE;
 }
@@ -3743,13 +4147,22 @@
 gst_ahc_parameters_set_flash_mode (GstAHCParameters * self, const gchar * value)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jstring flash_mode;
 
   flash_mode = _flash_mode_to_jstring (value);
   if (!flash_mode)
     return FALSE;
 
-  AHCP_CALL (return FALSE, Void, setFlashMode, flash_mode);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera_parameters.setFlashMode, flash_mode);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.setFlashMode: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return TRUE;
 }
@@ -3758,13 +4171,22 @@
 gst_ahc_parameters_set_focus_mode (GstAHCParameters * self, const gchar * value)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jstring focus_mode;
 
   focus_mode = _focus_mode_to_jstring (value);
   if (!focus_mode)
     return FALSE;
 
-  AHCP_CALL (return FALSE, Void, setFocusMode, focus_mode);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera_parameters.setFocusMode, focus_mode);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.setFocusMode: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return TRUE;
 }
@@ -3773,8 +4195,17 @@
 gst_ahc_parameters_set_preview_format (GstAHCParameters * self, gint format)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
 
-  AHCP_CALL (return FALSE, Void, setPreviewFormat, format);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera_parameters.setPreviewFormat, format);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.setPreviewFormat: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return TRUE;
 }
@@ -3784,8 +4215,17 @@
     gint min, gint max)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
 
-  AHCP_CALL (return FALSE, Void, setPreviewFpsRange, min, max);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera_parameters.setPreviewFpsRange, min, max);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.setPreviewFpsRange: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return TRUE;
 }
@@ -3795,8 +4235,17 @@
     gint width, gint height)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
 
-  AHCP_CALL (return FALSE, Void, setPreviewSize, width, height);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera_parameters.setPreviewSize, width, height);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.setPreviewSize: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return TRUE;
 }
@@ -3805,13 +4254,22 @@
 gst_ahc_parameters_set_scene_mode (GstAHCParameters * self, const gchar * value)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jstring scene_mode;
 
   scene_mode = _scene_mode_to_jstring (value);
   if (!scene_mode)
     return FALSE;
 
-  AHCP_CALL (return FALSE, Void, setSceneMode, scene_mode);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera_parameters.setSceneMode, scene_mode);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.setSceneMode: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return TRUE;
 }
@@ -3822,8 +4280,17 @@
     gboolean toggle)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
 
-  AHCP_CALL (return FALSE, Void, setVideoStabilization, toggle);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera_parameters.setVideoStabilization, toggle);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.setVideoStabilization: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return TRUE;
 }
@@ -3833,13 +4300,22 @@
     const gchar * value)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jstring white_balance;
 
   white_balance = _white_balance_to_jstring (value);
   if (!white_balance)
     return FALSE;
 
-  AHCP_CALL (return FALSE, Void, setWhiteBalance, white_balance);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera_parameters.setWhiteBalance, white_balance);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.setWhiteBalance: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return TRUE;
 }
@@ -3848,8 +4324,16 @@
 gst_ahc_parameters_set_zoom (GstAHCParameters * self, gint value)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
 
-  AHCP_CALL (return FALSE, Void, setZoom, value);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera_parameters.setZoom, value);
+  if (err) {
+    GST_ERROR ("Failed to call android.hardware.Camera.Parameters.setZoom: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
 
   return TRUE;
 }
@@ -3858,6 +4342,7 @@
 gst_ahc_parameters_unflatten (GstAHCParameters * self, const gchar * flattened)
 {
   JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
   jstring v_str = NULL;
   gboolean ret = TRUE;
 
@@ -3865,9 +4350,17 @@
   if (v_str == NULL)
     return FALSE;
 
-  AHCP_CALL (ret = FALSE, Void, unflatten, v_str);
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_camera_parameters.unflatten, v_str);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.Camera.Parameters.unflatten: %s",
+        err->message);
+    g_clear_error (&err);
+    ret = FALSE;
+  }
 
-  (*env)->DeleteLocalRef (env, v_str);
+  gst_amc_jni_object_local_unref (env, self->object);
 
   return ret;
 }
@@ -3882,6 +4375,6 @@
 
   GST_DEBUG ("freeing parameters %p", self->object);
 
-  (*env)->DeleteGlobalRef (env, self->object);
+  gst_amc_jni_object_unref (env, self->object);
   g_slice_free (GstAHCParameters, self);
 }
diff --git a/sys/androidmedia/gst-android-hardware-camera.h b/sys/androidmedia/gst-android-hardware-camera.h
index 44e7842..ab2e25a 100644
--- a/sys/androidmedia/gst-android-hardware-camera.h
+++ b/sys/androidmedia/gst-android-hardware-camera.h
@@ -28,8 +28,8 @@
 #include <gst/gst.h>
 #include <jni.h>
 
-#include "gst-android-graphics-surfacetexture.h"
 #include "gst-android-graphics-imageformat.h"
+#include "gstamcsurfacetexture.h"
 
 G_BEGIN_DECLS
 
@@ -150,7 +150,7 @@
 gboolean gst_ah_camera_set_preview_callback_with_buffer (GstAHCamera * self,
     GstAHCPreviewCallback cb, gpointer user_data);
 void gst_ah_camera_set_preview_texture (GstAHCamera * self,
-    GstAGSurfaceTexture * surfaceTexture);
+    GstAmcSurfaceTexture * surfaceTexture);
 gboolean gst_ah_camera_start_preview (GstAHCamera * self);
 gboolean gst_ah_camera_start_smooth_zoom (GstAHCamera * self, gint value);
 gboolean gst_ah_camera_stop_preview (GstAHCamera * self);
diff --git a/sys/androidmedia/gst-android-hardware-sensor.c b/sys/androidmedia/gst-android-hardware-sensor.c
new file mode 100644
index 0000000..862e9fb
--- /dev/null
+++ b/sys/androidmedia/gst-android-hardware-sensor.c
@@ -0,0 +1,834 @@
+/*
+ * Copyright (C) 2016 SurroundIO
+ *   Author: Martin Kelly <martin@surround.io>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * The UNION_CAST macro is copyright:
+ * Copyright (C) 2008-2016 Matt Gallagher ( http://cocoawithlove.com ).
+ * All rights reserved.
+ * Permission to use, copy, modify, and/or distribute this software for any purpose
+ * with or without fee is hereby granted, provided that the above copyright notice
+ * and this permission notice appear in all copies.
+
+ * THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+ * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+ * THIS SOFTWARE.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <glib.h>
+#include <gmodule.h>
+
+#include "gstjniutils.h"
+#include "gst-android-hardware-sensor.h"
+
+static jobject (*gst_android_get_application_context) (void) = NULL;
+
+GST_DEBUG_CATEGORY_STATIC (ahs_debug);
+#define GST_CAT_DEFAULT ahs_debug
+
+/*
+ * See:
+ * http://www.cocoawithlove.com/2008/04/using-pointers-to-recast-in-c-is-bad.html
+ * for details.
+ */
+#define UNION_CAST(x, destType) \
+	(((union {__typeof__(x) a; destType b;})x).b)
+
+static struct
+{
+  jclass klass;
+  jstring SENSOR_SERVICE;
+  jmethodID getSystemService;
+} android_content_context = {
+0};
+
+static struct
+{
+  jclass klass;
+  jfieldID accuracy;
+  jfieldID values;
+} android_hardware_sensor_event = {
+0};
+
+static struct
+{
+  jclass klass;
+  jmethodID getDefaultSensor;;
+  jmethodID registerListener;
+  jmethodID unregisterListener;
+} android_hardware_sensor_manager = {
+0};
+
+static struct
+{
+  jclass klass;
+  jmethodID constructor;
+} org_freedesktop_gstreamer_androidmedia_gstahscallback = {
+0};
+
+GHashTable *sensor_sizes = NULL;
+static void
+gst_ah_sensor_sensor_sizes_init (void)
+{
+  gint i;
+  static struct
+  {
+    gint type;
+    gsize size;
+  } types[] = {
+    {
+    AHS_SENSOR_TYPE_ACCELEROMETER, sizeof (GstAHSAccelerometerValues)}
+    , {
+    AHS_SENSOR_TYPE_AMBIENT_TEMPERATURE,
+          sizeof (GstAHSAmbientTemperatureValues)}
+    , {
+    AHS_SENSOR_TYPE_GAME_ROTATION_VECTOR,
+          sizeof (GstAHSGameRotationVectorValues)}
+    , {
+    AHS_SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR,
+          sizeof (GstAHSGeomagneticRotationVectorValues)}
+    , {
+    AHS_SENSOR_TYPE_GRAVITY, sizeof (GstAHSGravityValues)}
+    , {
+    AHS_SENSOR_TYPE_GYROSCOPE, sizeof (GstAHSGyroscopeValues)}
+    , {
+    AHS_SENSOR_TYPE_GYROSCOPE_UNCALIBRATED,
+          sizeof (GstAHSGyroscopeUncalibratedValues)}
+    , {
+    AHS_SENSOR_TYPE_HEART_RATE, sizeof (GstAHSHeartRateValues)}
+    , {
+    AHS_SENSOR_TYPE_LIGHT, sizeof (GstAHSLightValues)}
+    , {
+    AHS_SENSOR_TYPE_LINEAR_ACCELERATION,
+          sizeof (GstAHSLinearAccelerationValues)}
+    , {
+    AHS_SENSOR_TYPE_MAGNETIC_FIELD, sizeof (GstAHSMagneticFieldValues)}
+    , {
+    AHS_SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED,
+          sizeof (GstAHSMagneticFieldUncalibratedValues)}
+    , {
+    AHS_SENSOR_TYPE_ORIENTATION, sizeof (GstAHSOrientationValues)}
+    , {
+    AHS_SENSOR_TYPE_PRESSURE, sizeof (GstAHSPressureValues)}
+    , {
+    AHS_SENSOR_TYPE_PROXIMITY, sizeof (GstAHSProximityValues)}
+    , {
+    AHS_SENSOR_TYPE_RELATIVE_HUMIDITY, sizeof (GstAHSRelativeHumidityValues)}
+    , {
+    AHS_SENSOR_TYPE_ROTATION_VECTOR, sizeof (GstAHSRotationVectorValues)}
+    , {
+    AHS_SENSOR_TYPE_STEP_COUNTER, sizeof (GstAHSStepCounterValues)}
+    , {
+    AHS_SENSOR_TYPE_STEP_DETECTOR, sizeof (GstAHSStepDetectorValues)}
+  ,};
+
+  g_assert_null (sensor_sizes);
+
+  sensor_sizes = g_hash_table_new (g_int_hash, g_int_equal);
+  for (i = 0; i < G_N_ELEMENTS (types); i++)
+    g_hash_table_insert (sensor_sizes, &types[i].type, &types[i].size);
+}
+
+static void
+gst_ah_sensor_sensor_sizes_deinit (void)
+{
+  g_assert_nonnull (sensor_sizes);
+
+  g_hash_table_unref (sensor_sizes);
+  sensor_sizes = NULL;
+}
+
+gsize
+gst_ah_sensor_get_sensor_data_size (gint sensor_type)
+{
+  return *((gsize *) g_hash_table_lookup (sensor_sizes, &sensor_type));
+}
+
+static void
+gst_ah_sensor_on_sensor_changed (JNIEnv * env, jclass klass,
+    jobject sensor_event, jlong callback, jlong user_data)
+{
+  GstAHSensorCallback cb = (GstAHSensorCallback) (gsize) callback;
+
+  if (cb)
+    cb (sensor_event, (gpointer) (gsize) user_data);
+}
+
+static void
+gst_ah_sensor_on_accuracy_changed (JNIEnv * env, jclass klass,
+    jobject sensor, jint accuracy, jlong callback, jlong user_data)
+{
+  GstAHSAccuracyCallback cb = (GstAHSAccuracyCallback) (gsize) callback;
+
+  if (cb)
+    cb (sensor, accuracy, (gpointer) (gsize) user_data);
+}
+
+static gboolean natives_registered = FALSE;
+
+static JNINativeMethod native_methods[] = {
+  {(gchar *) "gst_ah_sensor_on_sensor_changed",
+        (gchar *) "(Landroid/hardware/SensorEvent;JJ)V",
+      (void *) gst_ah_sensor_on_sensor_changed},
+  {(gchar *) "gst_ah_sensor_on_accuracy_changed",
+        (gchar *) "(Landroid/hardware/Sensor;IJJ)V",
+      (void *) gst_ah_sensor_on_accuracy_changed}
+};
+
+static gboolean
+_init_classes (void)
+{
+  gint32 delay;
+  JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
+  jclass klass;
+  jfieldID fieldID;
+  GModule *module;
+  gboolean success;
+  gint32 type;
+
+  /*
+   * Lookup the Android function to get an Android context. This function will
+   * be provided when the plugin is built via ndk-build.
+   */
+  module = g_module_open (NULL, G_MODULE_BIND_LOCAL);
+  if (!module)
+    goto failed;
+  success = g_module_symbol (module, "gst_android_get_application_context",
+      (gpointer *) & gst_android_get_application_context);
+  if (!success || !gst_android_get_application_context)
+    goto failed;
+  g_module_close (module);
+
+  /* android.content.Context */
+  klass = android_content_context.klass = gst_amc_jni_get_class (env, &err,
+      "android/content/Context");
+  if (!klass)
+    goto failed;
+  android_content_context.getSystemService =
+      gst_amc_jni_get_method_id (env, &err, klass, "getSystemService",
+      "(Ljava/lang/String;)Ljava/lang/Object;");
+  if (!android_content_context.getSystemService)
+    goto failed;
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "SENSOR_SERVICE",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_content_context.SENSOR_SERVICE))
+    goto failed;
+  android_content_context.SENSOR_SERVICE =
+      gst_amc_jni_object_make_global (env,
+      android_content_context.SENSOR_SERVICE);
+  if (!android_content_context.SENSOR_SERVICE)
+    goto failed;
+
+  /* android.hardware.SensorEvent */
+  klass = android_hardware_sensor_event.klass =
+      gst_amc_jni_get_class (env, &err, "android/hardware/SensorEvent");
+  if (!klass)
+    goto failed;
+  android_hardware_sensor_event.accuracy =
+      gst_amc_jni_get_field_id (env, &err, klass, "accuracy", "I");
+  if (!android_hardware_sensor_event.accuracy)
+    goto failed;
+  android_hardware_sensor_event.values =
+      gst_amc_jni_get_field_id (env, &err, klass, "values", "[F");
+  if (!android_hardware_sensor_event.values)
+    goto failed;
+
+  /* android.hardware.SensorManager */
+  klass = android_hardware_sensor_manager.klass =
+      gst_amc_jni_get_class (env, &err, "android/hardware/SensorManager");
+  if (!klass)
+    goto failed;
+  android_hardware_sensor_manager.getDefaultSensor =
+      gst_amc_jni_get_method_id (env, &err, klass,
+      "getDefaultSensor", "(I)Landroid/hardware/Sensor;");
+  if (!android_hardware_sensor_manager.getDefaultSensor)
+    goto failed;
+  android_hardware_sensor_manager.registerListener =
+      gst_amc_jni_get_method_id (env, &err, klass,
+      "registerListener",
+      "(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;I)Z");
+  if (!android_hardware_sensor_manager.registerListener)
+    goto failed;
+  android_hardware_sensor_manager.unregisterListener =
+      gst_amc_jni_get_method_id (env, &err, klass,
+      "unregisterListener", "(Landroid/hardware/SensorEventListener;)V");
+  if (!android_hardware_sensor_manager.unregisterListener)
+    goto failed;
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "SENSOR_DELAY_FASTEST",
+      "I");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, &delay))
+    goto failed;
+  if (delay != AHS_SENSOR_DELAY_FASTEST) {
+    GST_ERROR ("SENSOR_DELAY_FASTEST has changed value");
+    goto failed;
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "SENSOR_DELAY_GAME",
+      "I");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, &delay))
+    goto failed;
+  if (delay != AHS_SENSOR_DELAY_GAME) {
+    GST_ERROR ("SENSOR_DELAY_GAME has changed value");
+    goto failed;
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "SENSOR_DELAY_NORMAL",
+      "I");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, &delay))
+    goto failed;
+  if (delay != AHS_SENSOR_DELAY_NORMAL) {
+    GST_ERROR ("SENSOR_DELAY_NORMAL has changed value");
+    goto failed;
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "SENSOR_DELAY_UI",
+      "I");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, &delay))
+    goto failed;
+  if (delay != AHS_SENSOR_DELAY_UI) {
+    GST_ERROR ("SENSOR_DELAY_UI has changed value");
+    goto failed;
+  }
+
+  /* android.hardware.Sensor */
+  klass = gst_amc_jni_get_class (env, &err, "android/hardware/Sensor");
+  if (!klass)
+    goto failed;
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "TYPE_ACCELEROMETER",
+      "I");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, &type))
+    goto failed;
+  if (type != AHS_SENSOR_TYPE_ACCELEROMETER) {
+    GST_ERROR ("TYPE_ACCELEROMETER has changed value");
+    goto failed;
+  }
+
+  fieldID = gst_amc_jni_get_static_field_id (env, &err, klass,
+      "TYPE_AMBIENT_TEMPERATURE", "I");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, &type))
+    goto failed;
+  if (type != AHS_SENSOR_TYPE_AMBIENT_TEMPERATURE) {
+    GST_ERROR ("TYPE_AMBIENT_TEMPERATURE has changed value");
+    goto failed;
+  }
+
+  fieldID = gst_amc_jni_get_static_field_id (env, &err, klass,
+      "TYPE_GAME_ROTATION_VECTOR", "I");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, &type))
+    goto failed;
+  if (type != AHS_SENSOR_TYPE_GAME_ROTATION_VECTOR) {
+    GST_ERROR ("TYPE_GAME_ROTATION_VECTOR has changed value");
+    goto failed;
+  }
+
+  fieldID = gst_amc_jni_get_static_field_id (env, &err, klass,
+      "TYPE_GEOMAGNETIC_ROTATION_VECTOR", "I");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, &type))
+    goto failed;
+  if (type != AHS_SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR) {
+    GST_ERROR ("TYPE_GEOMAGNETIC_ROTATION_VECTOR has changed value");
+    goto failed;
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "TYPE_GRAVITY", "I");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, &type))
+    goto failed;
+  if (type != AHS_SENSOR_TYPE_GRAVITY) {
+    GST_ERROR ("TYPE_GRAVITY has changed value");
+    goto failed;
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "TYPE_GYROSCOPE", "I");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, &type))
+    goto failed;
+  if (type != AHS_SENSOR_TYPE_GYROSCOPE) {
+    GST_ERROR ("TYPE_GYROSCOPE has changed value");
+    goto failed;
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass,
+      "TYPE_GYROSCOPE_UNCALIBRATED", "I");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, &type))
+    goto failed;
+  if (type != AHS_SENSOR_TYPE_GYROSCOPE_UNCALIBRATED) {
+    GST_ERROR ("TYPE_GYROSCOPE_UNCALIBRATED has changed value");
+    goto failed;
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "TYPE_HEART_RATE",
+      "I");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, &type))
+    goto failed;
+  if (type != AHS_SENSOR_TYPE_HEART_RATE) {
+    GST_ERROR ("TYPE_HEART_RATE has changed value");
+    goto failed;
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "TYPE_LIGHT", "I");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, &type))
+    goto failed;
+  if (type != AHS_SENSOR_TYPE_LIGHT) {
+    GST_ERROR ("TYPE_LIGHT has changed value");
+    goto failed;
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass,
+      "TYPE_LINEAR_ACCELERATION", "I");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, &type))
+    goto failed;
+  if (type != AHS_SENSOR_TYPE_LINEAR_ACCELERATION) {
+    GST_ERROR ("TYPE_LINEAR_ACCELERATION has changed value");
+    goto failed;
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "TYPE_MAGNETIC_FIELD",
+      "I");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, &type))
+    goto failed;
+  if (type != AHS_SENSOR_TYPE_MAGNETIC_FIELD) {
+    GST_ERROR ("TYPE_MAGNETIC_FIELD has changed value");
+    goto failed;
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass,
+      "TYPE_MAGNETIC_FIELD_UNCALIBRATED", "I");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, &type))
+    goto failed;
+  if (type != AHS_SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED) {
+    GST_ERROR ("TYPE_MAGNETIC_FIELD_UNCALIBRATED has changed value");
+    goto failed;
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "TYPE_ORIENTATION",
+      "I");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, &type))
+    goto failed;
+  if (type != AHS_SENSOR_TYPE_ORIENTATION) {
+    GST_ERROR ("TYPE_ORIENTATION has changed value");
+    goto failed;
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "TYPE_PRESSURE", "I");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, &type))
+    goto failed;
+  if (type != AHS_SENSOR_TYPE_PRESSURE) {
+    GST_ERROR ("TYPE_PRESSURE has changed value");
+    goto failed;
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "TYPE_PROXIMITY", "I");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, &type))
+    goto failed;
+  if (type != AHS_SENSOR_TYPE_PROXIMITY) {
+    GST_ERROR ("TYPE_PROXIMITY has changed value");
+    goto failed;
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass,
+      "TYPE_RELATIVE_HUMIDITY", "I");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, &type))
+    goto failed;
+  if (type != AHS_SENSOR_TYPE_RELATIVE_HUMIDITY) {
+    GST_ERROR ("TYPE_RELATIVE_HUMIDITY has changed value");
+    goto failed;
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "TYPE_ROTATION_VECTOR",
+      "I");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, &type))
+    goto failed;
+  if (type != AHS_SENSOR_TYPE_ROTATION_VECTOR) {
+    GST_ERROR ("TYPE_ROTATION_VECTOR has changed value");
+    goto failed;
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass,
+      "TYPE_SIGNIFICANT_MOTION", "I");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, &type))
+    goto failed;
+  if (type != AHS_SENSOR_TYPE_SIGNIFICANT_MOTION) {
+    GST_ERROR ("TYPE_SIGNIFICANT_MOTION has changed value");
+    goto failed;
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "TYPE_STEP_COUNTER",
+      "I");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, &type))
+    goto failed;
+  if (type != AHS_SENSOR_TYPE_STEP_COUNTER) {
+    GST_ERROR ("TYPE_STEP_COUNTER has changed value");
+    goto failed;
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "TYPE_STEP_DETECTOR",
+      "I");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID, &type))
+    goto failed;
+  if (type != AHS_SENSOR_TYPE_STEP_DETECTOR) {
+    GST_ERROR ("TYPE_STEP_DETECTOR has changed value");
+    goto failed;
+  }
+
+  /* org.freedesktop.gstreamer.androidmedia.GstAhsCallback */
+  if (!org_freedesktop_gstreamer_androidmedia_gstahscallback.klass) {
+    org_freedesktop_gstreamer_androidmedia_gstahscallback.klass =
+        gst_amc_jni_get_class (env, &err,
+        "org/freedesktop/gstreamer/androidmedia/GstAhsCallback");
+  }
+  if (!org_freedesktop_gstreamer_androidmedia_gstahscallback.klass)
+    goto failed;
+  org_freedesktop_gstreamer_androidmedia_gstahscallback.constructor =
+      gst_amc_jni_get_method_id (env, &err,
+      org_freedesktop_gstreamer_androidmedia_gstahscallback.klass, "<init>",
+      "(JJJ)V");
+  if (!org_freedesktop_gstreamer_androidmedia_gstahscallback.constructor)
+    goto failed;
+
+  if ((*env)->RegisterNatives (env,
+          org_freedesktop_gstreamer_androidmedia_gstahscallback.klass,
+          native_methods, G_N_ELEMENTS (native_methods))) {
+    GST_ERROR ("Failed to register native methods for GstAhsCallback");
+    goto failed;
+  }
+  natives_registered = TRUE;
+
+  return TRUE;
+
+failed:
+  if (err) {
+    GST_ERROR ("Failed to initialize Android classes: %s", err->message);
+    g_clear_error (&err);
+  }
+
+  return FALSE;
+}
+
+gboolean
+gst_android_hardware_sensor_init (void)
+{
+  GST_DEBUG_CATEGORY_INIT (ahs_debug, "ahs", 0,
+      "Android Gstreamer Hardware Sensor");
+  if (!_init_classes ()) {
+    gst_android_hardware_sensor_deinit ();
+    return FALSE;
+  }
+
+  gst_ah_sensor_sensor_sizes_init ();
+
+  return TRUE;
+}
+
+void
+gst_android_hardware_sensor_deinit (void)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  if (android_content_context.SENSOR_SERVICE) {
+    gst_amc_jni_object_unref (env, android_content_context.SENSOR_SERVICE);
+    android_content_context.SENSOR_SERVICE = NULL;
+  }
+
+  if (android_content_context.klass) {
+    gst_amc_jni_object_unref (env, android_content_context.klass);
+    android_content_context.klass = NULL;
+  }
+
+  if (android_hardware_sensor_event.klass) {
+    gst_amc_jni_object_unref (env, android_hardware_sensor_event.klass);
+    android_hardware_sensor_event.klass = NULL;
+  }
+
+  if (android_hardware_sensor_manager.klass) {
+    gst_amc_jni_object_unref (env, android_hardware_sensor_manager.klass);
+    android_hardware_sensor_manager.klass = NULL;
+  }
+
+  if (org_freedesktop_gstreamer_androidmedia_gstahscallback.klass) {
+    if (natives_registered) {
+      (*env)->UnregisterNatives (env,
+          org_freedesktop_gstreamer_androidmedia_gstahscallback.klass);
+      natives_registered = FALSE;
+    }
+    gst_amc_jni_object_unref (env,
+        org_freedesktop_gstreamer_androidmedia_gstahscallback.klass);
+    org_freedesktop_gstreamer_androidmedia_gstahscallback.klass = NULL;
+  }
+
+  gst_ah_sensor_sensor_sizes_deinit ();
+}
+
+GstAHSensorManager *
+gst_ah_sensor_get_manager (void)
+{
+  jobject context;
+  GError *err = NULL;
+  JNIEnv *env = gst_amc_jni_get_env ();
+  GstAHSensorManager *manager;
+  jobject object;
+  gboolean success;
+
+  context = gst_android_get_application_context ();
+  success = gst_amc_jni_call_object_method (env, &err, context,
+      android_content_context.getSystemService,
+      &object, android_content_context.SENSOR_SERVICE);
+  if (!success)
+    return NULL;
+
+  object = gst_amc_jni_object_make_global (env, object);
+  if (!object)
+    return NULL;
+
+  manager = g_slice_new (GstAHSensorManager);
+  manager->object = object;
+
+  return manager;
+}
+
+GstAHSensor *
+gst_ah_sensor_get_default_sensor (GstAHSensorManager * self, gint32 sensor_type)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
+  jobject object;
+  GstAHSensor *sensor;
+
+  if (!gst_amc_jni_call_object_method (env, &err, self->object,
+          android_hardware_sensor_manager.getDefaultSensor,
+          &object, sensor_type))
+    return NULL;
+
+  object = gst_amc_jni_object_make_global (env, object);
+  if (!object)
+    return NULL;
+
+  sensor = g_slice_new (GstAHSensor);
+  sensor->object = object;
+
+  return sensor;
+}
+
+GstAHSensorEventListener *
+gst_ah_sensor_create_listener (GstAHSensorCallback sensor_cb,
+    GstAHSAccuracyCallback accuracy_cb, gpointer user_data)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
+  GstAHSensorEventListener *listener;
+  jobject object;
+
+  object = gst_amc_jni_new_object (env,
+      &err,
+      TRUE,
+      org_freedesktop_gstreamer_androidmedia_gstahscallback.klass,
+      org_freedesktop_gstreamer_androidmedia_gstahscallback.constructor,
+      UNION_CAST (sensor_cb, jlong),
+      UNION_CAST (accuracy_cb, jlong), UNION_CAST (user_data, jlong));
+  if (err) {
+    GST_ERROR ("Failed to create listener callback class");
+    g_clear_error (&err);
+    return NULL;
+  }
+
+  listener = g_slice_new (GstAHSensorEventListener);
+  listener->object = object;
+
+  return listener;
+}
+
+gboolean
+gst_ah_sensor_register_listener (GstAHSensorManager * self,
+    GstAHSensorEventListener * listener, GstAHSensor * sensor, gint32 delay)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
+  gboolean success;
+
+  gst_amc_jni_call_boolean_method (env, &err, self->object,
+      android_hardware_sensor_manager.registerListener, &success,
+      listener->object, sensor->object, (jint) delay);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.SensorManager.registerListener: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
+  listener->registered = TRUE;
+
+  return TRUE;
+}
+
+void
+gst_ah_sensor_unregister_listener (GstAHSensorManager * self,
+    GstAHSensorEventListener * listener)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
+
+  gst_amc_jni_call_void_method (env, &err, self->object,
+      android_hardware_sensor_manager.unregisterListener, listener->object);
+  if (err) {
+    GST_ERROR
+        ("Failed to call android.hardware.SensorManager.unregisterListener: %s",
+        err->message);
+    g_clear_error (&err);
+  }
+  listener->registered = FALSE;
+}
+
+gboolean
+gst_ah_sensor_populate_event (GstAHSensorEvent * event, jobject event_object,
+    gint size)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  GError *err = NULL;
+  jfloatArray object_array;
+  jfloat *values;
+
+  gst_amc_jni_get_int_field (env, &err,
+      event_object, android_hardware_sensor_event.accuracy, &event->accuracy);
+  if (err) {
+    GST_ERROR ("Failed to get sensor accuracy field: %s", err->message);
+    goto error;
+  }
+
+  gst_amc_jni_get_object_field (env, &err, event_object,
+      android_hardware_sensor_event.values, &object_array);
+  if (err) {
+    GST_ERROR ("Failed to get sensor values field: %s", err->message);
+    goto error;
+  }
+
+  values = (*env)->GetFloatArrayElements (env, object_array, NULL);
+  if (!values) {
+    GST_ERROR ("Failed to get float array elements from object array");
+    gst_amc_jni_object_local_unref (env, object_array);
+    return FALSE;
+  }
+  /* We can't use gst_amc_jni_object_make_global here because we need to call
+   * ReleaseFloatArrayElements before doing a local unref in the failure case,
+   * but gst_amc_jni_object_make_global would unref before we could Release.
+   */
+  event->data.array = gst_amc_jni_object_ref (env, object_array);
+  if (!event->data.array) {
+    (*env)->ReleaseFloatArrayElements (env, object_array, values, JNI_ABORT);
+    gst_amc_jni_object_local_unref (env, object_array);
+    return FALSE;
+  }
+  event->data.values = values;
+  gst_amc_jni_object_local_unref (env, object_array);
+
+  return TRUE;
+
+error:
+  g_clear_error (&err);
+  return FALSE;
+}
+
+void
+gst_ah_sensor_free_sensor_data (GstAHSensorData * data)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  (*env)->ReleaseFloatArrayElements (env, data->array, data->values, JNI_ABORT);
+  gst_amc_jni_object_unref (env, data->array);
+}
diff --git a/sys/androidmedia/gst-android-hardware-sensor.h b/sys/androidmedia/gst-android-hardware-sensor.h
new file mode 100644
index 0000000..2dc79dc
--- /dev/null
+++ b/sys/androidmedia/gst-android-hardware-sensor.h
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2016 SurroundIO
+ *   Author: Martin Kelly <martin@surround.io>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_ANDROID_HARDWARE_SENSOR_H__
+#define __GST_ANDROID_HARDWARE_SENSOR_H__
+
+#include <gst/gst.h>
+#include <jni.h>
+
+#include "gstsensors.h"
+
+G_BEGIN_DECLS
+
+typedef struct GstAHSensor
+{
+  /* < private > */
+  jobject object;
+} GstAHSensor;
+
+typedef struct GstAHSensorData
+{
+  jfloatArray array;
+  gfloat *values;
+} GstAHSensorData;
+
+typedef struct GstAHSensorEvent
+{
+  /*
+   * Note that we don't use the Android event timestamp, as it's not reliable.
+   * See https://code.google.com/p/android/issues/detail?id=7981 for more
+   * details.
+   */
+  gint32 accuracy;
+  GstAHSensorData data;
+} GstAHSensorEvent;
+
+typedef struct GstAHSensorEventListener
+{
+  /* < private > */
+  jobject object;
+
+  gboolean registered;
+} GstAHSensorEventListener;
+
+typedef struct GstAHSensorManager
+{
+  /* < private > */
+  jobject object;
+} GstAHSensorManager;
+
+gint gst_android_sensor_type_from_string (const gchar * type_str);
+
+/* android.hardware.SensorListener onSensorChanged */
+typedef void (*GstAHSensorCallback) (jobject sensor_event, gpointer user_data);
+
+/* android.hardware.SensorListener onAccuracyChanged */
+typedef void (*GstAHSAccuracyCallback) (jobject sensor, gint32 accuracy,
+    gpointer user_data);
+
+gboolean gst_android_hardware_sensor_init (void);
+void gst_android_hardware_sensor_deinit (void);
+
+/*
+ * Example usage (excluding error checking):
+ *
+ * GstAHSensorManager *manager = gst_ah_sensor_get_manager ();
+ * GstAHSensor *sensor =
+ *     gst_ah_sensor_get_default_sensor (manager, * sensor_type);
+ * GstAHSensorEventListener *listener =
+ *     gst_ah_sensor_create_listener * (change_cb, accuracy_cb, self);
+ * gst_ah_sensor_register_listener (manager, listener, sensor,
+ *     SensorDelay_SENSOR_DELAY_NORMAL);
+ */
+GstAHSensorManager *gst_ah_sensor_get_manager (void);
+GstAHSensor *gst_ah_sensor_get_default_sensor (GstAHSensorManager * manager,
+    gint32 sensor_type);
+GstAHSensorEventListener *gst_ah_sensor_create_listener (GstAHSensorCallback
+    sensor_cb, GstAHSAccuracyCallback accuracy_cb, gpointer user_data);
+gboolean gst_ah_sensor_register_listener (GstAHSensorManager * self,
+    GstAHSensorEventListener * listener, GstAHSensor * sensor, gint32 delay);
+void gst_ah_sensor_unregister_listener (GstAHSensorManager * self,
+    GstAHSensorEventListener * listener);
+
+gboolean gst_ah_sensor_populate_event (GstAHSensorEvent * event,
+    jobject event_object, gint size);
+void gst_ah_sensor_free_sensor_data (GstAHSensorData * data);
+
+/*
+ * These constants come from the matching SENSOR_DELAY_* TYPE_* constants found
+ * in the Android documentation:
+ *
+ * SENSOR_DELAY_*:
+ * https://developer.android.com/reference/android/hardware/SensorManager.html
+ *
+ * TYPE_*:
+ * https://developer.android.com/reference/android/hardware/Sensor.html
+ *
+ * They are intended to be passed into the registerListener callback for
+ * listener registration. Note that, although these are hardcoded, we also do
+ * paranoid runtime checks during plugin init to verify that the API values
+ * haven't changed. This is unlikely but seems like a good precaution. When
+ * adding values, please keep the two lists in sync.
+ */
+enum
+{
+  AHS_SENSOR_DELAY_FASTEST = 0,
+  AHS_SENSOR_DELAY_GAME = 1,
+  AHS_SENSOR_DELAY_NORMAL = 3,
+  AHS_SENSOR_DELAY_UI = 2
+};
+
+enum
+{
+  AHS_SENSOR_TYPE_ACCELEROMETER = 0x1,
+  AHS_SENSOR_TYPE_AMBIENT_TEMPERATURE = 0xd,
+  AHS_SENSOR_TYPE_GAME_ROTATION_VECTOR = 0xf,
+  AHS_SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR = 0x14,
+  AHS_SENSOR_TYPE_GRAVITY = 0x9,
+  AHS_SENSOR_TYPE_GYROSCOPE = 0x4,
+  AHS_SENSOR_TYPE_GYROSCOPE_UNCALIBRATED = 0x10,
+  AHS_SENSOR_TYPE_HEART_RATE = 0x15,
+  AHS_SENSOR_TYPE_LIGHT = 0x5,
+  AHS_SENSOR_TYPE_LINEAR_ACCELERATION = 0xa,
+  AHS_SENSOR_TYPE_MAGNETIC_FIELD = 0x2,
+  AHS_SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED = 0xe,
+  AHS_SENSOR_TYPE_ORIENTATION = 0x3,
+  AHS_SENSOR_TYPE_PRESSURE = 0x6,
+  AHS_SENSOR_TYPE_PROXIMITY = 0x8,
+  AHS_SENSOR_TYPE_RELATIVE_HUMIDITY = 0xc,
+  AHS_SENSOR_TYPE_ROTATION_VECTOR = 0xb,
+  AHS_SENSOR_TYPE_SIGNIFICANT_MOTION = 0x11,
+  AHS_SENSOR_TYPE_STEP_COUNTER = 0x13,
+  AHS_SENSOR_TYPE_STEP_DETECTOR = 0x12
+};
+
+gsize gst_ah_sensor_get_sensor_data_size (gint sensor_type);
+
+G_END_DECLS
+#endif /* __GST_ANDROID_HARDWARE_SENSOR_H__ */
diff --git a/sys/androidmedia/gstahcsrc.c b/sys/androidmedia/gstahcsrc.c
index 2c351a0..2fa1d6f 100644
--- a/sys/androidmedia/gstahcsrc.c
+++ b/sys/androidmedia/gstahcsrc.c
@@ -81,7 +81,7 @@
     const GValue * value, GParamSpec * pspec);
 static void gst_ahc_src_get_property (GObject * object, guint prop_id,
     GValue * value, GParamSpec * pspec);
-static void gst_ahc_src_dispose (GObject * object);
+static void gst_ahc_src_finalize (GObject * object);
 
 /* GstElement */
 static GstStateChangeReturn gst_ahc_src_change_state (GstElement * element,
@@ -272,7 +272,7 @@
 
   gobject_class->set_property = gst_ahc_src_set_property;
   gobject_class->get_property = gst_ahc_src_get_property;
-  gobject_class->dispose = gst_ahc_src_dispose;
+  gobject_class->finalize = gst_ahc_src_finalize;
 
   element_class->change_state = gst_ahc_src_change_state;
 
@@ -287,8 +287,8 @@
 
   gstpushsrc_class->create = gst_ahc_src_create;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_ahc_src_pad_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_ahc_src_pad_template);
 
   /**
    * GstAHCSrc:device:
@@ -378,7 +378,7 @@
       properties[PROP_VERTICAL_VIEW_ANGLE]);
 
   /**
-   * GstAHCSrc:video-stabilizatio:
+   * GstAHCSrc:video-stabilization:
    *
    * Video stabilization reduces the shaking due to the motion of the camera.
    */
@@ -523,10 +523,6 @@
   properties[PROP_ANALOG_GAIN] = g_object_class_find_property (gobject_class,
       GST_PHOTOGRAPHY_PROP_ANALOG_GAIN);
 
-
-
-  klass->probe_properties = NULL;
-
   gst_element_class_set_static_metadata (element_class,
       "Android Camera Source",
       "Source/Video",
@@ -562,17 +558,14 @@
 }
 
 static void
-gst_ahc_src_dispose (GObject * object)
+gst_ahc_src_finalize (GObject * object)
 {
   GstAHCSrc *self = GST_AHC_SRC (object);
 
-  if (self->queue)
-    g_object_unref (self->queue);
-  self->queue = NULL;
-
+  g_clear_object (&self->queue);
   g_mutex_clear (&self->mutex);
 
-  G_OBJECT_CLASS (parent_class)->dispose (object);
+  G_OBJECT_CLASS (parent_class)->finalize (object);
 }
 
 static void
@@ -858,167 +851,6 @@
   }
 }
 
-#if 0
-static const GList *
-gst_ahc_src_probe_get_properties (GstPropertyProbe * probe)
-{
-  GstAHCSrcClass *ahc_class = GST_AHC_SRC_CLASS (probe);
-  GList **list = &ahc_class->probe_properties;
-
-  if (!*list) {
-    *list = g_list_append (*list, properties[PROP_DEVICE]);
-    *list = g_list_append (*list, properties[PROP_EV_COMP]);
-    *list = g_list_append (*list, properties[PROP_ZOOM]);
-    *list = g_list_append (*list, properties[PROP_WB_MODE]);
-    *list = g_list_append (*list, properties[PROP_COLOUR_TONE]);
-    *list = g_list_append (*list, properties[PROP_FLASH_MODE]);
-    *list = g_list_append (*list, properties[PROP_FOCUS_MODE]);
-    *list = g_list_append (*list, properties[PROP_SCENE_MODE]);
-    *list = g_list_append (*list, properties[PROP_FLICKER_MODE]);
-  }
-
-  return *list;
-}
-
-#define PROBE_GET_ENUM_VALUES(name, type, struct_name)                  \
-  if (self->camera) {                                                   \
-    GstAHCParameters *params;                                           \
-                                                                        \
-    params = gst_ah_camera_get_parameters (self->camera);               \
-    if (params) {                                                       \
-      GList *list = gst_ahc_parameters_get_supported_##name (params);   \
-                                                                        \
-      if (list) {                                                       \
-          GValue value = { 0 };                                         \
-          GList *i;                                                     \
-                                                                        \
-          array = g_value_array_new (g_list_length (list));             \
-          g_value_init (&value, type);                                  \
-          for (i = list; i; i = i->next) {                              \
-            struct_name mode;                                           \
-            const gchar *name = i->data;                                \
-                                                                        \
-            if (_##name##_to_enum (name, &mode)) {                      \
-              g_value_set_enum (&value, mode);                          \
-              g_value_array_append (array, &value);                     \
-            }                                                           \
-          }                                                             \
-          g_value_unset (&value);                                       \
-      }                                                                 \
-                                                                        \
-      gst_ahc_parameters_supported_##name##_free (list);                \
-      gst_ahc_parameters_free (params);                                 \
-    }                                                                   \
-  }
-
-
-static GValueArray *
-gst_ahc_src_probe_get_values (GstPropertyProbe * probe,
-    guint prop_id, const GParamSpec * pspec)
-{
-  GstAHCSrc *self = GST_AHC_SRC (probe);
-  GValueArray *array = NULL;
-
-  /* g_object_class_find_property returns overriden property with
-   * param_id == 0, so we can't switch/case the prop_id and
-   * we need to check the pspec instead */
-  if (pspec == properties[PROP_DEVICE]) {
-    GValue value = { 0 };
-    gint num_cams = gst_ah_camera_get_number_of_cameras ();
-    gint i;
-
-    array = g_value_array_new (num_cams);
-    g_value_init (&value, G_TYPE_STRING);
-    for (i = 0; i < num_cams; i++) {
-      g_value_take_string (&value, g_strdup_printf ("%d", i));
-      g_value_array_append (array, &value);
-    }
-    g_value_unset (&value);
-  } else if (pspec == properties[PROP_EV_COMP]) {
-    if (self->camera) {
-      GstAHCParameters *params;
-
-      params = gst_ah_camera_get_parameters (self->camera);
-      if (params) {
-        gint min, max;
-        gfloat step;
-
-        min = gst_ahc_parameters_get_min_exposure_compensation (params);
-        max = gst_ahc_parameters_get_max_exposure_compensation (params);
-        step = gst_ahc_parameters_get_exposure_compensation_step (params);
-
-        if (step != 0.0 && min != max) {
-          GValue value = { 0 };
-          gint i;
-
-          /* Min and Max are inclusive */
-          array = g_value_array_new (max - min + 1);
-          g_value_init (&value, G_TYPE_FLOAT);
-          for (i = min; i <= max; i++) {
-            g_value_set_float (&value, step * i);
-            g_value_array_append (array, &value);
-          }
-          g_value_unset (&value);
-        }
-
-        gst_ahc_parameters_free (params);
-      }
-    }
-  } else if (pspec == properties[PROP_ZOOM]) {
-    if (self->camera) {
-      GstAHCParameters *params;
-
-      params = gst_ah_camera_get_parameters (self->camera);
-      if (params) {
-        GList *zoom_ratios = gst_ahc_parameters_get_zoom_ratios (params);
-        gint max_zoom = gst_ahc_parameters_get_max_zoom (params);
-
-        if (zoom_ratios && g_list_length (zoom_ratios) == (max_zoom + 1)) {
-          GValue value = { 0 };
-          GList *i;
-
-          array = g_value_array_new (max_zoom + 1);
-          g_value_init (&value, G_TYPE_FLOAT);
-          for (i = zoom_ratios; i; i = i->next) {
-            gint zoom_value = GPOINTER_TO_INT (i->data);
-            gfloat zoom = (gfloat) zoom_value / 100.0;
-
-            g_value_set_float (&value, zoom);
-            g_value_array_append (array, &value);
-          }
-          g_value_unset (&value);
-        }
-
-        gst_ahc_parameters_zoom_ratios_free (zoom_ratios);
-        gst_ahc_parameters_free (params);
-      }
-    }
-  } else if (pspec == properties[PROP_WB_MODE]) {
-    PROBE_GET_ENUM_VALUES (white_balance, GST_TYPE_WHITE_BALANCE_MODE,
-        GstPhotographyWhiteBalanceMode);
-  } else if (pspec == properties[PROP_COLOUR_TONE]) {
-    PROBE_GET_ENUM_VALUES (color_effects, GST_TYPE_COLOUR_TONE_MODE,
-        GstPhotographyColorToneMode);
-  } else if (pspec == properties[PROP_FLASH_MODE]) {
-    PROBE_GET_ENUM_VALUES (flash_modes, GST_TYPE_FLASH_MODE,
-        GstPhotographyFlashMode);
-  } else if (pspec == properties[PROP_FOCUS_MODE]) {
-    PROBE_GET_ENUM_VALUES (focus_modes, GST_TYPE_FOCUS_MODE,
-        GstPhotographyFocusMode);
-  } else if (pspec == properties[PROP_SCENE_MODE]) {
-    PROBE_GET_ENUM_VALUES (scene_modes, GST_TYPE_SCENE_MODE,
-        GstPhotographySceneMode);
-  } else if (pspec == properties[PROP_FLICKER_MODE]) {
-    PROBE_GET_ENUM_VALUES (antibanding, GST_TYPE_FLICKER_REDUCTION_MODE,
-        GstPhotographyFlickerReductionMode);
-  } else {
-    G_OBJECT_WARN_INVALID_PROPERTY_ID (probe, prop_id, pspec);
-  }
-
-  return array;
-}
-#endif
-
 static gboolean
 _antibanding_to_enum (const gchar * antibanding,
     GstPhotographyFlickerReductionMode * mode)
@@ -2290,7 +2122,7 @@
 
   GST_DEBUG_OBJECT (self, "Received data buffer %p", array);
 
-  malloc_data = g_slice_new0 (FreeFuncBuffer);
+  malloc_data = g_slice_new (FreeFuncBuffer);
   malloc_data->self = gst_object_ref (self);
   malloc_data->array = (*env)->NewGlobalRef (env, array);
   malloc_data->data = (*env)->GetByteArrayElements (env, array, NULL);
@@ -2305,7 +2137,7 @@
   GST_DEBUG_OBJECT (self, "creating wrapped buffer (size: %d)",
       self->buffer_size);
 
-  item = g_slice_new0 (GstDataQueueItem);
+  item = g_slice_new (GstDataQueueItem);
   item->object = GST_MINI_OBJECT (buffer);
   item->size = gst_buffer_get_size (buffer);
   item->duration = GST_BUFFER_DURATION (buffer);
@@ -2338,6 +2170,8 @@
 static gboolean
 gst_ahc_src_open (GstAHCSrc * self)
 {
+  GError *err = NULL;
+
   GST_DEBUG_OBJECT (self, "Opening camera");
 
   self->camera = gst_ah_camera_open (self->device);
@@ -2345,29 +2179,44 @@
   if (self->camera) {
     GST_DEBUG_OBJECT (self, "Opened camera");
 
-    self->texture = gst_ag_surfacetexture_new (0);
+    self->texture = gst_amc_surface_texture_new (&err);
+    if (self->texture == NULL) {
+      GST_ERROR_OBJECT (self,
+          "Failed to create surface texture object: %s", err->message);
+      g_clear_error (&err);
+      goto failed_surfacetexutre;
+    }
     gst_ah_camera_set_preview_texture (self->camera, self->texture);
     self->buffer_size = 0;
   } else {
     gint num_cams = gst_ah_camera_get_number_of_cameras ();
     if (num_cams > 0 && self->device < num_cams) {
       GST_ELEMENT_ERROR (self, RESOURCE, NOT_FOUND,
-          ("Unable to open device '%d'.", self->device), GST_ERROR_SYSTEM);
+          ("Unable to open device '%d'.", self->device), (NULL));
     } else if (num_cams > 0) {
       GST_ELEMENT_ERROR (self, RESOURCE, NOT_FOUND,
-          ("Device '%d' does not exist.", self->device), GST_ERROR_SYSTEM);
+          ("Device '%d' does not exist.", self->device), (NULL));
     } else {
       GST_ELEMENT_ERROR (self, RESOURCE, NOT_FOUND,
-          ("There are no cameras available on this device."), GST_ERROR_SYSTEM);
+          ("There are no cameras available on this device."), (NULL));
     }
   }
 
   return (self->camera != NULL);
+
+failed_surfacetexutre:
+  gst_ah_camera_release (self->camera);
+  gst_ah_camera_free (self->camera);
+  self->camera = NULL;
+
+  return FALSE;
 }
 
 static void
 gst_ahc_src_close (GstAHCSrc * self)
 {
+  GError *err = NULL;
+
   if (self->camera) {
     gst_ah_camera_set_error_callback (self->camera, NULL, NULL);
     gst_ah_camera_set_preview_callback_with_buffer (self->camera, NULL, NULL);
@@ -2376,11 +2225,13 @@
   }
   self->camera = NULL;
 
-  if (self->texture) {
-    gst_ag_surfacetexture_release (self->texture);
-    gst_ag_surfacetexture_free (self->texture);
+  if (self->texture && !gst_amc_surface_texture_release (self->texture, &err)) {
+    GST_ERROR_OBJECT (self,
+        "Failed to release surface texture object: %s", err->message);
+    g_clear_error (&err);
   }
-  self->texture = NULL;
+
+  g_clear_object (&self->texture);
 }
 
 static GstStateChangeReturn
diff --git a/sys/androidmedia/gstahcsrc.h b/sys/androidmedia/gstahcsrc.h
index fc24989..dc80beb 100644
--- a/sys/androidmedia/gstahcsrc.h
+++ b/sys/androidmedia/gstahcsrc.h
@@ -30,6 +30,7 @@
 #include <gst/base/gstdataqueue.h>
 
 #include "gst-android-hardware-camera.h"
+#include "gstamcsurfacetexture.h"
 
 G_BEGIN_DECLS
 
@@ -59,7 +60,7 @@
   GstPushSrc parent;
 
   GstAHCamera *camera;
-  GstAGSurfaceTexture *texture;
+  GstAmcSurfaceTexture *texture;
   GList *data;
   GstDataQueue *queue;
   gint buffer_size;
@@ -80,7 +81,6 @@
 struct _GstAHCSrcClass
 {
   GstPushSrcClass parent_class;
-  GList *probe_properties;
 };
 
 GType gst_ahc_src_get_type (void);
diff --git a/sys/androidmedia/gstahssrc.c b/sys/androidmedia/gstahssrc.c
new file mode 100644
index 0000000..88f8282
--- /dev/null
+++ b/sys/androidmedia/gstahssrc.c
@@ -0,0 +1,687 @@
+/* GStreamer android.hardware.Sensor Source
+ * Copyright (C) 2016 SurroundIO
+ *   Author: Martin Kelly <martin@surround.io>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+/**
+ * SECTION:element-gstahssrc
+ *
+ * The ahssrc element reads data from Android device sensors
+ * (android.hardware.Sensor).
+ *
+ * <refsect2>
+ * <title>Example launch line</title>
+ * |[
+ * gst-launch -v ahssrc ! fakesink
+ * ]|
+ * Push Android sensor data into a fakesink.
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <string.h>
+
+#include <gst/gst.h>
+#include <gst/gstclock.h>
+#include <gst/base/gstbasesrc.h>
+#include <gst/base/gstpushsrc.h>
+#include "gstjniutils.h"
+#include "gst-android-hardware-sensor.h"
+#include "gstahssrc.h"
+#include "gstsensors.h"
+
+GST_DEBUG_CATEGORY_STATIC (gst_ahs_src_debug);
+#define GST_CAT_DEFAULT gst_ahs_src_debug
+
+#define parent_class gst_ahs_src_parent_class
+
+/* GObject */
+static void gst_ahs_src_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_ahs_src_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+static void gst_ahs_src_dispose (GObject * object);
+
+/* GstBaseSrc */
+static gboolean gst_ahs_src_set_caps (GstBaseSrc * src, GstCaps * caps);
+static gboolean gst_ahs_src_start (GstBaseSrc * src);
+static gboolean gst_ahs_src_stop (GstBaseSrc * src);
+static gboolean gst_ahs_src_get_size (GstBaseSrc * src, guint64 * size);
+static gboolean gst_ahs_src_is_seekable (GstBaseSrc * src);
+static gboolean gst_ahs_src_unlock (GstBaseSrc * src);
+static gboolean gst_ahs_src_unlock_stop (GstBaseSrc * src);
+
+/* GstPushSrc */
+static GstFlowReturn gst_ahs_src_create (GstPushSrc * src, GstBuffer ** buf);
+
+/* GstAHSSrc */
+static void gst_ahs_src_on_sensor_changed (jobject sensor_event,
+    gpointer user_data);
+static void gst_ahs_src_on_accuracy_changed (jobject sensor, gint accuracy,
+    gpointer user_data);
+static gboolean gst_ahs_src_register_callback (GstAHSSrc * self);
+
+enum
+{
+  PROP_0,
+  PROP_SENSOR_DELAY,
+  PROP_ALPHA,
+  PROP_SAMPLE_INTERVAL,
+  PROP_LAST
+};
+
+static GParamSpec *properties[PROP_LAST];
+
+#define GST_AHS_SRC_CAPS_STR GST_SENSOR_CAPS_MAKE (GST_SENSOR_FORMATS_ALL)
+
+static GstStaticPadTemplate gst_ahs_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS (GST_AHS_SRC_CAPS_STR));
+
+
+G_DEFINE_TYPE_WITH_CODE (GstAHSSrc, gst_ahs_src, GST_TYPE_PUSH_SRC,
+    GST_DEBUG_CATEGORY_INIT (gst_ahs_src_debug, "ahssrc", 0,
+        "Android hardware sensors"));
+
+#define GST_TYPE_AHS_SENSOR_DELAY (gst_ahs_src_get_sensor_delay ())
+static GType
+gst_ahs_src_get_sensor_delay (void)
+{
+  static GType ahs_src_sensor_delay = 0;
+
+  if (!ahs_src_sensor_delay) {
+    static GEnumValue sensor_delay[5];
+    sensor_delay[0].value = AHS_SENSOR_DELAY_FASTEST;
+    sensor_delay[0].value_name = "fastest";
+    sensor_delay[0].value_nick = "fastest";
+    sensor_delay[1].value = AHS_SENSOR_DELAY_GAME;
+    sensor_delay[1].value_name = "game";
+    sensor_delay[1].value_nick = "game";
+    sensor_delay[2].value = AHS_SENSOR_DELAY_NORMAL;
+    sensor_delay[2].value_name = "normal";
+    sensor_delay[2].value_nick = "normal";
+    sensor_delay[3].value = AHS_SENSOR_DELAY_UI;
+    sensor_delay[3].value_name = "ui";
+    sensor_delay[3].value_nick = "ui";
+    sensor_delay[4].value = 0;
+    sensor_delay[4].value_name = NULL;
+    sensor_delay[4].value_nick = NULL;
+
+    ahs_src_sensor_delay =
+        g_enum_register_static ("GstAhsSrcSensorDelay", sensor_delay);
+  }
+
+  return ahs_src_sensor_delay;
+}
+
+#define GST_TYPE_AHS_SENSOR_TYPE (gst_ahs_src_get_sensor_type ())
+static GType
+gst_ahs_src_get_sensor_type (void)
+{
+  static GType ahs_src_sensor_type = 0;
+
+  if (!ahs_src_sensor_type) {
+    static const GEnumValue sensor_types[] = {
+      {AHS_SENSOR_TYPE_ACCELEROMETER, "accelerometer"},
+      {AHS_SENSOR_TYPE_AMBIENT_TEMPERATURE, "ambient-temperature"},
+      {AHS_SENSOR_TYPE_GAME_ROTATION_VECTOR, "game-rotation-vector"},
+      {AHS_SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR,
+          "geomagnetic-rotation-vector"},
+      {AHS_SENSOR_TYPE_GRAVITY, "gravity"},
+      {AHS_SENSOR_TYPE_GYROSCOPE, "gyroscope"},
+      {AHS_SENSOR_TYPE_GYROSCOPE_UNCALIBRATED, "gyroscope-uncalibrated"},
+      {AHS_SENSOR_TYPE_HEART_RATE, "heart-rate"},
+      {AHS_SENSOR_TYPE_LIGHT, "light"},
+      {AHS_SENSOR_TYPE_LINEAR_ACCELERATION, "linear-acceleration"},
+      {AHS_SENSOR_TYPE_MAGNETIC_FIELD, "magnetic-field"},
+      {AHS_SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED,
+          "magnetic-field-uncalibrated"},
+      {AHS_SENSOR_TYPE_ORIENTATION, "orientation"},
+      {AHS_SENSOR_TYPE_PRESSURE, "pressure"},
+      {AHS_SENSOR_TYPE_PROXIMITY, "proximity"},
+      {AHS_SENSOR_TYPE_RELATIVE_HUMIDITY, "relative-humidity"},
+      {AHS_SENSOR_TYPE_ROTATION_VECTOR, "rotation-vector"},
+      {AHS_SENSOR_TYPE_STEP_COUNTER, "step-counter"},
+      {AHS_SENSOR_TYPE_STEP_DETECTOR, "step-detector"},
+      {0, NULL, NULL}
+    };
+
+    ahs_src_sensor_type =
+        g_enum_register_static ("GstAhsSrcSensorType", sensor_types);
+  }
+
+  return ahs_src_sensor_type;
+}
+
+static void
+gst_ahs_src_class_init (GstAHSSrcClass * klass)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+  GstBaseSrcClass *base_src_class = GST_BASE_SRC_CLASS (klass);
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+  GstPushSrcClass *push_src_class = GST_PUSH_SRC_CLASS (klass);
+
+  gobject_class->set_property = gst_ahs_src_set_property;
+  gobject_class->get_property = gst_ahs_src_get_property;
+  gobject_class->dispose = gst_ahs_src_dispose;
+
+  base_src_class->set_caps = GST_DEBUG_FUNCPTR (gst_ahs_src_set_caps);
+  base_src_class->start = GST_DEBUG_FUNCPTR (gst_ahs_src_start);
+  base_src_class->stop = GST_DEBUG_FUNCPTR (gst_ahs_src_stop);
+  base_src_class->get_size = GST_DEBUG_FUNCPTR (gst_ahs_src_get_size);
+  base_src_class->is_seekable = GST_DEBUG_FUNCPTR (gst_ahs_src_is_seekable);
+  base_src_class->unlock = GST_DEBUG_FUNCPTR (gst_ahs_src_unlock);
+  base_src_class->unlock_stop = GST_DEBUG_FUNCPTR (gst_ahs_src_unlock_stop);
+
+  push_src_class->create = GST_DEBUG_FUNCPTR (gst_ahs_src_create);
+
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&gst_ahs_src_template));
+
+  properties[PROP_SENSOR_DELAY] = g_param_spec_enum ("sensor-delay",
+      "Sensor delay", "Configure the sensor rate", GST_TYPE_AHS_SENSOR_DELAY,
+      AHS_SENSOR_DELAY_NORMAL,
+      G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (gobject_class, PROP_SENSOR_DELAY,
+      properties[PROP_SENSOR_DELAY]);
+
+  properties[PROP_ALPHA] = g_param_spec_double ("alpha", "Alpha",
+      "Alpha value used for exponential smoothing (between 0.0 and 1.0)", 0.0,
+      1.0, 0.2, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (gobject_class, PROP_ALPHA,
+      properties[PROP_ALPHA]);
+
+  properties[PROP_SAMPLE_INTERVAL] = g_param_spec_uint ("sample-interval",
+      "Sample interval",
+      "Sample interval (for interval n, will output a smoothed average every "
+      "nth sample)", 1, G_MAXUINT, 1,
+      G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (gobject_class, PROP_SAMPLE_INTERVAL,
+      properties[PROP_SAMPLE_INTERVAL]);
+
+  gst_element_class_set_static_metadata (element_class,
+      "Android hardware sensors", "Source/Sensor/Device",
+      "Source for Android hardware sensor data",
+      "Martin Kelly <martin@surround.io>");
+}
+
+static gboolean
+_data_queue_check_full (GstDataQueue * queue, guint visible,
+    guint bytes, guint64 time, gpointer checkdata)
+{
+  return FALSE;
+}
+
+static void
+gst_ahs_src_init (GstAHSSrc * self)
+{
+  gst_base_src_set_live (GST_BASE_SRC (self), TRUE);
+  gst_base_src_set_format (GST_BASE_SRC (self), GST_FORMAT_TIME);
+  gst_base_src_set_do_timestamp (GST_BASE_SRC (self), FALSE);
+
+  self->sensor_enum_class = g_type_class_ref (GST_TYPE_AHS_SENSOR_TYPE);
+  self->sensor_type_name = NULL;
+
+  self->manager = NULL;
+  self->sensor = NULL;
+  self->listener = NULL;
+  self->callback_registered = FALSE;
+
+  self->queue = gst_data_queue_new (_data_queue_check_full, NULL, NULL, NULL);
+
+  self->previous_time = GST_CLOCK_TIME_NONE;
+  self->sample_index = 0;
+  self->current_sample = NULL;
+}
+
+static void
+gst_ahs_src_dispose (GObject * object)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  GstAHSSrc *self = GST_AHS_SRC (object);
+
+  if (self->manager) {
+    gst_amc_jni_object_unref (env, self->manager->object);
+    g_slice_free (GstAHSensorManager, self->manager);
+    self->manager = NULL;
+  }
+
+  if (self->sensor) {
+    gst_amc_jni_object_unref (env, self->sensor->object);
+    g_slice_free (GstAHSensor, self->sensor);
+    self->sensor = NULL;
+  }
+
+  if (self->listener) {
+    gst_amc_jni_object_unref (env, self->listener->object);
+    g_slice_free (GstAHSensorEventListener, self->listener);
+    self->listener = NULL;
+  }
+
+  if (self->current_sample) {
+    g_free (self->current_sample);
+    self->current_sample = NULL;
+  }
+
+  if (self->sensor_enum_class) {
+    g_type_class_unref (self->sensor_enum_class);
+    self->sensor_enum_class = NULL;
+  }
+
+  if (self->sensor_type_name) {
+    g_free ((gpointer) self->sensor_type_name);
+    self->sensor_type_name = NULL;
+  }
+
+  if (self->queue) {
+    g_object_unref (self->queue);
+    self->queue = NULL;
+  }
+
+  G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+static void
+gst_ahs_src_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstAHSSrc *self = GST_AHS_SRC (object);
+
+  /*
+   * Take the mutex to protect against callbacks or changes to the properties
+   * that the callback uses (e.g. caps changes).
+   */
+  GST_OBJECT_LOCK (self);
+
+  switch (prop_id) {
+    case PROP_SENSOR_DELAY:
+      self->sensor_delay = g_value_get_enum (value);
+      /*
+       * If we already have a callback running, reregister with the new delay.
+       * Otherwise, wait for the pipeline to start before we register.
+       */
+      if (self->callback_registered)
+        gst_ahs_src_register_callback (self);
+      break;
+    case PROP_ALPHA:
+      self->alpha = g_value_get_double (value);
+      break;
+    case PROP_SAMPLE_INTERVAL:
+      self->sample_interval = g_value_get_uint (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+
+  GST_OBJECT_UNLOCK (self);
+}
+
+static void
+gst_ahs_src_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstAHSSrc *self = GST_AHS_SRC (object);
+
+  switch (prop_id) {
+    case PROP_SENSOR_DELAY:
+      g_value_set_enum (value, self->sensor_delay);
+    case PROP_ALPHA:
+      g_value_set_double (value, self->alpha);
+      break;
+    case PROP_SAMPLE_INTERVAL:
+      g_value_set_uint (value, self->sample_interval);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+  }
+}
+
+static gboolean
+gst_ahs_src_register_callback (GstAHSSrc * self)
+{
+  if (self->callback_registered) {
+    gst_ah_sensor_unregister_listener (self->manager, self->listener);
+    self->callback_registered = FALSE;
+  }
+  if (!gst_ah_sensor_register_listener (self->manager, self->listener,
+          self->sensor, self->sensor_delay)) {
+    return FALSE;
+  }
+  self->callback_registered = TRUE;
+
+  return TRUE;
+}
+
+static gboolean
+gst_ahs_src_change_sensor_type (GstAHSSrc * self, const gchar * type_str,
+    gint type)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  /* Replace sensor type. */
+  if (self->sensor_type_name)
+    g_free ((gpointer) self->sensor_type_name);
+  self->sensor_type_name = type_str;
+  self->sensor_type = type;
+
+  /* Adjust buffer and buffer size. */
+  self->buffer_size = gst_ah_sensor_get_sensor_data_size (self->sensor_type);
+  g_assert (self->buffer_size != 0);
+  self->sample_length = self->buffer_size / sizeof (*self->current_sample);
+  self->current_sample = g_realloc (self->current_sample, self->buffer_size);
+
+  /* Make sure we have a manager. */
+  if (!self->manager) {
+    self->manager = gst_ah_sensor_get_manager ();
+    if (!self->manager) {
+      GST_ERROR_OBJECT (self, "Failed to get sensor manager");
+      goto error_sensor_type_name;
+    }
+  }
+
+  /* Replace sensor object. */
+  if (self->sensor) {
+    gst_amc_jni_object_unref (env, self->sensor->object);
+    g_slice_free (GstAHSensor, self->sensor);
+  }
+  self->sensor = gst_ah_sensor_get_default_sensor (self->manager,
+      self->sensor_type);
+  if (!self->sensor) {
+    GST_ERROR_OBJECT (self, "Failed to get sensor type %s",
+        self->sensor_type_name);
+    goto error_manager;
+  }
+
+  /* Register for the callback, unregistering first if necessary. */
+  if (!gst_ahs_src_register_callback (self))
+    goto error_sensor;
+
+  return TRUE;
+
+error_sensor:
+  gst_amc_jni_object_unref (env, self->sensor->object);
+  g_slice_free (GstAHSensor, self->sensor);
+  self->sensor = NULL;
+error_manager:
+  gst_amc_jni_object_unref (env, self->manager->object);
+  g_slice_free (GstAHSensorManager, self->manager);
+  self->manager = NULL;
+error_sensor_type_name:
+  g_free ((gpointer) self->sensor_type_name);
+  self->sensor_type_name = NULL;
+  return FALSE;
+}
+
+static gboolean
+gst_ahs_src_set_caps (GstBaseSrc * src, GstCaps * caps)
+{
+  const GstStructure *caps_struct;
+  GstAHSSrc *self = GST_AHS_SRC (src);
+  gboolean success;
+  gint type;
+  const gchar *type_str;
+  GEnumValue *value;
+
+  caps_struct = gst_caps_get_structure (caps, 0);
+  type_str = gst_structure_get_string (caps_struct, "type");
+  value = g_enum_get_value_by_name (self->sensor_enum_class, type_str);
+  if (!value) {
+    GST_ERROR_OBJECT (self, "Failed to lookup sensor type %s", type_str);
+    return FALSE;
+  }
+  type_str = g_strdup (type_str);
+  type = value->value;
+
+  /*
+   * Take the mutex while changing the sensor type in case there are concurrent
+   * callbacks being processed.
+   */
+  GST_OBJECT_LOCK (self);
+  success = gst_ahs_src_change_sensor_type (self, type_str, type);
+  GST_OBJECT_UNLOCK (self);
+
+  if (!success)
+    return FALSE;
+
+  return TRUE;
+}
+
+static gboolean
+gst_ahs_src_start (GstBaseSrc * src)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  GstAHSSrc *self = GST_AHS_SRC (src);
+
+  g_assert_null (self->manager);
+  g_assert_null (self->listener);
+
+  self->manager = gst_ah_sensor_get_manager ();
+  if (!self->manager) {
+    GST_ERROR_OBJECT (self, "Failed to get sensor manager");
+    goto error;
+  }
+
+  self->previous_time = GST_CLOCK_TIME_NONE;
+
+  self->listener = gst_ah_sensor_create_listener (gst_ahs_src_on_sensor_changed,
+      gst_ahs_src_on_accuracy_changed, self);
+  if (!self->listener) {
+    GST_ERROR_OBJECT (self, "Failed to create sensor listener");
+    goto error_manager;
+  }
+
+  return TRUE;
+
+error_manager:
+  gst_amc_jni_object_unref (env, self->manager->object);
+  g_slice_free (GstAHSensorManager, self->manager);
+  self->manager = NULL;
+error:
+  return FALSE;
+}
+
+static gboolean
+gst_ahs_src_stop (GstBaseSrc * src)
+{
+  GstAHSSrc *self = GST_AHS_SRC (src);
+
+  g_assert_nonnull (self->manager);
+  g_assert_nonnull (self->sensor);
+  g_assert_nonnull (self->listener);
+
+  gst_ah_sensor_unregister_listener (self->manager, self->listener);
+  self->previous_time = GST_CLOCK_TIME_NONE;
+
+  return TRUE;
+}
+
+static gboolean
+gst_ahs_src_get_size (GstBaseSrc * src, guint64 * size)
+{
+  GstAHSSrc *self = GST_AHS_SRC (src);
+
+  return self->buffer_size;
+}
+
+static gboolean
+gst_ahs_src_is_seekable (GstBaseSrc * src)
+{
+  return FALSE;
+}
+
+static gboolean
+gst_ahs_src_unlock (GstBaseSrc * src)
+{
+  GstAHSSrc *self = GST_AHS_SRC (src);
+
+  gst_data_queue_set_flushing (self->queue, TRUE);
+
+  return TRUE;
+}
+
+static gboolean
+gst_ahs_src_unlock_stop (GstBaseSrc * src)
+{
+  GstAHSSrc *self = GST_AHS_SRC (src);
+
+  gst_data_queue_set_flushing (self->queue, FALSE);
+
+  return TRUE;
+}
+
+static GstFlowReturn
+gst_ahs_src_create (GstPushSrc * src, GstBuffer ** buffer)
+{
+  GstAHSSrc *self = GST_AHS_SRC (src);
+  GstDataQueueItem *item;
+
+  if (!gst_data_queue_pop (self->queue, &item)) {
+    GST_INFO_OBJECT (self, "data queue is empty");
+    return GST_FLOW_FLUSHING;
+  }
+
+  GST_DEBUG_OBJECT (self, "creating buffer %p->%p", item, item->object);
+
+  *buffer = GST_BUFFER (item->object);
+  g_slice_free (GstDataQueueItem, item);
+
+  return GST_FLOW_OK;
+}
+
+static void
+gst_ahs_src_free_data_queue_item (GstDataQueueItem * item)
+{
+  gst_buffer_unref (GST_BUFFER (item->object));
+  g_slice_free (GstDataQueueItem, item);
+}
+
+static void
+gst_ahs_src_update_smoothing (GstAHSSrc * self, const GstAHSensorEvent * event)
+{
+  gint i;
+
+  /*
+   * Since we're doing exponential smoothing, the first sample needs to be
+   * special-cased to prevent it from being artificially lowered by the alpha
+   * smoothing factor.
+   */
+  if (self->sample_index == 0) {
+    for (i = 0; i < self->sample_length; i++) {
+      self->current_sample[i] = event->data.values[i];
+    }
+  } else {
+    for (i = 0; i < self->sample_length; i++)
+      self->current_sample[i] =
+          (1 - self->alpha) * self->current_sample[i] +
+          self->alpha * event->data.values[i];
+  }
+}
+
+static void
+gst_ahs_src_on_sensor_changed (jobject event_object, gpointer user_data)
+{
+  GstBuffer *buffer;
+  GstClockTime buffer_time;
+  gfloat *data;
+  GstAHSensorEvent event;
+  GstDataQueueItem *item;
+  GstClock *pipeline_clock;
+  GstAHSSrc *self = GST_AHS_SRC (user_data);
+  gboolean success;
+
+  GST_OBJECT_LOCK (self);
+
+  pipeline_clock = GST_ELEMENT_CLOCK (self);
+  /* If the clock is NULL, the pipeline is not yet set to PLAYING. */
+  if (pipeline_clock == NULL)
+    goto done;
+
+  /*
+   * Unfortunately, the timestamp reported in the Android SensorEvent timestamp
+   * is not guaranteed to use any particular clock. On some device models, it
+   * uses system time, and on other models, it uses monotonic time. In addition,
+   * in some cases, the units are microseconds, and in other cases they are
+   * nanoseconds. Thus we cannot slave it to the pipeline clock or use any
+   * similar strategy that would allow us to correlate the two clocks. So
+   * instead, we approximate the buffer timestamp using the pipeline clock.
+   *
+   * See here for more details on issues with the Android SensorEvent timestamp:
+   * https://code.google.com/p/android/issues/detail?id=7981
+   */
+  buffer_time =
+      gst_clock_get_time (pipeline_clock) - GST_ELEMENT_CAST (self)->base_time;
+
+  success =
+      gst_ah_sensor_populate_event (&event, event_object, self->buffer_size);
+  if (!success) {
+    GST_ERROR_OBJECT (self, "Failed to populate sensor event");
+    goto done;
+  }
+
+  gst_ahs_src_update_smoothing (self, &event);
+  gst_ah_sensor_free_sensor_data (&event.data);
+  self->sample_index++;
+  if (self->sample_index < self->sample_interval)
+    goto done;
+  self->sample_index = 0;
+
+  /*
+   * We want to send off this sample; copy it into a separate data struct so we
+   * can continue using current_sample for aggregating future samples.
+   */
+  data = g_malloc (self->buffer_size);
+  memcpy (data, self->current_sample, self->buffer_size);
+
+  /* Wrap the datapoint with a buffer and add it to the queue. */
+  buffer = gst_buffer_new_wrapped (data, self->buffer_size);
+  GST_BUFFER_DURATION (buffer) = GST_CLOCK_TIME_NONE;
+  GST_BUFFER_PTS (buffer) = buffer_time;
+
+  item = g_slice_new (GstDataQueueItem);
+  item->object = GST_MINI_OBJECT (buffer);
+  item->size = gst_buffer_get_size (buffer);
+  item->duration = GST_BUFFER_DURATION (buffer);
+  item->visible = TRUE;
+  item->destroy = (GDestroyNotify) gst_ahs_src_free_data_queue_item;
+
+  success = gst_data_queue_push (self->queue, item);
+  if (!success) {
+    GST_ERROR_OBJECT (self, "Could not add buffer to queue");
+    gst_ahs_src_free_data_queue_item (item);
+    goto done;
+  }
+
+done:
+  GST_OBJECT_UNLOCK (self);
+}
+
+static void
+gst_ahs_src_on_accuracy_changed (jobject sensor, gint accuracy,
+    gpointer user_data)
+{
+  GstAHSSrc *self = GST_AHS_SRC (user_data);
+
+  /* TODO: Perhaps we should do something more with this information. */
+  GST_DEBUG_OBJECT (self, "Accuracy changed on sensor %p and is now %d", sensor,
+      accuracy);
+}
diff --git a/sys/androidmedia/gstahssrc.h b/sys/androidmedia/gstahssrc.h
new file mode 100644
index 0000000..9c00ca7
--- /dev/null
+++ b/sys/androidmedia/gstahssrc.h
@@ -0,0 +1,80 @@
+/* GStreamer android.hardware.Sensor Source
+ * Copyright (C) 2016 SurroundIO
+ *   Author: Martin Kelly <martin@surround.io>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _GST_AHSSRC_H__
+#define _GST_AHSSRC_H__
+
+#include <gst/base/gstdataqueue.h>
+#include <gst/base/gstpushsrc.h>
+
+#include "gst-android-hardware-sensor.h"
+
+G_BEGIN_DECLS
+#define GST_TYPE_AHS_SRC   (gst_ahs_src_get_type())
+#define GST_AHS_SRC(obj)   (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AHS_SRC,GstAHSSrc))
+#define GST_AHS_SRC_CLASS(klass)   (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AHS_SRC,GstAHSSrcClass))
+#define GST_IS_AHS_SRC(obj)   (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AHS_SRC))
+#define GST_IS_AHS_SRC_CLASS(obj)   (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AHS_SRC))
+typedef struct _GstAHSSrc GstAHSSrc;
+typedef struct _GstAHSSrcClass GstAHSSrcClass;
+
+struct _GstAHSSrc
+{
+  /* < private > */
+  GstPushSrc parent;
+
+  /* properties */
+  gint32 sensor_delay;
+  gdouble alpha;
+  guint sample_interval;
+
+  /* sensor type information */
+  GEnumClass *sensor_enum_class;
+  gint sensor_type;
+  const gchar *sensor_type_name;
+
+  /* JNI wrapper classes */
+  GstAHSensorManager *manager;
+  GstAHSensor *sensor;
+  GstAHSensorEventListener *listener;
+
+  /* timestamping */
+  GstClockTime previous_time;
+  gfloat *current_sample;
+
+  /* buffers */
+  gboolean callback_registered;
+  gint sample_index;
+  gint sample_length;
+  gint buffer_size;
+
+  /* multiprocessing */
+  GstDataQueue *queue;
+};
+
+struct _GstAHSSrcClass
+{
+  GstPushSrcClass parent_class;
+};
+
+GType gst_ahs_src_get_type (void);
+
+G_END_DECLS
+#endif
diff --git a/sys/androidmedia/gstamc.c b/sys/androidmedia/gstamc.c
index 14f5e4c..b6146d0 100644
--- a/sys/androidmedia/gstamc.c
+++ b/sys/androidmedia/gstamc.c
@@ -30,6 +30,7 @@
 #endif
 
 #include "gstahcsrc.h"
+#include "gstahssrc.h"
 
 #include "gstamc.h"
 #include "gstamc-constants.h"
@@ -3361,11 +3362,6 @@
   if (!register_codecs (plugin))
     return FALSE;
 
-  if (!gst_android_graphics_surfacetexture_init ()) {
-    GST_ERROR ("Failed to init android surface texture");
-    return FALSE;
-  }
-
   if (!gst_android_graphics_imageformat_init ()) {
     GST_ERROR ("Failed to init android image format");
     goto failed_surfacetexture;
@@ -3375,19 +3371,29 @@
     goto failed_graphics_imageformat;
   }
 
+  if (!gst_android_hardware_sensor_init ()) {
+    goto failed_hardware_camera;
+  }
+
   if (!gst_element_register (plugin, "ahcsrc", GST_RANK_NONE, GST_TYPE_AHC_SRC)) {
     GST_ERROR ("Failed to register android camera source");
-    goto failed_hardware_camera;
+    goto failed_hardware_sensor;
+  }
+
+  if (!gst_element_register (plugin, "ahssrc", GST_RANK_NONE, GST_TYPE_AHS_SRC)) {
+    GST_ERROR ("Failed to register android sensor source");
+    goto failed_hardware_sensor;
   }
 
   return TRUE;
 
+failed_hardware_sensor:
+  gst_android_hardware_sensor_deinit ();
 failed_hardware_camera:
   gst_android_hardware_camera_deinit ();
 failed_graphics_imageformat:
   gst_android_graphics_imageformat_deinit ();
 failed_surfacetexture:
-  gst_android_graphics_surfacetexture_deinit ();
   return FALSE;
 }
 
diff --git a/sys/androidmedia/gstamcaudiodec.c b/sys/androidmedia/gstamcaudiodec.c
index 9a34c37..49c8c60 100644
--- a/sys/androidmedia/gstamcaudiodec.c
+++ b/sys/androidmedia/gstamcaudiodec.c
@@ -670,9 +670,7 @@
           gst_event_new_eos ());
       gst_pad_pause_task (GST_AUDIO_DECODER_SRC_PAD (self));
     } else if (flow_ret < GST_FLOW_EOS) {
-      GST_ELEMENT_ERROR (self, STREAM, FAILED,
-          ("Internal data stream error."), ("stream stopped, reason %s",
-              gst_flow_get_name (flow_ret)));
+      GST_ELEMENT_FLOW_ERROR (self, flow_ret);
       gst_pad_push_event (GST_AUDIO_DECODER_SRC_PAD (self),
           gst_event_new_eos ());
       gst_pad_pause_task (GST_AUDIO_DECODER_SRC_PAD (self));
diff --git a/sys/androidmedia/gstamcvideodec.c b/sys/androidmedia/gstamcvideodec.c
index 7c99be0..bd772b7 100644
--- a/sys/androidmedia/gstamcvideodec.c
+++ b/sys/androidmedia/gstamcvideodec.c
@@ -1354,7 +1354,8 @@
           (GST_GL_MEMORY_ALLOCATOR_NAME));
 
       params = gst_gl_video_allocation_params_new (self->gl_context, NULL,
-          &state->info, 0, NULL, GST_GL_TEXTURE_TARGET_EXTERNAL_OES);
+          &state->info, 0, NULL, GST_GL_TEXTURE_TARGET_EXTERNAL_OES,
+          GST_VIDEO_GL_TEXTURE_TYPE_RGBA);
 
       self->oes_mem = (GstGLMemory *) gst_gl_base_memory_alloc (base_mem_alloc,
           (GstGLAllocationParams *) params);
@@ -1589,9 +1590,7 @@
           gst_event_new_eos ());
       gst_pad_pause_task (GST_VIDEO_DECODER_SRC_PAD (self));
     } else if (flow_ret < GST_FLOW_EOS) {
-      GST_ELEMENT_ERROR (self, STREAM, FAILED,
-          ("Internal data stream error."), ("stream stopped, reason %s",
-              gst_flow_get_name (flow_ret)));
+      GST_ELEMENT_FLOW_ERROR (self, flow_ret);
       gst_pad_push_event (GST_VIDEO_DECODER_SRC_PAD (self),
           gst_event_new_eos ());
       gst_pad_pause_task (GST_VIDEO_DECODER_SRC_PAD (self));
diff --git a/sys/androidmedia/gstamcvideoenc.c b/sys/androidmedia/gstamcvideoenc.c
index 136df41..1742d44 100644
--- a/sys/androidmedia/gstamcvideoenc.c
+++ b/sys/androidmedia/gstamcvideoenc.c
@@ -1129,9 +1129,7 @@
           gst_event_new_eos ());
       gst_pad_pause_task (GST_VIDEO_ENCODER_SRC_PAD (self));
     } else if (flow_ret == GST_FLOW_NOT_LINKED || flow_ret < GST_FLOW_EOS) {
-      GST_ELEMENT_ERROR (self, STREAM, FAILED,
-          ("Internal data stream error."), ("stream stopped, reason %s",
-              gst_flow_get_name (flow_ret)));
+      GST_ELEMENT_FLOW_ERROR (self, flow_ret);
       gst_pad_push_event (GST_VIDEO_ENCODER_SRC_PAD (self),
           gst_event_new_eos ());
       gst_pad_pause_task (GST_VIDEO_ENCODER_SRC_PAD (self));
diff --git a/sys/applemedia-nonpublic/Makefile.am b/sys/applemedia-nonpublic/Makefile.am
deleted file mode 100644
index e95abda..0000000
--- a/sys/applemedia-nonpublic/Makefile.am
+++ /dev/null
@@ -1,84 +0,0 @@
-plugin_LTLIBRARIES = libgstapplemedia_nonpublic.la
-
-libgstapplemedia_nonpublic_la_SOURCES =			\
-	plugin.m				\
-	bufferfactory.m				\
-	corevideobuffer.c			\
-	coremediabuffer.c			\
-	cvapi.c					\
-	cmapi.c					\
-	coremediactx.c				\
-	dynapi.c
-
-libgstapplemedia_nonpublic_la_CPPFLAGS =			\
-	-Dgst_dyn_api_get_type=gst_dyn_api_priv_get_type			\
-	-Dgst_dyn_api_debug=gst_dyn_api_priv_debug				\
-	-Dgst_dyn_api_new=gst_dyn_api_priv_new					\
-	-Dgst_core_media_buffer_new=gst_core_media_buffer_priv_new		\
-	-Dgst_core_media_buffer_get_type=gst_core_media_buffer_priv_get_type	\
-	-Dgst_core_media_buffer_get_pixel_buffer=gst_core_media_buffer_priv_get_pixel_buffer\
-	-Dgst_core_video_buffer_new=gst_core_video_buffer_priv_new		\
-	-Dgst_core_video_buffer_get_type=gst_core_video_buffer_priv_get_type	\
-	-Dgst_core_media_ctx_new=gst_core_media_ctx_priv_new			\
-	-Dgst_core_media_ctx_get_type=gst_core_media_ctx_priv_get_type
-
-libgstapplemedia_nonpublic_la_CFLAGS =			\
-	$(GST_CFLAGS)								\
-	$(GST_BASE_CFLAGS)							\
-	$(GST_PLUGINS_BASE_CFLAGS)
-
-libgstapplemedia_nonpublic_la_OBJCFLAGS =			\
-	$(GST_OBJCFLAGS)			\
-	$(GST_BASE_CFLAGS)			\
-	$(GST_PLUGINS_BASE_CFLAGS)
-
-if HAVE_IOS
-libgstapplemedia_nonpublic_la_OBJCFLAGS += -fobjc-abi-version=2 -fobjc-legacy-dispatch
-endif
-
-libgstapplemedia_nonpublic_la_LIBADD =			\
-	$(GST_BASE_LIBS)			\
-	$(GST_PLUGINS_BASE_LIBS)		\
-	-lgstvideo-$(GST_API_VERSION)		\
-	$(GMODULE_NO_EXPORT_LIBS)
-
-libgstapplemedia_nonpublic_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) --tag=CC
-
-libgstapplemedia_nonpublic_la_LDFLAGS =			\
-	$(GST_PLUGIN_LDFLAGS)			\
-	$(GST_BASE_LDFLAGS)			\
-	$(GST_PLUGINS_BASE_LDFLAGS)		\
-	-Wl,-framework -Wl,Foundation		\
-	-Wl,-framework -Wl,CoreFoundation	\
-	-Wl,-framework -Wl,CoreVideo
-
-noinst_HEADERS =				\
-	miovideosrc.h				\
-	miovideodevice.h			\
-	celvideosrc.h				\
-	bufferfactory.h				\
-	corevideobuffer.h			\
-	coremediabuffer.h			\
-	coremediactx.h				\
-	mioapi.h				\
-	mtapi.h					\
-	celapi.h				\
-	cvapi.h					\
-	cmapi.h					\
-	dynapi.h				\
-	dynapi-internal.h
-
-if HAVE_IOS
-
-#libgstapplemedia_nonpublic_la_SOURCES +=			\
-#	celvideosrc.c				\
-#	mtapi.c					\
-#	celapi.c
-
-else
-
-libgstapplemedia_nonpublic_la_SOURCES +=			\
-	mioapi.c
-
-endif
-
diff --git a/sys/applemedia-nonpublic/Makefile.in b/sys/applemedia-nonpublic/Makefile.in
deleted file mode 100644
index 548a94b..0000000
--- a/sys/applemedia-nonpublic/Makefile.in
+++ /dev/null
@@ -1,1293 +0,0 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-
-VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-target_triplet = @target@
-@HAVE_IOS_TRUE@am__append_1 = -fobjc-abi-version=2 -fobjc-legacy-dispatch
-
-#libgstapplemedia_nonpublic_la_SOURCES +=			\
-#	celvideosrc.c				\
-#	mtapi.c					\
-#	celapi.c
-@HAVE_IOS_FALSE@am__append_2 = \
-@HAVE_IOS_FALSE@	mioapi.c
-
-subdir = sys/applemedia-nonpublic
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
-	$(top_srcdir)/common/m4/as-auto-alt.m4 \
-	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
-	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-version.m4 \
-	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
-	$(top_srcdir)/common/m4/ax_pthread.m4 \
-	$(top_srcdir)/common/m4/gst-arch.m4 \
-	$(top_srcdir)/common/m4/gst-args.m4 \
-	$(top_srcdir)/common/m4/gst-check.m4 \
-	$(top_srcdir)/common/m4/gst-default.m4 \
-	$(top_srcdir)/common/m4/gst-dowhile.m4 \
-	$(top_srcdir)/common/m4/gst-error.m4 \
-	$(top_srcdir)/common/m4/gst-feature.m4 \
-	$(top_srcdir)/common/m4/gst-gettext.m4 \
-	$(top_srcdir)/common/m4/gst-glib2.m4 \
-	$(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
-	$(top_srcdir)/common/m4/gst-platform.m4 \
-	$(top_srcdir)/common/m4/gst-plugin-docs.m4 \
-	$(top_srcdir)/common/m4/gst-plugindir.m4 \
-	$(top_srcdir)/common/m4/gst.m4 \
-	$(top_srcdir)/common/m4/gtk-doc.m4 \
-	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
-	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
-	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
-	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
-	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
-	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
-	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
-	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
-	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
-	$(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(plugindir)"
-LTLIBRARIES = $(plugin_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-libgstapplemedia_nonpublic_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-am__libgstapplemedia_nonpublic_la_SOURCES_DIST = plugin.m \
-	bufferfactory.m corevideobuffer.c coremediabuffer.c cvapi.c \
-	cmapi.c coremediactx.c dynapi.c mioapi.c
-@HAVE_IOS_FALSE@am__objects_1 =  \
-@HAVE_IOS_FALSE@	libgstapplemedia_nonpublic_la-mioapi.lo
-am_libgstapplemedia_nonpublic_la_OBJECTS =  \
-	libgstapplemedia_nonpublic_la-plugin.lo \
-	libgstapplemedia_nonpublic_la-bufferfactory.lo \
-	libgstapplemedia_nonpublic_la-corevideobuffer.lo \
-	libgstapplemedia_nonpublic_la-coremediabuffer.lo \
-	libgstapplemedia_nonpublic_la-cvapi.lo \
-	libgstapplemedia_nonpublic_la-cmapi.lo \
-	libgstapplemedia_nonpublic_la-coremediactx.lo \
-	libgstapplemedia_nonpublic_la-dynapi.lo $(am__objects_1)
-libgstapplemedia_nonpublic_la_OBJECTS =  \
-	$(am_libgstapplemedia_nonpublic_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-libgstapplemedia_nonpublic_la_LINK = $(LIBTOOL) $(AM_V_lt) \
-	$(libgstapplemedia_nonpublic_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(OBJCLD) \
-	$(libgstapplemedia_nonpublic_la_OBJCFLAGS) $(OBJCFLAGS) \
-	$(libgstapplemedia_nonpublic_la_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-OBJCCOMPILE = $(OBJC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_OBJCFLAGS) $(OBJCFLAGS)
-LTOBJCCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(OBJC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_OBJCFLAGS) $(OBJCFLAGS)
-AM_V_OBJC = $(am__v_OBJC_@AM_V@)
-am__v_OBJC_ = $(am__v_OBJC_@AM_DEFAULT_V@)
-am__v_OBJC_0 = @echo "  OBJC    " $@;
-am__v_OBJC_1 = 
-OBJCLD = $(OBJC)
-OBJCLINK = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(OBJCLD) $(AM_OBJCFLAGS) $(OBJCFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_OBJCLD = $(am__v_OBJCLD_@AM_V@)
-am__v_OBJCLD_ = $(am__v_OBJCLD_@AM_DEFAULT_V@)
-am__v_OBJCLD_0 = @echo "  OBJCLD  " $@;
-am__v_OBJCLD_1 = 
-SOURCES = $(libgstapplemedia_nonpublic_la_SOURCES)
-DIST_SOURCES = $(am__libgstapplemedia_nonpublic_la_SOURCES_DIST)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-HEADERS = $(noinst_HEADERS)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-ACMENC_CFLAGS = @ACMENC_CFLAGS@
-ACMMP3DEC_CFLAGS = @ACMMP3DEC_CFLAGS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-APEXSINK_CFLAGS = @APEXSINK_CFLAGS@
-APEXSINK_LIBS = @APEXSINK_LIBS@
-AR = @AR@
-AS = @AS@
-ASSRENDER_CFLAGS = @ASSRENDER_CFLAGS@
-ASSRENDER_LIBS = @ASSRENDER_LIBS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BLUEZ5_CFLAGS = @BLUEZ5_CFLAGS@
-BLUEZ5_LIBS = @BLUEZ5_LIBS@
-BS2B_CFLAGS = @BS2B_CFLAGS@
-BS2B_LIBS = @BS2B_LIBS@
-BZ2_LIBS = @BZ2_LIBS@
-CC = @CC@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CHROMAPRINT_CFLAGS = @CHROMAPRINT_CFLAGS@
-CHROMAPRINT_LIBS = @CHROMAPRINT_LIBS@
-CLUTTER_CFLAGS = @CLUTTER_CFLAGS@
-CLUTTER_GLX_CFLAGS = @CLUTTER_GLX_CFLAGS@
-CLUTTER_GLX_LIBS = @CLUTTER_GLX_LIBS@
-CLUTTER_LIBS = @CLUTTER_LIBS@
-CLUTTER_X11_CFLAGS = @CLUTTER_X11_CFLAGS@
-CLUTTER_X11_LIBS = @CLUTTER_X11_LIBS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CUDA_CFLAGS = @CUDA_CFLAGS@
-CUDA_LIBS = @CUDA_LIBS@
-CURL_CFLAGS = @CURL_CFLAGS@
-CURL_LIBS = @CURL_LIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DAALA_CFLAGS = @DAALA_CFLAGS@
-DAALA_LIBS = @DAALA_LIBS@
-DCCP_LIBS = @DCCP_LIBS@
-DECKLINK_CXXFLAGS = @DECKLINK_CXXFLAGS@
-DECKLINK_LIBS = @DECKLINK_LIBS@
-DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@
-DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@
-DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@
-DEFAULT_VIDEOSRC = @DEFAULT_VIDEOSRC@
-DEFAULT_VISUALIZER = @DEFAULT_VISUALIZER@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@
-DIRECT3D_LIBS = @DIRECT3D_LIBS@
-DIRECTFB_CFLAGS = @DIRECTFB_CFLAGS@
-DIRECTFB_LIBS = @DIRECTFB_LIBS@
-DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@
-DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
-DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DTLS_CFLAGS = @DTLS_CFLAGS@
-DTLS_LIBS = @DTLS_LIBS@
-DTS_LIBS = @DTS_LIBS@
-DUMPBIN = @DUMPBIN@
-DVDNAV_CFLAGS = @DVDNAV_CFLAGS@
-DVDNAV_LIBS = @DVDNAV_LIBS@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGL_CFLAGS = @EGL_CFLAGS@
-EGL_LIBS = @EGL_LIBS@
-EGREP = @EGREP@
-ERROR_CFLAGS = @ERROR_CFLAGS@
-ERROR_CXXFLAGS = @ERROR_CXXFLAGS@
-ERROR_OBJCFLAGS = @ERROR_OBJCFLAGS@
-EXEEXT = @EXEEXT@
-EXIF_CFLAGS = @EXIF_CFLAGS@
-EXIF_LIBS = @EXIF_LIBS@
-FAAC_LIBS = @FAAC_LIBS@
-FAAD_LIBS = @FAAD_LIBS@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLITE_CFLAGS = @FLITE_CFLAGS@
-FLITE_LIBS = @FLITE_LIBS@
-FLUIDSYNTH_CFLAGS = @FLUIDSYNTH_CFLAGS@
-FLUIDSYNTH_LIBS = @FLUIDSYNTH_LIBS@
-GCOV = @GCOV@
-GCOV_CFLAGS = @GCOV_CFLAGS@
-GCOV_LIBS = @GCOV_LIBS@
-GDBUS_CODEGEN = @GDBUS_CODEGEN@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GIO_CFLAGS = @GIO_CFLAGS@
-GIO_LDFLAGS = @GIO_LDFLAGS@
-GIO_LIBS = @GIO_LIBS@
-GIO_UNIX_CFLAGS = @GIO_UNIX_CFLAGS@
-GIO_UNIX_LIBS = @GIO_UNIX_LIBS@
-GLES2_CFLAGS = @GLES2_CFLAGS@
-GLES2_LIBS = @GLES2_LIBS@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
-GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
-GLIB_LIBS = @GLIB_LIBS@
-GLIB_MKENUMS = @GLIB_MKENUMS@
-GLIB_PREFIX = @GLIB_PREFIX@
-GLIB_REQ = @GLIB_REQ@
-GL_CFLAGS = @GL_CFLAGS@
-GL_LIBS = @GL_LIBS@
-GL_OBJCFLAGS = @GL_OBJCFLAGS@
-GME_LIBS = @GME_LIBS@
-GMODULE_EXPORT_CFLAGS = @GMODULE_EXPORT_CFLAGS@
-GMODULE_EXPORT_LIBS = @GMODULE_EXPORT_LIBS@
-GMODULE_NO_EXPORT_CFLAGS = @GMODULE_NO_EXPORT_CFLAGS@
-GMODULE_NO_EXPORT_LIBS = @GMODULE_NO_EXPORT_LIBS@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GNUSTL_CFLAGS = @GNUSTL_CFLAGS@
-GNUSTL_LIBS = @GNUSTL_LIBS@
-GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
-GRAPHENE_LIBS = @GRAPHENE_LIBS@
-GREP = @GREP@
-GSM_LIBS = @GSM_LIBS@
-GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
-GSTPB_PREFIX = @GSTPB_PREFIX@
-GST_AGE = @GST_AGE@
-GST_ALLOCATORS_CFLAGS = @GST_ALLOCATORS_CFLAGS@
-GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
-GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
-GST_API_VERSION = @GST_API_VERSION@
-GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
-GST_BASE_LIBS = @GST_BASE_LIBS@
-GST_CFLAGS = @GST_CFLAGS@
-GST_CHECK_CFLAGS = @GST_CHECK_CFLAGS@
-GST_CHECK_LIBS = @GST_CHECK_LIBS@
-GST_CONTROLLER_CFLAGS = @GST_CONTROLLER_CFLAGS@
-GST_CONTROLLER_LIBS = @GST_CONTROLLER_LIBS@
-GST_CURRENT = @GST_CURRENT@
-GST_CXXFLAGS = @GST_CXXFLAGS@
-GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
-GST_LIBS = @GST_LIBS@
-GST_LIBVERSION = @GST_LIBVERSION@
-GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
-GST_LICENSE = @GST_LICENSE@
-GST_LT_LDFLAGS = @GST_LT_LDFLAGS@
-GST_NET_CFLAGS = @GST_NET_CFLAGS@
-GST_NET_LIBS = @GST_NET_LIBS@
-GST_OBJCFLAGS = @GST_OBJCFLAGS@
-GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@
-GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@
-GST_OPTION_OBJCFLAGS = @GST_OPTION_OBJCFLAGS@
-GST_PACKAGE_NAME = @GST_PACKAGE_NAME@
-GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@
-GST_PBUTILS_CFLAGS = @GST_PBUTILS_CFLAGS@
-GST_PBUTILS_LIBS = @GST_PBUTILS_LIBS@
-GST_PKG_CONFIG_PATH = @GST_PKG_CONFIG_PATH@
-GST_PLUGINS_ALL = @GST_PLUGINS_ALL@
-GST_PLUGINS_BAD_CFLAGS = @GST_PLUGINS_BAD_CFLAGS@
-GST_PLUGINS_BAD_CXXFLAGS = @GST_PLUGINS_BAD_CXXFLAGS@
-GST_PLUGINS_BAD_OBJCFLAGS = @GST_PLUGINS_BAD_OBJCFLAGS@
-GST_PLUGINS_BASE_CFLAGS = @GST_PLUGINS_BASE_CFLAGS@
-GST_PLUGINS_BASE_DIR = @GST_PLUGINS_BASE_DIR@
-GST_PLUGINS_BASE_LIBS = @GST_PLUGINS_BASE_LIBS@
-GST_PLUGINS_DIR = @GST_PLUGINS_DIR@
-GST_PLUGINS_GOOD_CFLAGS = @GST_PLUGINS_GOOD_CFLAGS@
-GST_PLUGINS_GOOD_DIR = @GST_PLUGINS_GOOD_DIR@
-GST_PLUGINS_GOOD_LIBS = @GST_PLUGINS_GOOD_LIBS@
-GST_PLUGINS_LIBAV_CFLAGS = @GST_PLUGINS_LIBAV_CFLAGS@
-GST_PLUGINS_LIBAV_DIR = @GST_PLUGINS_LIBAV_DIR@
-GST_PLUGINS_LIBAV_LIBS = @GST_PLUGINS_LIBAV_LIBS@
-GST_PLUGINS_NONPORTED = @GST_PLUGINS_NONPORTED@
-GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@
-GST_PLUGINS_UGLY_CFLAGS = @GST_PLUGINS_UGLY_CFLAGS@
-GST_PLUGINS_UGLY_DIR = @GST_PLUGINS_UGLY_DIR@
-GST_PLUGINS_UGLY_LIBS = @GST_PLUGINS_UGLY_LIBS@
-GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
-GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
-GST_PREFIX = @GST_PREFIX@
-GST_REVISION = @GST_REVISION@
-GST_TOOLS_DIR = @GST_TOOLS_DIR@
-GST_VIDEO_CFLAGS = @GST_VIDEO_CFLAGS@
-GST_VIDEO_LIBS = @GST_VIDEO_LIBS@
-GTK3_CFLAGS = @GTK3_CFLAGS@
-GTK3_GL_CFLAGS = @GTK3_GL_CFLAGS@
-GTK3_GL_LIBS = @GTK3_GL_LIBS@
-GTK3_LIBS = @GTK3_LIBS@
-GTK3_WAYLAND_CFLAGS = @GTK3_WAYLAND_CFLAGS@
-GTK3_WAYLAND_LIBS = @GTK3_WAYLAND_LIBS@
-GTK3_X11_CFLAGS = @GTK3_X11_CFLAGS@
-GTK3_X11_LIBS = @GTK3_X11_LIBS@
-GTKDOC_CHECK = @GTKDOC_CHECK@
-GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
-GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
-GTKDOC_MKPDF = @GTKDOC_MKPDF@
-GTKDOC_REBASE = @GTKDOC_REBASE@
-GTK_BASE_DIR = @GTK_BASE_DIR@
-GTK_CFLAGS = @GTK_CFLAGS@
-GTK_LIBS = @GTK_LIBS@
-GTK_VERSION = @GTK_VERSION@
-G_UDEV_CFLAGS = @G_UDEV_CFLAGS@
-G_UDEV_LIBS = @G_UDEV_LIBS@
-HAVE_CLUTTER = @HAVE_CLUTTER@
-HAVE_CLUTTER_GLX = @HAVE_CLUTTER_GLX@
-HAVE_CLUTTER_X11 = @HAVE_CLUTTER_X11@
-HAVE_CXX = @HAVE_CXX@
-HAVE_DIRECT3D = @HAVE_DIRECT3D@
-HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@
-HAVE_DTS = @HAVE_DTS@
-HAVE_EGL = @HAVE_EGL@
-HAVE_FAAC = @HAVE_FAAC@
-HAVE_FAAD = @HAVE_FAAD@
-HAVE_FLITE = @HAVE_FLITE@
-HAVE_GL = @HAVE_GL@
-HAVE_GLES2 = @HAVE_GLES2@
-HAVE_GRAPHENE = @HAVE_GRAPHENE@
-HAVE_GSM = @HAVE_GSM@
-HAVE_GTK3 = @HAVE_GTK3@
-HAVE_JPEG = @HAVE_JPEG@
-HAVE_NAS = @HAVE_NAS@
-HAVE_OPENJPEG = @HAVE_OPENJPEG@
-HAVE_PNG = @HAVE_PNG@
-HAVE_SRTP = @HAVE_SRTP@
-HAVE_WASAPI = @HAVE_WASAPI@
-HAVE_WILDMIDI = @HAVE_WILDMIDI@
-HAVE_WINKS = @HAVE_WINKS@
-HAVE_WINSCREENCAP = @HAVE_WINSCREENCAP@
-HAVE_X11 = @HAVE_X11@
-HTML_DIR = @HTML_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
-INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
-INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
-INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
-INTROSPECTION_INIT = @INTROSPECTION_INIT@
-INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
-INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
-INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
-INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@
-JPEG_LIBS = @JPEG_LIBS@
-KATE_CFLAGS = @KATE_CFLAGS@
-KATE_LIBS = @KATE_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBDC1394_CFLAGS = @LIBDC1394_CFLAGS@
-LIBDC1394_LIBS = @LIBDC1394_LIBS@
-LIBDE265_CFLAGS = @LIBDE265_CFLAGS@
-LIBDE265_LIBS = @LIBDE265_LIBS@
-LIBDIR = @LIBDIR@
-LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@
-LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@
-LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBM = @LIBM@
-LIBMMS_CFLAGS = @LIBMMS_CFLAGS@
-LIBMMS_LIBS = @LIBMMS_LIBS@
-LIBOBJS = @LIBOBJS@
-LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
-LIBPNG_LIBS = @LIBPNG_LIBS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBUDEV_CFLAGS = @LIBUDEV_CFLAGS@
-LIBUDEV_LIBS = @LIBUDEV_LIBS@
-LIBUSB_CFLAGS = @LIBUSB_CFLAGS@
-LIBUSB_LIBS = @LIBUSB_LIBS@
-LIBVISUAL_CFLAGS = @LIBVISUAL_CFLAGS@
-LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
-LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
-LIBXML2_LIBS = @LIBXML2_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCALEDIR = @LOCALEDIR@
-LRDF_CFLAGS = @LRDF_CFLAGS@
-LRDF_LIBS = @LRDF_LIBS@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MIMIC_CFLAGS = @MIMIC_CFLAGS@
-MIMIC_LIBS = @MIMIC_LIBS@
-MJPEG_CFLAGS = @MJPEG_CFLAGS@
-MJPEG_LIBS = @MJPEG_LIBS@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-MODPLUG_CFLAGS = @MODPLUG_CFLAGS@
-MODPLUG_LIBS = @MODPLUG_LIBS@
-MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
-MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPLEX_CFLAGS = @MPLEX_CFLAGS@
-MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
-MPLEX_LIBS = @MPLEX_LIBS@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-MUSEPACK_LIBS = @MUSEPACK_LIBS@
-NAS_CFLAGS = @NAS_CFLAGS@
-NAS_LIBS = @NAS_LIBS@
-NEON_CFLAGS = @NEON_CFLAGS@
-NEON_LIBS = @NEON_LIBS@
-NETTLE_CFLAGS = @NETTLE_CFLAGS@
-NETTLE_LIBS = @NETTLE_LIBS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NVENCODE_CFLAGS = @NVENCODE_CFLAGS@
-NVENCODE_LIBS = @NVENCODE_LIBS@
-OBJC = @OBJC@
-OBJCDEPMODE = @OBJCDEPMODE@
-OBJCFLAGS = @OBJCFLAGS@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OFA_CFLAGS = @OFA_CFLAGS@
-OFA_LIBS = @OFA_LIBS@
-OPENAL_CFLAGS = @OPENAL_CFLAGS@
-OPENAL_LIBS = @OPENAL_LIBS@
-OPENCV_CFLAGS = @OPENCV_CFLAGS@
-OPENCV_LIBS = @OPENCV_LIBS@
-OPENCV_PREFIX = @OPENCV_PREFIX@
-OPENEXR_CFLAGS = @OPENEXR_CFLAGS@
-OPENEXR_LIBS = @OPENEXR_LIBS@
-OPENH264_CFLAGS = @OPENH264_CFLAGS@
-OPENH264_LIBS = @OPENH264_LIBS@
-OPENJPEG_2_1_CFLAGS = @OPENJPEG_2_1_CFLAGS@
-OPENJPEG_2_1_LIBS = @OPENJPEG_2_1_LIBS@
-OPENJPEG_CFLAGS = @OPENJPEG_CFLAGS@
-OPENJPEG_LIBS = @OPENJPEG_LIBS@
-OPENNI2_CFLAGS = @OPENNI2_CFLAGS@
-OPENNI2_LIBS = @OPENNI2_LIBS@
-OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
-OPENSSL_LIBS = @OPENSSL_LIBS@
-OPUS_CFLAGS = @OPUS_CFLAGS@
-OPUS_LIBS = @OPUS_LIBS@
-ORCC = @ORCC@
-ORCC_FLAGS = @ORCC_FLAGS@
-ORC_CFLAGS = @ORC_CFLAGS@
-ORC_LIBS = @ORC_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@
-PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@
-PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@
-PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@
-PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PLUGINDIR = @PLUGINDIR@
-POSUB = @POSUB@
-PROFILE_CFLAGS = @PROFILE_CFLAGS@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-PVR_CFLAGS = @PVR_CFLAGS@
-PVR_LIBS = @PVR_LIBS@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QT_ANDROID_CFLAGS = @QT_ANDROID_CFLAGS@
-QT_ANDROID_LIBS = @QT_ANDROID_LIBS@
-QT_CFLAGS = @QT_CFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_MAC_CFLAGS = @QT_MAC_CFLAGS@
-QT_MAC_LIBS = @QT_MAC_LIBS@
-QT_WAYLAND_CFLAGS = @QT_WAYLAND_CFLAGS@
-QT_WAYLAND_LIBS = @QT_WAYLAND_LIBS@
-QT_X11_CFLAGS = @QT_X11_CFLAGS@
-QT_X11_LIBS = @QT_X11_LIBS@
-RANLIB = @RANLIB@
-RCC = @RCC@
-RSVG_CFLAGS = @RSVG_CFLAGS@
-RSVG_LIBS = @RSVG_LIBS@
-RTMP_CFLAGS = @RTMP_CFLAGS@
-RTMP_LIBS = @RTMP_LIBS@
-SBC_CFLAGS = @SBC_CFLAGS@
-SBC_LIBS = @SBC_LIBS@
-SCHRO_CFLAGS = @SCHRO_CFLAGS@
-SCHRO_LIBS = @SCHRO_LIBS@
-SDL_CFLAGS = @SDL_CFLAGS@
-SDL_CLUTTER = @SDL_CLUTTER@
-SDL_CONFIG = @SDL_CONFIG@
-SDL_LIBS = @SDL_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
-SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
-SNDFILE_LIBS = @SNDFILE_LIBS@
-SNDIO_LIBS = @SNDIO_LIBS@
-SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
-SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
-SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
-SPANDSP_LIBS = @SPANDSP_LIBS@
-SPC_LIBS = @SPC_LIBS@
-SRTP_CFLAGS = @SRTP_CFLAGS@
-SRTP_LIBS = @SRTP_LIBS@
-SSH2_CFLAGS = @SSH2_CFLAGS@
-SSH2_LIBS = @SSH2_LIBS@
-STRIP = @STRIP@
-TELETEXTDEC_CFLAGS = @TELETEXTDEC_CFLAGS@
-TELETEXTDEC_LIBS = @TELETEXTDEC_LIBS@
-TIGER_CFLAGS = @TIGER_CFLAGS@
-TIGER_LIBS = @TIGER_LIBS@
-TIMIDITY_CFLAGS = @TIMIDITY_CFLAGS@
-TIMIDITY_LIBS = @TIMIDITY_LIBS@
-UIC = @UIC@
-USE_GLES2 = @USE_GLES2@
-USE_NLS = @USE_NLS@
-USE_OPENGL = @USE_OPENGL@
-VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
-VALGRIND_LIBS = @VALGRIND_LIBS@
-VALGRIND_PATH = @VALGRIND_PATH@
-VDPAU_CFLAGS = @VDPAU_CFLAGS@
-VDPAU_LIBS = @VDPAU_LIBS@
-VERSION = @VERSION@
-VOAACENC_CFLAGS = @VOAACENC_CFLAGS@
-VOAACENC_LIBS = @VOAACENC_LIBS@
-VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
-VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
-VULKAN_LIBS = @VULKAN_LIBS@
-WARNING_CFLAGS = @WARNING_CFLAGS@
-WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
-WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
-WASAPI_LIBS = @WASAPI_LIBS@
-WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
-WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
-WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
-WAYLAND_LIBS = @WAYLAND_LIBS@
-WEBP_CFLAGS = @WEBP_CFLAGS@
-WEBP_LIBS = @WEBP_LIBS@
-WGET = @WGET@
-WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
-WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WINKS_LIBS = @WINKS_LIBS@
-WINSCREENCAP_LIBS = @WINSCREENCAP_LIBS@
-WINSOCK2_LIBS = @WINSOCK2_LIBS@
-X11_CFLAGS = @X11_CFLAGS@
-X11_LIBS = @X11_LIBS@
-X265_CFLAGS = @X265_CFLAGS@
-X265_LIBS = @X265_LIBS@
-XCB_CFLAGS = @XCB_CFLAGS@
-XCB_LIBS = @XCB_LIBS@
-XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
-XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-XVID_LIBS = @XVID_LIBS@
-X_CFLAGS = @X_CFLAGS@
-X_LIBS = @X_LIBS@
-ZBAR_CFLAGS = @ZBAR_CFLAGS@
-ZBAR_LIBS = @ZBAR_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJC = @ac_ct_OBJC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-ax_pthread_config = @ax_pthread_config@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-plugindir = @plugindir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-runstatedir = @runstatedir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-wayland_scanner = @wayland_scanner@
-plugin_LTLIBRARIES = libgstapplemedia_nonpublic.la
-libgstapplemedia_nonpublic_la_SOURCES = plugin.m bufferfactory.m \
-	corevideobuffer.c coremediabuffer.c cvapi.c cmapi.c \
-	coremediactx.c dynapi.c $(am__append_2)
-libgstapplemedia_nonpublic_la_CPPFLAGS = \
-	-Dgst_dyn_api_get_type=gst_dyn_api_priv_get_type			\
-	-Dgst_dyn_api_debug=gst_dyn_api_priv_debug				\
-	-Dgst_dyn_api_new=gst_dyn_api_priv_new					\
-	-Dgst_core_media_buffer_new=gst_core_media_buffer_priv_new		\
-	-Dgst_core_media_buffer_get_type=gst_core_media_buffer_priv_get_type	\
-	-Dgst_core_media_buffer_get_pixel_buffer=gst_core_media_buffer_priv_get_pixel_buffer\
-	-Dgst_core_video_buffer_new=gst_core_video_buffer_priv_new		\
-	-Dgst_core_video_buffer_get_type=gst_core_video_buffer_priv_get_type	\
-	-Dgst_core_media_ctx_new=gst_core_media_ctx_priv_new			\
-	-Dgst_core_media_ctx_get_type=gst_core_media_ctx_priv_get_type
-
-libgstapplemedia_nonpublic_la_CFLAGS = \
-	$(GST_CFLAGS)								\
-	$(GST_BASE_CFLAGS)							\
-	$(GST_PLUGINS_BASE_CFLAGS)
-
-libgstapplemedia_nonpublic_la_OBJCFLAGS = $(GST_OBJCFLAGS) \
-	$(GST_BASE_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(am__append_1)
-libgstapplemedia_nonpublic_la_LIBADD = \
-	$(GST_BASE_LIBS)			\
-	$(GST_PLUGINS_BASE_LIBS)		\
-	-lgstvideo-$(GST_API_VERSION)		\
-	$(GMODULE_NO_EXPORT_LIBS)
-
-libgstapplemedia_nonpublic_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) --tag=CC
-libgstapplemedia_nonpublic_la_LDFLAGS = \
-	$(GST_PLUGIN_LDFLAGS)			\
-	$(GST_BASE_LDFLAGS)			\
-	$(GST_PLUGINS_BASE_LDFLAGS)		\
-	-Wl,-framework -Wl,Foundation		\
-	-Wl,-framework -Wl,CoreFoundation	\
-	-Wl,-framework -Wl,CoreVideo
-
-noinst_HEADERS = \
-	miovideosrc.h				\
-	miovideodevice.h			\
-	celvideosrc.h				\
-	bufferfactory.h				\
-	corevideobuffer.h			\
-	coremediabuffer.h			\
-	coremediactx.h				\
-	mioapi.h				\
-	mtapi.h					\
-	celapi.h				\
-	cvapi.h					\
-	cmapi.h					\
-	dynapi.h				\
-	dynapi-internal.h
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .m .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sys/applemedia-nonpublic/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu sys/applemedia-nonpublic/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
-	}
-
-uninstall-pluginLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
-	done
-
-clean-pluginLTLIBRARIES:
-	-test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
-	@list='$(plugin_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
-libgstapplemedia_nonpublic.la: $(libgstapplemedia_nonpublic_la_OBJECTS) $(libgstapplemedia_nonpublic_la_DEPENDENCIES) $(EXTRA_libgstapplemedia_nonpublic_la_DEPENDENCIES) 
-	$(AM_V_OBJCLD)$(libgstapplemedia_nonpublic_la_LINK) -rpath $(plugindir) $(libgstapplemedia_nonpublic_la_OBJECTS) $(libgstapplemedia_nonpublic_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_nonpublic_la-bufferfactory.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_nonpublic_la-cmapi.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_nonpublic_la-coremediabuffer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_nonpublic_la-coremediactx.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_nonpublic_la-corevideobuffer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_nonpublic_la-cvapi.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_nonpublic_la-dynapi.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_nonpublic_la-mioapi.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_nonpublic_la-plugin.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-
-.c.obj:
-@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-libgstapplemedia_nonpublic_la-corevideobuffer.lo: corevideobuffer.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_nonpublic_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_nonpublic_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_nonpublic_la_CFLAGS) $(CFLAGS) -MT libgstapplemedia_nonpublic_la-corevideobuffer.lo -MD -MP -MF $(DEPDIR)/libgstapplemedia_nonpublic_la-corevideobuffer.Tpo -c -o libgstapplemedia_nonpublic_la-corevideobuffer.lo `test -f 'corevideobuffer.c' || echo '$(srcdir)/'`corevideobuffer.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstapplemedia_nonpublic_la-corevideobuffer.Tpo $(DEPDIR)/libgstapplemedia_nonpublic_la-corevideobuffer.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='corevideobuffer.c' object='libgstapplemedia_nonpublic_la-corevideobuffer.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_nonpublic_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_nonpublic_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_nonpublic_la_CFLAGS) $(CFLAGS) -c -o libgstapplemedia_nonpublic_la-corevideobuffer.lo `test -f 'corevideobuffer.c' || echo '$(srcdir)/'`corevideobuffer.c
-
-libgstapplemedia_nonpublic_la-coremediabuffer.lo: coremediabuffer.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_nonpublic_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_nonpublic_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_nonpublic_la_CFLAGS) $(CFLAGS) -MT libgstapplemedia_nonpublic_la-coremediabuffer.lo -MD -MP -MF $(DEPDIR)/libgstapplemedia_nonpublic_la-coremediabuffer.Tpo -c -o libgstapplemedia_nonpublic_la-coremediabuffer.lo `test -f 'coremediabuffer.c' || echo '$(srcdir)/'`coremediabuffer.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstapplemedia_nonpublic_la-coremediabuffer.Tpo $(DEPDIR)/libgstapplemedia_nonpublic_la-coremediabuffer.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='coremediabuffer.c' object='libgstapplemedia_nonpublic_la-coremediabuffer.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_nonpublic_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_nonpublic_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_nonpublic_la_CFLAGS) $(CFLAGS) -c -o libgstapplemedia_nonpublic_la-coremediabuffer.lo `test -f 'coremediabuffer.c' || echo '$(srcdir)/'`coremediabuffer.c
-
-libgstapplemedia_nonpublic_la-cvapi.lo: cvapi.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_nonpublic_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_nonpublic_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_nonpublic_la_CFLAGS) $(CFLAGS) -MT libgstapplemedia_nonpublic_la-cvapi.lo -MD -MP -MF $(DEPDIR)/libgstapplemedia_nonpublic_la-cvapi.Tpo -c -o libgstapplemedia_nonpublic_la-cvapi.lo `test -f 'cvapi.c' || echo '$(srcdir)/'`cvapi.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstapplemedia_nonpublic_la-cvapi.Tpo $(DEPDIR)/libgstapplemedia_nonpublic_la-cvapi.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='cvapi.c' object='libgstapplemedia_nonpublic_la-cvapi.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_nonpublic_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_nonpublic_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_nonpublic_la_CFLAGS) $(CFLAGS) -c -o libgstapplemedia_nonpublic_la-cvapi.lo `test -f 'cvapi.c' || echo '$(srcdir)/'`cvapi.c
-
-libgstapplemedia_nonpublic_la-cmapi.lo: cmapi.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_nonpublic_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_nonpublic_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_nonpublic_la_CFLAGS) $(CFLAGS) -MT libgstapplemedia_nonpublic_la-cmapi.lo -MD -MP -MF $(DEPDIR)/libgstapplemedia_nonpublic_la-cmapi.Tpo -c -o libgstapplemedia_nonpublic_la-cmapi.lo `test -f 'cmapi.c' || echo '$(srcdir)/'`cmapi.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstapplemedia_nonpublic_la-cmapi.Tpo $(DEPDIR)/libgstapplemedia_nonpublic_la-cmapi.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='cmapi.c' object='libgstapplemedia_nonpublic_la-cmapi.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_nonpublic_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_nonpublic_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_nonpublic_la_CFLAGS) $(CFLAGS) -c -o libgstapplemedia_nonpublic_la-cmapi.lo `test -f 'cmapi.c' || echo '$(srcdir)/'`cmapi.c
-
-libgstapplemedia_nonpublic_la-coremediactx.lo: coremediactx.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_nonpublic_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_nonpublic_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_nonpublic_la_CFLAGS) $(CFLAGS) -MT libgstapplemedia_nonpublic_la-coremediactx.lo -MD -MP -MF $(DEPDIR)/libgstapplemedia_nonpublic_la-coremediactx.Tpo -c -o libgstapplemedia_nonpublic_la-coremediactx.lo `test -f 'coremediactx.c' || echo '$(srcdir)/'`coremediactx.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstapplemedia_nonpublic_la-coremediactx.Tpo $(DEPDIR)/libgstapplemedia_nonpublic_la-coremediactx.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='coremediactx.c' object='libgstapplemedia_nonpublic_la-coremediactx.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_nonpublic_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_nonpublic_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_nonpublic_la_CFLAGS) $(CFLAGS) -c -o libgstapplemedia_nonpublic_la-coremediactx.lo `test -f 'coremediactx.c' || echo '$(srcdir)/'`coremediactx.c
-
-libgstapplemedia_nonpublic_la-dynapi.lo: dynapi.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_nonpublic_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_nonpublic_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_nonpublic_la_CFLAGS) $(CFLAGS) -MT libgstapplemedia_nonpublic_la-dynapi.lo -MD -MP -MF $(DEPDIR)/libgstapplemedia_nonpublic_la-dynapi.Tpo -c -o libgstapplemedia_nonpublic_la-dynapi.lo `test -f 'dynapi.c' || echo '$(srcdir)/'`dynapi.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstapplemedia_nonpublic_la-dynapi.Tpo $(DEPDIR)/libgstapplemedia_nonpublic_la-dynapi.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='dynapi.c' object='libgstapplemedia_nonpublic_la-dynapi.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_nonpublic_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_nonpublic_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_nonpublic_la_CFLAGS) $(CFLAGS) -c -o libgstapplemedia_nonpublic_la-dynapi.lo `test -f 'dynapi.c' || echo '$(srcdir)/'`dynapi.c
-
-libgstapplemedia_nonpublic_la-mioapi.lo: mioapi.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_nonpublic_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_nonpublic_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_nonpublic_la_CFLAGS) $(CFLAGS) -MT libgstapplemedia_nonpublic_la-mioapi.lo -MD -MP -MF $(DEPDIR)/libgstapplemedia_nonpublic_la-mioapi.Tpo -c -o libgstapplemedia_nonpublic_la-mioapi.lo `test -f 'mioapi.c' || echo '$(srcdir)/'`mioapi.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstapplemedia_nonpublic_la-mioapi.Tpo $(DEPDIR)/libgstapplemedia_nonpublic_la-mioapi.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='mioapi.c' object='libgstapplemedia_nonpublic_la-mioapi.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_nonpublic_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_nonpublic_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_nonpublic_la_CFLAGS) $(CFLAGS) -c -o libgstapplemedia_nonpublic_la-mioapi.lo `test -f 'mioapi.c' || echo '$(srcdir)/'`mioapi.c
-
-.m.o:
-@am__fastdepOBJC_TRUE@	$(AM_V_OBJC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepOBJC_TRUE@	$(OBJCCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepOBJC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepOBJC_FALSE@	$(AM_V_OBJC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepOBJC_FALSE@	DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepOBJC_FALSE@	$(AM_V_OBJC@am__nodep@)$(OBJCCOMPILE) -c -o $@ $<
-
-.m.obj:
-@am__fastdepOBJC_TRUE@	$(AM_V_OBJC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepOBJC_TRUE@	$(OBJCCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepOBJC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepOBJC_FALSE@	$(AM_V_OBJC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepOBJC_FALSE@	DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepOBJC_FALSE@	$(AM_V_OBJC@am__nodep@)$(OBJCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.m.lo:
-@am__fastdepOBJC_TRUE@	$(AM_V_OBJC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepOBJC_TRUE@	$(LTOBJCCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepOBJC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepOBJC_FALSE@	$(AM_V_OBJC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepOBJC_FALSE@	DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepOBJC_FALSE@	$(AM_V_OBJC@am__nodep@)$(LTOBJCCOMPILE) -c -o $@ $<
-
-libgstapplemedia_nonpublic_la-plugin.lo: plugin.m
-@am__fastdepOBJC_TRUE@	$(AM_V_OBJC)$(LIBTOOL) $(AM_V_lt) $(libgstapplemedia_nonpublic_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(OBJC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_nonpublic_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_nonpublic_la_OBJCFLAGS) $(OBJCFLAGS) -MT libgstapplemedia_nonpublic_la-plugin.lo -MD -MP -MF $(DEPDIR)/libgstapplemedia_nonpublic_la-plugin.Tpo -c -o libgstapplemedia_nonpublic_la-plugin.lo `test -f 'plugin.m' || echo '$(srcdir)/'`plugin.m
-@am__fastdepOBJC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstapplemedia_nonpublic_la-plugin.Tpo $(DEPDIR)/libgstapplemedia_nonpublic_la-plugin.Plo
-@AMDEP_TRUE@@am__fastdepOBJC_FALSE@	$(AM_V_OBJC)source='plugin.m' object='libgstapplemedia_nonpublic_la-plugin.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepOBJC_FALSE@	DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepOBJC_FALSE@	$(AM_V_OBJC@am__nodep@)$(LIBTOOL) $(AM_V_lt) $(libgstapplemedia_nonpublic_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(OBJC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_nonpublic_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_nonpublic_la_OBJCFLAGS) $(OBJCFLAGS) -c -o libgstapplemedia_nonpublic_la-plugin.lo `test -f 'plugin.m' || echo '$(srcdir)/'`plugin.m
-
-libgstapplemedia_nonpublic_la-bufferfactory.lo: bufferfactory.m
-@am__fastdepOBJC_TRUE@	$(AM_V_OBJC)$(LIBTOOL) $(AM_V_lt) $(libgstapplemedia_nonpublic_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(OBJC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_nonpublic_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_nonpublic_la_OBJCFLAGS) $(OBJCFLAGS) -MT libgstapplemedia_nonpublic_la-bufferfactory.lo -MD -MP -MF $(DEPDIR)/libgstapplemedia_nonpublic_la-bufferfactory.Tpo -c -o libgstapplemedia_nonpublic_la-bufferfactory.lo `test -f 'bufferfactory.m' || echo '$(srcdir)/'`bufferfactory.m
-@am__fastdepOBJC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstapplemedia_nonpublic_la-bufferfactory.Tpo $(DEPDIR)/libgstapplemedia_nonpublic_la-bufferfactory.Plo
-@AMDEP_TRUE@@am__fastdepOBJC_FALSE@	$(AM_V_OBJC)source='bufferfactory.m' object='libgstapplemedia_nonpublic_la-bufferfactory.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepOBJC_FALSE@	DEPDIR=$(DEPDIR) $(OBJCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepOBJC_FALSE@	$(AM_V_OBJC@am__nodep@)$(LIBTOOL) $(AM_V_lt) $(libgstapplemedia_nonpublic_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(OBJC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_nonpublic_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_nonpublic_la_OBJCFLAGS) $(OBJCFLAGS) -c -o libgstapplemedia_nonpublic_la-bufferfactory.lo `test -f 'bufferfactory.m' || echo '$(srcdir)/'`bufferfactory.m
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
-installdirs:
-	for dir in "$(DESTDIR)$(plugindir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-pluginLTLIBRARIES
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-pluginLTLIBRARIES
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-pluginLTLIBRARIES install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
-	uninstall-pluginLTLIBRARIES
-
-.PRECIOUS: Makefile
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/sys/applemedia-nonpublic/bufferfactory.m b/sys/applemedia-nonpublic/bufferfactory.m
deleted file mode 100644
index 7b2e845..0000000
--- a/sys/applemedia-nonpublic/bufferfactory.m
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#import "bufferfactory.h"
-
-#include "coremediabuffer.h"
-#include "corevideobuffer.h"
-
-@implementation GstAMBufferFactory
-
-- (id)initWithError:(GError **)error
-{
-  GstCoreMediaCtx *ctx;
-
-  ctx =
-      gst_core_media_ctx_new (GST_API_CORE_VIDEO | GST_API_CORE_MEDIA, error);
-  if (ctx == NULL)
-    return nil;
-
-  if ((self = [super init]))
-    coreMediaCtx = ctx;
-  else
-    g_object_unref (ctx);
-
-  return self;
-}
-
-- (void)finalize
-{
-  g_object_unref (coreMediaCtx);
-
-  [super finalize];
-}
-
-- (GstBuffer *)createGstBufferForCoreVideoBuffer:(CFTypeRef)cvbuf
-{
-  return gst_core_video_buffer_new (coreMediaCtx, (CVBufferRef) cvbuf, NULL);
-}
-
-- (GstBuffer *)createGstBufferForSampleBuffer:(CFTypeRef)sbuf
-{
-  return gst_core_media_buffer_new (coreMediaCtx, sbuf);
-}
-
-@end
diff --git a/sys/applemedia-nonpublic/celapi.h b/sys/applemedia-nonpublic/celapi.h
deleted file mode 100644
index 78855f9..0000000
--- a/sys/applemedia-nonpublic/celapi.h
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_CEL_API_H__
-#define __GST_CEL_API_H__
-
-#include "mtapi.h"
-
-G_BEGIN_DECLS
-
-typedef struct _GstCelApi GstCelApi;
-typedef struct _GstCelApiClass GstCelApiClass;
-
-enum
-{
-  kCelError_ResourceBusy = -12780
-};
-
-struct _GstCelApi
-{
-  GstDynApi parent;
-
-  OSStatus (* FigCreateCaptureDevicesAndStreamsForPreset)
-      (CFAllocatorRef allocator, CFStringRef capturePreset,
-      CFDictionaryRef audioOptions,
-      FigCaptureDeviceRef * outVideoDevice,
-      FigCaptureStreamRef * outVideoStream,
-      FigCaptureDeviceRef * outAudioDevice,
-      FigCaptureStreamRef * outAudioStream);
-
-  CFStringRef * kFigCaptureDeviceProperty_MultiplexStreams;
-  CFStringRef * kFigCapturePortType_Bottom;
-  CFStringRef * kFigCapturePortType_Camera;
-  CFStringRef * kFigCapturePortType_FrontFacingCamera;
-  CFStringRef * kFigCapturePortType_Top;
-  CFStringRef * kFigCapturePropertyValue_AFEarlyOutAllowPeakAtStart;
-  CFStringRef * kFigCapturePropertyValue_AFEarlyOutDecrementAmount;
-  CFStringRef * kFigCapturePropertyValue_AFEarlyOutEnable;
-  CFStringRef * kFigCapturePropertyValue_AFEarlyOutThreshold;
-  CFStringRef * kFigCapturePropertyValue_AFPositionCurrent;
-  CFStringRef * kFigCapturePropertyValue_AFPositionInfinity;
-  CFStringRef * kFigCapturePropertyValue_AFPositionMacro;
-  CFStringRef * kFigCapturePropertyValue_AFSearchPositionArray;
-  CFStringRef * kFigCapturePropertyValue_AGC;
-  CFStringRef * kFigCapturePropertyValue_CLPFControl;
-  CFStringRef * kFigCapturePropertyValue_ColorRangeFull;
-  CFStringRef * kFigCapturePropertyValue_ColorRangeSDVideo;
-  CFStringRef * kFigCapturePropertyValue_ModuleDate;
-  CFStringRef * kFigCapturePropertyValue_ModuleIntegratorInfo;
-  CFStringRef * kFigCapturePropertyValue_SensorID;
-  CFStringRef * kFigCapturePropertyValue_SigmaFilterControl;
-  CFStringRef * kFigCapturePropertyValue_YLPFControl;
-  CFStringRef * kFigCapturePropertyValue_hStart;
-  CFStringRef * kFigCapturePropertyValue_height;
-  CFStringRef * kFigCapturePropertyValue_ispDGain;
-  CFStringRef * kFigCapturePropertyValue_sensorDGain;
-  CFStringRef * kFigCapturePropertyValue_shutterSpeedDenominator;
-  CFStringRef * kFigCapturePropertyValue_shutterSpeedNumerator;
-  CFStringRef * kFigCapturePropertyValue_vStart;
-  CFStringRef * kFigCapturePropertyValue_weight;
-  CFStringRef * kFigCapturePropertyValue_width;
-  CFStringRef * kFigCaptureStreamPropertyValue_AEBracketedCaptureParams;
-  CFStringRef * kFigCaptureStreamPropertyValue_BLCCompensation;
-  CFStringRef * kFigCaptureStreamPropertyValue_BLCDebugMode;
-  CFStringRef * kFigCaptureStreamPropertyValue_BandHighFactor;
-  CFStringRef * kFigCaptureStreamPropertyValue_BandLowFactor;
-  CFStringRef * kFigCaptureStreamPropertyValue_CCMWarmUpWeight;
-  CFStringRef * kFigCaptureStreamPropertyValue_EdgeColorSuppressionSlope;
-  CFStringRef * kFigCaptureStreamPropertyValue_EdgeColorSuppressionThreshold;
-  CFStringRef * kFigCaptureStreamPropertyValue_EnableAESceneDynamicMetering;
-  CFStringRef * kFigCaptureStreamPropertyValue_EnableCCMWarmUp;
-  CFStringRef * kFigCaptureStreamPropertyValue_EnableHistogram1MetaData;
-  CFStringRef * kFigCaptureStreamPropertyValue_EnableHistogram2MetaData;
-  CFStringRef * kFigCaptureStreamPropertyValue_EnableHistogram3MetaData;
-  CFStringRef * kFigCaptureStreamPropertyValue_EnableHistogram4MetaData;
-  CFStringRef * kFigCaptureStreamPropertyValue_EnableHistogram;
-  CFStringRef * kFigCaptureStreamPropertyValue_HistogramBinMode;
-  CFStringRef * kFigCaptureStreamPropertyValue_HistogramDataType;
-  CFStringRef * kFigCaptureStreamPropertyValue_ImageCropRect;
-  CFStringRef * kFigCaptureStreamPropertyValue_LPExposure;
-  CFStringRef * kFigCaptureStreamPropertyValue_LPGain;
-  CFStringRef * kFigCaptureStreamPropertyValue_LowWeight;
-  CFStringRef * kFigCaptureStreamPropertyValue_MaxWeight;
-  CFStringRef * kFigCaptureStreamPropertyValue_MediumWeight;
-  CFStringRef * kFigCaptureStreamPropertyValue_MinWeight;
-  CFStringRef * kFigCaptureStreamPropertyValue_WeightDropOff;
-  CFStringRef * kFigCaptureStreamPropertyValue_WeightReduction;
-  CFStringRef * kFigCaptureStreamProperty_AEConvergenceSpeed;
-  CFStringRef * kFigCaptureStreamProperty_AEOutlierClipCount;
-  CFStringRef * kFigCaptureStreamProperty_AESceneDynamicMetering;
-  CFStringRef * kFigCaptureStreamProperty_AEStability;
-  CFStringRef * kFigCaptureStreamProperty_AEWindowManualWeightMatrix;
-  CFStringRef * kFigCaptureStreamProperty_AEWindowParams;
-  CFStringRef * kFigCaptureStreamProperty_AFEarlyOutParams;
-  CFStringRef * kFigCaptureStreamProperty_AFParams;
-  CFStringRef * kFigCaptureStreamProperty_AFSearchPositions;
-  CFStringRef * kFigCaptureStreamProperty_AFWindowParams;
-  CFStringRef * kFigCaptureStreamProperty_AGC;
-  CFStringRef * kFigCaptureStreamProperty_AWBWindowParams;
-  CFStringRef * kFigCaptureStreamProperty_AdditionalPTSOffset;
-  CFStringRef * kFigCaptureStreamProperty_AlternateAWB;
-  CFStringRef * kFigCaptureStreamProperty_Apply3AWindowSettings;
-  CFStringRef * kFigCaptureStreamProperty_AttachRAW;
-  CFStringRef * kFigCaptureStreamProperty_CCMWarmUp;
-  CFStringRef * kFigCaptureStreamProperty_ClientMaxBufferCountHint;
-  CFStringRef * kFigCaptureStreamProperty_ColorRange;
-  CFStringRef * kFigCaptureStreamProperty_ColorSaturation;
-  CFStringRef * kFigCaptureStreamProperty_ColorTables;
-  CFStringRef * kFigCaptureStreamProperty_EdgeColorSuppressionParams;
-  CFStringRef * kFigCaptureStreamProperty_ExposureBias;
-  CFStringRef * kFigCaptureStreamProperty_FastSwitchMode;
-  CFStringRef * kFigCaptureStreamProperty_FlashMode;
-  CFStringRef * kFigCaptureStreamProperty_HistogramParams;
-  CFStringRef * kFigCaptureStreamProperty_LockAENow;
-  CFStringRef * kFigCaptureStreamProperty_LockAWBNow;
-  CFStringRef * kFigCaptureStreamProperty_ManualAENow;
-  CFStringRef * kFigCaptureStreamProperty_ManualFocusNow;
-  CFStringRef * kFigCaptureStreamProperty_MaxIntegrationTime;
-  CFStringRef * kFigCaptureStreamProperty_ModuleInfo;
-  CFStringRef * kFigCaptureStreamProperty_NoiseReductionControls;
-  CFStringRef * kFigCaptureStreamProperty_PortType;
-  CFStringRef * kFigCaptureStreamProperty_PreFrameAE;
-  CFStringRef * kFigCaptureStreamProperty_RawImageProcessNow;
-  CFStringRef * kFigCaptureStreamProperty_RedEyeReductionParams;
-  CFStringRef * kFigCaptureStreamProperty_ResetParams;
-  CFStringRef * kFigCaptureStreamProperty_ScalerSharpening;
-  CFStringRef * kFigCaptureStreamProperty_SetGainCap;
-  CFStringRef * kFigCaptureStreamProperty_SharpeningControl;
-  CFStringRef * kFigCaptureStreamProperty_TorchLevel;
-  CFStringRef * kFigCaptureStreamProperty_UnlockAENow;
-  CFStringRef * kFigCaptureStreamProperty_UnlockAWBNow;
-  CFStringRef * kFigCaptureStreamProperty_UseFlashAFAssist;
-  CFStringRef * kFigCaptureStreamProperty_UseFlashRedEyeReduction;
-  CFStringRef * kFigCaptureStreamProperty_UseHardwareShutter;
-  CFStringRef * kFigCaptureStreamProperty_VideoRecordingInProgress;
-  CFStringRef * kFigRecorderCapturePreset_AudioRecording;
-  CFStringRef * kFigRecorderCapturePreset_AudioVideoRecording;
-  CFStringRef * kFigRecorderCapturePreset_PhotoCapture;
-  CFStringRef * kFigRecorderCapturePreset_VideoRecording;
-};
-
-struct _GstCelApiClass
-{
-  GstDynApiClass parent_class;
-};
-
-GType gst_cel_api_get_type (void);
-
-GstCelApi * gst_cel_api_obtain (GError ** error);
-
-G_END_DECLS
-
-#endif
diff --git a/sys/applemedia-nonpublic/celvideosrc.h b/sys/applemedia-nonpublic/celvideosrc.h
deleted file mode 100644
index 5fa656c..0000000
--- a/sys/applemedia-nonpublic/celvideosrc.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_CEL_VIDEO_SRC_H__
-#define __GST_CEL_VIDEO_SRC_H__
-
-#include <gst/base/gstpushsrc.h>
-
-#include "coremediactx.h"
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_CEL_VIDEO_SRC \
-  (gst_cel_video_src_get_type ())
-#define GST_CEL_VIDEO_SRC(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_CEL_VIDEO_SRC, GstCelVideoSrc))
-#define GST_CEL_VIDEO_SRC_CAST(obj) \
-  ((GstCelVideoSrc *) (obj))
-#define GST_CEL_VIDEO_SRC_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_CEL_VIDEO_SRC, GstCelVideoSrcClass))
-#define GST_IS_CEL_VIDEO_SRC(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_CEL_VIDEO_SRC))
-#define GST_IS_CEL_VIDEO_SRC_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_CEL_VIDEO_SRC))
-
-typedef struct _GstCelVideoSrc         GstCelVideoSrc;
-typedef struct _GstCelVideoSrcClass    GstCelVideoSrcClass;
-
-struct _GstCelVideoSrc
-{
-  GstPushSrc push_src;
-
-  gint device_index;
-  gboolean do_stats;
-
-  GstCoreMediaCtx *ctx;
-
-  FigCaptureDeviceRef device;
-  FigCaptureDeviceIface *device_iface;
-  FigBaseObjectRef device_base;
-  FigBaseIface *device_base_iface;
-  FigCaptureStreamRef stream;
-  FigCaptureStreamIface *stream_iface;
-  FigBaseObjectRef stream_base;
-  FigBaseIface *stream_base_iface;
-
-  CMBufferQueueRef queue;
-  CMBufferQueueTriggerToken ready_trigger;
-  GstCaps *device_caps;
-  GArray *device_formats;
-  GstClockTime duration;
-
-  volatile gint is_running;
-  guint64 offset;
-
-  GCond *ready_cond;
-  volatile gboolean queue_is_ready;
-
-  GstClockTime last_sampling;
-  guint count;
-  gint fps;
-};
-
-struct _GstCelVideoSrcClass
-{
-  GstPushSrcClass parent_class;
-};
-
-GType gst_cel_video_src_get_type (void);
-
-G_END_DECLS
-
-#endif /* __GST_CEL_VIDEO_SRC_H__ */
diff --git a/sys/applemedia-nonpublic/cmapi.c b/sys/applemedia-nonpublic/cmapi.c
deleted file mode 100644
index 15c28ed..0000000
--- a/sys/applemedia-nonpublic/cmapi.c
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "cmapi.h"
-
-#include "dynapi-internal.h"
-
-#include <gmodule.h>
-
-#define CM_FRAMEWORK_PATH "/System/Library/Frameworks/" \
-    "CoreMedia.framework/CoreMedia"
-#define CM_FRAMEWORK_PATH_OLD "/System/Library/PrivateFrameworks/" \
-    "CoreMedia.framework/CoreMedia"
-
-G_DEFINE_TYPE (GstCMApi, gst_cm_api, GST_TYPE_DYN_API);
-
-static void
-gst_cm_api_init (GstCMApi * self)
-{
-}
-
-static void
-gst_cm_api_class_init (GstCMApiClass * klass)
-{
-}
-
-#define SYM_SPEC(name) GST_DYN_SYM_SPEC (GstCMApi, name)
-
-GstCMApi *
-gst_cm_api_obtain (GError ** error)
-{
-  static const GstDynSymSpec symbols[] = {
-    SYM_SPEC (FigBaseObjectGetVTable),
-
-    SYM_SPEC (CMGetAttachment),
-
-    SYM_SPEC (FigFormatDescriptionRelease),
-    SYM_SPEC (FigFormatDescriptionRetain),
-    SYM_SPEC (CMFormatDescriptionEqual),
-    SYM_SPEC (CMFormatDescriptionGetExtension),
-    SYM_SPEC (CMFormatDescriptionGetMediaType),
-    SYM_SPEC (CMFormatDescriptionGetMediaSubType),
-
-    SYM_SPEC (CMVideoFormatDescriptionCreate),
-    SYM_SPEC
-        (FigVideoFormatDescriptionCreateWithSampleDescriptionExtensionAtom),
-    SYM_SPEC (CMVideoFormatDescriptionGetDimensions),
-
-    SYM_SPEC (CMTimeMake),
-
-    SYM_SPEC (CMSampleBufferCreate),
-    SYM_SPEC (CMSampleBufferDataIsReady),
-    SYM_SPEC (CMSampleBufferGetDataBuffer),
-    SYM_SPEC (CMSampleBufferGetFormatDescription),
-    SYM_SPEC (CMSampleBufferGetImageBuffer),
-    SYM_SPEC (CMSampleBufferGetNumSamples),
-    SYM_SPEC (CMSampleBufferGetSampleAttachmentsArray),
-    SYM_SPEC (CMSampleBufferGetSampleSize),
-    SYM_SPEC (FigSampleBufferRelease),
-    SYM_SPEC (FigSampleBufferRetain),
-
-    SYM_SPEC (CMBlockBufferCreateWithMemoryBlock),
-    SYM_SPEC (CMBlockBufferGetDataLength),
-    SYM_SPEC (CMBlockBufferGetDataPointer),
-    SYM_SPEC (FigBlockBufferRelease),
-    SYM_SPEC (FigBlockBufferRetain),
-
-    SYM_SPEC (CMBufferQueueDequeueAndRetain),
-    SYM_SPEC (CMBufferQueueGetBufferCount),
-    SYM_SPEC (CMBufferQueueInstallTrigger),
-    SYM_SPEC (CMBufferQueueIsEmpty),
-    SYM_SPEC (FigBufferQueueRelease),
-    SYM_SPEC (CMBufferQueueRemoveTrigger),
-    SYM_SPEC (CMBufferQueueSetValidationCallback),
-
-    SYM_SPEC (kCMFormatDescriptionExtension_SampleDescriptionExtensionAtoms),
-    SYM_SPEC (kCMSampleAttachmentKey_DependsOnOthers),
-    SYM_SPEC (kCMTimeInvalid),
-
-    {NULL, 0},
-  };
-  GstCMApi *result;
-  GModule *module;
-
-  /* We cannot stat() the library as it may not be present on the filesystem.
-   * This is the case on newer versions of iOS where system libraries are all
-   * part of dyld_shared_cache... */
-  module = g_module_open (CM_FRAMEWORK_PATH, 0);
-  if (module != NULL) {
-    result = _gst_dyn_api_new (gst_cm_api_get_type (), CM_FRAMEWORK_PATH,
-        symbols, error);
-    g_module_close (module);
-  } else {
-    GstDynSymSpec *old_symbols;
-    guint i;
-
-    old_symbols = g_memdup (symbols, sizeof (symbols));
-    for (i = 0; old_symbols[i].name != NULL; i++) {
-      const gchar *name = old_symbols[i].name;
-      const gchar *translated_name;
-
-      if (g_str_has_prefix (name, "CM"))
-        translated_name = g_strconcat ("Fig", name + 2, NULL);
-      else if (g_str_has_prefix (name, "kCM"))
-        translated_name = g_strconcat ("kFig", name + 3, NULL);
-      else
-        translated_name = g_strdup (name);
-
-      old_symbols[i].name = translated_name;
-    }
-
-    result = _gst_dyn_api_new (gst_cm_api_get_type (), CM_FRAMEWORK_PATH_OLD,
-        old_symbols, error);
-
-    for (i = 0; old_symbols[i].name != NULL; i++)
-      g_free ((gpointer) old_symbols[i].name);
-    g_free (old_symbols);
-  }
-
-  return result;
-}
diff --git a/sys/applemedia-nonpublic/cmapi.h b/sys/applemedia-nonpublic/cmapi.h
deleted file mode 100644
index 92565fc..0000000
--- a/sys/applemedia-nonpublic/cmapi.h
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_CM_API_H__
-#define __GST_CM_API_H__
-
-#include "dynapi.h"
-
-#include <CoreFoundation/CoreFoundation.h>
-#include "cvapi.h"
-
-G_BEGIN_DECLS
-
-typedef struct _GstCMApi GstCMApi;
-typedef struct _GstCMApiClass GstCMApiClass;
-
-typedef CFTypeRef FigBaseObjectRef;
-typedef struct _FigBaseVTable FigBaseVTable;
-typedef struct _FigBaseIface FigBaseIface;
-
-typedef CFTypeRef CMFormatDescriptionRef;
-typedef struct _CMVideoDimensions CMVideoDimensions;
-typedef struct _CMTime CMTime;
-
-typedef CFTypeRef CMBufferQueueRef;
-typedef SInt32 CMBufferQueueTriggerCondition;
-typedef struct _CMBufferQueueTriggerToken *CMBufferQueueTriggerToken;
-typedef CFTypeRef CMSampleBufferRef;
-typedef CFTypeRef CMBlockBufferRef;
-
-typedef void (* CMBufferQueueTriggerCallback) (void *triggerRefcon,
-    CMBufferQueueTriggerToken triggerToken);
-typedef Boolean (* CMBufferQueueValidationCallback) (CMBufferQueueRef queue,
-    CMSampleBufferRef buf, void *refCon);
-
-enum _FigMediaType
-{
-  kFigMediaTypeVideo = 'vide'
-};
-
-enum _FigCodecType
-{
-  kComponentVideoUnsigned           = 'yuvs',
-  kFigVideoCodecType_JPEG_OpenDML   = 'dmb1',
-  kYUV420vCodecType                 = '420v'
-};
-
-enum _CMBufferQueueTriggerCondition
-{
-  kCMBufferQueueTrigger_WhenDurationBecomesLessThan             = 1,
-  kCMBufferQueueTrigger_WhenDurationBecomesLessThanOrEqualTo    = 2,
-  kCMBufferQueueTrigger_WhenDurationBecomesGreaterThan          = 3,
-  kCMBufferQueueTrigger_WhenDurationBecomesGreaterThanOrEqualTo = 4,
-  kCMBufferQueueTrigger_WhenMinPresentationTimeStampChanges     = 5,
-  kCMBufferQueueTrigger_WhenMaxPresentationTimeStampChanges     = 6,
-  kCMBufferQueueTrigger_WhenDataBecomesReady                    = 7,
-  kCMBufferQueueTrigger_WhenEndOfDataReached                    = 8,
-  kCMBufferQueueTrigger_WhenReset                               = 9,
-  kCMBufferQueueTrigger_WhenBufferCountBecomesLessThan          = 10,
-  kCMBufferQueueTrigger_WhenBufferCountBecomesGreaterThan       = 11
-};
-
-struct _FigBaseVTable
-{
-  gsize unk;
-  FigBaseIface * base;
-  void * derived;
-};
-
-struct _FigBaseIface
-{
-  gsize unk1;
-  gsize unk2;
-  gsize unk3;
-  OSStatus (* Invalidate) (FigBaseObjectRef obj);
-  OSStatus (* Finalize) (FigBaseObjectRef obj);
-  gpointer unk4;
-  OSStatus (* CopyProperty) (FigBaseObjectRef obj, CFTypeRef key, void *unk,
-      CFTypeRef * value);
-  OSStatus (* SetProperty) (FigBaseObjectRef obj, CFTypeRef key,
-      CFTypeRef value);
-};
-
-struct _CMVideoDimensions
-{
-  UInt32 width;
-  UInt32 height;
-};
-
-struct _CMTime
-{
-  UInt8 data[24];
-};
-
-struct _GstCMApi
-{
-  GstDynApi parent;
-
-  FigBaseVTable * (* FigBaseObjectGetVTable) (FigBaseObjectRef obj);
-
-  void * (* CMGetAttachment) (CFTypeRef obj, CFStringRef attachmentKey,
-      UInt32 * foundWherePtr);
-
-  void (* FigFormatDescriptionRelease) (CMFormatDescriptionRef desc);
-  CMFormatDescriptionRef (* FigFormatDescriptionRetain) (
-      CMFormatDescriptionRef desc);
-  Boolean (* CMFormatDescriptionEqual) (CMFormatDescriptionRef desc1,
-      CMFormatDescriptionRef desc2);
-  CFTypeRef (* CMFormatDescriptionGetExtension) (
-      const CMFormatDescriptionRef desc, CFStringRef extensionKey);
-  UInt32 (* CMFormatDescriptionGetMediaType) (
-      const CMFormatDescriptionRef desc);
-  UInt32 (* CMFormatDescriptionGetMediaSubType) (
-      const CMFormatDescriptionRef desc);
-
-  OSStatus (* CMVideoFormatDescriptionCreate) (
-      CFAllocatorRef allocator, UInt32 formatId, UInt32 width, UInt32 height,
-      CFDictionaryRef extensions, CMFormatDescriptionRef * desc);
-  OSStatus (* FigVideoFormatDescriptionCreateWithSampleDescriptionExtensionAtom)
-      (CFAllocatorRef allocator, UInt32 formatId, UInt32 width, UInt32 height,
-      UInt32 atomId, const UInt8 * data, CFIndex len, void *unk1,
-      CMFormatDescriptionRef * formatDesc);
-  CMVideoDimensions (* CMVideoFormatDescriptionGetDimensions) (
-      const CMFormatDescriptionRef desc);
-
-  CMTime (* CMTimeMake) (int64_t value, int32_t timescale);
-
-  OSStatus (* CMSampleBufferCreate) (CFAllocatorRef allocator,
-      CMBlockBufferRef blockBuf, Boolean dataReady,
-      void *makeDataReadyCallback,
-      void *makeDataReadyRefcon,
-      CMFormatDescriptionRef fmtDesc, size_t numSamples,
-      size_t numSampleTimingEntries,
-      const void *sampleTimingArray,
-      size_t numSampleSizeEntries, const size_t *sampleSizeArray,
-      CMSampleBufferRef * sampleBuffer);
-  Boolean (* CMSampleBufferDataIsReady) (
-      const CMSampleBufferRef buf);
-  CMBlockBufferRef (* CMSampleBufferGetDataBuffer) (
-      const CMSampleBufferRef buf);
-  CMFormatDescriptionRef (* CMSampleBufferGetFormatDescription) (
-      const CMSampleBufferRef buf);
-  CVImageBufferRef (* CMSampleBufferGetImageBuffer) (
-      const CMSampleBufferRef buf);
-  SInt32 (* CMSampleBufferGetNumSamples) (
-      const CMSampleBufferRef buf);
-  CFArrayRef (* CMSampleBufferGetSampleAttachmentsArray) (
-      const CMSampleBufferRef buf, SInt32 sampleIndex);
-  SInt32 (* CMSampleBufferGetSampleSize) (
-      const CMSampleBufferRef buf, SInt32 sampleIndex);
-  void (* FigSampleBufferRelease) (CMSampleBufferRef buf);
-  CMSampleBufferRef (* FigSampleBufferRetain) (CMSampleBufferRef buf);
-
-  OSStatus (* CMBlockBufferCreateWithMemoryBlock)
-      (CFAllocatorRef allocator, void * memoryBlock, size_t blockLength,
-      CFAllocatorRef dataAllocator, void *customBlockSource,
-      size_t offsetToData, size_t dataLength,
-      int flags, CMBlockBufferRef * blockBuffer);
-  SInt32 (* CMBlockBufferGetDataLength) (const CMBlockBufferRef buf);
-  OSStatus (* CMBlockBufferGetDataPointer) (
-      const CMBlockBufferRef buf, UInt32 unk1, UInt32 unk2, UInt32 unk3,
-      Byte ** dataPtr);
-  void (* FigBlockBufferRelease) (CMBlockBufferRef buf);
-  CMBlockBufferRef (* FigBlockBufferRetain) (CMBlockBufferRef buf);
-
-  CMSampleBufferRef (* CMBufferQueueDequeueAndRetain)
-      (CMBufferQueueRef queue);
-  CFIndex (* CMBufferQueueGetBufferCount) (CMBufferQueueRef queue);
-  OSStatus (* CMBufferQueueInstallTrigger) (CMBufferQueueRef queue,
-      CMBufferQueueTriggerCallback triggerCallback, void * triggerRefCon,
-      CMBufferQueueTriggerCondition triggerCondition, CMTime triggerTime,
-      CMBufferQueueTriggerToken * triggerTokenOut);
-  Boolean (* CMBufferQueueIsEmpty) (CMBufferQueueRef queue);
-  void (* FigBufferQueueRelease) (CMBufferQueueRef queue);
-  OSStatus (* CMBufferQueueRemoveTrigger) (CMBufferQueueRef queue,
-      CMBufferQueueTriggerToken triggerToken);
-  OSStatus (* CMBufferQueueSetValidationCallback) (CMBufferQueueRef queue,
-      CMBufferQueueValidationCallback func, void *refCon);
-
-  CFStringRef * kCMFormatDescriptionExtension_SampleDescriptionExtensionAtoms;
-  CFStringRef * kCMSampleAttachmentKey_DependsOnOthers;
-  CMTime * kCMTimeInvalid;
-};
-
-struct _GstCMApiClass
-{
-  GstDynApiClass parent_class;
-};
-
-GType gst_cm_api_get_type (void);
-
-GstCMApi * gst_cm_api_obtain (GError ** error);
-
-G_END_DECLS
-
-#endif
diff --git a/sys/applemedia-nonpublic/coremediabuffer.c b/sys/applemedia-nonpublic/coremediabuffer.c
deleted file mode 100644
index a8136ba..0000000
--- a/sys/applemedia-nonpublic/coremediabuffer.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (C) 2009 Ole André Vadla Ravnås <oleavr@soundrop.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "coremediabuffer.h"
-
-static void
-gst_core_media_meta_free (GstCoreMediaMeta * meta, GstBuffer * buf)
-{
-  if (meta->image_buf != NULL) {
-    GstCVApi *cv = meta->ctx->cv;
-    cv->CVPixelBufferUnlockBaseAddress (meta->image_buf,
-        kCVPixelBufferLock_ReadOnly);
-  }
-  meta->ctx->cm->FigSampleBufferRelease (meta->sample_buf);
-  g_object_unref (meta->ctx);
-}
-
-GType
-gst_core_media_meta_api_get_type (void)
-{
-  static volatile GType type;
-  static const gchar *tags[] = { "memory", NULL };
-
-  if (g_once_init_enter (&type)) {
-    GType _type = gst_meta_api_type_register ("GstCoreMediaMetaAPI", tags);
-    g_once_init_leave (&type, _type);
-  }
-  return type;
-}
-
-static const GstMetaInfo *
-gst_core_media_meta_get_info (void)
-{
-  static const GstMetaInfo *core_media_meta_info = NULL;
-
-  if (g_once_init_enter (&core_media_meta_info)) {
-    const GstMetaInfo *meta = gst_meta_register (GST_CORE_MEDIA_META_API_TYPE,
-        "GstCoreMediaMeta", sizeof (GstCoreMediaMeta),
-        (GstMetaInitFunction) NULL,
-        (GstMetaFreeFunction) gst_core_media_meta_free,
-        (GstMetaTransformFunction) NULL);
-    g_once_init_leave (&core_media_meta_info, meta);
-  }
-  return core_media_meta_info;
-}
-
-GstBuffer *
-gst_core_media_buffer_new (GstCoreMediaCtx * ctx, CMSampleBufferRef sample_buf)
-{
-  GstCVApi *cv = ctx->cv;
-  GstCMApi *cm = ctx->cm;
-  CVImageBufferRef image_buf;
-  CVPixelBufferRef pixel_buf;
-  CMBlockBufferRef block_buf;
-  Byte *data = NULL;
-  UInt32 size;
-  OSStatus status;
-  GstBuffer *buf;
-  GstCoreMediaMeta *meta;
-
-  image_buf = cm->CMSampleBufferGetImageBuffer (sample_buf);
-  pixel_buf = NULL;
-  block_buf = cm->CMSampleBufferGetDataBuffer (sample_buf);
-
-  if (image_buf != NULL &&
-      CFGetTypeID (image_buf) == cv->CVPixelBufferGetTypeID ()) {
-    pixel_buf = (CVPixelBufferRef) image_buf;
-
-    if (cv->CVPixelBufferLockBaseAddress (pixel_buf,
-            kCVPixelBufferLock_ReadOnly) != kCVReturnSuccess) {
-      goto error;
-    }
-
-    if (cv->CVPixelBufferIsPlanar (pixel_buf)) {
-      gint plane_count, plane_idx;
-
-      data = cv->CVPixelBufferGetBaseAddressOfPlane (pixel_buf, 0);
-
-      size = 0;
-      plane_count = cv->CVPixelBufferGetPlaneCount (pixel_buf);
-      for (plane_idx = 0; plane_idx != plane_count; plane_idx++) {
-        size += cv->CVPixelBufferGetBytesPerRowOfPlane (pixel_buf, plane_idx) *
-            cv->CVPixelBufferGetHeightOfPlane (pixel_buf, plane_idx);
-      }
-    } else {
-      data = cv->CVPixelBufferGetBaseAddress (pixel_buf);
-      size = cv->CVPixelBufferGetBytesPerRow (pixel_buf) *
-          cv->CVPixelBufferGetHeight (pixel_buf);
-    }
-  } else if (block_buf != NULL) {
-    status = cm->CMBlockBufferGetDataPointer (block_buf, 0, 0, 0, &data);
-    if (status != noErr)
-      goto error;
-    size = cm->CMBlockBufferGetDataLength (block_buf);
-  } else {
-    goto error;
-  }
-
-  buf = gst_buffer_new ();
-
-  meta = (GstCoreMediaMeta *) gst_buffer_add_meta (buf,
-      gst_core_media_meta_get_info (), NULL);
-  meta->ctx = g_object_ref (ctx);
-  meta->sample_buf = cm->FigSampleBufferRetain (sample_buf);
-  meta->image_buf = image_buf;
-  meta->pixel_buf = pixel_buf;
-  meta->block_buf = block_buf;
-
-  gst_buffer_append_memory (buf,
-      gst_memory_new_wrapped (GST_MEMORY_FLAG_NO_SHARE, data,
-          size, 0, size, NULL, NULL));
-
-  return buf;
-
-error:
-  return NULL;
-}
-
-CVPixelBufferRef
-gst_core_media_buffer_get_pixel_buffer (GstBuffer * buf)
-{
-  GstCoreMediaMeta *meta = (GstCoreMediaMeta *) gst_buffer_get_meta (buf,
-      GST_CORE_MEDIA_META_API_TYPE);
-  g_return_val_if_fail (meta != NULL, NULL);
-
-  return meta->ctx->cv->CVPixelBufferRetain (meta->pixel_buf);
-}
diff --git a/sys/applemedia-nonpublic/coremediabuffer.h b/sys/applemedia-nonpublic/coremediabuffer.h
deleted file mode 100644
index dffb43f..0000000
--- a/sys/applemedia-nonpublic/coremediabuffer.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2009 Ole André Vadla Ravnås <oleavr@soundrop.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_CORE_MEDIA_BUFFER_H__
-#define __GST_CORE_MEDIA_BUFFER_H__
-
-#include <gst/gst.h>
-
-#include "coremediactx.h"
-
-G_BEGIN_DECLS
-
-#define GST_CORE_MEDIA_META_API_TYPE (gst_core_media_meta_api_get_type())
-#define gst_buffer_get_core_media_meta(b) \
-  ((GstCoreMediaMeta*)gst_buffer_get_meta((b),GST_CORE_MEDIA_META_API_TYPE))
-
-typedef struct _GstCoreMediaMeta
-{
-  GstMeta meta;
-
-  GstCoreMediaCtx * ctx;
-  CMSampleBufferRef sample_buf;
-  CVImageBufferRef image_buf;
-  CVPixelBufferRef pixel_buf;
-  CMBlockBufferRef block_buf;
-} GstCoreMediaMeta;
-
-
-GstBuffer * gst_core_media_buffer_new      (GstCoreMediaCtx * ctx,
-                                            CMSampleBufferRef sample_buf);
-CVPixelBufferRef gst_core_media_buffer_get_pixel_buffer
-                                           (GstBuffer * buf);
-GType gst_core_media_meta_api_get_type (void);
-
-G_END_DECLS
-
-#endif /* __GST_CORE_MEDIA_BUFFER_H__ */
diff --git a/sys/applemedia-nonpublic/coremediactx.c b/sys/applemedia-nonpublic/coremediactx.c
deleted file mode 100644
index 2890205..0000000
--- a/sys/applemedia-nonpublic/coremediactx.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "coremediactx.h"
-
-#include <gst/gst.h>
-
-typedef struct _GstApiProvider GstApiProvider;
-
-typedef gpointer (*GstApiProviderObtainFunc) (GError ** error);
-
-struct _GstApiProvider
-{
-  GstCoreMediaApi api;
-  GstApiProviderObtainFunc obtain;
-  guint offset;
-};
-
-#define API_PROVIDER(AN, a_n) \
-  { GST_API_##AN, (GstApiProviderObtainFunc) gst_##a_n##_api_obtain, \
-    G_STRUCT_OFFSET (GstCoreMediaCtx, a_n) }
-
-static const GstApiProvider api_provider[] = {
-  API_PROVIDER (CORE_VIDEO, cv),
-  API_PROVIDER (CORE_MEDIA, cm),
-#ifdef HAVE_IOS
-#if 0
-  API_PROVIDER (MEDIA_TOOLBOX, mt),
-  API_PROVIDER (CELESTIAL, cel)
-#endif
-#else
-  API_PROVIDER (MIO, mio),
-#endif
-};
-
-G_DEFINE_TYPE (GstCoreMediaCtx, gst_core_media_ctx, G_TYPE_OBJECT);
-
-static void
-gst_core_media_ctx_init (GstCoreMediaCtx * self)
-{
-}
-
-static void
-gst_core_media_ctx_dispose (GObject * object)
-{
-  GstCoreMediaCtx *self = GST_CORE_MEDIA_CTX_CAST (object);
-  guint i;
-
-  for (i = 0; i != G_N_ELEMENTS (api_provider); i++) {
-    const GstApiProvider *ap = &api_provider[i];
-    gpointer *api_ptr = (gpointer *) ((guint8 *) self + ap->offset);
-
-    if (*api_ptr != NULL) {
-      g_object_unref (*api_ptr);
-      *api_ptr = NULL;
-    }
-  }
-
-  G_OBJECT_CLASS (gst_core_media_ctx_parent_class)->dispose (object);
-}
-
-static void
-gst_core_media_ctx_class_init (GstCoreMediaCtxClass * klass)
-{
-  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
-  gobject_class->dispose = gst_core_media_ctx_dispose;
-}
-
-GstCoreMediaCtx *
-gst_core_media_ctx_new (GstCoreMediaApi required_apis, GError ** error)
-{
-  GstCoreMediaCtx *ctx;
-  GArray *error_messages;
-  guint i;
-
-  ctx = g_object_new (GST_TYPE_CORE_MEDIA_CTX, NULL);
-
-  error_messages = g_array_new (TRUE, FALSE, sizeof (gchar *));
-
-  for (i = 0; i != G_N_ELEMENTS (api_provider); i++) {
-    const GstApiProvider *ap = &api_provider[i];
-
-    if ((required_apis & ap->api) != 0) {
-      gpointer *api_ptr = (gpointer *) ((guint8 *) ctx + ap->offset);
-      GError *tmp_error = NULL;
-
-      *api_ptr = ap->obtain (&tmp_error);
-      if (tmp_error != NULL) {
-        gchar *message_copy = g_strdup (tmp_error->message);
-        g_array_append_val (error_messages, message_copy);
-        g_clear_error (&tmp_error);
-      }
-    }
-  }
-
-  if (error_messages->len != 0) {
-    gchar *errors_joined;
-
-    errors_joined = g_strjoinv ("\n\t* ", (gchar **) error_messages->data);
-    g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_FAILED,
-        "Could not obtain required API%s:%s%s",
-        (error_messages->len == 1) ? "" : "s",
-        (error_messages->len == 1) ? " " : "\n\t* ", errors_joined);
-    g_free (errors_joined);
-
-    g_object_unref (ctx);
-    ctx = NULL;
-  }
-
-  for (i = 0; i != error_messages->len; i++)
-    g_free (g_array_index (error_messages, gchar *, i));
-  g_array_free (error_messages, TRUE);
-
-  return ctx;
-}
diff --git a/sys/applemedia-nonpublic/coremediactx.h b/sys/applemedia-nonpublic/coremediactx.h
deleted file mode 100644
index 45640bd..0000000
--- a/sys/applemedia-nonpublic/coremediactx.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_CORE_MEDIA_CTX_H__
-#define __GST_CORE_MEDIA_CTX_H__
-
-#include "cvapi.h"
-#include "cmapi.h"
-
-#include "mioapi.h"
-
-#include "mtapi.h"
-#include "celapi.h"
-
-#include <glib.h>
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_CORE_MEDIA_CTX \
-  (gst_core_media_ctx_get_type ())
-#define GST_CORE_MEDIA_CTX(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_CORE_MEDIA_CTX, GstCoreMediaCtx))
-#define GST_CORE_MEDIA_CTX_CAST(obj) \
-  ((GstCoreMediaCtx *) (obj))
-#define GST_CORE_MEDIA_CTX_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_CORE_MEDIA_CTX, GstCoreMediaCtxClass))
-#define GST_IS_CORE_MEDIA_CTX(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_CORE_MEDIA_CTX))
-#define GST_IS_CORE_MEDIA_CTX_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_CORE_MEDIA_CTX))
-
-typedef struct _GstCoreMediaCtx GstCoreMediaCtx;
-typedef struct _GstCoreMediaCtxClass GstCoreMediaCtxClass;
-
-typedef enum _GstCoreMediaApi GstCoreMediaApi;
-
-struct _GstCoreMediaCtx
-{
-  GObject parent;
-
-  /* Common */
-  GstCVApi *cv;
-  GstCMApi *cm;
-
-  /* OS X */
-  GstMIOApi *mio;
-
-  /* iPhone */
-  GstMTApi *mt;
-  GstCelApi *cel;
-};
-
-struct _GstCoreMediaCtxClass
-{
-  GObjectClass parent_class;
-};
-
-enum _GstCoreMediaApi
-{
-  GST_API_CORE_VIDEO    = (1 << 0),
-  GST_API_CORE_MEDIA    = (1 << 1),
-  GST_API_VIDEO_TOOLBOX = (1 << 2),
-
-  GST_API_MIO           = (1 << 3),
-
-  GST_API_MEDIA_TOOLBOX = (1 << 4),
-  GST_API_CELESTIAL     = (1 << 5)
-};
-
-GType gst_core_media_ctx_get_type (void);
-
-GstCoreMediaCtx * gst_core_media_ctx_new (GstCoreMediaApi required_apis,
-    GError ** error);
-
-G_END_DECLS
-
-#endif
diff --git a/sys/applemedia-nonpublic/corevideobuffer.c b/sys/applemedia-nonpublic/corevideobuffer.c
deleted file mode 100644
index 072fe6b..0000000
--- a/sys/applemedia-nonpublic/corevideobuffer.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "corevideobuffer.h"
-
-static void
-gst_core_video_meta_free (GstCoreVideoMeta * meta, GstBuffer * buf)
-{
-  GstCVApi *cv = meta->ctx->cv;
-
-  if (meta->pixbuf != NULL) {
-    cv->CVPixelBufferUnlockBaseAddress (meta->pixbuf,
-        kCVPixelBufferLock_ReadOnly);
-  }
-
-  cv->CVBufferRelease (meta->cvbuf);
-  g_object_unref (meta->ctx);
-}
-
-GType
-gst_core_video_meta_api_get_type (void)
-{
-  static volatile GType type;
-  static const gchar *tags[] = { "memory", NULL };
-
-  if (g_once_init_enter (&type)) {
-    GType _type = gst_meta_api_type_register ("GstCoreVideoMetaAPI", tags);
-    g_once_init_leave (&type, _type);
-  }
-  return type;
-}
-
-static const GstMetaInfo *
-gst_core_video_meta_get_info (void)
-{
-  static const GstMetaInfo *core_video_meta_info = NULL;
-
-  if (g_once_init_enter (&core_video_meta_info)) {
-    const GstMetaInfo *meta = gst_meta_register (GST_CORE_VIDEO_META_API_TYPE,
-        "GstCoreVideoMeta", sizeof (GstCoreVideoMeta),
-        (GstMetaInitFunction) NULL,
-        (GstMetaFreeFunction) gst_core_video_meta_free,
-        (GstMetaTransformFunction) NULL);
-    g_once_init_leave (&core_video_meta_info, meta);
-  }
-  return core_video_meta_info;
-}
-
-GstBuffer *
-gst_core_video_buffer_new (GstCoreMediaCtx * ctx, CVBufferRef cvbuf,
-    GstVideoInfo * vinfo)
-{
-  GstCVApi *cv = ctx->cv;
-  void *data;
-  size_t size;
-  CVPixelBufferRef pixbuf = NULL;
-  GstBuffer *buf;
-  GstCoreVideoMeta *meta;
-  guint width, height, n_planes, i;
-  gsize offset[GST_VIDEO_MAX_PLANES];
-  gint stride[GST_VIDEO_MAX_PLANES];
-
-  if (CFGetTypeID (cvbuf) != cv->CVPixelBufferGetTypeID ())
-    /* TODO: Do we need to handle other buffer types? */
-    goto error;
-
-  pixbuf = (CVPixelBufferRef) cvbuf;
-
-  if (cv->CVPixelBufferLockBaseAddress (pixbuf,
-          kCVPixelBufferLock_ReadOnly) != kCVReturnSuccess) {
-    goto error;
-  }
-
-  buf = gst_buffer_new ();
-
-  /* add the corevideo meta to free the underlying corevideo buffer */
-  meta = (GstCoreVideoMeta *) gst_buffer_add_meta (buf,
-      gst_core_video_meta_get_info (), NULL);
-  meta->ctx = g_object_ref (ctx);
-  meta->cvbuf = cv->CVBufferRetain (cvbuf);
-  meta->pixbuf = pixbuf;
-
-  /* set stride, offset and size */
-  memset (&offset, 0, sizeof (offset));
-  memset (&stride, 0, sizeof (stride));
-
-  data = cv->CVPixelBufferGetBaseAddress (pixbuf);
-  height = cv->CVPixelBufferGetHeight (pixbuf);
-  if (cv->CVPixelBufferIsPlanar (pixbuf)) {
-    GstVideoInfo tmp_vinfo;
-
-    n_planes = cv->CVPixelBufferGetPlaneCount (pixbuf);
-    for (i = 0; i < n_planes; ++i)
-      stride[i] = cv->CVPixelBufferGetBytesPerRowOfPlane (pixbuf, i);
-
-    /* FIXME: don't hardcode NV12 */
-    gst_video_info_init (&tmp_vinfo);
-    gst_video_info_set_format (&tmp_vinfo,
-        GST_VIDEO_FORMAT_NV12, stride[0], height);
-    offset[1] = tmp_vinfo.offset[1];
-    size = tmp_vinfo.size;
-  } else {
-    n_planes = 1;
-    size = cv->CVPixelBufferGetBytesPerRow (pixbuf) * height;
-  }
-
-  gst_buffer_append_memory (buf,
-      gst_memory_new_wrapped (GST_MEMORY_FLAG_NO_SHARE, data,
-          size, 0, size, NULL, NULL));
-
-  if (vinfo) {
-    GstVideoMeta *video_meta;
-
-    width = vinfo->width;
-    video_meta =
-        gst_buffer_add_video_meta_full (buf, GST_VIDEO_FRAME_FLAG_NONE,
-        GST_VIDEO_FORMAT_NV12, width, height, n_planes, offset, stride);
-  }
-
-  return buf;
-
-error:
-  return NULL;
-}
diff --git a/sys/applemedia-nonpublic/corevideobuffer.h b/sys/applemedia-nonpublic/corevideobuffer.h
deleted file mode 100644
index 844d655..0000000
--- a/sys/applemedia-nonpublic/corevideobuffer.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_CORE_VIDEO_BUFFER_H__
-#define __GST_CORE_VIDEO_BUFFER_H__
-
-#include <gst/gst.h>
-#include <gst/video/video.h>
-#include <gst/video/gstvideometa.h>
-
-#include "coremediactx.h"
-
-G_BEGIN_DECLS
-
-#define GST_CORE_VIDEO_META_API_TYPE (gst_core_video_meta_api_get_type())
-#define gst_buffer_get_core_video_meta(b) \
-  ((GstCoreVideoMeta*)gst_buffer_get_meta((b),GST_CORE_VIDEO_META_API_TYPE))
-
-typedef struct _GstCoreVideoMeta
-{
-  GstMeta meta;
-
-  GstCoreMediaCtx *ctx;
-  CVBufferRef cvbuf;
-  CVPixelBufferRef pixbuf;
-} GstCoreVideoMeta;
-
-GstBuffer * gst_core_video_buffer_new      (GstCoreMediaCtx * ctx,
-                                            CVBufferRef cvbuf,
-                                            GstVideoInfo *info);
-GType gst_core_video_meta_api_get_type (void);
-
-G_END_DECLS
-
-#endif /* __GST_CORE_VIDEO_BUFFER_H__ */
diff --git a/sys/applemedia-nonpublic/cvapi.c b/sys/applemedia-nonpublic/cvapi.c
deleted file mode 100644
index 998428a..0000000
--- a/sys/applemedia-nonpublic/cvapi.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "cvapi.h"
-
-#include "dynapi-internal.h"
-
-#define CV_FRAMEWORK_PATH "/System/Library/Frameworks/CoreVideo.framework/" \
-    "CoreVideo"
-
-G_DEFINE_TYPE (GstCVApi, gst_cv_api, GST_TYPE_DYN_API);
-
-static void
-gst_cv_api_init (GstCVApi * self)
-{
-}
-
-static void
-gst_cv_api_class_init (GstCVApiClass * klass)
-{
-}
-
-#define SYM_SPEC(name) GST_DYN_SYM_SPEC (GstCVApi, name)
-#define SYM_SPEC_OPTIONAL(name) GST_DYN_SYM_SPEC_OPTIONAL (GstCVApi, name)
-
-GstCVApi *
-gst_cv_api_obtain (GError ** error)
-{
-  static const GstDynSymSpec symbols[] = {
-    SYM_SPEC (CVBufferRelease),
-    SYM_SPEC (CVBufferRetain),
-
-    SYM_SPEC (CVPixelBufferCreateWithBytes),
-    SYM_SPEC (CVPixelBufferCreateWithPlanarBytes),
-    SYM_SPEC (CVPixelBufferGetBaseAddress),
-    SYM_SPEC (CVPixelBufferGetBaseAddressOfPlane),
-    SYM_SPEC (CVPixelBufferGetBytesPerRow),
-    SYM_SPEC (CVPixelBufferGetBytesPerRowOfPlane),
-    SYM_SPEC (CVPixelBufferGetHeight),
-    SYM_SPEC (CVPixelBufferGetHeightOfPlane),
-    SYM_SPEC_OPTIONAL (CVPixelBufferGetIOSurface),
-    SYM_SPEC (CVPixelBufferGetPlaneCount),
-    SYM_SPEC (CVPixelBufferGetTypeID),
-    SYM_SPEC (CVPixelBufferIsPlanar),
-    SYM_SPEC (CVPixelBufferLockBaseAddress),
-    SYM_SPEC (CVPixelBufferRelease),
-    SYM_SPEC (CVPixelBufferRetain),
-    SYM_SPEC (CVPixelBufferUnlockBaseAddress),
-
-    SYM_SPEC (kCVPixelBufferPixelFormatTypeKey),
-    SYM_SPEC (kCVPixelBufferWidthKey),
-    SYM_SPEC (kCVPixelBufferHeightKey),
-    SYM_SPEC (kCVPixelBufferBytesPerRowAlignmentKey),
-    SYM_SPEC (kCVPixelBufferPlaneAlignmentKey),
-
-    {NULL, 0},
-  };
-
-  return _gst_dyn_api_new (gst_cv_api_get_type (), CV_FRAMEWORK_PATH, symbols,
-      error);
-}
diff --git a/sys/applemedia-nonpublic/cvapi.h b/sys/applemedia-nonpublic/cvapi.h
deleted file mode 100644
index 63c8cba..0000000
--- a/sys/applemedia-nonpublic/cvapi.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_CV_API_H__
-#define __GST_CV_API_H__
-
-#include "dynapi.h"
-
-#include <CoreFoundation/CoreFoundation.h>
-
-G_BEGIN_DECLS
-
-typedef struct _GstCVApi GstCVApi;
-typedef struct _GstCVApiClass GstCVApiClass;
-
-typedef int32_t CVReturn;
-
-typedef uint64_t CVOptionFlags;
-
-typedef struct _CVBuffer * CVBufferRef;
-typedef CVBufferRef CVImageBufferRef;
-typedef CVImageBufferRef CVPixelBufferRef;
-
-typedef void (* CVPixelBufferReleaseBytesCallback) (void * releaseRefCon,
-    const void * baseAddress);
-
-enum _CVReturn
-{
-  kCVReturnSuccess = 0
-};
-
-enum _CVPixelFormatType
-{
-  kCVPixelFormatType_420YpCbCr8Planar             = 'y420',
-  kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange = '420v',
-  kCVPixelFormatType_422YpCbCr8Deprecated         = 'yuvs',
-  kCVPixelFormatType_422YpCbCr8                   = '2vuy'
-};
-
-enum _CVPixelBufferLockFlags
-{
-  kCVPixelBufferLock_ReadOnly = 0x00000001
-};
-
-struct _GstCVApi
-{
-  GstDynApi parent;
-
-  void (* CVBufferRelease) (CVBufferRef buffer);
-  CVBufferRef (* CVBufferRetain) (CVBufferRef buffer);
-
-  CVReturn (* CVPixelBufferCreateWithBytes)
-      (CFAllocatorRef allocator, size_t width, size_t height,
-      OSType pixelFormatType, void * baseAddress, size_t bytesPerRow,
-      CVPixelBufferReleaseBytesCallback releaseCallback,
-      void * releaseRefCon, CFDictionaryRef pixelBufferAttributes,
-      CVPixelBufferRef * pixelBufferOut);
-  CVReturn (* CVPixelBufferCreateWithPlanarBytes)
-      (CFAllocatorRef allocator, size_t width, size_t height,
-      OSType pixelFormatType, void * dataPtr, size_t dataSize,
-      size_t numberOfPlanes, void *planeBaseAddress[],
-      size_t planeWidth[], size_t planeHeight[],
-      size_t planeBytesPerRow[],
-      CVPixelBufferReleaseBytesCallback releaseCallback,
-      void * releaseRefCon, CFDictionaryRef pixelBufferAttributes,
-      CVPixelBufferRef * pixelBufferOut);
-  void * (* CVPixelBufferGetBaseAddress)
-      (CVPixelBufferRef pixelBuffer);
-  void * (* CVPixelBufferGetBaseAddressOfPlane)
-      (CVPixelBufferRef pixelBuffer, size_t planeIndex);
-  size_t (* CVPixelBufferGetBytesPerRow)
-      (CVPixelBufferRef pixelBuffer);
-  size_t (* CVPixelBufferGetBytesPerRowOfPlane)
-      (CVPixelBufferRef pixelBuffer, size_t planeIndex);
-  size_t (* CVPixelBufferGetHeight) (CVPixelBufferRef pixelBuffer);
-  size_t (* CVPixelBufferGetHeightOfPlane)
-      (CVPixelBufferRef pixelBuffer, size_t planeIndex);
-  void * (* CVPixelBufferGetIOSurface)
-      (CVPixelBufferRef pixelBuffer);
-  size_t (* CVPixelBufferGetPlaneCount)
-      (CVPixelBufferRef pixelBuffer);
-  CFTypeID (* CVPixelBufferGetTypeID) (void);
-  Boolean (* CVPixelBufferIsPlanar) (CVPixelBufferRef pixelBuffer);
-  CVReturn (* CVPixelBufferLockBaseAddress)
-      (CVPixelBufferRef pixelBuffer, CVOptionFlags lockFlags);
-  void (* CVPixelBufferRelease) (CVPixelBufferRef pixelBuffer);
-  CVPixelBufferRef (* CVPixelBufferRetain)
-      (CVPixelBufferRef pixelBuffer);
-  CVReturn (* CVPixelBufferUnlockBaseAddress)
-      (CVPixelBufferRef pixelBuffer, CVOptionFlags unlockFlags);
-
-  CFStringRef * kCVPixelBufferPixelFormatTypeKey;
-  CFStringRef * kCVPixelBufferWidthKey;
-  CFStringRef * kCVPixelBufferHeightKey;
-  CFStringRef * kCVPixelBufferBytesPerRowAlignmentKey;
-  CFStringRef * kCVPixelBufferPlaneAlignmentKey;
-};
-
-struct _GstCVApiClass
-{
-  GstDynApiClass parent_class;
-};
-
-GType gst_cv_api_get_type (void);
-
-GstCVApi * gst_cv_api_obtain (GError ** error);
-
-G_END_DECLS
-
-#endif
diff --git a/sys/applemedia-nonpublic/dynapi-internal.h b/sys/applemedia-nonpublic/dynapi-internal.h
deleted file mode 100644
index adcd4f1..0000000
--- a/sys/applemedia-nonpublic/dynapi-internal.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_DYN_API_INTERNAL_H__
-#define __GST_DYN_API_INTERNAL_H__
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-typedef struct _GstDynSymSpec       GstDynSymSpec;
-
-struct _GstDynSymSpec
-{
-  const gchar * name;
-  guint offset;
-  gboolean is_required;
-};
-
-gpointer _gst_dyn_api_new (GType derived_type, const gchar * filename,
-    const GstDynSymSpec * symbols, GError ** error);
-
-G_END_DECLS
-
-#endif
-
diff --git a/sys/applemedia-nonpublic/dynapi.c b/sys/applemedia-nonpublic/dynapi.c
deleted file mode 100644
index 2317f80..0000000
--- a/sys/applemedia-nonpublic/dynapi.c
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "dynapi.h"
-
-#include "dynapi-internal.h"
-
-#include <gmodule.h>
-#include <gst/gst.h>
-
-GST_DEBUG_CATEGORY (gst_dyn_api_debug);
-#define GST_CAT_DEFAULT gst_dyn_api_debug
-
-enum
-{
-  PROP_0,
-  PROP_FILENAME
-};
-
-struct _GstDynApiPrivate
-{
-  gchar *filename;
-  GModule *module;
-};
-
-G_DEFINE_TYPE (GstDynApi, gst_dyn_api, G_TYPE_OBJECT);
-
-static void
-gst_dyn_api_init (GstDynApi * self)
-{
-  self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, GST_TYPE_DYN_API,
-      GstDynApiPrivate);
-}
-
-static void
-gst_dyn_api_dispose (GObject * object)
-{
-  GstDynApi *self = GST_DYN_API_CAST (object);
-  GstDynApiPrivate *priv = self->priv;
-
-  if (priv->module != NULL) {
-    g_module_close (priv->module);
-    priv->module = NULL;
-  }
-
-  G_OBJECT_CLASS (gst_dyn_api_parent_class)->dispose (object);
-}
-
-static void
-gst_dyn_api_finalize (GObject * object)
-{
-  GstDynApi *self = GST_DYN_API_CAST (object);
-  GstDynApiPrivate *priv = self->priv;
-
-  g_free (priv->filename);
-
-  G_OBJECT_CLASS (gst_dyn_api_parent_class)->finalize (object);
-}
-
-static void
-gst_dyn_api_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec)
-{
-  GstDynApi *self = GST_DYN_API (object);
-
-  switch (prop_id) {
-    case PROP_FILENAME:
-      g_value_set_string (value, self->priv->filename);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
-}
-
-static void
-gst_dyn_api_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec)
-{
-  GstDynApi *self = GST_DYN_API (object);
-
-  switch (prop_id) {
-    case PROP_FILENAME:
-      g_free (self->priv->filename);
-      self->priv->filename = g_value_dup_string (value);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
-}
-
-static void
-gst_dyn_api_class_init (GstDynApiClass * klass)
-{
-  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
-  gobject_class->dispose = gst_dyn_api_dispose;
-  gobject_class->finalize = gst_dyn_api_finalize;
-  gobject_class->get_property = gst_dyn_api_get_property;
-  gobject_class->set_property = gst_dyn_api_set_property;
-
-  g_type_class_add_private (klass, sizeof (GstDynApiPrivate));
-
-  g_object_class_install_property (gobject_class, PROP_FILENAME,
-      g_param_spec_string ("filename", "Filename", "Filename", NULL,
-          G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
-}
-
-gpointer
-_gst_dyn_api_new (GType derived_type, const gchar * filename,
-    const GstDynSymSpec * symbols, GError ** error)
-{
-  GstDynApi *api;
-  GstDynApiPrivate *priv;
-  guint i;
-  GArray *names_not_found;
-
-  api = g_object_new (derived_type, "filename", filename, NULL);
-  priv = api->priv;
-
-  priv->module = g_module_open (priv->filename, 0);
-  if (priv->module == NULL)
-    goto open_failed;
-
-  names_not_found = g_array_new (TRUE, FALSE, sizeof (gchar *));
-
-  for (i = 0; symbols[i].name != NULL; i++) {
-    const GstDynSymSpec *s = &symbols[i];
-    if (!g_module_symbol (priv->module, s->name,
-            (gpointer *) (((guint8 *) api) + s->offset)) && s->is_required) {
-      g_array_append_val (names_not_found, s->name);
-    }
-  }
-
-  if (names_not_found->len > 0)
-    goto one_or_more_name_not_found;
-
-  g_array_free (names_not_found, TRUE);
-
-  return api;
-
-  /* ERRORS */
-open_failed:
-  {
-    gchar *basename;
-
-    basename = g_path_get_basename (filename);
-    g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_FAILED,
-        "failed to open %s", basename);
-    g_free (basename);
-
-    goto any_error;
-  }
-one_or_more_name_not_found:
-  {
-    gchar *basename, *names_joined;
-
-    basename = g_path_get_basename (filename);
-    names_joined = g_strjoinv (", ", (gchar **) names_not_found->data);
-    g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_FAILED,
-        "missing %u symbol%s in %s: %s",
-        names_not_found->len, (names_not_found->len == 1) ? "" : "s",
-        basename, names_joined);
-    g_free (names_joined);
-    g_free (basename);
-    g_array_free (names_not_found, TRUE);
-
-    goto any_error;
-  }
-any_error:
-  {
-    g_object_unref (api);
-
-    return NULL;
-  }
-}
diff --git a/sys/applemedia-nonpublic/dynapi.h b/sys/applemedia-nonpublic/dynapi.h
deleted file mode 100644
index b8eda85..0000000
--- a/sys/applemedia-nonpublic/dynapi.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_DYN_API_H__
-#define __GST_DYN_API_H__
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_DYN_API \
-  (gst_dyn_api_get_type ())
-#define GST_DYN_API(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_DYN_API, GstDynApi))
-#define GST_DYN_API_CAST(obj) \
-  ((GstDynApi *) (obj))
-#define GST_DYN_API_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_DYN_API, GstDynApiClass))
-#define GST_IS_DYN_API(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_DYN_API))
-#define GST_IS_DYN_API_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_DYN_API))
-
-#define GST_DYN_SYM_SPEC(type, name) \
-  { G_STRINGIFY (name), G_STRUCT_OFFSET (type, name), TRUE }
-#define GST_DYN_SYM_SPEC_OPTIONAL(type, name) \
-  { G_STRINGIFY (name), G_STRUCT_OFFSET (type, name), FALSE }
-
-typedef struct _GstDynApi GstDynApi;
-typedef struct _GstDynApiClass GstDynApiClass;
-typedef struct _GstDynApiPrivate GstDynApiPrivate;
-
-struct _GstDynApi
-{
-  GObject parent;
-
-  GstDynApiPrivate * priv;
-};
-
-struct _GstDynApiClass
-{
-  GObjectClass parent_class;
-};
-
-GType gst_dyn_api_get_type (void);
-
-G_END_DECLS
-
-#endif
diff --git a/sys/applemedia-nonpublic/mioapi.c b/sys/applemedia-nonpublic/mioapi.c
deleted file mode 100644
index 30d3d35..0000000
--- a/sys/applemedia-nonpublic/mioapi.c
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "mioapi.h"
-
-#include "dynapi-internal.h"
-
-#define MIO_FRAMEWORK_PATH "/System/Library/PrivateFrameworks/" \
-    "CoreMediaIOServices.framework/CoreMediaIOServices"
-
-GType gst_mio_api_get_type (void);
-
-G_DEFINE_TYPE (GstMIOApi, gst_mio_api, GST_TYPE_DYN_API);
-
-static void
-gst_mio_api_init (GstMIOApi * self)
-{
-}
-
-static void
-gst_mio_api_class_init (GstMIOApiClass * klass)
-{
-}
-
-#define SYM_SPEC(name) GST_DYN_SYM_SPEC (GstMIOApi, name)
-
-GstMIOApi *
-gst_mio_api_obtain (GError ** error)
-{
-  static const GstDynSymSpec symbols[] = {
-    SYM_SPEC (TundraGraphCreate),
-    SYM_SPEC (TundraGraphRelease),
-    SYM_SPEC (TundraGraphCreateNode),
-    SYM_SPEC (TundraGraphGetNodeInfo),
-    SYM_SPEC (TundraGraphSetProperty),
-    SYM_SPEC (TundraGraphConnectNodeInput),
-    SYM_SPEC (TundraGraphInitialize),
-    SYM_SPEC (TundraGraphUninitialize),
-    SYM_SPEC (TundraGraphStart),
-    SYM_SPEC (TundraGraphStop),
-
-    SYM_SPEC (TundraObjectGetPropertyDataSize),
-    SYM_SPEC (TundraObjectGetPropertyData),
-    SYM_SPEC (TundraObjectIsPropertySettable),
-    SYM_SPEC (TundraObjectSetPropertyData),
-
-    SYM_SPEC (kTundraSampleBufferAttachmentKey_SequenceNumber),
-    SYM_SPEC (kTundraSampleBufferAttachmentKey_HostTime),
-
-    {NULL, 0},
-  };
-
-  return _gst_dyn_api_new (gst_mio_api_get_type (), MIO_FRAMEWORK_PATH, symbols,
-      error);
-}
-
-gpointer
-gst_mio_object_get_pointer (gint obj, TundraTargetSpec * pspec, GstMIOApi * mio)
-{
-  gpointer ptr;
-  guint sz;
-  TundraStatus status;
-
-  sz = sizeof (ptr);
-  status = mio->TundraObjectGetPropertyData (obj, pspec, 0, NULL, &sz, &ptr);
-  if (status != kTundraSuccess)
-    goto error;
-
-  return ptr;
-
-error:
-  return NULL;
-}
-
-gchar *
-gst_mio_object_get_string (gint obj, TundraTargetSpec * pspec, GstMIOApi * mio)
-{
-  gchar *result = NULL;
-  CFStringRef str;
-  guint size;
-  TundraStatus status;
-  CFRange range;
-
-  size = sizeof (str);
-  status = mio->TundraObjectGetPropertyData (obj, pspec, 0, NULL, &size, &str);
-  if (status != kTundraSuccess)
-    goto error;
-
-  range.location = 0;
-  range.length = CFStringGetLength (str);
-  result = g_malloc0 (range.length + 1);
-  CFStringGetBytes (str, range, kCFStringEncodingUTF8, 0, FALSE,
-      (UInt8 *) result, range.length, NULL);
-  CFRelease (str);
-
-  return result;
-
-error:
-  return NULL;
-}
-
-guint32
-gst_mio_object_get_uint32 (gint obj, TundraTargetSpec * pspec, GstMIOApi * mio)
-{
-  guint32 val;
-  guint size;
-  TundraStatus status;
-
-  size = sizeof (val);
-  status = mio->TundraObjectGetPropertyData (obj, pspec, 0, NULL, &size, &val);
-  if (status != kTundraSuccess)
-    goto error;
-
-  return val;
-
-error:
-  return 0;
-}
-
-GArray *
-gst_mio_object_get_array (gint obj, TundraTargetSpec * pspec,
-    guint element_size, GstMIOApi * mio)
-{
-  return gst_mio_object_get_array_full (obj, pspec, 0, NULL, element_size, mio);
-}
-
-GArray *
-gst_mio_object_get_array_full (gint obj, TundraTargetSpec * pspec,
-    guint ctx_size, gpointer ctx, guint element_size, GstMIOApi * mio)
-{
-  GArray *arr = NULL;
-  guint size, num_elements;
-  TundraStatus status;
-
-  status = mio->TundraObjectGetPropertyDataSize (obj, pspec, ctx_size, ctx,
-      &size);
-  if (status != kTundraSuccess)
-    goto error;
-  else if (size % element_size != 0)
-    goto error;
-
-  num_elements = size / element_size;
-  arr = g_array_sized_new (FALSE, TRUE, element_size, num_elements);
-  g_array_set_size (arr, num_elements);
-
-  status = mio->TundraObjectGetPropertyData (obj, pspec, ctx_size, ctx,
-      &size, arr->data);
-  if (status != kTundraSuccess)
-    goto error;
-
-  return arr;
-
-error:
-  if (arr != NULL)
-    g_array_free (arr, TRUE);
-  return NULL;
-}
-
-gchar *
-gst_mio_object_get_fourcc (gint obj, TundraTargetSpec * pspec, GstMIOApi * mio)
-{
-  guint32 fcc;
-  guint size;
-  TundraStatus status;
-
-  size = sizeof (fcc);
-  status = mio->TundraObjectGetPropertyData (obj, pspec, 0, NULL, &size, &fcc);
-  if (status != kTundraSuccess)
-    goto error;
-
-  return gst_mio_fourcc_to_string (fcc);
-
-error:
-  return NULL;
-}
-
-gpointer
-gst_mio_object_get_raw (gint obj, TundraTargetSpec * pspec, guint * size,
-    GstMIOApi * mio)
-{
-  gpointer data = NULL;
-  guint sz;
-  TundraStatus status;
-
-  status = mio->TundraObjectGetPropertyDataSize (obj, pspec, 0, NULL, &sz);
-  if (status != kTundraSuccess)
-    goto error;
-
-  data = g_malloc0 (sz);
-
-  status = mio->TundraObjectGetPropertyData (obj, pspec, 0, NULL, &sz, data);
-  if (status != kTundraSuccess)
-    goto error;
-
-  if (size != NULL)
-    *size = sz;
-  return data;
-
-error:
-  g_free (data);
-  if (size != NULL)
-    *size = 0;
-  return NULL;
-}
-
-gchar *
-gst_mio_fourcc_to_string (guint32 fcc)
-{
-  gchar *result;
-
-  result = g_malloc0 (5);
-  result[0] = (fcc >> 24) & 0xff;
-  result[1] = (fcc >> 16) & 0xff;
-  result[2] = (fcc >> 8) & 0xff;
-  result[3] = (fcc >> 0) & 0xff;
-
-  return result;
-}
diff --git a/sys/applemedia-nonpublic/mioapi.h b/sys/applemedia-nonpublic/mioapi.h
deleted file mode 100644
index fe2cbd8..0000000
--- a/sys/applemedia-nonpublic/mioapi.h
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_MIO_API_H__
-#define __GST_MIO_API_H__
-
-#include "cmapi.h"
-
-#include <CoreFoundation/CoreFoundation.h>
-
-G_BEGIN_DECLS
-
-typedef struct _GstMIOApi GstMIOApi;
-typedef struct _GstMIOApiClass GstMIOApiClass;
-
-#define TUNDRA_SYSTEM_OBJECT_ID 1
-
-typedef int TundraObjectID;
-typedef int TundraDeviceID;
-typedef int TundraUnitID;
-
-typedef enum _TundraStatus TundraStatus;
-typedef enum _TundraVendor TundraVendor;
-typedef enum _TundraScope TundraScope;
-typedef enum _TundraUnit TundraUnit;
-typedef enum _TundraProperty TundraProperty;
-
-typedef enum _TundraDeviceTransportType TundraDeviceTransportType;
-
-typedef struct _TundraTargetSpec TundraTargetSpec;
-typedef struct _TundraFramerate TundraFramerate;
-
-typedef struct _TundraGraph TundraGraph;
-typedef struct _TundraNode TundraNode;
-
-typedef struct _TundraOutputDelegate TundraOutputDelegate;
-
-enum _TundraStatus
-{
-  kTundraSuccess = 0,
-  kTundraNotSupported = -67456
-};
-
-enum _TundraVendor
-{
-  kTundraVendorApple = 'appl'
-};
-
-enum _TundraScope
-{
-  kTundraScopeGlobal = 'glob',
-  kTundraScopeDAL    = 'dal ',
-  kTundraScope2PRC   = '2prc', /* TODO: Investigate this one */
-  kTundraScopeInput  = 'inpt',
-  kTundraScopeVSyn   = 'vsyn'
-};
-
-enum _TundraUnit
-{
-  kTundraUnitInput  = 'tinp',
-  kTundraUnitOutput = 'tout',
-  kTundraUnitSync   = 'tefc'
-};
-
-enum _TundraProperty
-{
-  kTundraSystemPropertyDevices = 'dev#',
-
-  kTundraObjectPropertyClass = 'clas',
-  kTundraObjectPropertyCreator = 'oplg',
-  kTundraObjectPropertyName = 'lnam',
-  kTundraObjectPropertyUID = 'uid ',
-  kTundraObjectPropertyVendor = 'lmak',
-
-  kTundraDevicePropertyConfigApp = 'capp', /* CFString: com.apple.mediaio.TundraDeviceSetup */
-  kTundraDevicePropertyExclusiveMode = 'ixna',
-  kTundraDevicePropertyHogMode = 'oink',
-  kTundraDevicePropertyModelUID = 'muid',
-  kTundraDevicePropertyStreams = 'stm#',
-  kTundraDevicePropertySuspendedByUser = 'sbyu',
-  kTundraDevicePropertyTransportType = 'tran',
-
-  kTundraStreamPropertyFormatDescriptions = 'pfta',
-  kTundraStreamPropertyFormatDescription = 'pft ',
-  kTundraStreamPropertyFrameRates = 'nfr#',
-  kTundraStreamPropertyFrameRate = 'nfrt'
-};
-
-struct _TundraTargetSpec
-{
-  FourCharCode name;
-  FourCharCode scope;
-  FourCharCode vendor;
-  FourCharCode unk1;
-  FourCharCode unk2;
-};
-
-struct _TundraFramerate
-{
-  gdouble value;
-};
-
-enum _TundraUnitProperty
-{
-  kTundraInputPropertyDeviceID                = 302,
-
-  kTundraOutputPropertyDelegate               = 5903,
-
-  kTundraInputUnitProperty_SourcePath         = 6780,
-
-  kTundraSyncPropertyClockProvider            = 7100,
-  kTundraSyncPropertyMasterSynchronizer       = 7102,
-  kTundraSyncPropertySynchronizationDirection = 7104
-};
-
-enum _TundraDeviceTransportType
-{
-  kTundraDeviceTransportInvalid = 0,
-  kTundraDeviceTransportBuiltin = 'bltn',
-  kTundraDeviceTransportScreen  = 'scrn',
-  kTundraDeviceTransportUSB     = 'usb ',
-};
-
-typedef TundraStatus (* TundraOutputRenderFunc) (gpointer instance,
-    gpointer unk1, gpointer unk2, gpointer unk3, CMSampleBufferRef sampleBuf);
-typedef TundraStatus (* TundraOutputInitializeFunc) (gpointer instance);
-typedef TundraStatus (* TundraOutputUninitializeFunc) (gpointer instance);
-typedef TundraStatus (* TundraOutputStartFunc) (gpointer instance);
-typedef TundraStatus (* TundraOutputStopFunc) (gpointer instance);
-typedef TundraStatus (* TundraOutputResetFunc) (gpointer instance);
-typedef TundraStatus (* TundraOutputDeallocateFunc) (gpointer instance);
-typedef gboolean (* TundraOutputCanRenderNowFunc) (gpointer instance,
-    guint * unk);
-typedef CFArrayRef (* TundraOutputAvailableFormatsFunc) (gpointer instance,
-    gboolean ensureOnly);
-typedef TundraStatus (* TundraOutputCopyClockFunc) (gpointer instance);
-typedef TundraStatus (* TundraOutputGetPropertyInfoFunc) (gpointer instance,
-    guint propId);
-typedef TundraStatus (* TundraOutputGetPropertyFunc) (gpointer instance,
-    guint propId);
-typedef TundraStatus (* TundraOutputSetPropertyFunc) (gpointer instance,
-    guint propId);
-
-#pragma pack(push, 1)
-
-struct _TundraOutputDelegate
-{
-  int unk1;
-  gpointer instance;
-  TundraOutputRenderFunc Render;
-  TundraOutputInitializeFunc Initialize;
-  TundraOutputUninitializeFunc Uninitialize;
-  TundraOutputStartFunc Start;
-  TundraOutputStopFunc Stop;
-  TundraOutputResetFunc Reset;
-  TundraOutputDeallocateFunc Deallocate;
-  TundraOutputCanRenderNowFunc CanRenderNow;
-  TundraOutputAvailableFormatsFunc AvailableFormats;
-  TundraOutputCopyClockFunc CopyClock;
-  TundraOutputGetPropertyInfoFunc GetPropertyInfo;
-  TundraOutputGetPropertyFunc GetProperty;
-  TundraOutputSetPropertyFunc SetProperty;
-};
-
-#pragma pack(pop)
-
-struct _GstMIOApi
-{
-  GstDynApi parent;
-
-  TundraStatus (* TundraGraphCreate) (CFAllocatorRef allocator,
-      TundraGraph ** graph);
-  void (* TundraGraphRelease) (TundraGraph * graph);
-  TundraStatus (* TundraGraphCreateNode) (TundraGraph * graph,
-      gint nodeId, UInt32 unk1, UInt32 unk2, TundraTargetSpec * spec,
-      UInt32 unk3, TundraUnitID * node);
-  TundraStatus (* TundraGraphGetNodeInfo) (TundraGraph * graph,
-      gint nodeId, UInt32 unk1, UInt32 unk2, UInt32 unk3, UInt32 unk4,
-      gpointer * info);
-  TundraStatus (* TundraGraphSetProperty) (TundraGraph * graph,
-      gint nodeId, UInt32 unk1, guint propId, UInt32 unk2, UInt32 unk3,
-      gpointer data, guint size);
-  TundraStatus (* TundraGraphConnectNodeInput) (TundraGraph * graph,
-      TundraUnitID from_node, guint from_bus,
-      TundraUnitID to_node, guint to_bus);
-  TundraStatus (* TundraGraphInitialize) (TundraGraph * graph);
-  TundraStatus (* TundraGraphUninitialize) (TundraGraph * graph);
-  TundraStatus (* TundraGraphStart) (TundraGraph * graph);
-  TundraStatus (* TundraGraphStop) (TundraGraph * graph);
-
-  TundraStatus (* TundraObjectGetPropertyDataSize) (TundraObjectID obj,
-      TundraTargetSpec * spec, UInt32 contextSize, void * context, guint * size);
-  TundraStatus (* TundraObjectGetPropertyData) (TundraObjectID obj,
-      TundraTargetSpec * spec, UInt32 contextSize, void * context, guint * size,
-      gpointer data);
-  TundraStatus (* TundraObjectIsPropertySettable) (TundraObjectID obj,
-      TundraTargetSpec * spec, Boolean *isSettable);
-  TundraStatus (* TundraObjectSetPropertyData) (TundraObjectID obj,
-      TundraTargetSpec * spec, gpointer unk1, gpointer unk2, guint size,
-      gpointer data);
-
-  CFStringRef * kTundraSampleBufferAttachmentKey_SequenceNumber;
-  CFStringRef * kTundraSampleBufferAttachmentKey_HostTime;
-};
-
-struct _GstMIOApiClass
-{
-  GstDynApiClass parent_class;
-};
-
-GstMIOApi * gst_mio_api_obtain (GError ** error);
-
-gpointer gst_mio_object_get_pointer (gint obj, TundraTargetSpec * pspec,
-    GstMIOApi * mio);
-gchar * gst_mio_object_get_string (gint obj, TundraTargetSpec * pspec,
-    GstMIOApi * mio);
-guint32 gst_mio_object_get_uint32 (gint obj, TundraTargetSpec * pspec,
-    GstMIOApi * mio);
-gchar * gst_mio_object_get_fourcc (gint obj, TundraTargetSpec * pspec,
-    GstMIOApi * mio);
-GArray * gst_mio_object_get_array (gint obj, TundraTargetSpec * pspec,
-    guint element_size, GstMIOApi * mio);
-GArray * gst_mio_object_get_array_full (gint obj, TundraTargetSpec * pspec,
-    guint ctx_size, gpointer ctx, guint element_size, GstMIOApi * mio);
-gpointer gst_mio_object_get_raw (gint obj, TundraTargetSpec * pspec,
-    guint * size, GstMIOApi * mio);
-
-gchar * gst_mio_fourcc_to_string (guint32 fcc);
-
-G_END_DECLS
-
-#endif
diff --git a/sys/applemedia-nonpublic/miovideodevice.h b/sys/applemedia-nonpublic/miovideodevice.h
deleted file mode 100644
index 87b86f3..0000000
--- a/sys/applemedia-nonpublic/miovideodevice.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2009 Ole André Vadla Ravnås <oleavr@soundrop.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_MIO_VIDEO_DEVICE_H__
-#define __GST_MIO_VIDEO_DEVICE_H__
-
-#include <gst/gst.h>
-
-#include "coremediactx.h"
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_MIO_VIDEO_DEVICE \
-  (gst_mio_video_device_get_type ())
-#define GST_MIO_VIDEO_DEVICE(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_MIO_VIDEO_DEVICE, GstMIOVideoDevice))
-#define GST_MIO_VIDEO_DEVICE_CAST(obj) \
-  ((GstMIOVideoDevice *) (obj))
-#define GST_MIO_VIDEO_DEVICE_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_MIO_VIDEO_DEVICE, GstMIOVideoDeviceClass))
-#define GST_IS_MIO_VIDEO_DEVICE(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_MIO_VIDEO_DEVICE))
-#define GST_IS_MIO_VIDEO_DEVICE_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_MIO_VIDEO_DEVICE))
-
-typedef struct _GstMIOVideoDevice         GstMIOVideoDevice;
-typedef struct _GstMIOVideoDeviceClass    GstMIOVideoDeviceClass;
-
-struct _GstMIOVideoDevice
-{
-  GObject parent;
-
-  GstCoreMediaCtx *ctx;
-  TundraObjectID handle;
-
-  gchar *cached_uid;
-  gchar *cached_name;
-  TundraDeviceTransportType cached_transport;
-  GstCaps *cached_caps;
-  CMFormatDescriptionRef selected_format;
-  gint selected_fps_n, selected_fps_d;
-};
-
-struct _GstMIOVideoDeviceClass
-{
-  GObjectClass parent_class;
-};
-
-GType gst_mio_video_device_get_type (void);
-
-TundraObjectID gst_mio_video_device_get_handle (GstMIOVideoDevice * self);
-const gchar * gst_mio_video_device_get_uid (GstMIOVideoDevice * self);
-const gchar * gst_mio_video_device_get_name (GstMIOVideoDevice * self);
-TundraDeviceTransportType gst_mio_video_device_get_transport_type (
-    GstMIOVideoDevice * self);
-
-gboolean gst_mio_video_device_open (GstMIOVideoDevice * self);
-void gst_mio_video_device_close (GstMIOVideoDevice * self);
-
-GstCaps * gst_mio_video_device_get_available_caps (GstMIOVideoDevice * self);
-gboolean gst_mio_video_device_set_caps (GstMIOVideoDevice * self,
-    GstCaps * caps);
-CMFormatDescriptionRef gst_mio_video_device_get_selected_format (
-    GstMIOVideoDevice * self);
-GstClockTime gst_mio_video_device_get_duration (GstMIOVideoDevice * self);
-
-void gst_mio_video_device_print_debug_info (GstMIOVideoDevice * self);
-
-GList * gst_mio_video_device_list_create (GstCoreMediaCtx * ctx);
-void gst_mio_video_device_list_destroy (GList * devices);
-
-G_END_DECLS
-
-#endif /* __GST_MIO_VIDEO_DEVICE_H__ */
diff --git a/sys/applemedia-nonpublic/miovideosrc.h b/sys/applemedia-nonpublic/miovideosrc.h
deleted file mode 100644
index 3fe82e7..0000000
--- a/sys/applemedia-nonpublic/miovideosrc.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (C) 2009 Ole André Vadla Ravnås <oleavr@soundrop.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_MIO_VIDEO_SRC_H__
-#define __GST_MIO_VIDEO_SRC_H__
-
-#include <gst/base/gstpushsrc.h>
-
-#include "coremediactx.h"
-#include "miovideodevice.h"
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_MIO_VIDEO_SRC \
-  (gst_mio_video_src_get_type ())
-#define GST_MIO_VIDEO_SRC(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_MIO_VIDEO_SRC, GstMIOVideoSrc))
-#define GST_MIO_VIDEO_SRC_CAST(obj) \
-  ((GstMIOVideoSrc *) (obj))
-#define GST_MIO_VIDEO_SRC_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_MIO_VIDEO_SRC, GstMIOVideoSrcClass))
-#define GST_IS_MIO_VIDEO_SRC(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_MIO_VIDEO_SRC))
-#define GST_IS_MIO_VIDEO_SRC_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_MIO_VIDEO_SRC))
-
-typedef struct _GstMIOVideoSrc         GstMIOVideoSrc;
-typedef struct _GstMIOVideoSrcClass    GstMIOVideoSrcClass;
-
-struct _GstMIOVideoSrc
-{
-  GstPushSrc push_src;
-
-  gint cv_ratio_n;
-  gint cv_ratio_d;
-
-  gchar *device_uid;
-  gchar *device_name;
-  gint device_index;
-
-  GThread *dispatcher_thread;
-  GMainLoop *dispatcher_loop;
-  GMainContext *dispatcher_ctx;
-
-  GstCoreMediaCtx *ctx;
-  GstMIOVideoDevice *device;
-
-  TundraGraph *graph;
-
-  volatile gboolean running;
-  GQueue *queue;
-  GMutex *qlock;
-  GCond *qcond;
-  guint64 prev_offset;
-  CMFormatDescriptionRef prev_format;
-};
-
-struct _GstMIOVideoSrcClass
-{
-  GstPushSrcClass parent_class;
-};
-
-GType gst_mio_video_src_get_type (void);
-
-G_END_DECLS
-
-#endif /* __GST_MIO_VIDEO_SRC_H__ */
diff --git a/sys/applemedia-nonpublic/mtapi.h b/sys/applemedia-nonpublic/mtapi.h
deleted file mode 100644
index 91d90e9..0000000
--- a/sys/applemedia-nonpublic/mtapi.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_MT_API_H__
-#define __GST_MT_API_H__
-
-#include "cmapi.h"
-
-G_BEGIN_DECLS
-
-typedef struct _GstMTApi GstMTApi;
-typedef struct _GstMTApiClass GstMTApiClass;
-
-typedef struct _FigCaptureDevice * FigCaptureDeviceRef;
-typedef struct _FigCaptureStream * FigCaptureStreamRef;
-typedef struct _FigCaptureDeviceIface FigCaptureDeviceIface;
-typedef struct _FigCaptureStreamIface FigCaptureStreamIface;
-
-struct _FigCaptureDeviceIface
-{
-  gsize unk;
-  OSStatus (* Func1) (FigCaptureDeviceRef stream);
-};
-
-struct _FigCaptureStreamIface
-{
-  gsize unk;
-  OSStatus (* Start) (FigCaptureStreamRef stream);
-  OSStatus (* Stop) (FigCaptureStreamRef stream);
-};
-
-struct _GstMTApi
-{
-  GstDynApi parent;
-
-  FigBaseObjectRef (* FigCaptureDeviceGetFigBaseObject)
-    (FigCaptureDeviceRef device);
-  FigBaseObjectRef (* FigCaptureStreamGetFigBaseObject)
-    (FigCaptureStreamRef stream);
-
-  CFStringRef * kFigCaptureDeviceProperty_Clock;
-  CFStringRef * kFigCaptureDeviceProperty_StreamArray;
-  CFStringRef * kFigCaptureStreamProperty_AudioLevelArray;
-  CFStringRef * kFigCaptureStreamProperty_AudioLevelMeteringEnable;
-  CFStringRef * kFigCaptureStreamProperty_AudioLevelUnits;
-  CFStringRef * kFigCaptureStreamProperty_AutoAENow;
-  CFStringRef * kFigCaptureStreamProperty_AutoFocusNow;
-  CFStringRef * kFigCaptureStreamProperty_BufferAllocator;
-  CFStringRef * kFigCaptureStreamProperty_BufferQueue;
-  CFStringRef * kFigCaptureStreamProperty_FixedFrameRate;
-  CFStringRef * kFigCaptureStreamProperty_FormatDescription;
-  CFStringRef * kFigCaptureStreamProperty_FormatIndex;
-  CFStringRef * kFigCaptureStreamProperty_FrameDuration;
-  CFStringRef * kFigCaptureStreamProperty_MaximumFrameRate;
-  CFStringRef * kFigCaptureStreamProperty_MinimumFrameRate;
-  CFStringRef * kFigCaptureStreamProperty_NeedSampleBufferDurations;
-  CFStringRef * kFigCaptureStreamProperty_StillImageBufferQueue;
-  CFStringRef * kFigCaptureStreamProperty_StillImageCaptureNow;
-  CFStringRef * kFigCaptureStreamProperty_SupportedFormatsArray;
-  CFStringRef * kFigSupportedFormat_AudioMaxSampleRate;
-  CFStringRef * kFigSupportedFormat_AudioMinSampleRate;
-  CFStringRef * kFigSupportedFormat_FormatDescription;
-  CFStringRef * kFigSupportedFormat_VideoIsBinned;
-  CFStringRef * kFigSupportedFormat_VideoMaxFrameRate;
-  CFStringRef * kFigSupportedFormat_VideoMinFrameRate;
-  CFStringRef * kFigSupportedFormat_VideoScaleFactor;
-};
-
-struct _GstMTApiClass
-{
-  GstDynApiClass parent_class;
-};
-
-GType gst_mt_api_get_type (void);
-
-GstMTApi * gst_mt_api_obtain (GError ** error);
-
-G_END_DECLS
-
-#endif
diff --git a/sys/applemedia-nonpublic/plugin.m b/sys/applemedia-nonpublic/plugin.m
deleted file mode 100644
index f8cea93..0000000
--- a/sys/applemedia-nonpublic/plugin.m
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2009-2010 Ole André Vadla Ravnås <oleavr@soundrop.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#ifdef HAVE_IOS
-#include "celvideosrc.h"
-#else
-#include "miovideosrc.h"
-#include <Foundation/Foundation.h>
-#endif
-
-#ifndef HAVE_IOS
-static void
-enable_mt_mode (void)
-{
-  NSThread * th = [[NSThread alloc] init];
-  [th start];
-  [th release];
-  g_assert ([NSThread isMultiThreaded]);
-}
-#endif
-
-static gboolean
-plugin_init (GstPlugin * plugin)
-{
-  gboolean res = TRUE;
-
-#ifdef HAVE_IOS
-#if 0
-  res &= gst_element_register (plugin, "celvideosrc", GST_RANK_NONE,
-      GST_TYPE_CEL_VIDEO_SRC);
-#endif
-#else
-  enable_mt_mode ();
-
-#if 0
-  res &= gst_element_register (plugin, "miovideosrc", GST_RANK_NONE,
-      GST_TYPE_MIO_VIDEO_SRC);
-#endif
-#endif
-
-  return res;
-}
-
-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
-    GST_VERSION_MINOR,
-    applemedia_nonpublic,
-    "Elements for capture and codec access on Apple OS X and iOS using private Frameworks",
-    plugin_init, VERSION, "LGPL", "GStreamer", "http://gstreamer.net/")
diff --git a/sys/applemedia/Makefile.am b/sys/applemedia/Makefile.am
index 4e41524..d77e47c 100644
--- a/sys/applemedia/Makefile.am
+++ b/sys/applemedia/Makefile.am
@@ -78,12 +78,14 @@
 	iosassetsrc.h				\
 	iosurfacememory.h			\
 	avfassetsrc.h  				\
-	glcontexthelper.h
+	glcontexthelper.h 			\
+	iosglmemory.h
 
 if HAVE_IOS
 
 libgstapplemedia_la_SOURCES +=			\
-	iosassetsrc.m
+	iosassetsrc.m 				\
+	iosglmemory.c
 
 libgstapplemedia_la_LDFLAGS +=			\
 	-Wl,-framework -Wl,Foundation		\
@@ -92,16 +94,23 @@
 else
 
 libgstapplemedia_la_SOURCES +=			\
-	qtkitvideosrc.m 					\
 	iosurfacememory.c
 
 libgstapplemedia_la_LDFLAGS +=			\
 	-Wl,-framework -Wl,Cocoa		\
-	-Wl,-framework -Wl,QTKit		\
+	-Wl,-framework -Wl,OpenGL 		\
 	-Wl,-framework -Wl,IOSurface
 
 endif
 
+if HAVE_QTKIT
+libgstapplemedia_la_SOURCES +=			\
+	qtkitvideosrc.m
+
+libgstapplemedia_la_LDFLAGS +=			\
+	-Wl,-framework -Wl,QTKit
+endif
+
 if HAVE_AVFOUNDATION
 
 libgstapplemedia_la_SOURCES +=			\
diff --git a/sys/applemedia/Makefile.in b/sys/applemedia/Makefile.in
index c5bcc63..5494832 100644
--- a/sys/applemedia/Makefile.in
+++ b/sys/applemedia/Makefile.in
@@ -92,34 +92,40 @@
 target_triplet = @target@
 @HAVE_IOS_TRUE@am__append_1 = -fobjc-abi-version=2 -fobjc-legacy-dispatch
 @HAVE_IOS_TRUE@am__append_2 = \
-@HAVE_IOS_TRUE@	iosassetsrc.m
+@HAVE_IOS_TRUE@	iosassetsrc.m 				\
+@HAVE_IOS_TRUE@	iosglmemory.c
 
 @HAVE_IOS_TRUE@am__append_3 = \
 @HAVE_IOS_TRUE@	-Wl,-framework -Wl,Foundation		\
 @HAVE_IOS_TRUE@	-Wl,-framework -Wl,AssetsLibrary
 
 @HAVE_IOS_FALSE@am__append_4 = \
-@HAVE_IOS_FALSE@	qtkitvideosrc.m 					\
 @HAVE_IOS_FALSE@	iosurfacememory.c
 
 @HAVE_IOS_FALSE@am__append_5 = \
 @HAVE_IOS_FALSE@	-Wl,-framework -Wl,Cocoa		\
-@HAVE_IOS_FALSE@	-Wl,-framework -Wl,QTKit		\
+@HAVE_IOS_FALSE@	-Wl,-framework -Wl,OpenGL 		\
 @HAVE_IOS_FALSE@	-Wl,-framework -Wl,IOSurface
 
-@HAVE_AVFOUNDATION_TRUE@am__append_6 = \
+@HAVE_QTKIT_TRUE@am__append_6 = \
+@HAVE_QTKIT_TRUE@	qtkitvideosrc.m
+
+@HAVE_QTKIT_TRUE@am__append_7 = \
+@HAVE_QTKIT_TRUE@	-Wl,-framework -Wl,QTKit
+
+@HAVE_AVFOUNDATION_TRUE@am__append_8 = \
 @HAVE_AVFOUNDATION_TRUE@	avfvideosrc.m				\
 @HAVE_AVFOUNDATION_TRUE@	avfassetsrc.m				\
 @HAVE_AVFOUNDATION_TRUE@	avsamplevideosink.m
 
-@HAVE_AVFOUNDATION_TRUE@am__append_7 = \
+@HAVE_AVFOUNDATION_TRUE@am__append_9 = \
 @HAVE_AVFOUNDATION_TRUE@	-Wl,-framework -Wl,AVFoundation
 
-@HAVE_VIDEOTOOLBOX_TRUE@am__append_8 = \
+@HAVE_VIDEOTOOLBOX_TRUE@am__append_10 = \
 @HAVE_VIDEOTOOLBOX_TRUE@	vtenc.c 				\
 @HAVE_VIDEOTOOLBOX_TRUE@	vtdec.c
 
-@HAVE_VIDEOTOOLBOX_TRUE@am__append_9 = -Wl,-weak_framework -Wl,VideoToolbox
+@HAVE_VIDEOTOOLBOX_TRUE@am__append_11 = -Wl,-weak_framework -Wl,VideoToolbox
 subdir = sys/applemedia
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
@@ -199,16 +205,18 @@
 am__libgstapplemedia_la_SOURCES_DIST = plugin.m vtutil.c \
 	corevideomemory.c corevideobuffer.c coremediabuffer.c \
 	videotexturecache.m atdec.c glcontexthelper.c iosassetsrc.m \
-	qtkitvideosrc.m iosurfacememory.c avfvideosrc.m avfassetsrc.m \
-	avsamplevideosink.m vtenc.c vtdec.c
-@HAVE_IOS_TRUE@am__objects_1 = libgstapplemedia_la-iosassetsrc.lo
-@HAVE_IOS_FALSE@am__objects_2 = libgstapplemedia_la-qtkitvideosrc.lo \
+	iosglmemory.c iosurfacememory.c qtkitvideosrc.m avfvideosrc.m \
+	avfassetsrc.m avsamplevideosink.m vtenc.c vtdec.c
+@HAVE_IOS_TRUE@am__objects_1 = libgstapplemedia_la-iosassetsrc.lo \
+@HAVE_IOS_TRUE@	libgstapplemedia_la-iosglmemory.lo
+@HAVE_IOS_FALSE@am__objects_2 =  \
 @HAVE_IOS_FALSE@	libgstapplemedia_la-iosurfacememory.lo
-@HAVE_AVFOUNDATION_TRUE@am__objects_3 =  \
+@HAVE_QTKIT_TRUE@am__objects_3 = libgstapplemedia_la-qtkitvideosrc.lo
+@HAVE_AVFOUNDATION_TRUE@am__objects_4 =  \
 @HAVE_AVFOUNDATION_TRUE@	libgstapplemedia_la-avfvideosrc.lo \
 @HAVE_AVFOUNDATION_TRUE@	libgstapplemedia_la-avfassetsrc.lo \
 @HAVE_AVFOUNDATION_TRUE@	libgstapplemedia_la-avsamplevideosink.lo
-@HAVE_VIDEOTOOLBOX_TRUE@am__objects_4 = libgstapplemedia_la-vtenc.lo \
+@HAVE_VIDEOTOOLBOX_TRUE@am__objects_5 = libgstapplemedia_la-vtenc.lo \
 @HAVE_VIDEOTOOLBOX_TRUE@	libgstapplemedia_la-vtdec.lo
 am_libgstapplemedia_la_OBJECTS = libgstapplemedia_la-plugin.lo \
 	libgstapplemedia_la-vtutil.lo \
@@ -218,7 +226,8 @@
 	libgstapplemedia_la-videotexturecache.lo \
 	libgstapplemedia_la-atdec.lo \
 	libgstapplemedia_la-glcontexthelper.lo $(am__objects_1) \
-	$(am__objects_2) $(am__objects_3) $(am__objects_4)
+	$(am__objects_2) $(am__objects_3) $(am__objects_4) \
+	$(am__objects_5)
 libgstapplemedia_la_OBJECTS = $(am_libgstapplemedia_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -373,6 +382,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -394,6 +405,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -443,6 +456,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -588,6 +603,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -714,8 +731,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -758,8 +773,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -852,7 +872,7 @@
 libgstapplemedia_la_SOURCES = plugin.m vtutil.c corevideomemory.c \
 	corevideobuffer.c coremediabuffer.c videotexturecache.m \
 	atdec.c glcontexthelper.c $(am__append_2) $(am__append_4) \
-	$(am__append_6) $(am__append_8)
+	$(am__append_6) $(am__append_8) $(am__append_10)
 libgstapplemedia_la_CPPFLAGS = \
 	-Dgst_core_media_buffer_new=gst_core_media_buffer_priv_new		\
 	-Dgst_core_media_buffer_get_type=gst_core_media_buffer_priv_get_type	\
@@ -888,7 +908,8 @@
 	$(GST_BASE_LDFLAGS) $(GST_PLUGINS_BASE_LDFLAGS) -Wl,-framework \
 	-Wl,CoreFoundation -Wl,-framework -Wl,CoreMedia -Wl,-framework \
 	-Wl,CoreVideo -Wl,-framework -Wl,AudioToolbox $(am__append_3) \
-	$(am__append_5) $(am__append_7) $(am__append_9)
+	$(am__append_5) $(am__append_7) $(am__append_9) \
+	$(am__append_11)
 noinst_HEADERS = \
 	qtkitvideosrc.h				\
 	avfvideosrc.h				\
@@ -904,7 +925,8 @@
 	iosassetsrc.h				\
 	iosurfacememory.h			\
 	avfassetsrc.h  				\
-	glcontexthelper.h
+	glcontexthelper.h 			\
+	iosglmemory.h
 
 all: all-am
 
@@ -993,6 +1015,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-corevideomemory.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-glcontexthelper.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-iosassetsrc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-iosglmemory.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-iosurfacememory.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-plugin.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-qtkitvideosrc.Plo@am__quote@
@@ -1067,6 +1090,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_la_CFLAGS) $(CFLAGS) -c -o libgstapplemedia_la-glcontexthelper.lo `test -f 'glcontexthelper.c' || echo '$(srcdir)/'`glcontexthelper.c
 
+libgstapplemedia_la-iosglmemory.lo: iosglmemory.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_la_CFLAGS) $(CFLAGS) -MT libgstapplemedia_la-iosglmemory.lo -MD -MP -MF $(DEPDIR)/libgstapplemedia_la-iosglmemory.Tpo -c -o libgstapplemedia_la-iosglmemory.lo `test -f 'iosglmemory.c' || echo '$(srcdir)/'`iosglmemory.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstapplemedia_la-iosglmemory.Tpo $(DEPDIR)/libgstapplemedia_la-iosglmemory.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='iosglmemory.c' object='libgstapplemedia_la-iosglmemory.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_la_CFLAGS) $(CFLAGS) -c -o libgstapplemedia_la-iosglmemory.lo `test -f 'iosglmemory.c' || echo '$(srcdir)/'`iosglmemory.c
+
 libgstapplemedia_la-iosurfacememory.lo: iosurfacememory.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_la_CFLAGS) $(CFLAGS) -MT libgstapplemedia_la-iosurfacememory.lo -MD -MP -MF $(DEPDIR)/libgstapplemedia_la-iosurfacememory.Tpo -c -o libgstapplemedia_la-iosurfacememory.lo `test -f 'iosurfacememory.c' || echo '$(srcdir)/'`iosurfacememory.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstapplemedia_la-iosurfacememory.Tpo $(DEPDIR)/libgstapplemedia_la-iosurfacememory.Plo
diff --git a/sys/applemedia/atdec.c b/sys/applemedia/atdec.c
index c00f0b7..b14891f 100644
--- a/sys/applemedia/atdec.c
+++ b/sys/applemedia/atdec.c
@@ -93,10 +93,10 @@
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
   GstAudioDecoderClass *audio_decoder_class = GST_AUDIO_DECODER_CLASS (klass);
 
-  gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
-      gst_static_pad_template_get (&gst_atdec_src_template));
-  gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
-      gst_static_pad_template_get (&gst_atdec_sink_template));
+  gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+      &gst_atdec_src_template);
+  gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+      &gst_atdec_sink_template);
 
   gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass),
       "AudioToolbox based audio decoder",
diff --git a/sys/applemedia/avfassetsrc.m b/sys/applemedia/avfassetsrc.m
index 9a00645..8568281 100644
--- a/sys/applemedia/avfassetsrc.m
+++ b/sys/applemedia/avfassetsrc.m
@@ -149,10 +149,8 @@
     "Read and decode samples from AVFoundation assets using the AVFAssetReader API",
     "Andoni Morales Alastruey amorales@fluendo.com");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&audio_factory));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&video_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &audio_factory);
+  gst_element_class_add_static_pad_template (gstelement_class, &video_factory);
 
   gobject_class->set_property = gst_avf_asset_src_set_property;
   gobject_class->get_property = gst_avf_asset_src_get_property;
@@ -537,8 +535,7 @@
     }
 
     if (combined_ret != GST_FLOW_OK) {
-      GST_ELEMENT_ERROR (self, STREAM, FAILED, ("Internal data stream error."),
-          ("stream stopped reason %s", gst_flow_get_name (ret)));
+      GST_ELEMENT_FLOW_ERROR (self, ret);
     }
 
     gst_pad_pause_task (pad);
@@ -1073,7 +1070,7 @@
     return NULL;
   }
 
-  buf = gst_core_media_buffer_new (cmbuf, FALSE);
+  buf = gst_core_media_buffer_new (cmbuf, FALSE, NULL);
   CFRelease (cmbuf);
   if (buf == NULL)
     return NULL;
diff --git a/sys/applemedia/avfvideosrc.m b/sys/applemedia/avfvideosrc.m
index 529bd85..4955953 100644
--- a/sys/applemedia/avfvideosrc.m
+++ b/sys/applemedia/avfvideosrc.m
@@ -138,6 +138,7 @@
 - (GstVideoFormat)getGstVideoFormat:(NSNumber *)pixel_format;
 #if !HAVE_IOS
 - (CGDirectDisplayID)getDisplayIdFromDeviceIndex;
+- (float)getScaleFactorFromDeviceIndex;
 #endif
 - (GstCaps *)getDeviceCaps;
 - (BOOL)setDeviceCaps:(GstVideoInfo *)info;
@@ -416,6 +417,20 @@
   displayId = [description objectForKey:@"NSScreenNumber"];
   return [displayId unsignedIntegerValue];
 }
+
+- (float)getScaleFactorFromDeviceIndex
+{
+  NSArray *screens = [NSScreen screens];
+
+  if (deviceIndex == DEFAULT_DEVICE_INDEX)
+    return [[NSScreen mainScreen] backingScaleFactor];
+  if (deviceIndex >= [screens count]) {
+    GST_ELEMENT_ERROR (element, RESOURCE, NOT_FOUND,
+                        ("Invalid screen capture device index"), (NULL));
+    return 1.0;
+  }
+  return [[screens objectAtIndex:deviceIndex] backingScaleFactor];
+}
 #endif
 
 - (GstCaps *)getDeviceCaps
@@ -648,12 +663,13 @@
   if (captureScreen) {
 #if !HAVE_IOS
     CGRect rect = CGDisplayBounds ([self getDisplayIdFromDeviceIndex]);
+    float scale = [self getScaleFactorFromDeviceIndex];
     for (NSNumber *pixel_format in pixel_formats) {
       GstVideoFormat gst_format = [self getGstVideoFormat:pixel_format];
       if (gst_format != GST_VIDEO_FORMAT_UNKNOWN)
         gst_caps_append (result, gst_caps_new_simple ("video/x-raw",
-            "width", G_TYPE_INT, (int)rect.size.width,
-            "height", G_TYPE_INT, (int)rect.size.height,
+            "width", G_TYPE_INT, (int)(rect.size.width * scale),
+            "height", G_TYPE_INT, (int)(rect.size.height * scale),
             "format", G_TYPE_STRING, gst_video_format_to_string (gst_format),
             NULL));
     }
@@ -938,19 +954,13 @@
     }
   }
 
-  *buf = gst_core_media_buffer_new (sbuf, useVideoMeta);
+  *buf = gst_core_media_buffer_new (sbuf, useVideoMeta, textureCache);
   if (*buf == NULL) {
     CFRelease (sbuf);
     return GST_FLOW_ERROR;
   }
   CFRelease (sbuf);
 
-  if (textureCache != NULL) {
-    *buf = gst_video_texture_cache_get_gl_buffer (textureCache, *buf);
-    if (*buf == NULL)
-      return GST_FLOW_ERROR;
-  }
-
   GST_BUFFER_OFFSET (*buf) = offset++;
   GST_BUFFER_OFFSET_END (*buf) = GST_BUFFER_OFFSET (*buf) + 1;
   GST_BUFFER_TIMESTAMP (*buf) = timestamp;
@@ -1180,8 +1190,7 @@
       "Reads frames from an iOS AVFoundation device",
       "Ole André Vadla Ravnås <oleavr@soundrop.com>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_template);
 
   g_object_class_install_property (gobject_class, PROP_DEVICE_INDEX,
       g_param_spec_int ("device-index", "Device Index",
diff --git a/sys/applemedia/avsamplevideosink.m b/sys/applemedia/avsamplevideosink.m
index 610b40a..ce17e98 100644
--- a/sys/applemedia/avsamplevideosink.m
+++ b/sys/applemedia/avsamplevideosink.m
@@ -106,8 +106,7 @@
       "Sink/Video", "A videosink based on AVSampleBuffer's",
       "Matthew Waters <matthew@centricular.com>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_av_sample_video_sink_template));
+  gst_element_class_add_static_pad_template (element_class, &gst_av_sample_video_sink_template);
 
   gobject_class->finalize = gst_av_sample_video_sink_finalize;
 
@@ -749,7 +748,10 @@
     _request_data (av_sink);
   g_mutex_unlock (&av_sink->render_lock);
 
-#if defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED >= 1010
+#if defined(MAC_OS_X_VERSION_MAX_ALLOWED) && \
+    MAC_OS_X_VERSION_MAX_ALLOWED >= 1010 && \
+    defined(MAC_OS_X_VERSION_MIN_REQUIRED) && \
+    MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
   if ([av_sink->layer status] == AVQueuedSampleBufferRenderingStatusFailed) {
     GST_ERROR_OBJECT (av_sink, "failed to enqueue buffer on layer, %s",
         [[[av_sink->layer error] description] UTF8String]);
diff --git a/sys/applemedia/coremediabuffer.c b/sys/applemedia/coremediabuffer.c
index cf34224..8f573be 100644
--- a/sys/applemedia/coremediabuffer.c
+++ b/sys/applemedia/coremediabuffer.c
@@ -48,6 +48,18 @@
     meta->pixel_buf = NULL;
 }
 
+static gboolean
+gst_core_media_meta_init (GstCoreMediaMeta * meta, gpointer params,
+    GstBuffer * buf)
+{
+  meta->sample_buf = NULL;
+  meta->image_buf = NULL;
+  meta->pixel_buf = NULL;
+  meta->block_buf = NULL;
+
+  return TRUE;
+}
+
 static void
 gst_core_media_meta_free (GstCoreMediaMeta * meta, GstBuffer * buf)
 {
@@ -99,7 +111,7 @@
   if (g_once_init_enter (&core_media_meta_info)) {
     const GstMetaInfo *meta = gst_meta_register (GST_CORE_MEDIA_META_API_TYPE,
         "GstCoreMediaMeta", sizeof (GstCoreMediaMeta),
-        (GstMetaInitFunction) NULL,
+        (GstMetaInitFunction) gst_core_media_meta_init,
         (GstMetaFreeFunction) gst_core_media_meta_free,
         (GstMetaTransformFunction) gst_core_media_meta_transform);
     g_once_init_leave (&core_media_meta_info, meta);
@@ -228,7 +240,7 @@
 
 GstBuffer *
 gst_core_media_buffer_new (CMSampleBufferRef sample_buf,
-    gboolean use_video_meta)
+    gboolean use_video_meta, GstVideoTextureCache * cache)
 {
   CVImageBufferRef image_buf;
   CMBlockBufferRef block_buf;
@@ -250,7 +262,8 @@
       goto error;
     }
 
-    gst_core_video_wrap_pixel_buffer (buf, &info, pixel_buf, &has_padding);
+    gst_core_video_wrap_pixel_buffer (buf, &info, pixel_buf, cache,
+        &has_padding);
 
     /* If the video meta API is not supported, remove padding by
      * copying the core media buffer to a system memory buffer */
diff --git a/sys/applemedia/coremediabuffer.h b/sys/applemedia/coremediabuffer.h
index bc18acf..69299b7 100644
--- a/sys/applemedia/coremediabuffer.h
+++ b/sys/applemedia/coremediabuffer.h
@@ -22,6 +22,7 @@
 
 #include <gst/gst.h>
 #include <gst/video/gstvideometa.h>
+#include "videotexturecache.h"
 
 #include "CoreMedia/CoreMedia.h"
 
@@ -43,7 +44,8 @@
 
 
 GstBuffer * gst_core_media_buffer_new      (CMSampleBufferRef sample_buf,
-                                            gboolean use_video_meta);
+                                            gboolean use_video_meta,
+                                            GstVideoTextureCache *cache);
 CVPixelBufferRef gst_core_media_buffer_get_pixel_buffer
                                            (GstBuffer * buf);
 GType gst_core_media_meta_api_get_type (void);
diff --git a/sys/applemedia/corevideobuffer.c b/sys/applemedia/corevideobuffer.c
index 67d899c..bf20139 100644
--- a/sys/applemedia/corevideobuffer.c
+++ b/sys/applemedia/corevideobuffer.c
@@ -17,8 +17,14 @@
  * Boston, MA 02110-1301, USA.
  */
 
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
 #include "corevideobuffer.h"
 #include "corevideomemory.h"
+#if !HAVE_IOS
+#include "iosurfacememory.h"
+#endif
 
 static const GstMetaInfo *gst_core_video_meta_get_info (void);
 
@@ -33,6 +39,16 @@
   meta->pixbuf = (CVPixelBufferRef) cvbuf;
 }
 
+static gboolean
+gst_core_video_meta_init (GstCoreVideoMeta * meta, gpointer params,
+    GstBuffer * buf)
+{
+  meta->cvbuf = NULL;
+  meta->pixbuf = NULL;
+
+  return TRUE;
+}
+
 static void
 gst_core_video_meta_free (GstCoreVideoMeta * meta, GstBuffer * buf)
 {
@@ -75,7 +91,7 @@
   if (g_once_init_enter (&core_video_meta_info)) {
     const GstMetaInfo *meta = gst_meta_register (GST_CORE_VIDEO_META_API_TYPE,
         "GstCoreVideoMeta", sizeof (GstCoreVideoMeta),
-        (GstMetaInitFunction) NULL,
+        (GstMetaInitFunction) gst_core_video_meta_init,
         (GstMetaFreeFunction) gst_core_video_meta_free,
         (GstMetaTransformFunction) gst_core_video_meta_transform);
     g_once_init_leave (&core_video_meta_info, meta);
@@ -83,18 +99,46 @@
   return core_video_meta_info;
 }
 
+static GstMemory *
+_create_glmem (GstAppleCoreVideoPixelBuffer * gpixbuf,
+    GstVideoInfo * info, guint plane, gsize size, GstVideoTextureCache * cache)
+{
+#if HAVE_IOS
+  return gst_video_texture_cache_create_memory (cache, gpixbuf, plane, size);
+#else
+  GstIOSurfaceMemory *mem;
+  GstVideoGLTextureType tex_type =
+      gst_gl_texture_type_from_format (cache->ctx, GST_VIDEO_INFO_FORMAT (info),
+      plane);
+  CVPixelBufferRef pixel_buf = gpixbuf->buf;
+  IOSurfaceRef surface = CVPixelBufferGetIOSurface (pixel_buf);
+
+  CFRetain (pixel_buf);
+  mem = gst_io_surface_memory_wrapped (cache->ctx,
+      surface, GST_GL_TEXTURE_TARGET_RECTANGLE, tex_type,
+      info, plane, NULL, pixel_buf, (GDestroyNotify) CFRelease);
+  return GST_MEMORY_CAST (mem);
+#endif
+}
+
 void
-gst_core_video_wrap_pixel_buffer (GstBuffer * buf, GstVideoInfo * info,
-    CVPixelBufferRef pixel_buf, gboolean * has_padding)
+gst_core_video_wrap_pixel_buffer (GstBuffer * buf,
+    GstVideoInfo * info,
+    CVPixelBufferRef pixel_buf,
+    GstVideoTextureCache * cache, gboolean * has_padding)
 {
   guint n_planes;
   gsize offset[GST_VIDEO_MAX_PLANES] = { 0 };
   gint stride[GST_VIDEO_MAX_PLANES] = { 0 };
   UInt32 size;
   GstAppleCoreVideoPixelBuffer *gpixbuf;
+  GstMemory *mem = NULL;
+  gboolean do_gl = cache != NULL;
 
   gpixbuf = gst_apple_core_video_pixel_buffer_new (pixel_buf);
-  *has_padding = FALSE;
+
+  if (has_padding)
+    *has_padding = FALSE;
 
   if (CVPixelBufferIsPlanar (pixel_buf)) {
     gint i, size = 0, plane_offset = 0;
@@ -103,16 +147,20 @@
     for (i = 0; i < n_planes; i++) {
       stride[i] = CVPixelBufferGetBytesPerRowOfPlane (pixel_buf, i);
 
-      if (stride[i] != GST_VIDEO_INFO_PLANE_STRIDE (info, i)) {
+      if (stride[i] != GST_VIDEO_INFO_PLANE_STRIDE (info, i) && has_padding)
         *has_padding = TRUE;
-      }
 
       size = stride[i] * CVPixelBufferGetHeightOfPlane (pixel_buf, i);
       offset[i] = plane_offset;
       plane_offset += size;
 
-      gst_buffer_append_memory (buf,
-          gst_apple_core_video_memory_new_wrapped (gpixbuf, i, size));
+      if (do_gl)
+        mem = _create_glmem (gpixbuf, info, i, size, cache);
+      else
+        mem =
+            GST_MEMORY_CAST (gst_apple_core_video_memory_new_wrapped (gpixbuf,
+                i, size));
+      gst_buffer_append_memory (buf, mem);
     }
   } else {
     n_planes = 1;
@@ -120,9 +168,13 @@
     offset[0] = 0;
     size = stride[0] * CVPixelBufferGetHeight (pixel_buf);
 
-    gst_buffer_append_memory (buf,
-        gst_apple_core_video_memory_new_wrapped (gpixbuf,
-            GST_APPLE_CORE_VIDEO_NO_PLANE, size));
+    if (do_gl)
+      mem = _create_glmem (gpixbuf, info, 0, size, cache);
+    else
+      mem =
+          GST_MEMORY_CAST (gst_apple_core_video_memory_new_wrapped (gpixbuf, 0,
+              size));
+    gst_buffer_append_memory (buf, mem);
   }
 
   gst_apple_core_video_pixel_buffer_unref (gpixbuf);
@@ -137,13 +189,58 @@
   }
 }
 
+static GstVideoFormat
+gst_core_video_get_video_format (OSType format)
+{
+  switch (format) {
+    case kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange:
+      return GST_VIDEO_FORMAT_NV12;
+    case kCVPixelFormatType_422YpCbCr8_yuvs:
+      return GST_VIDEO_FORMAT_YUY2;
+    case kCVPixelFormatType_422YpCbCr8:
+      return GST_VIDEO_FORMAT_UYVY;
+    case kCVPixelFormatType_32BGRA:
+      return GST_VIDEO_FORMAT_BGRA;
+    case kCVPixelFormatType_32RGBA:
+      return GST_VIDEO_FORMAT_RGBA;
+    default:
+      GST_WARNING ("Unknown OSType format: %d", (gint) format);
+      return GST_VIDEO_FORMAT_UNKNOWN;
+  }
+}
+
+
+gboolean
+gst_core_video_info_init_from_pixel_buffer (GstVideoInfo * info,
+    CVPixelBufferRef pixel_buf)
+{
+  size_t width, height;
+  OSType format_type;
+  GstVideoFormat video_format;
+
+  width = CVPixelBufferGetWidth (pixel_buf);
+  height = CVPixelBufferGetHeight (pixel_buf);
+  format_type = CVPixelBufferGetPixelFormatType (pixel_buf);
+  video_format = gst_core_video_get_video_format (format_type);
+
+  if (video_format == GST_VIDEO_FORMAT_UNKNOWN) {
+    return FALSE;
+  }
+
+  gst_video_info_init (info);
+  gst_video_info_set_format (info, video_format, width, height);
+
+  return TRUE;
+}
+
+
 GstBuffer *
-gst_core_video_buffer_new (CVBufferRef cvbuf, GstVideoInfo * vinfo)
+gst_core_video_buffer_new (CVBufferRef cvbuf, GstVideoInfo * vinfo,
+    GstVideoTextureCache * cache)
 {
   CVPixelBufferRef pixbuf = NULL;
   GstBuffer *buf;
   GstCoreVideoMeta *meta;
-  gboolean has_padding;         /* not used for now */
 
   if (CFGetTypeID (cvbuf) != CVPixelBufferGetTypeID ())
     /* TODO: Do we need to handle other buffer types? */
@@ -159,7 +256,7 @@
   meta->cvbuf = CVBufferRetain (cvbuf);
   meta->pixbuf = pixbuf;
 
-  gst_core_video_wrap_pixel_buffer (buf, vinfo, pixbuf, &has_padding);
+  gst_core_video_wrap_pixel_buffer (buf, vinfo, pixbuf, cache, NULL);
 
   return buf;
 }
diff --git a/sys/applemedia/corevideobuffer.h b/sys/applemedia/corevideobuffer.h
index 0ea7d1e..c051988 100644
--- a/sys/applemedia/corevideobuffer.h
+++ b/sys/applemedia/corevideobuffer.h
@@ -23,6 +23,7 @@
 #include <gst/gst.h>
 #include <gst/video/video.h>
 #include <gst/video/gstvideometa.h>
+#include "videotexturecache.h"
 
 #include "CoreVideo/CoreVideo.h"
 
@@ -41,10 +42,14 @@
 } GstCoreVideoMeta;
 
 GstBuffer * gst_core_video_buffer_new      (CVBufferRef cvbuf,
-                                            GstVideoInfo *info);
+                                            GstVideoInfo *info,
+                                            GstVideoTextureCache *cache);
+gboolean gst_core_video_info_init_from_pixel_buffer (GstVideoInfo * info,
+                                                     CVPixelBufferRef pixel_buf);
 void gst_core_video_wrap_pixel_buffer      (GstBuffer * buf,
                                             GstVideoInfo * info,
                                             CVPixelBufferRef pixel_buf,
+                                            GstVideoTextureCache *cache,
                                             gboolean * has_padding);
 GType gst_core_video_meta_api_get_type (void);
 
diff --git a/sys/applemedia/corevideomemory.c b/sys/applemedia/corevideomemory.c
index 4cb085d..e8ab72f 100644
--- a/sys/applemedia/corevideomemory.c
+++ b/sys/applemedia/corevideomemory.c
@@ -300,7 +300,7 @@
  * Helper function for gst_apple_core_video_mem_share().
  * Users should call gst_apple_core_video_memory_new_wrapped() instead.
  */
-static GstMemory *
+static GstAppleCoreVideoMemory *
 gst_apple_core_video_memory_new (GstMemoryFlags flags, GstMemory * parent,
     GstAppleCoreVideoPixelBuffer * gpixbuf, gsize plane, gsize maxsize,
     gsize align, gsize offset, gsize size)
@@ -320,18 +320,18 @@
   GST_DEBUG ("%p: gpixbuf %p, plane: %" G_GSSIZE_FORMAT ", size %"
       G_GSIZE_FORMAT, mem, mem->gpixbuf, mem->plane, mem->mem.size);
 
-  return (GstMemory *) mem;
+  return mem;
 }
 
 /**
  * gst_apple_core_video_memory_new_wrapped:
  * @gpixbuf: the backing #GstAppleCoreVideoPixelBuffer
- * @plane: the plane this memory will represent, or #GST_APPLE_CORE_VIDEO_NO_PLANE for non-planar buffer
+ * @plane: the plane this memory will represent, or 0 for non-planar buffer
  * @size: the size of the buffer or specific plane
  *
  * Returns: a newly allocated #GstAppleCoreVideoMemory
  */
-GstMemory *
+GstAppleCoreVideoMemory *
 gst_apple_core_video_memory_new_wrapped (GstAppleCoreVideoPixelBuffer * gpixbuf,
     gsize plane, gsize size)
 {
@@ -349,7 +349,7 @@
   if (!gst_apple_core_video_pixel_buffer_lock (mem->gpixbuf, flags))
     return NULL;
 
-  if (mem->plane != GST_APPLE_CORE_VIDEO_NO_PLANE) {
+  if (CVPixelBufferIsPlanar (mem->gpixbuf->buf)) {
     ret = CVPixelBufferGetBaseAddressOfPlane (mem->gpixbuf->buf, mem->plane);
 
     if (ret != NULL)
@@ -378,11 +378,8 @@
 {
   GstAppleCoreVideoMemory *mem = (GstAppleCoreVideoMemory *) gmem;
   (void) gst_apple_core_video_pixel_buffer_unlock (mem->gpixbuf);
-  if (mem->plane != GST_APPLE_CORE_VIDEO_NO_PLANE)
-    GST_DEBUG ("%p: pixbuf %p plane %" G_GSIZE_FORMAT, mem,
-        mem->gpixbuf->buf, mem->plane);
-  else
-    GST_DEBUG ("%p: pixbuf %p", mem, mem->gpixbuf->buf);
+  GST_DEBUG ("%p: pixbuf %p plane %" G_GSIZE_FORMAT, mem,
+      mem->gpixbuf->buf, mem->plane);
 }
 
 static GstMemory *
@@ -403,9 +400,9 @@
 
   /* the shared memory is always readonly */
   sub =
-      gst_apple_core_video_memory_new (GST_MINI_OBJECT_FLAGS (parent) |
-      GST_MINI_OBJECT_FLAG_LOCK_READONLY, parent, mem->gpixbuf, mem->plane,
-      gmem->maxsize, gmem->align, gmem->offset + offset, size);
+      GST_MEMORY_CAST (gst_apple_core_video_memory_new (GST_MINI_OBJECT_FLAGS
+          (parent) | GST_MINI_OBJECT_FLAG_LOCK_READONLY, parent, mem->gpixbuf,
+          mem->plane, gmem->maxsize, gmem->align, gmem->offset + offset, size));
 
   return sub;
 }
diff --git a/sys/applemedia/corevideomemory.h b/sys/applemedia/corevideomemory.h
index d81781c..ba4468f 100644
--- a/sys/applemedia/corevideomemory.h
+++ b/sys/applemedia/corevideomemory.h
@@ -63,13 +63,6 @@
 } GstAppleCoreVideoPixelBuffer;
 
 /**
- * GST_APPLE_CORE_VIDEO_NO_PLANE:
- *
- * Indicates a non-planar pixel buffer.
- */
-#define GST_APPLE_CORE_VIDEO_NO_PLANE ((size_t)-1)
-
-/**
  * GstAppleCoreVideoMemory:
  *
  * Represents a video plane or an entire (non-planar) video image,
@@ -101,7 +94,7 @@
 gboolean
 gst_is_apple_core_video_memory (GstMemory * mem);
 
-GstMemory *
+GstAppleCoreVideoMemory *
 gst_apple_core_video_memory_new_wrapped (GstAppleCoreVideoPixelBuffer * shared, gsize plane, gsize size);
 
 G_END_DECLS
diff --git a/sys/applemedia/iosassetsrc.m b/sys/applemedia/iosassetsrc.m
index 67a4557..e237c2e 100644
--- a/sys/applemedia/iosassetsrc.m
+++ b/sys/applemedia/iosassetsrc.m
@@ -129,8 +129,7 @@
       "Read from arbitrary point in a iOS asset",
       "Andoni Morales Alastruey <amorales@fluendo.com>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&srctemplate));
+  gst_element_class_add_static_pad_template (gstelement_class, &srctemplate);
 
   gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_ios_asset_src_start);
   gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_ios_asset_src_stop);
diff --git a/sys/applemedia/iosglmemory.c b/sys/applemedia/iosglmemory.c
new file mode 100644
index 0000000..65507b4
--- /dev/null
+++ b/sys/applemedia/iosglmemory.c
@@ -0,0 +1,166 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Alessandro Decina <twi@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "iosglmemory.h"
+
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_IOS_GL_MEMORY);
+#define GST_CAT_DEFAULT GST_CAT_IOS_GL_MEMORY
+
+G_DEFINE_TYPE (GstIOSGLMemoryAllocator, gst_ios_gl_memory_allocator,
+    GST_TYPE_GL_MEMORY_ALLOCATOR);
+
+typedef struct
+{
+  GstIOSGLMemory *memory;
+} ContextThreadData;
+
+static GstAllocator *_ios_gl_memory_allocator;
+
+static void
+_ios_gl_memory_destroy (GstGLBaseMemory * gl_mem)
+{
+  GstIOSGLMemory *mem = (GstIOSGLMemory *) gl_mem;
+
+  gst_memory_unref (GST_MEMORY_CAST (mem->cv_mem));
+  GST_GL_BASE_MEMORY_ALLOCATOR_CLASS
+      (gst_ios_gl_memory_allocator_parent_class)->destroy (gl_mem);
+}
+
+static gpointer
+_ios_gl_memory_allocator_map (GstGLBaseMemory * bmem,
+    GstMapInfo * info, gsize size)
+{
+  GstGLMemory *gl_mem = (GstGLMemory *) bmem;
+  GstIOSGLMemory *mem = (GstIOSGLMemory *) gl_mem;
+
+  if (info->flags & GST_MAP_GL)
+    return &gl_mem->tex_id;
+  return GST_MEMORY_CAST (mem->cv_mem)->allocator->
+      mem_map (GST_MEMORY_CAST (mem->cv_mem), size, info->flags);
+}
+
+static void
+_ios_gl_memory_allocator_unmap (GstGLBaseMemory * bmem, GstMapInfo * info)
+{
+  GstIOSGLMemory *mem = (GstIOSGLMemory *) bmem;
+
+  if (!(info->flags & GST_MAP_GL))
+    GST_MEMORY_CAST (mem->cv_mem)->allocator->
+        mem_unmap (GST_MEMORY_CAST (mem->cv_mem));
+}
+
+static GstMemory *
+_mem_alloc (GstAllocator * allocator, gsize size, GstAllocationParams * params)
+{
+  g_warning ("use gst_ios_gl_memory_new_wrapped () to allocate from this "
+      "IOSGL allocator");
+
+  return NULL;
+}
+
+static void
+gst_ios_gl_memory_allocator_class_init (GstIOSGLMemoryAllocatorClass * klass)
+{
+  GstAllocatorClass *allocator_class = (GstAllocatorClass *) klass;
+  GstGLBaseMemoryAllocatorClass *gl_base_allocator_class =
+      (GstGLBaseMemoryAllocatorClass *) klass;
+
+  allocator_class->alloc = _mem_alloc;
+  gl_base_allocator_class->destroy = _ios_gl_memory_destroy;
+  gl_base_allocator_class->map = _ios_gl_memory_allocator_map;
+  gl_base_allocator_class->unmap = _ios_gl_memory_allocator_unmap;
+}
+
+static void
+gst_ios_gl_memory_allocator_init (GstIOSGLMemoryAllocator * allocator)
+{
+  GstAllocator *alloc = GST_ALLOCATOR_CAST (allocator);
+
+  alloc->mem_type = GST_IOS_GL_MEMORY_ALLOCATOR_NAME;
+  GST_OBJECT_FLAG_SET (allocator, GST_ALLOCATOR_FLAG_CUSTOM_ALLOC);
+}
+
+void
+gst_ios_gl_memory_init (void)
+{
+  static volatile gsize _init = 0;
+
+  if (g_once_init_enter (&_init)) {
+    GST_DEBUG_CATEGORY_INIT (GST_CAT_IOS_GL_MEMORY, "iosurface", 0,
+        "IOSGL Buffer");
+
+    _ios_gl_memory_allocator =
+        g_object_new (GST_TYPE_IOS_GL_MEMORY_ALLOCATOR, NULL);
+
+    gst_allocator_register (GST_IOS_GL_MEMORY_ALLOCATOR_NAME,
+        gst_object_ref (_ios_gl_memory_allocator));
+    g_once_init_leave (&_init, 1);
+  }
+}
+
+gboolean
+gst_is_ios_gl_memory (GstMemory * mem)
+{
+  return mem != NULL && mem->allocator != NULL &&
+      g_type_is_a (G_OBJECT_TYPE (mem->allocator),
+      GST_TYPE_IOS_GL_MEMORY_ALLOCATOR);
+}
+
+static GstIOSGLMemory *
+_ios_gl_memory_new (GstGLContext * context,
+    GstAppleCoreVideoMemory * cv_mem,
+    GstGLTextureTarget target,
+    GstVideoGLTextureType tex_type,
+    guint tex_id,
+    GstVideoInfo * info,
+    guint plane,
+    GstVideoAlignment * valign, gpointer user_data, GDestroyNotify notify)
+{
+  GstIOSGLMemory *mem;
+
+  mem = g_new0 (GstIOSGLMemory, 1);
+  mem->gl_mem.tex_id = tex_id;
+  mem->gl_mem.texture_wrapped = TRUE;
+  gst_gl_memory_init (&mem->gl_mem, _ios_gl_memory_allocator, NULL, context,
+      target, tex_type, NULL, info, plane, valign, user_data, notify);
+  mem->cv_mem = cv_mem;
+
+  GST_MINI_OBJECT_FLAG_SET (mem, GST_MEMORY_FLAG_READONLY);
+
+  return mem;
+}
+
+GstIOSGLMemory *
+gst_ios_gl_memory_new_wrapped (GstGLContext * context,
+    GstAppleCoreVideoMemory * cv_mem,
+    GstGLTextureTarget target,
+    GstVideoGLTextureType tex_type,
+    guint tex_id,
+    GstVideoInfo * info,
+    guint plane,
+    GstVideoAlignment * valign, gpointer user_data, GDestroyNotify notify)
+{
+  return _ios_gl_memory_new (context, cv_mem, target, tex_type, tex_id, info,
+      plane, valign, user_data, notify);
+}
diff --git a/sys/applemedia/iosglmemory.h b/sys/applemedia/iosglmemory.h
new file mode 100644
index 0000000..ae9816a
--- /dev/null
+++ b/sys/applemedia/iosglmemory.h
@@ -0,0 +1,78 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Alessandro Decina <twi@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _GST_IOS_GL_MEMORY_H_
+#define _GST_IOS_GL_MEMORY_H_
+
+#include <gst/gst.h>
+#include <gst/gstallocator.h>
+#include <gst/video/video.h>
+#include <gst/gl/gl.h>
+#include "corevideomemory.h"
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_IOS_GL_MEMORY_ALLOCATOR (gst_ios_gl_memory_allocator_get_type())
+GType gst_ios_gl_memory_allocator_get_type(void);
+
+#define GST_IS_IOS_GL_MEMORY_ALLOCATOR(obj)              (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_IOS_GL_MEMORY_ALLOCATOR))
+#define GST_IS_IOS_GL_MEMORY_ALLOCATOR_CLASS(klass)      (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_IOS_GL_MEMORY_ALLOCATOR))
+#define GST_IOS_GL_MEMORY_ALLOCATOR_GET_CLASS(obj)       (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_IOS_GL_MEMORY_ALLOCATOR, GstIOSGLMemoryAllocatorClass))
+#define GST_IOS_GL_MEMORY_ALLOCATOR(obj)                 (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_IOS_GL_MEMORY_ALLOCATOR, GstIOSGLMemoryAllocator))
+#define GST_IOS_GL_MEMORY_ALLOCATOR_CLASS(klass)         (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_IOS_GL_MEMORY_ALLOCATOR, GstIOSGLMemoryAllocatorClass))
+#define GST_IOS_GL_MEMORY_ALLOCATOR_CAST(obj)            ((GstIOSGLMemoryAllocator *)(obj))
+
+typedef struct _GstIOSGLMemory
+{
+  GstGLMemory gl_mem;
+  GstAppleCoreVideoMemory *cv_mem;
+} GstIOSGLMemory;
+
+#define GST_IOS_GL_MEMORY_ALLOCATOR_NAME   "IOSGLMemory"
+
+void gst_ios_gl_memory_init (void);
+
+GstIOSGLMemory *
+gst_ios_gl_memory_new_wrapped (GstGLContext * context,
+    GstAppleCoreVideoMemory *cv_mem,
+    GstGLTextureTarget target,
+    GstVideoGLTextureType tex_type,
+    guint tex_id,
+    GstVideoInfo * info,
+    guint plane,
+    GstVideoAlignment *valign,
+    gpointer user_data,
+    GDestroyNotify notify);
+
+gboolean gst_is_ios_gl_memory (GstMemory * mem);
+
+typedef struct _GstIOSGLMemoryAllocator
+{
+  GstGLMemoryAllocator allocator;
+} GstIOSGLMemoryAllocator;
+
+typedef struct _GstIOSGLMemoryAllocatorClass
+{
+  GstGLMemoryAllocatorClass parent_class;
+} GstIOSGLMemoryAllocatorClass;
+
+G_END_DECLS
+
+#endif /* _GST_IOS_GL_MEMORY_H_ */
diff --git a/sys/applemedia/iosurfacememory.c b/sys/applemedia/iosurfacememory.c
index 694202c..e0d8b07 100644
--- a/sys/applemedia/iosurfacememory.c
+++ b/sys/applemedia/iosurfacememory.c
@@ -30,6 +30,12 @@
 G_DEFINE_TYPE (GstIOSurfaceMemoryAllocator, gst_io_surface_memory_allocator,
     GST_TYPE_GL_MEMORY_ALLOCATOR);
 
+typedef struct
+{
+  GstIOSurfaceMemory *memory;
+  IOSurfaceRef surface;
+} ContextThreadData;
+
 static void _io_surface_memory_set_surface (GstIOSurfaceMemory * memory,
     IOSurfaceRef surface);
 
@@ -160,6 +166,7 @@
 _io_surface_memory_new (GstGLContext * context,
     IOSurfaceRef surface,
     GstGLTextureTarget target,
+    GstVideoGLTextureType tex_type,
     GstVideoInfo * info,
     guint plane,
     GstVideoAlignment * valign, gpointer user_data, GDestroyNotify notify)
@@ -170,12 +177,12 @@
 
   mem = g_new0 (GstIOSurfaceMemory, 1);
   gst_gl_memory_init (&mem->gl_mem, _io_surface_memory_allocator, NULL, context,
-      target, NULL, info, plane, valign, user_data, notify);
+      target, tex_type, NULL, info, plane, valign, user_data, notify);
 
   GST_MINI_OBJECT_FLAG_SET (mem, GST_MEMORY_FLAG_READONLY);
 
   mem->surface = NULL;
-  _io_surface_memory_set_surface (mem, surface);
+  gst_io_surface_memory_set_surface (mem, surface);
 
   return mem;
 }
@@ -184,11 +191,12 @@
 gst_io_surface_memory_wrapped (GstGLContext * context,
     IOSurfaceRef surface,
     GstGLTextureTarget target,
+    GstVideoGLTextureType tex_type,
     GstVideoInfo * info,
     guint plane,
     GstVideoAlignment * valign, gpointer user_data, GDestroyNotify notify)
 {
-  return _io_surface_memory_new (context, surface, target, info,
+  return _io_surface_memory_new (context, surface, target, tex_type, info,
       plane, valign, user_data, notify);
 }
 
@@ -230,12 +238,22 @@
   }
 }
 
+static void
+_do_set_surface (GstGLContext * context, ContextThreadData * data)
+{
+  _io_surface_memory_set_surface (data->memory, data->surface);
+}
+
 void
 gst_io_surface_memory_set_surface (GstIOSurfaceMemory * memory,
     IOSurfaceRef surface)
 {
-  g_return_if_fail (gst_is_io_surface_memory ((GstMemory *) memory));
-  g_return_if_fail (memory->surface == NULL);
+  GstGLContext *context;
+  ContextThreadData data = { memory, surface };
 
-  _io_surface_memory_set_surface (memory, surface);
+  g_return_if_fail (gst_is_io_surface_memory ((GstMemory *) memory));
+
+  context = memory->gl_mem.mem.context;
+  gst_gl_context_thread_add (context,
+      (GstGLContextThreadFunc) _do_set_surface, &data);
 }
diff --git a/sys/applemedia/iosurfacememory.h b/sys/applemedia/iosurfacememory.h
index 5d0fbe8..5d281ac 100644
--- a/sys/applemedia/iosurfacememory.h
+++ b/sys/applemedia/iosurfacememory.h
@@ -53,6 +53,7 @@
 gst_io_surface_memory_wrapped (GstGLContext * context,
     IOSurfaceRef surface,
     GstGLTextureTarget target,
+    GstVideoGLTextureType tex_type,
     GstVideoInfo * info,
     guint plane,
     GstVideoAlignment *valign,
diff --git a/sys/applemedia/plugin.m b/sys/applemedia/plugin.m
index 0ff4ec1..19384c7 100644
--- a/sys/applemedia/plugin.m
+++ b/sys/applemedia/plugin.m
@@ -25,7 +25,8 @@
 #include "corevideomemory.h"
 #ifdef HAVE_IOS
 #include "iosassetsrc.h"
-#else
+#endif
+#ifdef HAVE_QTKIT
 #include "qtkitvideosrc.h"
 #endif
 #ifdef HAVE_AVFOUNDATION
@@ -67,11 +68,15 @@
   gst_apple_core_video_memory_init ();
 
 #ifdef HAVE_IOS
+  gst_ios_gl_memory_init ();
+
   res &= gst_element_register (plugin, "iosassetsrc", GST_RANK_SECONDARY,
       GST_TYPE_IOS_ASSET_SRC);
 #else
   enable_mt_mode ();
+#endif
 
+#ifdef HAVE_QTKIT
   res = gst_element_register (plugin, "qtkitvideosrc", GST_RANK_SECONDARY,
       GST_TYPE_QTKIT_VIDEO_SRC);
 #endif
diff --git a/sys/applemedia/qtkitvideosrc.m b/sys/applemedia/qtkitvideosrc.m
index e6b427f..a69e70f 100644
--- a/sys/applemedia/qtkitvideosrc.m
+++ b/sys/applemedia/qtkitvideosrc.m
@@ -18,8 +18,8 @@
  */
 
 #include "qtkitvideosrc.h"
-
 #import "corevideobuffer.h"
+#include "glcontexthelper.h"
 
 #import <QTKit/QTKit.h>
 
@@ -100,9 +100,12 @@
   BOOL stopRequest;
 
   gint width, height;
-  gint fps_n, fps_d;  
+  gint fps_n, fps_d;
   GstClockTime duration;
   guint64 offset;
+  GstGLContextHelper *ctxh;
+  GstVideoTextureCache *textureCache;
+  GstVideoInfo outputInfo;
 }
 
 - (id)init;
@@ -149,6 +152,10 @@
 
     gst_base_src_set_live (baseSrc, TRUE);
     gst_base_src_set_format (baseSrc, GST_FORMAT_TIME);
+
+    self->ctxh = NULL;
+    textureCache = NULL;
+    gst_video_info_init (&outputInfo);
   }
 
   return self;
@@ -272,6 +279,17 @@
                          error:nil];
   g_assert (success);
 
+  gst_gl_context_helper_ensure_context (ctxh);
+  GST_INFO_OBJECT (element, "pushing textures, context %p old context %p",
+      ctxh->context, textureCache ? textureCache->ctx : NULL);
+  if (textureCache && textureCache->ctx != ctxh->context) {
+    gst_video_texture_cache_free (textureCache);
+    textureCache = NULL;
+  }
+  textureCache = gst_video_texture_cache_new (ctxh->context);
+  gst_video_texture_cache_set_format (textureCache, GST_VIDEO_FORMAT_UYVY, caps);
+  gst_video_info_set_format (&outputInfo, GST_VIDEO_FORMAT_UYVY, width, height);
+
   [output setDelegate:self];
   [session startRunning];
 
@@ -291,6 +309,7 @@
   fps_n = 0;
   fps_d = 1;
   duration = GST_CLOCK_TIME_NONE;
+  ctxh = gst_gl_context_helper_new (element);
 
   /* this will trigger negotiation and open the device in setCaps */
   gst_base_src_start_complete (baseSrc, GST_FLOW_OK);
@@ -306,7 +325,6 @@
     [[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]];
   }
 
-
   return YES;
 }
 
@@ -320,6 +338,12 @@
   [queue release];
   queue = nil;
 
+  gst_gl_context_helper_free (ctxh);
+  ctxh = NULL;
+  if (textureCache)
+    gst_video_texture_cache_free (textureCache);
+  textureCache = NULL;
+
   return YES;
 }
 
@@ -434,7 +458,7 @@
   [queueLock unlockWithCondition:
       ([queue count] == 0) ? NO_FRAMES : HAS_FRAME_OR_STOP_REQUEST];
 
-  *buf = gst_core_video_buffer_new ((CVBufferRef)frame, NULL);
+  *buf = gst_core_video_buffer_new ((CVBufferRef)frame, &outputInfo, textureCache);
   CVBufferRelease (frame);
 
   [self timestampBuffer:*buf];
@@ -518,8 +542,7 @@
       "Reads frames from a Mac OS X QTKit device",
       "Ole André Vadla Ravnås <oleavr@soundrop.com>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_template);
 
   gobject_class->finalize = gst_qtkit_video_src_finalize;
   gobject_class->get_property = gst_qtkit_video_src_get_property;
diff --git a/sys/applemedia/videotexturecache.h b/sys/applemedia/videotexturecache.h
index 0b43566..8dc927a 100644
--- a/sys/applemedia/videotexturecache.h
+++ b/sys/applemedia/videotexturecache.h
@@ -22,7 +22,7 @@
 
 #include <gst/video/gstvideometa.h>
 #include <gst/gl/gstglcontext.h>
-#include <CoreVideo/CoreVideo.h>
+#include "corevideomemory.h"
 
 G_BEGIN_DECLS
 
@@ -47,8 +47,8 @@
 void gst_video_texture_cache_set_format (GstVideoTextureCache * cache,
     GstVideoFormat in_format, GstCaps * out_caps);
 gboolean gst_video_texture_cache_upload (GstVideoGLTextureUploadMeta * meta, guint texture_id[4]);
-GstBuffer * gst_video_texture_cache_get_gl_buffer (GstVideoTextureCache * cache,
-        GstBuffer * cv_buffer);
+GstMemory *gst_video_texture_cache_create_memory (GstVideoTextureCache * cache,
+    GstAppleCoreVideoPixelBuffer *gpixbuf, guint plane, gsize size);
 
 G_END_DECLS
 
diff --git a/sys/applemedia/videotexturecache.m b/sys/applemedia/videotexturecache.m
index e1bdb64..8315a3b 100644
--- a/sys/applemedia/videotexturecache.m
+++ b/sys/applemedia/videotexturecache.m
@@ -27,6 +27,7 @@
 #include <gst/gl/gstglbufferpool.h>
 #include "iosurfacememory.h"
 #endif
+#include "iosglmemory.h"
 #include "videotexturecache.h"
 #include "coremediabuffer.h"
 #include "corevideobuffer.h"
@@ -35,8 +36,10 @@
 typedef struct _ContextThreadData
 {
   GstVideoTextureCache *cache;
-  GstBuffer *input_buffer;
-  GstBuffer *output_buffer;
+  GstAppleCoreVideoPixelBuffer *gpixbuf;
+  guint plane;
+  gsize size;
+  GstMemory *memory;
 } ContextThreadData;
 
 GstVideoTextureCache *
@@ -97,14 +100,12 @@
 
   out_caps = gst_caps_copy (out_caps);
   features = gst_caps_get_features (out_caps, 0);
-  gst_caps_features_add (features, GST_CAPS_FEATURE_MEMORY_GL_MEMORY);
   gst_video_info_from_caps (&cache->output_info, out_caps);
 
   in_caps = gst_caps_copy (out_caps);
   gst_caps_set_simple (in_caps, "format",
           G_TYPE_STRING, gst_video_format_to_string (in_format), NULL);
   features = gst_caps_get_features (in_caps, 0);
-  gst_caps_features_add (features, GST_CAPS_FEATURE_MEMORY_GL_MEMORY);
   gst_video_info_from_caps (&cache->input_info, in_caps);
 
   if (cache->in_caps)
@@ -127,40 +128,22 @@
 #endif
 }
 
-static CVPixelBufferRef
-cv_pixel_buffer_from_gst_buffer (GstBuffer * buffer)
-{
-  GstCoreMediaMeta *cm_meta =
-      (GstCoreMediaMeta *) gst_buffer_get_meta (buffer,
-      gst_core_media_meta_api_get_type ());
-  GstCoreVideoMeta *cv_meta =
-      (GstCoreVideoMeta *) gst_buffer_get_meta (buffer,
-      gst_core_video_meta_api_get_type ());
-
-  g_return_val_if_fail (cm_meta || cv_meta, NULL);
-
-  return cm_meta ? cm_meta->pixel_buf : cv_meta->pixbuf;
-}
-
 #if HAVE_IOS
 static void
-_do_get_gl_buffer (GstGLContext * context, ContextThreadData * data)
+_do_create_memory (GstGLContext * context, ContextThreadData * data)
 {
   CVOpenGLESTextureRef texture = NULL;
   GstVideoTextureCache *cache = data->cache;
-  CVPixelBufferRef pixel_buf = cv_pixel_buffer_from_gst_buffer (data->input_buffer);
+  GstAppleCoreVideoPixelBuffer *gpixbuf = data->gpixbuf;
+  CVPixelBufferRef pixel_buf = gpixbuf->buf;
+  guint plane = data->plane;
+  gssize size = data->size;
   GstGLTextureTarget gl_target;
-  GstGLBaseMemoryAllocator *base_mem_alloc;
-  GstGLVideoAllocationParams *params;
-  GstBuffer *output_buffer;
-
-  base_mem_alloc = GST_GL_BASE_MEMORY_ALLOCATOR (gst_gl_memory_allocator_get_default (cache->ctx));
-  output_buffer = gst_buffer_new ();
-  gst_buffer_copy_into (output_buffer, data->input_buffer, GST_BUFFER_COPY_ALL, 0, -1);
+  GstAppleCoreVideoMemory *memory;
+  GstIOSGLMemory *gl_memory;
 
   switch (GST_VIDEO_INFO_FORMAT (&cache->input_info)) {
       case GST_VIDEO_FORMAT_BGRA:
-        /* avfvideosrc does BGRA on iOS when doing GLMemory */
         if (CVOpenGLESTextureCacheCreateTextureFromImage (kCFAllocatorDefault,
               cache->cache, pixel_buf, NULL, GL_TEXTURE_2D, GL_RGBA,
               GST_VIDEO_INFO_WIDTH (&cache->input_info),
@@ -169,64 +152,36 @@
           goto error;
 
         gl_target = gst_gl_texture_target_from_gl (CVOpenGLESTextureGetTarget (texture));
-        params = gst_gl_video_allocation_params_new_wrapped_texture (cache->ctx,
-            NULL, &cache->input_info, 0, NULL, gl_target,
-            CVOpenGLESTextureGetName (texture), texture,
-            (GDestroyNotify) CFRelease);
-
-        gst_buffer_replace_memory (output_buffer, 0,
-                (GstMemory *) gst_gl_base_memory_alloc (base_mem_alloc,
-                    (GstGLAllocationParams *) params));
-        gst_gl_allocation_params_free ((GstGLAllocationParams *) params);
+        memory = gst_apple_core_video_memory_new_wrapped (gpixbuf, plane, size);
+        gl_memory = gst_ios_gl_memory_new_wrapped (context, memory,
+            gl_target, GST_VIDEO_GL_TEXTURE_TYPE_RGBA,
+            CVOpenGLESTextureGetName (texture),
+            &cache->input_info,
+            0, NULL, texture, (GDestroyNotify) CFRelease);
         break;
       case GST_VIDEO_FORMAT_NV12: {
         GstVideoGLTextureType textype;
         GLenum texifmt, texfmt;
 
-        textype = gst_gl_texture_type_from_format (cache->ctx, GST_VIDEO_FORMAT_NV12, 0);
-        texifmt = gst_gl_format_from_gl_texture_type (textype);
-        texfmt = gst_gl_sized_gl_format_from_gl_format_type (cache->ctx, texifmt, GL_UNSIGNED_BYTE);
-
-        /* vtdec does NV12 on iOS when doing GLMemory */
-        if (CVOpenGLESTextureCacheCreateTextureFromImage (kCFAllocatorDefault,
-              cache->cache, pixel_buf, NULL, GL_TEXTURE_2D, texifmt,
-              GST_VIDEO_INFO_WIDTH (&cache->input_info),
-              GST_VIDEO_INFO_HEIGHT (&cache->input_info),
-              texfmt, GL_UNSIGNED_BYTE, 0, &texture) != kCVReturnSuccess)
-          goto error;
-
-        gl_target = gst_gl_texture_target_from_gl (CVOpenGLESTextureGetTarget (texture));
-        params = gst_gl_video_allocation_params_new_wrapped_texture (cache->ctx,
-            NULL, &cache->input_info, 0, NULL, gl_target,
-            CVOpenGLESTextureGetName (texture), texture,
-            (GDestroyNotify) CFRelease);
-
-        gst_buffer_replace_memory (output_buffer, 0,
-                (GstMemory *) gst_gl_base_memory_alloc (base_mem_alloc,
-                    (GstGLAllocationParams *) params));
-        gst_gl_allocation_params_free ((GstGLAllocationParams *) params);
-
-        textype = gst_gl_texture_type_from_format (cache->ctx, GST_VIDEO_FORMAT_NV12, 1);
+        if (plane == 0)
+          textype = GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE;
+        else
+          textype = GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE_ALPHA;
         texifmt = gst_gl_format_from_gl_texture_type (textype);
         texfmt = gst_gl_sized_gl_format_from_gl_format_type (cache->ctx, texifmt, GL_UNSIGNED_BYTE);
 
         if (CVOpenGLESTextureCacheCreateTextureFromImage (kCFAllocatorDefault,
               cache->cache, pixel_buf, NULL, GL_TEXTURE_2D, texifmt,
-              GST_VIDEO_INFO_WIDTH (&cache->input_info) / 2,
-              GST_VIDEO_INFO_HEIGHT (&cache->input_info) / 2,
-              texfmt, GL_UNSIGNED_BYTE, 1, &texture) != kCVReturnSuccess)
+              GST_VIDEO_INFO_COMP_WIDTH (&cache->input_info, plane),
+              GST_VIDEO_INFO_COMP_HEIGHT (&cache->input_info, plane),
+              texfmt, GL_UNSIGNED_BYTE, plane, &texture) != kCVReturnSuccess)
           goto error;
 
         gl_target = gst_gl_texture_target_from_gl (CVOpenGLESTextureGetTarget (texture));
-        params = gst_gl_video_allocation_params_new_wrapped_texture (cache->ctx,
-            NULL, &cache->input_info, 1, NULL, gl_target,
-            CVOpenGLESTextureGetName (texture), texture,
-            (GDestroyNotify) CFRelease);
-
-        gst_buffer_replace_memory (output_buffer, 1,
-                (GstMemory *) gst_gl_base_memory_alloc (base_mem_alloc,
-                    (GstGLAllocationParams *) params));
-        gst_gl_allocation_params_free ((GstGLAllocationParams *) params);
+        memory = gst_apple_core_video_memory_new_wrapped (gpixbuf, plane, size);
+        gl_memory = gst_ios_gl_memory_new_wrapped (context, memory,
+                gl_target, textype, CVOpenGLESTextureGetName (texture), &cache->input_info,
+                plane, NULL, texture, (GDestroyNotify) CFRelease);
         break;
       }
     default:
@@ -234,48 +189,27 @@
       goto error;
   }
 
-  gst_object_unref (base_mem_alloc);
-
-  data->output_buffer = output_buffer;
+  data->memory = GST_MEMORY_CAST (gl_memory);
 
   return;
 
 error:
-  data->output_buffer = NULL;
-}
-#else /* !HAVE_IOS */
-static void
-_do_get_gl_buffer (GstGLContext * context, ContextThreadData * data)
-{
-  GstVideoTextureCache *cache = data->cache;
-  CVPixelBufferRef pixel_buf = cv_pixel_buffer_from_gst_buffer (data->input_buffer);
-  IOSurfaceRef surface = CVPixelBufferGetIOSurface (pixel_buf);
-
-  data->output_buffer = gst_buffer_new ();
-  gst_buffer_copy_into (data->output_buffer, data->input_buffer, GST_BUFFER_COPY_ALL, 0, -1);
-  for (int i = 0; i < GST_VIDEO_INFO_N_PLANES (&cache->input_info); i++) {
-    GstIOSurfaceMemory *mem;
-
-    CFRetain (pixel_buf);
-    mem = gst_io_surface_memory_wrapped (cache->ctx,
-            surface, GST_GL_TEXTURE_TARGET_RECTANGLE, &cache->input_info,
-            i, NULL, pixel_buf, (GDestroyNotify) CFRelease);
-
-    gst_buffer_replace_memory (data->output_buffer, i, (GstMemory *) mem);
-  }
+  data->memory = NULL;
 }
 #endif
 
-GstBuffer *
-gst_video_texture_cache_get_gl_buffer (GstVideoTextureCache * cache,
-        GstBuffer * cv_buffer)
+GstMemory *
+gst_video_texture_cache_create_memory (GstVideoTextureCache * cache,
+      GstAppleCoreVideoPixelBuffer *gpixbuf,
+      guint plane,
+      gsize size)
 {
-  ContextThreadData data = {cache, cv_buffer, NULL};
+  ContextThreadData data = {cache, gpixbuf, plane, size, NULL};
 
+#if HAVE_IOS
   gst_gl_context_thread_add (cache->ctx,
-      (GstGLContextThreadFunc) _do_get_gl_buffer, &data);
+      (GstGLContextThreadFunc) _do_create_memory, &data);
+#endif
 
-  gst_buffer_unref (cv_buffer);
-
-  return data.output_buffer;
+  return data.memory;
 }
diff --git a/sys/applemedia/vtdec.c b/sys/applemedia/vtdec.c
index ae8a8e1..fc81774 100644
--- a/sys/applemedia/vtdec.c
+++ b/sys/applemedia/vtdec.c
@@ -96,7 +96,8 @@
     GST_PAD_ALWAYS,
     GST_STATIC_CAPS ("video/x-h264, stream-format=avc, alignment=au,"
         " width=(int)[1, MAX], height=(int)[1, MAX];"
-        "video/mpeg, mpegversion=2;" "image/jpeg")
+        "video/mpeg, mpegversion=2, systemstream=false, parsed=true;"
+        "image/jpeg")
     );
 
 /* define EnableHardwareAcceleratedVideoDecoder in < 10.9 */
@@ -126,8 +127,8 @@
 
   /* Setting up pads and setting metadata should be moved to
      base_class_init if you intend to subclass this class. */
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_vtdec_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_vtdec_sink_template);
   gst_element_class_add_pad_template (element_class,
       gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
           gst_caps_from_string (VIDEO_SRC_CAPS)));
@@ -232,12 +233,30 @@
   vtdec = GST_VTDEC (decoder);
   if (vtdec->session)
     gst_vtdec_push_frames_if_needed (vtdec, TRUE, FALSE);
-  templcaps =
-      gst_pad_get_pad_template_caps (GST_VIDEO_DECODER_SRC_PAD (decoder));
+
+  output_state = gst_video_decoder_get_output_state (GST_VIDEO_DECODER (vtdec));
+  if (output_state) {
+    prevcaps = gst_caps_ref (output_state->caps);
+    gst_video_codec_state_unref (output_state);
+  }
+
   peercaps = gst_pad_peer_query_caps (GST_VIDEO_DECODER_SRC_PAD (vtdec), NULL);
-  caps =
-      gst_caps_intersect_full (peercaps, templcaps, GST_CAPS_INTERSECT_FIRST);
-  gst_caps_unref (templcaps);
+  if (prevcaps && gst_caps_can_intersect (prevcaps, peercaps)) {
+    /* The hardware decoder can become (temporarily) unavailable across
+     * VTDecompressionSessionCreate/Destroy calls. So if the currently configured
+     * caps are still accepted by downstream we keep them so we don't have to
+     * destroy and recreate the session.
+     */
+    GST_INFO_OBJECT (vtdec,
+        "current and peer caps are compatible, keeping current caps");
+    caps = gst_caps_ref (prevcaps);
+  } else {
+    templcaps =
+        gst_pad_get_pad_template_caps (GST_VIDEO_DECODER_SRC_PAD (decoder));
+    caps =
+        gst_caps_intersect_full (peercaps, templcaps, GST_CAPS_INTERSECT_FIRST);
+    gst_caps_unref (templcaps);
+  }
   gst_caps_unref (peercaps);
 
   caps = gst_caps_truncate (gst_caps_make_writable (caps));
@@ -248,12 +267,6 @@
   if (features)
     features = gst_caps_features_copy (features);
 
-  output_state = gst_video_decoder_get_output_state (GST_VIDEO_DECODER (vtdec));
-  if (output_state) {
-    prevcaps = gst_caps_ref (output_state->caps);
-    gst_video_codec_state_unref (output_state);
-  }
-
   output_state = gst_video_decoder_set_output_state (GST_VIDEO_DECODER (vtdec),
       format, vtdec->video_info.width, vtdec->video_info.height,
       vtdec->input_state);
@@ -761,7 +774,9 @@
       GST_WARNING_OBJECT (vtdec, "Output state not configured, release buffer");
       frame->flags &= VTDEC_FRAME_FLAG_SKIP;
     } else {
-      buf = gst_core_video_buffer_new (image_buffer, &state->info);
+      buf =
+          gst_core_video_buffer_new (image_buffer, &state->info,
+          vtdec->texture_cache);
       gst_video_codec_state_unref (state);
       GST_BUFFER_PTS (buf) = pts.value;
       GST_BUFFER_DURATION (buf) = duration.value;
@@ -805,13 +820,6 @@
   while ((g_async_queue_length (vtdec->reorder_queue) >=
           vtdec->reorder_queue_length) || drain || flush) {
     frame = (GstVideoCodecFrame *) g_async_queue_try_pop (vtdec->reorder_queue);
-    if (frame && frame->output_buffer && vtdec->texture_cache != NULL) {
-      frame->output_buffer =
-          gst_video_texture_cache_get_gl_buffer (vtdec->texture_cache,
-          frame->output_buffer);
-      if (!frame->output_buffer)
-        GST_ERROR_OBJECT (vtdec, "couldn't get textures from buffer");
-    }
 
     /* we need to check this in case reorder_queue_length=0 (jpeg for
      * example) or we're draining/flushing
diff --git a/sys/applemedia/vtenc.c b/sys/applemedia/vtenc.c
index de60272..d91ab82 100644
--- a/sys/applemedia/vtenc.c
+++ b/sys/applemedia/vtenc.c
@@ -47,6 +47,9 @@
 const CFStringRef
     kVTVideoEncoderSpecification_EnableHardwareAcceleratedVideoEncoder =
 CFSTR ("EnableHardwareAcceleratedVideoEncoder");
+const CFStringRef
+    kVTVideoEncoderSpecification_RequireHardwareAcceleratedVideoEncoder =
+CFSTR ("RequireHardwareAcceleratedVideoEncoder");
 const CFStringRef kVTCompressionPropertyKey_ProfileLevel =
 CFSTR ("ProfileLevel");
 const CFStringRef kVTProfileLevel_H264_Baseline_AutoLevel =
@@ -57,6 +60,12 @@
 const CFStringRef kVTCompressionPropertyKey_Quality = CFSTR ("Quality");
 #endif
 
+#ifdef HAVE_VIDEOTOOLBOX_10_9_6
+extern OSStatus
+VTCompressionSessionPrepareToEncodeFrames (VTCompressionSessionRef session)
+    __attribute__ ((weak_import));
+#endif
+
 enum
 {
   PROP_0,
@@ -642,7 +651,7 @@
   self->session = session;
   GST_OBJECT_UNLOCK (self);
 
-  return TRUE;
+  return session != NULL;
 }
 
 static gboolean
@@ -780,6 +789,8 @@
   VTCompressionSessionRef session = NULL;
   CFMutableDictionaryRef encoder_spec = NULL, pb_attrs;
   OSStatus status;
+  const GstVTEncoderDetails *codec_details =
+      GST_VTENC_CLASS_GET_CODEC_DETAILS (G_OBJECT_GET_CLASS (self));
 
 #if !HAVE_IOS
   encoder_spec =
@@ -787,6 +798,10 @@
       &kCFTypeDictionaryValueCallBacks);
   gst_vtutil_dict_set_boolean (encoder_spec,
       kVTVideoEncoderSpecification_EnableHardwareAcceleratedVideoEncoder, true);
+  if (codec_details->require_hardware)
+    gst_vtutil_dict_set_boolean (encoder_spec,
+        kVTVideoEncoderSpecification_RequireHardwareAcceleratedVideoEncoder,
+        TRUE);
 #endif
 
   pb_attrs = CFDictionaryCreateMutable (NULL, 0, &kCFTypeDictionaryKeyCallBacks,
@@ -1112,7 +1127,8 @@
       goto cv_error;
     }
 
-    outbuf = gst_core_video_buffer_new ((CVBufferRef) pbuf, &self->video_info);
+    outbuf =
+        gst_core_video_buffer_new ((CVBufferRef) pbuf, &self->video_info, NULL);
     if (!gst_video_frame_map (&outframe, &self->video_info, outbuf,
             GST_MAP_WRITE)) {
       gst_video_frame_unmap (&inframe);
@@ -1294,7 +1310,7 @@
 
   /* We are dealing with block buffers here, so we don't need
    * to enable the use of the video meta API on the core media buffer */
-  frame->output_buffer = gst_core_media_buffer_new (sampleBuffer, FALSE);
+  frame->output_buffer = gst_core_media_buffer_new (sampleBuffer, FALSE, NULL);
 
 beach:
   /* needed anyway so the frame will be released */
@@ -1392,7 +1408,10 @@
 }
 
 static const GstVTEncoderDetails gst_vtenc_codecs[] = {
-  {"H.264", "h264", "video/x-h264", kCMVideoCodecType_H264},
+  {"H.264", "h264", "video/x-h264", kCMVideoCodecType_H264, FALSE},
+#ifndef HAVE_IOS
+  {"H.264 (HW only)", "h264_hw", "video/x-h264", kCMVideoCodecType_H264, TRUE},
+#endif
 };
 
 void
diff --git a/sys/applemedia/vtenc.h b/sys/applemedia/vtenc.h
index 3bbe3c6..4c61000 100644
--- a/sys/applemedia/vtenc.h
+++ b/sys/applemedia/vtenc.h
@@ -44,6 +44,7 @@
   const gchar * element_name;
   const gchar * mimetype;
   CMVideoCodecType format_id;
+  gboolean require_hardware;
 };
 
 struct _GstVTEncClass
diff --git a/sys/avc/Makefile.in b/sys/avc/Makefile.in
index 6724b6e..d4298c4 100644
--- a/sys/avc/Makefile.in
+++ b/sys/avc/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/avc/gstavcsrc.cpp b/sys/avc/gstavcsrc.cpp
index 6d926dc..09d3f05 100644
--- a/sys/avc/gstavcsrc.cpp
+++ b/sys/avc/gstavcsrc.cpp
@@ -99,8 +99,7 @@
 {
   GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_avc_src_src_template));
+  gst_element_class_add_static_pad_template (element_class, &gst_avc_src_src_template);
 
   gst_element_class_set_static_metadata (element_class,
       "AVC Video Services Source", "Video/Source",
diff --git a/sys/bluez/Makefile.am b/sys/bluez/Makefile.am
index c6b13db..e1a87c9 100644
--- a/sys/bluez/Makefile.am
+++ b/sys/bluez/Makefile.am
@@ -5,7 +5,8 @@
 	gsta2dpsink.c \
 	gstavdtpsink.c \
 	gstavdtpsrc.c \
-	gstavdtputil.c
+	gstavdtputil.c \
+	gstavrcputil.c
 
 nodist_libgstbluez_la_SOURCES = \
 	$(BUILT_SOURCES)
@@ -32,7 +33,8 @@
 	gsta2dpsink.h \
 	gstavdtpsink.h \
 	gstavdtpsrc.h \
-	gstavdtputil.h
+	gstavdtputil.h \
+	gstavrcputil.h
 
 BUILT_SOURCES = \
 	bluez.h \
diff --git a/sys/bluez/Makefile.in b/sys/bluez/Makefile.in
index 862d62f..7cdd4cf 100644
--- a/sys/bluez/Makefile.in
+++ b/sys/bluez/Makefile.in
@@ -168,7 +168,8 @@
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
 am_libgstbluez_la_OBJECTS = libgstbluez_la-bluez-plugin.lo \
 	libgstbluez_la-gsta2dpsink.lo libgstbluez_la-gstavdtpsink.lo \
-	libgstbluez_la-gstavdtpsrc.lo libgstbluez_la-gstavdtputil.lo
+	libgstbluez_la-gstavdtpsrc.lo libgstbluez_la-gstavdtputil.lo \
+	libgstbluez_la-gstavrcputil.lo
 am__objects_1 = libgstbluez_la-bluez.lo
 nodist_libgstbluez_la_OBJECTS = $(am__objects_1)
 libgstbluez_la_OBJECTS = $(am_libgstbluez_la_OBJECTS) \
@@ -308,6 +309,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -329,6 +332,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -378,6 +383,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -523,6 +530,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -649,8 +658,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -693,8 +700,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -789,7 +801,8 @@
 	gsta2dpsink.c \
 	gstavdtpsink.c \
 	gstavdtpsrc.c \
-	gstavdtputil.c
+	gstavdtputil.c \
+	gstavrcputil.c
 
 nodist_libgstbluez_la_SOURCES = \
 	$(BUILT_SOURCES)
@@ -817,7 +830,8 @@
 	gsta2dpsink.h \
 	gstavdtpsink.h \
 	gstavdtpsrc.h \
-	gstavdtputil.h
+	gstavdtputil.h \
+	gstavrcputil.h
 
 BUILT_SOURCES = \
 	bluez.h \
@@ -910,6 +924,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstbluez_la-gstavdtpsink.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstbluez_la-gstavdtpsrc.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstbluez_la-gstavdtputil.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstbluez_la-gstavrcputil.Plo@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -970,6 +985,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstbluez_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstbluez_la_CFLAGS) $(CFLAGS) -c -o libgstbluez_la-gstavdtputil.lo `test -f 'gstavdtputil.c' || echo '$(srcdir)/'`gstavdtputil.c
 
+libgstbluez_la-gstavrcputil.lo: gstavrcputil.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstbluez_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstbluez_la_CFLAGS) $(CFLAGS) -MT libgstbluez_la-gstavrcputil.lo -MD -MP -MF $(DEPDIR)/libgstbluez_la-gstavrcputil.Tpo -c -o libgstbluez_la-gstavrcputil.lo `test -f 'gstavrcputil.c' || echo '$(srcdir)/'`gstavrcputil.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstbluez_la-gstavrcputil.Tpo $(DEPDIR)/libgstbluez_la-gstavrcputil.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstavrcputil.c' object='libgstbluez_la-gstavrcputil.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstbluez_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstbluez_la_CFLAGS) $(CFLAGS) -c -o libgstbluez_la-gstavrcputil.lo `test -f 'gstavrcputil.c' || echo '$(srcdir)/'`gstavrcputil.c
+
 libgstbluez_la-bluez.lo: bluez.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstbluez_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstbluez_la_CFLAGS) $(CFLAGS) -MT libgstbluez_la-bluez.lo -MD -MP -MF $(DEPDIR)/libgstbluez_la-bluez.Tpo -c -o libgstbluez_la-bluez.lo `test -f 'bluez.c' || echo '$(srcdir)/'`bluez.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstbluez_la-bluez.Tpo $(DEPDIR)/libgstbluez_la-bluez.Plo
diff --git a/sys/bluez/gsta2dpsink.c b/sys/bluez/gsta2dpsink.c
index 424b56c..6a2b50c 100644
--- a/sys/bluez/gsta2dpsink.c
+++ b/sys/bluez/gsta2dpsink.c
@@ -21,16 +21,10 @@
  *
  */
 
-/* FIXME:
- *  - the segment_event caching and re-sending should not be needed any
- *    longer with sticky events
- */
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
 
-#define GLIB_DISABLE_DEPRECATION_WARNINGS
-
 #include <unistd.h>
 
 #include "gsta2dpsink.h"
@@ -71,42 +65,17 @@
 static gboolean gst_a2dp_sink_query (GstPad * pad, GstObject * parent,
     GstQuery * query);
 static GstCaps *gst_a2dp_sink_get_caps (GstA2dpSink * self);
-static gboolean gst_a2dp_sink_init_caps_filter (GstA2dpSink * self);
-static gboolean gst_a2dp_sink_init_fakesink (GstA2dpSink * self);
-static gboolean gst_a2dp_sink_remove_fakesink (GstA2dpSink * self);
-
-static void
-gst_a2dp_sink_finalize (GObject * obj)
-{
-  GstA2dpSink *self = GST_A2DP_SINK (obj);
-
-  g_mutex_clear (&self->cb_mutex);
-
-  G_OBJECT_CLASS (parent_class)->finalize (obj);
-}
-
-static GstState
-gst_a2dp_sink_get_state (GstA2dpSink * self)
-{
-  GstState current, pending;
-
-  gst_element_get_state (GST_ELEMENT (self), &current, &pending, 0);
-  if (pending == GST_STATE_VOID_PENDING)
-    return current;
-
-  return pending;
-}
 
 /*
  * Helper function to create elements, add to the bin and link it
  * to another element.
  */
 static GstElement *
-gst_a2dp_sink_init_element (GstA2dpSink * self,
-    const gchar * elementname, const gchar * name, GstElement * link_to)
+gst_a2dp_sink_init_element (GstA2dpSink * self, const gchar * elementname,
+    const gchar * name)
 {
   GstElement *element;
-  GstState state;
+  GstPad *sinkpad;
 
   GST_LOG_OBJECT (self, "Initializing %s", elementname);
 
@@ -121,17 +90,16 @@
     goto cleanup_and_fail;
   }
 
-  state = gst_a2dp_sink_get_state (self);
-  if (gst_element_set_state (element, state) == GST_STATE_CHANGE_FAILURE) {
-    GST_DEBUG_OBJECT (self, "%s failed to go to playing", elementname);
+  sinkpad = gst_element_get_static_pad (element, "sink");
+  if (!gst_ghost_pad_set_target (GST_GHOST_PAD (self->ghostpad), sinkpad)) {
+    GST_ERROR_OBJECT (self, "Failed to set target for ghost pad");
     goto remove_element_and_fail;
   }
 
-  if (link_to != NULL)
-    if (!gst_element_link (link_to, element)) {
-      GST_DEBUG_OBJECT (self, "couldn't link %s", elementname);
-      goto remove_element_and_fail;
-    }
+  if (!gst_element_sync_state_with_parent (element)) {
+    GST_DEBUG_OBJECT (self, "%s failed to go to playing", elementname);
+    goto remove_element_and_fail;
+  }
 
   return element;
 
@@ -221,21 +189,16 @@
 static gboolean
 gst_a2dp_sink_init_ghost_pad (GstA2dpSink * self)
 {
-  GstPad *capsfilter_pad;
-
-  /* we search for the capsfilter sinkpad */
-  capsfilter_pad = gst_element_get_static_pad (self->capsfilter, "sink");
+  GstPadTemplate *templ;
 
   /* now we add a ghostpad */
-  self->ghostpad = gst_ghost_pad_new ("sink", capsfilter_pad);
-  g_object_unref (capsfilter_pad);
+  templ = gst_static_pad_template_get (&gst_a2dp_sink_factory);
+  self->ghostpad = gst_ghost_pad_new_no_target_from_template ("sink", templ);
+  g_object_unref (templ);
 
   /* the getcaps of our ghostpad must reflect the device caps */
   gst_pad_set_query_function (self->ghostpad, gst_a2dp_sink_query);
 
-  /* we need to handle events on our own and we also need the eventfunc
-   * of the ghostpad for forwarding calls */
-  self->ghostpad_eventfunc = GST_PAD_EVENTFUNC (self->ghostpad);
   gst_pad_set_event_function (self->ghostpad, gst_a2dp_sink_handle_event);
 
   if (!gst_element_add_pad (GST_ELEMENT (self), self->ghostpad))
@@ -259,25 +222,15 @@
 static GstStateChangeReturn
 gst_a2dp_sink_change_state (GstElement * element, GstStateChange transition)
 {
-  GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
+  GstStateChangeReturn ret;
   GstA2dpSink *self = GST_A2DP_SINK (element);
 
   switch (transition) {
     case GST_STATE_CHANGE_READY_TO_PAUSED:
       self->taglist = gst_tag_list_new_empty ();
-
-      gst_a2dp_sink_init_fakesink (self);
       break;
 
     case GST_STATE_CHANGE_NULL_TO_READY:
-      self->sink_is_in_bin = FALSE;
-      self->sink =
-          GST_AVDTP_SINK (gst_element_factory_make ("avdtpsink", "avdtpsink"));
-      if (self->sink == NULL) {
-        GST_WARNING_OBJECT (self, "failed to create avdtpsink");
-        return GST_STATE_CHANGE_FAILURE;
-      }
-
       if (self->device != NULL)
         gst_avdtp_sink_set_device (self->sink, self->device);
 
@@ -287,15 +240,12 @@
       g_object_set (G_OBJECT (self->sink), "auto-connect",
           self->autoconnect, NULL);
 
-      ret = gst_element_set_state (GST_ELEMENT (self->sink), GST_STATE_READY);
       break;
+
     default:
       break;
   }
 
-  if (ret == GST_STATE_CHANGE_FAILURE)
-    return ret;
-
   ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
 
   switch (transition) {
@@ -304,25 +254,11 @@
         gst_tag_list_unref (self->taglist);
         self->taglist = NULL;
       }
-      if (self->segment_event != NULL) {
-        gst_event_unref (self->segment_event);
-        self->segment_event = NULL;
-      }
-      gst_a2dp_sink_remove_fakesink (self);
       break;
 
     case GST_STATE_CHANGE_READY_TO_NULL:
-      if (self->sink_is_in_bin) {
-        if (!gst_bin_remove (GST_BIN (self), GST_ELEMENT (self->sink)))
-          GST_WARNING_OBJECT (self, "Failed to remove " "avdtpsink from bin");
-      } else if (self->sink != NULL) {
-        gst_element_set_state (GST_ELEMENT (self->sink), GST_STATE_NULL);
-        g_object_unref (G_OBJECT (self->sink));
-      }
-
-      self->sink = NULL;
-
       gst_a2dp_sink_remove_dynamic_elements (self);
+
       break;
     default:
       break;
@@ -342,8 +278,6 @@
   object_class->set_property = GST_DEBUG_FUNCPTR (gst_a2dp_sink_set_property);
   object_class->get_property = GST_DEBUG_FUNCPTR (gst_a2dp_sink_get_property);
 
-  object_class->finalize = GST_DEBUG_FUNCPTR (gst_a2dp_sink_finalize);
-
   element_class->change_state = GST_DEBUG_FUNCPTR (gst_a2dp_sink_change_state);
 
   g_object_class_install_property (object_class, PROP_DEVICE,
@@ -366,8 +300,8 @@
   GST_DEBUG_CATEGORY_INIT (gst_a2dp_sink_debug, "a2dpsink", 0,
       "A2DP sink element");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_a2dp_sink_factory));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_a2dp_sink_factory);
 }
 
 GstCaps *
@@ -379,22 +313,16 @@
 static GstCaps *
 gst_a2dp_sink_get_caps (GstA2dpSink * self)
 {
-  GstCaps *caps;
-  GstCaps *caps_aux;
+  GstCaps *caps = NULL;
 
-  if (self->sink == NULL) {
-    GST_DEBUG_OBJECT (self, "a2dpsink isn't initialized "
-        "returning template caps");
-    caps = gst_static_pad_template_get_caps (&gst_a2dp_sink_factory);
-  } else {
+  if (self->sink != NULL) {
     GST_LOG_OBJECT (self, "Getting device caps");
     caps = gst_a2dp_sink_get_device_caps (self);
-    if (caps == NULL)
-      caps = gst_static_pad_template_get_caps (&gst_a2dp_sink_factory);
   }
-  caps_aux = gst_caps_copy (caps);
-  g_object_set (self->capsfilter, "caps", caps_aux, NULL);
-  gst_caps_unref (caps_aux);
+
+  if (!caps)
+    caps = gst_static_pad_template_get_caps (&gst_a2dp_sink_factory);
+
   return caps;
 }
 
@@ -403,10 +331,6 @@
 {
   GstElement *sink;
 
-  /* check if we don't need a new sink */
-  if (self->sink_is_in_bin)
-    return TRUE;
-
   if (self->sink == NULL)
     sink = gst_element_factory_make ("avdtpsink", "avdtpsink");
   else
@@ -422,30 +346,14 @@
     goto cleanup_and_fail;
   }
 
-  if (gst_element_set_state (sink, GST_STATE_READY) == GST_STATE_CHANGE_FAILURE) {
-    GST_ERROR_OBJECT (self, "avdtpsink failed to go to ready");
-    goto remove_element_and_fail;
-  }
-
-  if (!gst_element_link (GST_ELEMENT (self->rtp), sink)) {
-    GST_ERROR_OBJECT (self, "couldn't link rtpsbcpay " "to avdtpsink");
-    goto remove_element_and_fail;
-  }
-
   self->sink = GST_AVDTP_SINK (sink);
-  self->sink_is_in_bin = TRUE;
   g_object_set (G_OBJECT (self->sink), "device", self->device, NULL);
   g_object_set (G_OBJECT (self->sink), "transport", self->transport, NULL);
 
-  gst_element_set_state (sink, GST_STATE_PAUSED);
+  gst_element_sync_state_with_parent (sink);
 
   return TRUE;
 
-remove_element_and_fail:
-  gst_element_set_state (sink, GST_STATE_NULL);
-  gst_bin_remove (GST_BIN (self), sink);
-  return FALSE;
-
 cleanup_and_fail:
   if (sink != NULL)
     g_object_unref (G_OBJECT (sink));
@@ -462,8 +370,7 @@
   if (self->rtp != NULL)
     return TRUE;
 
-  rtppay = gst_a2dp_sink_init_element (self, "rtpsbcpay", "rtp",
-      self->capsfilter);
+  rtppay = gst_a2dp_sink_init_element (self, "rtpsbcpay", "rtp");
   if (rtppay == NULL)
     return FALSE;
 
@@ -485,12 +392,8 @@
     return TRUE;
 
   GST_LOG_OBJECT (self, "Initializing rtp mpeg element");
-  /* if capsfilter is not created then we can't have our rtp element */
-  if (self->capsfilter == NULL)
-    return FALSE;
 
-  rtppay = gst_a2dp_sink_init_element (self, "rtpmpapay", "rtp",
-      self->capsfilter);
+  rtppay = gst_a2dp_sink_init_element (self, "rtpmpapay", "rtp");
   if (rtppay == NULL)
     return FALSE;
 
@@ -506,15 +409,11 @@
 {
   GstStructure *structure;
   GstEvent *event;
-  GstPad *capsfilterpad;
   gboolean crc;
   gchar *mode = NULL;
 
   structure = gst_caps_get_structure (caps, 0);
 
-  /* before everything we need to remove fakesink */
-  gst_a2dp_sink_remove_fakesink (self);
-
   /* first, we need to create our rtp payloader */
   if (gst_structure_has_name (structure, "audio/x-sbc")) {
     GST_LOG_OBJECT (self, "sbc media received");
@@ -529,8 +428,10 @@
     return FALSE;
   }
 
-  if (!gst_a2dp_sink_init_avdtp_sink (self))
+  if (!gst_element_link (GST_ELEMENT (self->rtp), GST_ELEMENT (self->sink))) {
+    GST_ERROR_OBJECT (self, "couldn't link rtpsbcpay " "to avdtpsink");
     return FALSE;
+  }
 
   /* check if we should push the taglist FIXME should we push this?
    * we can send the tags directly if needed */
@@ -545,71 +446,42 @@
     if (gst_tag_list_get_string (self->taglist, "channel-mode", &mode))
       gst_avdtp_sink_set_channel_mode (self->sink, mode);
 
-    capsfilterpad = gst_ghost_pad_get_target (GST_GHOST_PAD (self->ghostpad));
-    gst_pad_send_event (capsfilterpad, event);
+    gst_pad_send_event (self->ghostpad, event);
+
     self->taglist = NULL;
     g_free (mode);
   }
 
-  if (!gst_avdtp_sink_set_device_caps (self->sink, caps))
-    return FALSE;
-
   g_object_set (self->rtp, "mtu",
       gst_avdtp_sink_get_link_mtu (self->sink), NULL);
 
-#if 0
-  /* we forward our new segment here if we have one (FIXME: not needed any more) */
-  if (self->segment_event) {
-    gst_pad_send_event (GST_BASE_RTP_PAYLOAD_SINKPAD (self->rtp),
-        self->segment_event);
-    self->segment_event = NULL;
-  }
-#endif
-
   return TRUE;
 }
 
-/* used for catching newsegment events while we don't have a sink, for
- * later forwarding it to the sink */
 static gboolean
 gst_a2dp_sink_handle_event (GstPad * pad, GstObject * pad_parent,
     GstEvent * event)
 {
   GstA2dpSink *self;
   GstTagList *taglist = NULL;
-  GstObject *parent;
 
   self = GST_A2DP_SINK (pad_parent);
-  parent = gst_element_get_parent (GST_ELEMENT (self->sink));
 
-  if (GST_EVENT_TYPE (event) == GST_EVENT_SEGMENT &&
-      parent != GST_OBJECT_CAST (self)) {
-    if (self->segment_event != NULL)
-      gst_event_unref (self->segment_event);
-    self->segment_event = gst_event_ref (event);
-
-  } else if (GST_EVENT_TYPE (event) == GST_EVENT_TAG &&
-      parent != GST_OBJECT_CAST (self)) {
+  if (GST_EVENT_TYPE (event) == GST_EVENT_TAG) {
     if (self->taglist == NULL)
       gst_event_parse_tag (event, &self->taglist);
     else {
       gst_event_parse_tag (event, &taglist);
       gst_tag_list_insert (self->taglist, taglist, GST_TAG_MERGE_REPLACE);
     }
-  } else if (GST_EVENT_TYPE (event) == GST_EVENT_CAPS &&
-      parent != GST_OBJECT_CAST (self)) {
+  } else if (GST_EVENT_TYPE (event) == GST_EVENT_CAPS) {
     GstCaps *caps = NULL;
 
-    /* FIXME: really check for parent != self above? */
-    /* now we know the caps */
     gst_event_parse_caps (event, &caps);
     gst_a2dp_sink_init_dynamic_elements (self, caps);
   }
 
-  if (parent != NULL)
-    gst_object_unref (GST_OBJECT (parent));
-
-  return self->ghostpad_eventfunc (self->ghostpad, GST_OBJECT (self), event);
+  return gst_pad_event_default (pad, pad_parent, event);
 }
 
 static gboolean
@@ -626,91 +498,24 @@
     gst_caps_unref (caps);
     ret = TRUE;
   } else {
-    ret = sink->ghostpad_queryfunc (pad, parent, query);
+    ret = gst_pad_query_default (pad, parent, query);
   }
 
   return ret;
 }
 
-
-static gboolean
-gst_a2dp_sink_init_caps_filter (GstA2dpSink * self)
-{
-  GstElement *element;
-
-  element = gst_element_factory_make ("capsfilter", "filter");
-  if (element == NULL)
-    goto failed;
-
-  if (!gst_bin_add (GST_BIN (self), element))
-    goto failed;
-
-  self->capsfilter = element;
-  return TRUE;
-
-failed:
-  GST_ERROR_OBJECT (self, "Failed to initialize caps filter");
-  return FALSE;
-}
-
-static gboolean
-gst_a2dp_sink_init_fakesink (GstA2dpSink * self)
-{
-  if (self->fakesink != NULL)
-    return TRUE;
-
-  g_mutex_lock (&self->cb_mutex);
-  self->fakesink = gst_a2dp_sink_init_element (self, "fakesink",
-      "fakesink", self->capsfilter);
-  g_mutex_unlock (&self->cb_mutex);
-
-  if (!self->fakesink)
-    return FALSE;
-
-  return TRUE;
-}
-
-static gboolean
-gst_a2dp_sink_remove_fakesink (GstA2dpSink * self)
-{
-  g_mutex_lock (&self->cb_mutex);
-
-  if (self->fakesink != NULL) {
-    gst_element_set_locked_state (self->fakesink, TRUE);
-    gst_element_set_state (self->fakesink, GST_STATE_NULL);
-
-    gst_bin_remove (GST_BIN (self), self->fakesink);
-    self->fakesink = NULL;
-  }
-
-  g_mutex_unlock (&self->cb_mutex);
-
-  return TRUE;
-}
-
 static void
 gst_a2dp_sink_init (GstA2dpSink * self)
 {
   self->sink = NULL;
-  self->fakesink = NULL;
   self->rtp = NULL;
   self->device = NULL;
   self->transport = NULL;
   self->autoconnect = DEFAULT_AUTOCONNECT;
-  self->capsfilter = NULL;
-  self->segment_event = NULL;
   self->taglist = NULL;
   self->ghostpad = NULL;
-  self->sink_is_in_bin = FALSE;
-
-  g_mutex_init (&self->cb_mutex);
-
-  /* we initialize our capsfilter */
-  gst_a2dp_sink_init_caps_filter (self);
-  g_object_set (self->capsfilter, "caps",
-      gst_static_pad_template_get_caps (&gst_a2dp_sink_factory), NULL);
-
-  gst_a2dp_sink_init_fakesink (self);
 
   gst_a2dp_sink_init_ghost_pad (self);
+
+  gst_a2dp_sink_init_avdtp_sink (self);
 }
diff --git a/sys/bluez/gsta2dpsink.h b/sys/bluez/gsta2dpsink.h
index 20c40e8..bbfe87b 100644
--- a/sys/bluez/gsta2dpsink.h
+++ b/sys/bluez/gsta2dpsink.h
@@ -47,24 +47,16 @@
 
   GstElement *rtp;
   GstAvdtpSink *sink;
-  GstElement *capsfilter;
-  GstElement *fakesink;
 
   gchar *device;
   gchar *transport;
   gboolean autoconnect;
-  gboolean sink_is_in_bin;
 
   GstPad *ghostpad;
-  GstPadQueryFunction ghostpad_queryfunc;
-  GstPadEventFunction ghostpad_eventfunc;
 
-  GstEvent *segment_event;
   /* Store the tags received before the a2dpsender sink is created
    * when it is created we forward this to it */
   GstTagList *taglist;
-
-  GMutex cb_mutex;
 };
 
 struct _GstA2dpSinkClass
diff --git a/sys/bluez/gstavdtpsink.c b/sys/bluez/gstavdtpsink.c
index 0f72a74..c6463d5 100644
--- a/sys/bluez/gstavdtpsink.c
+++ b/sys/bluez/gstavdtpsink.c
@@ -244,7 +244,7 @@
     gst_tag_list_foreach (taglist, gst_avdtp_sink_tag, self);
   }
 
-  return TRUE;
+  return GST_BASE_SINK_CLASS (parent_class)->event (basesink, event);
 }
 
 static gboolean
@@ -381,8 +381,8 @@
   GST_DEBUG_CATEGORY_INIT (avdtp_sink_debug, "avdtpsink", 0,
       "A2DP headset sink element");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&avdtp_sink_factory));
+  gst_element_class_add_static_pad_template (element_class,
+      &avdtp_sink_factory);
 
   gst_element_class_set_static_metadata (element_class, "Bluetooth AVDTP sink",
       "Sink/Audio", "Plays audio to an A2DP device",
@@ -427,21 +427,6 @@
   return gst_caps_copy (sink->dev_caps);
 }
 
-gboolean
-gst_avdtp_sink_set_device_caps (GstAvdtpSink * self, GstCaps * caps)
-{
-  GST_DEBUG_OBJECT (self, "setting device caps");
-  GST_AVDTP_SINK_MUTEX_LOCK (self);
-
-  if (self->stream_caps)
-    gst_caps_unref (self->stream_caps);
-  self->stream_caps = gst_caps_ref (caps);
-
-  GST_AVDTP_SINK_MUTEX_UNLOCK (self);
-
-  return TRUE;
-}
-
 guint
 gst_avdtp_sink_get_link_mtu (GstAvdtpSink * sink)
 {
diff --git a/sys/bluez/gstavdtpsink.h b/sys/bluez/gstavdtpsink.h
index 91eba40..c6b60b7 100644
--- a/sys/bluez/gstavdtpsink.h
+++ b/sys/bluez/gstavdtpsink.h
@@ -74,7 +74,6 @@
 GType gst_avdtp_sink_get_type (void);
 
 GstCaps *gst_avdtp_sink_get_device_caps (GstAvdtpSink * sink);
-gboolean gst_avdtp_sink_set_device_caps (GstAvdtpSink * sink, GstCaps * caps);
 
 guint gst_avdtp_sink_get_link_mtu (GstAvdtpSink * sink);
 
diff --git a/sys/bluez/gstavdtpsrc.c b/sys/bluez/gstavdtpsrc.c
index fee5505..1c68e45 100644
--- a/sys/bluez/gstavdtpsrc.c
+++ b/sys/bluez/gstavdtpsrc.c
@@ -68,6 +68,8 @@
     const GValue * value, GParamSpec * pspec);
 
 static GstCaps *gst_avdtp_src_getcaps (GstBaseSrc * bsrc, GstCaps * filter);
+static gboolean gst_avdtp_src_query (GstPad * pad, GstObject * parent,
+    GstQuery * query);
 static gboolean gst_avdtp_src_start (GstBaseSrc * bsrc);
 static gboolean gst_avdtp_src_stop (GstBaseSrc * bsrc);
 static GstFlowReturn gst_avdtp_src_create (GstBaseSrc * bsrc, guint64 offset,
@@ -108,8 +110,8 @@
   GST_DEBUG_CATEGORY_INIT (avdtpsrc_debug, "avdtpsrc", 0,
       "Bluetooth AVDTP Source");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_avdtp_src_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_avdtp_src_template);
 }
 
 static void
@@ -117,9 +119,14 @@
 {
   avdtpsrc->poll = gst_poll_new (TRUE);
 
+  avdtpsrc->duration = GST_CLOCK_TIME_NONE;
+
   gst_base_src_set_format (GST_BASE_SRC (avdtpsrc), GST_FORMAT_TIME);
   gst_base_src_set_live (GST_BASE_SRC (avdtpsrc), TRUE);
   gst_base_src_set_do_timestamp (GST_BASE_SRC (avdtpsrc), TRUE);
+
+  gst_pad_set_query_function (GST_BASE_SRC_PAD (avdtpsrc),
+      GST_DEBUG_FUNCPTR (gst_avdtp_src_query));
 }
 
 static void
@@ -169,6 +176,35 @@
   }
 }
 
+static gboolean
+gst_avdtp_src_query (GstPad * pad, GstObject * parent, GstQuery * query)
+{
+  GstAvdtpSrc *avdtpsrc = GST_AVDTP_SRC (gst_pad_get_parent_element (pad));
+  gboolean ret = FALSE;
+
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_DURATION:{
+      GstFormat format;
+
+      if (avdtpsrc->duration != GST_CLOCK_TIME_NONE) {
+        gst_query_parse_duration (query, &format, NULL);
+
+        if (format == GST_FORMAT_TIME) {
+          gst_query_set_duration (query, format, (gint64) avdtpsrc->duration);
+          ret = TRUE;
+        }
+      }
+
+      break;
+    }
+
+    default:
+      ret = gst_pad_query_default (pad, parent, query);
+  }
+
+  return ret;
+}
+
 static GstCaps *
 gst_avdtp_src_getcaps (GstBaseSrc * bsrc, GstCaps * filter)
 {
@@ -247,6 +283,54 @@
   return ret;
 }
 
+static void
+avrcp_metadata_cb (GstAvrcpConnection * avrcp, GstTagList * taglist,
+    gpointer user_data)
+{
+  GstAvdtpSrc *src = GST_AVDTP_SRC (user_data);
+  guint64 duration;
+
+  if (gst_tag_list_get_uint64 (taglist, GST_TAG_DURATION, &duration)) {
+    src->duration = duration;
+    gst_element_post_message (GST_ELEMENT (src),
+        gst_message_new_duration_changed (GST_OBJECT (src)));
+  }
+
+  gst_pad_push_event (GST_BASE_SRC_PAD (src),
+      gst_event_new_tag (gst_tag_list_copy (taglist)));
+  gst_element_post_message (GST_ELEMENT (src),
+      gst_message_new_tag (GST_OBJECT (src), taglist));
+}
+
+static void
+gst_avdtp_src_start_avrcp (GstAvdtpSrc * src)
+{
+  gchar *path, **strv;
+  int i;
+
+  /* Strip out the /fdX in /org/bluez/dev_.../fdX */
+  strv = g_strsplit (src->conn.transport, "/", -1);
+
+  for (i = 0; strv[i]; i++);
+  g_return_if_fail (i > 0);
+
+  g_free (strv[i - 1]);
+  strv[i - 1] = NULL;
+
+  path = g_strjoinv ("/", strv);
+  g_strfreev (strv);
+
+  src->avrcp = gst_avrcp_connection_new (path, avrcp_metadata_cb, src, NULL);
+
+  g_free (path);
+}
+
+static void
+gst_avdtp_src_stop_avrcp (GstAvdtpSrc * src)
+{
+  gst_avrcp_connection_free (src->avrcp);
+}
+
 static gboolean
 gst_avdtp_src_start (GstBaseSrc * bsrc)
 {
@@ -291,6 +375,8 @@
 
   g_atomic_int_set (&avdtpsrc->unlocked, FALSE);
 
+  gst_avdtp_src_start_avrcp (avdtpsrc);
+
   return TRUE;
 
 fail:
@@ -306,6 +392,7 @@
   gst_poll_remove_fd (avdtpsrc->poll, &avdtpsrc->pfd);
   gst_poll_set_flushing (avdtpsrc->poll, TRUE);
 
+  gst_avdtp_src_stop_avrcp (avdtpsrc);
   gst_avdtp_connection_release (&avdtpsrc->conn);
 
   if (avdtpsrc->dev_caps) {
diff --git a/sys/bluez/gstavdtpsrc.h b/sys/bluez/gstavdtpsrc.h
index 67027fa..334ff15 100644
--- a/sys/bluez/gstavdtpsrc.h
+++ b/sys/bluez/gstavdtpsrc.h
@@ -27,6 +27,7 @@
 #include <gst/gst.h>
 #include <gst/base/gstbasesrc.h>
 #include "gstavdtputil.h"
+#include "gstavrcputil.h"
 
 G_BEGIN_DECLS
 #define GST_TYPE_AVDTP_SRC \
@@ -54,9 +55,13 @@
   GstAvdtpConnection conn;
   GstCaps *dev_caps;
 
+  GstAvrcpConnection *avrcp;
+
   GstPoll *poll;
   GstPollFD pfd;
   volatile gint unlocked;
+
+  GstClockTime duration;
 };
 
 GType gst_avdtp_src_get_type (void);
diff --git a/sys/bluez/gstavrcputil.c b/sys/bluez/gstavrcputil.c
new file mode 100644
index 0000000..efce32d
--- /dev/null
+++ b/sys/bluez/gstavrcputil.c
@@ -0,0 +1,333 @@
+/*
+ * Copyright (C) 2015 Arun Raghavan <git@arunraghavan.net>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "gstavrcputil.h"
+#include "bluez.h"
+
+#include <gio/gio.h>
+
+#define BLUEZ_NAME "org.bluez"
+#define BLUEZ_PATH "/"
+#define BLUEZ_MEDIA_PLAYER_IFACE BLUEZ_NAME ".MediaPlayer1"
+
+struct _GstAvrcpConnection
+{
+  GMainContext *context;
+  GMainLoop *mainloop;
+  GThread *thread;
+
+  gchar *dev_path;
+  GDBusObjectManager *manager;
+  BluezMediaPlayer1 *player;
+
+  GstAvrcpMetadataCb cb;
+  gpointer user_data;
+  GDestroyNotify user_data_free_cb;
+};
+
+static const char *
+tag_from_property (const char *name)
+{
+  if (g_str_equal (name, "Title"))
+    return GST_TAG_TITLE;
+  else if (g_str_equal (name, "Artist"))
+    return GST_TAG_ARTIST;
+  else if (g_str_equal (name, "Album"))
+    return GST_TAG_ALBUM;
+  else if (g_str_equal (name, "Genre"))
+    return GST_TAG_GENRE;
+  else if (g_str_equal (name, "NumberOfTracks"))
+    return GST_TAG_TRACK_COUNT;
+  else if (g_str_equal (name, "TrackNumber"))
+    return GST_TAG_TRACK_NUMBER;
+  else if (g_str_equal (name, "Duration"))
+    return GST_TAG_DURATION;
+  else
+    return NULL;
+}
+
+static GstTagList *
+tag_list_from_variant (GVariant * properties, gboolean track)
+{
+  const gchar *name, *s;
+  GVariant *value;
+  GVariantIter *iter;
+  GstTagList *taglist = NULL;
+
+  iter = g_variant_iter_new (properties);
+
+  if (track)
+    taglist = gst_tag_list_new_empty ();
+
+  /* The properties are in two levels -- at the top level we have the position
+   * and the 'track'. The 'track' is another level of {sv} so we recurse one
+   * level to pick up the actual track data. We get the taglist from the
+   * recursive call, and ignore the position for now. */
+
+  while (g_variant_iter_next (iter, "{&sv}", &name, &value)) {
+    if (!track && g_str_equal (name, "Track")) {
+      /* Top level property */
+      taglist = tag_list_from_variant (value, TRUE);
+
+    } else if (track) {
+      /* If we get here, we are in the recursive call and we're dealing with
+       * properties under "Track" */
+      GType type;
+      const gchar *tag;
+      guint i;
+      guint64 i64;
+
+      tag = tag_from_property (name);
+      if (!tag)
+        goto next;
+
+      type = gst_tag_get_type (tag);
+
+      switch (type) {
+        case G_TYPE_STRING:
+          s = g_variant_get_string (value, NULL);
+          if (s && s[0] != '\0')
+            gst_tag_list_add (taglist, GST_TAG_MERGE_REPLACE, tag, s, NULL);
+          break;
+
+        case G_TYPE_UINT:
+          i = g_variant_get_uint32 (value);
+          if (i > 0)
+            gst_tag_list_add (taglist, GST_TAG_MERGE_REPLACE, tag, i, NULL);
+          break;
+
+        case G_TYPE_UINT64:
+          /* If we're here, the tag is 'duration' */
+          i64 = g_variant_get_uint32 (value);
+          if (i64 > 0 && i64 != (guint32) (-1)) {
+            gst_tag_list_add (taglist, GST_TAG_MERGE_REPLACE, tag,
+                i64 * GST_MSECOND, NULL);
+          }
+          break;
+
+        default:
+          GST_WARNING ("Unknown property: %s", name);
+          break;
+      }
+    }
+
+  next:
+    g_variant_unref (value);
+  }
+
+  g_variant_iter_free (iter);
+
+  if (taglist && gst_tag_list_is_empty (taglist)) {
+    gst_tag_list_unref (taglist);
+    taglist = NULL;
+  }
+
+  return taglist;
+}
+
+static void
+player_property_changed_cb (GDBusProxy * proxy, GVariant * properties,
+    GStrv invalid, gpointer user_data)
+{
+  GstAvrcpConnection *avrcp = (GstAvrcpConnection *) user_data;
+  GstTagList *taglist;
+
+  taglist = tag_list_from_variant (properties, FALSE);
+
+  if (taglist)
+    avrcp->cb (avrcp, taglist, avrcp->user_data);
+}
+
+static GstTagList *
+player_get_taglist (BluezMediaPlayer1 * player)
+{
+  GstTagList *taglist = NULL;
+  GVariant *track;
+
+  track = bluez_media_player1_get_track (player);
+  if (track)
+    taglist = tag_list_from_variant (track, TRUE);
+
+  return taglist;
+}
+
+static void
+gst_avrcp_connection_set_player (GstAvrcpConnection * avrcp,
+    BluezMediaPlayer1 * player)
+{
+  GstTagList *taglist;
+
+  if (avrcp->player)
+    g_object_unref (avrcp->player);
+
+  if (!player) {
+    avrcp->player = NULL;
+    return;
+  }
+
+  avrcp->player = g_object_ref (player);
+
+  g_signal_connect (player, "g-properties-changed",
+      G_CALLBACK (player_property_changed_cb), avrcp);
+
+  taglist = player_get_taglist (avrcp->player);
+
+  if (taglist)
+    avrcp->cb (avrcp, taglist, avrcp->user_data);
+}
+
+static BluezMediaPlayer1 *
+media_player_from_dbus_object (GDBusObject * object)
+{
+  return (BluezMediaPlayer1 *) g_dbus_object_get_interface (object,
+      BLUEZ_MEDIA_PLAYER_IFACE);
+}
+
+static GType
+manager_proxy_type_func (GDBusObjectManagerClient * manager,
+    const gchar * object_path, const gchar * interface_name, gpointer user_data)
+{
+  if (!interface_name)
+    return G_TYPE_DBUS_OBJECT_PROXY;
+
+  if (g_str_equal (interface_name, BLUEZ_MEDIA_PLAYER_IFACE))
+    return BLUEZ_TYPE_MEDIA_PLAYER1_PROXY;
+
+  return G_TYPE_DBUS_PROXY;
+}
+
+static void
+manager_object_added_cb (GDBusObjectManager * manager,
+    GDBusObject * object, gpointer user_data)
+{
+  GstAvrcpConnection *avrcp = (GstAvrcpConnection *) user_data;
+  BluezMediaPlayer1 *player;
+
+  if (!(player = media_player_from_dbus_object (object)))
+    return;
+
+  gst_avrcp_connection_set_player (avrcp, player);
+}
+
+static void
+manager_object_removed_cb (GDBusObjectManager * manager,
+    GDBusObject * object, gpointer user_data)
+{
+  GstAvrcpConnection *avrcp = (GstAvrcpConnection *) user_data;
+  BluezMediaPlayer1 *player;
+
+  if (!(player = media_player_from_dbus_object (object)))
+    return;
+
+  if (player == avrcp->player)
+    gst_avrcp_connection_set_player (avrcp, NULL);
+}
+
+static void
+manager_ready_cb (GObject * object, GAsyncResult * res, gpointer user_data)
+{
+  GstAvrcpConnection *avrcp = (GstAvrcpConnection *) user_data;
+  GList *objects, *i;
+  GError *err = NULL;
+
+  avrcp->manager = g_dbus_object_manager_client_new_for_bus_finish (res, &err);
+  if (!avrcp->manager) {
+    GST_WARNING ("Could not create ObjectManager proxy: %s", err->message);
+    g_error_free (err);
+    return;
+  }
+
+  g_signal_connect (avrcp->manager, "object-added",
+      G_CALLBACK (manager_object_added_cb), avrcp);
+  g_signal_connect (avrcp->manager, "object-removed",
+      G_CALLBACK (manager_object_removed_cb), avrcp);
+
+  objects = g_dbus_object_manager_get_objects (avrcp->manager);
+
+  for (i = objects; i; i = i->next) {
+    BluezMediaPlayer1 *player =
+        media_player_from_dbus_object (G_DBUS_OBJECT (i->data));
+
+    if (player && g_str_equal (avrcp->dev_path,
+            bluez_media_player1_get_device (player))) {
+      gst_avrcp_connection_set_player (avrcp, player);
+      break;
+    }
+  }
+
+  g_list_free_full (objects, g_object_unref);
+}
+
+GstAvrcpConnection *
+gst_avrcp_connection_new (const gchar * dev_path, GstAvrcpMetadataCb cb,
+    gpointer user_data, GDestroyNotify user_data_free_cb)
+{
+  GstAvrcpConnection *avrcp;
+
+  avrcp = g_new0 (GstAvrcpConnection, 1);
+
+  avrcp->cb = cb;
+  avrcp->user_data = user_data;
+  avrcp->user_data_free_cb = user_data_free_cb;
+
+  avrcp->context = g_main_context_new ();
+  avrcp->mainloop = g_main_loop_new (avrcp->context, FALSE);
+
+  avrcp->dev_path = g_strdup (dev_path);
+
+  g_main_context_push_thread_default (avrcp->context);
+
+  g_dbus_object_manager_client_new_for_bus (G_BUS_TYPE_SYSTEM,
+      G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE, BLUEZ_NAME, BLUEZ_PATH,
+      manager_proxy_type_func, NULL, NULL, NULL, manager_ready_cb, avrcp);
+
+  g_main_context_pop_thread_default (avrcp->context);
+
+  avrcp->thread = g_thread_new ("gstavrcp", (GThreadFunc) g_main_loop_run,
+      avrcp->mainloop);
+
+  return avrcp;
+}
+
+void
+gst_avrcp_connection_free (GstAvrcpConnection * avrcp)
+{
+  g_main_loop_quit (avrcp->mainloop);
+  g_main_loop_unref (avrcp->mainloop);
+
+  g_main_context_unref (avrcp->context);
+
+  g_thread_join (avrcp->thread);
+
+  if (avrcp->player)
+    g_object_unref (avrcp->player);
+
+  if (avrcp->manager)
+    g_object_unref (avrcp->manager);
+
+  if (avrcp->user_data_free_cb)
+    avrcp->user_data_free_cb (avrcp->user_data);
+
+  g_free (avrcp->dev_path);
+  g_free (avrcp);
+}
diff --git a/sys/bluez/gstavrcputil.h b/sys/bluez/gstavrcputil.h
new file mode 100644
index 0000000..b59aa3c
--- /dev/null
+++ b/sys/bluez/gstavrcputil.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2015 Arun Raghavan <git@arunraghavan.net>
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef __GST_AVRCP_UTIL_H
+#define __GST_AVRCP_UTIL_H
+
+#include <gst/gst.h>
+
+typedef struct _GstAvrcpConnection GstAvrcpConnection;
+
+typedef void (*GstAvrcpMetadataCb) (GstAvrcpConnection *, GstTagList *,
+    gpointer);
+
+GstAvrcpConnection *
+gst_avrcp_connection_new (const gchar * dev_path, GstAvrcpMetadataCb cb,
+    gpointer user_data, GDestroyNotify user_data_free_cb);
+
+void gst_avrcp_connection_free (GstAvrcpConnection * avrcp);
+
+#endif /* __GST_AVRCP_UTIL_H */
diff --git a/sys/bluez/org.bluez.xml b/sys/bluez/org.bluez.xml
index ff52ee3..facae70 100644
--- a/sys/bluez/org.bluez.xml
+++ b/sys/bluez/org.bluez.xml
@@ -26,4 +26,28 @@
     <property name="Delay" type="q" access="read"></property>
     <property name="Volume" type="q" access="readwrite"></property>
 </interface>
+
+<interface name="org.bluez.MediaPlayer1">
+  <method name="Play"/>
+  <method name="Pause"/>
+  <method name="Stop"/>
+  <method name="Next"/>
+  <method name="Previous"/>
+  <method name="FastForward"/>
+  <method name="Rewind"/>
+  <property name="Name" type="s" access="read"/>
+  <property name="Type" type="s" access="read"/>
+  <property name="Subtype" type="s" access="read"/>
+  <property name="Position" type="u" access="read"/>
+  <property name="Status" type="s" access="read"/>
+  <property name="Equalizer" type="s" access="readwrite"/>
+  <property name="Repeat" type="s" access="readwrite"/>
+  <property name="Shuffle" type="s" access="readwrite"/>
+  <property name="Scan" type="s" access="readwrite"/>
+  <property name="Track" type="a{sv}" access="read"/>
+  <property name="Device" type="o" access="read"/>
+  <property name="Browsable" type="b" access="read"/>
+  <property name="Searchable" type="b" access="read"/>
+  <property name="Playlist" type="o" access="read"/>
+</interface>
 </node>
diff --git a/sys/d3dvideosink/Makefile.in b/sys/d3dvideosink/Makefile.in
index e14d0ce..4ba579a 100644
--- a/sys/d3dvideosink/Makefile.in
+++ b/sys/d3dvideosink/Makefile.in
@@ -304,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/d3dvideosink/d3dhelpers.h b/sys/d3dvideosink/d3dhelpers.h
index 4145f78..3662329 100644
--- a/sys/d3dvideosink/d3dhelpers.h
+++ b/sys/d3dvideosink/d3dhelpers.h
@@ -44,7 +44,6 @@
 #endif
 
 #include <d3d9.h>
-#include <d3dx9tex.h>
 
 typedef struct _GstD3DVideoSink GstD3DVideoSink;
 typedef struct _GstD3DVideoSinkClass GstD3DVideoSinkClass;
diff --git a/sys/d3dvideosink/d3dvideosink.c b/sys/d3dvideosink/d3dvideosink.c
index 5888641..88e201e 100644
--- a/sys/d3dvideosink/d3dvideosink.c
+++ b/sys/d3dvideosink/d3dvideosink.c
@@ -156,8 +156,7 @@
       "Display data using a Direct3D video renderer",
       "David Hoyt <dhoyt@hoytsoft.org>, Roland Krikava <info@bluedigits.com>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_template);
 
   g_rec_mutex_init (&klass->lock);
 }
diff --git a/sys/decklink/Makefile.in b/sys/decklink/Makefile.in
index b05c31c..23c0596 100644
--- a/sys/decklink/Makefile.in
+++ b/sys/decklink/Makefile.in
@@ -324,6 +324,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -345,6 +347,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -394,6 +398,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -539,6 +545,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -665,8 +673,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -709,8 +715,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/decklink/gstdecklink.cpp b/sys/decklink/gstdecklink.cpp
index 8df23af..184f124 100644
--- a/sys/decklink/gstdecklink.cpp
+++ b/sys/decklink/gstdecklink.cpp
@@ -38,44 +38,44 @@
 {
   static gsize id = 0;
   static const GEnumValue modes[] = {
-    {GST_DECKLINK_MODE_AUTO, "auto", "Automatic detection"},
+    {GST_DECKLINK_MODE_AUTO, "Automatic detection", "auto"},
 
-    {GST_DECKLINK_MODE_NTSC, "ntsc", "NTSC SD 60i"},
-    {GST_DECKLINK_MODE_NTSC2398, "ntsc2398", "NTSC SD 60i (24 fps)"},
-    {GST_DECKLINK_MODE_PAL, "pal", "PAL SD 50i"},
-    {GST_DECKLINK_MODE_NTSC_P, "ntsc-p", "NTSC SD 60p"},
-    {GST_DECKLINK_MODE_PAL_P, "pal-p", "PAL SD 50p"},
+    {GST_DECKLINK_MODE_NTSC, "NTSC SD 60i", "ntsc"},
+    {GST_DECKLINK_MODE_NTSC2398, "NTSC SD 60i (24 fps)", "ntsc2398"},
+    {GST_DECKLINK_MODE_PAL, "PAL SD 50i", "pal"},
+    {GST_DECKLINK_MODE_NTSC_P, "NTSC SD 60p", "ntsc-p"},
+    {GST_DECKLINK_MODE_PAL_P, "PAL SD 50p", "pal-p"},
 
-    {GST_DECKLINK_MODE_1080p2398, "1080p2398", "HD1080 23.98p"},
-    {GST_DECKLINK_MODE_1080p24, "1080p24", "HD1080 24p"},
-    {GST_DECKLINK_MODE_1080p25, "1080p25", "HD1080 25p"},
-    {GST_DECKLINK_MODE_1080p2997, "1080p2997", "HD1080 29.97p"},
-    {GST_DECKLINK_MODE_1080p30, "1080p30", "HD1080 30p"},
+    {GST_DECKLINK_MODE_1080p2398, "HD1080 23.98p", "1080p2398"},
+    {GST_DECKLINK_MODE_1080p24, "HD1080 24p", "1080p24"},
+    {GST_DECKLINK_MODE_1080p25, "HD1080 25p", "1080p25"},
+    {GST_DECKLINK_MODE_1080p2997, "HD1080 29.97p", "1080p2997"},
+    {GST_DECKLINK_MODE_1080p30, "HD1080 30p", "1080p30"},
 
-    {GST_DECKLINK_MODE_1080i50, "1080i50", "HD1080 50i"},
-    {GST_DECKLINK_MODE_1080i5994, "1080i5994", "HD1080 59.94i"},
-    {GST_DECKLINK_MODE_1080i60, "1080i60", "HD1080 60i"},
+    {GST_DECKLINK_MODE_1080i50, "HD1080 50i", "1080i50"},
+    {GST_DECKLINK_MODE_1080i5994, "HD1080 59.94i", "1080i5994"},
+    {GST_DECKLINK_MODE_1080i60, "HD1080 60i", "1080i60"},
 
-    {GST_DECKLINK_MODE_1080p50, "1080p50", "HD1080 50p"},
-    {GST_DECKLINK_MODE_1080p5994, "1080p5994", "HD1080 59.94p"},
-    {GST_DECKLINK_MODE_1080p60, "1080p60", "HD1080 60p"},
+    {GST_DECKLINK_MODE_1080p50, "HD1080 50p", "1080p50"},
+    {GST_DECKLINK_MODE_1080p5994, "HD1080 59.94p", "1080p5994"},
+    {GST_DECKLINK_MODE_1080p60, "HD1080 60p", "1080p60"},
 
-    {GST_DECKLINK_MODE_720p50, "720p50", "HD720 50p"},
-    {GST_DECKLINK_MODE_720p5994, "720p5994", "HD720 59.94p"},
-    {GST_DECKLINK_MODE_720p60, "720p60", "HD720 60p"},
+    {GST_DECKLINK_MODE_720p50, "HD720 50p", "720p50"},
+    {GST_DECKLINK_MODE_720p5994, "HD720 59.94p", "720p5994"},
+    {GST_DECKLINK_MODE_720p60, "HD720 60p", "720p60"},
 
-    {GST_DECKLINK_MODE_1556p2398, "1556p2398", "2k 23.98p"},
-    {GST_DECKLINK_MODE_1556p24, "1556p24", "2k 24p"},
-    {GST_DECKLINK_MODE_1556p25, "1556p25", "2k 25p"},
+    {GST_DECKLINK_MODE_1556p2398, "2k 23.98p", "1556p2398"},
+    {GST_DECKLINK_MODE_1556p24, "2k 24p", "1556p24"},
+    {GST_DECKLINK_MODE_1556p25, "2k 25p", "1556p25"},
 
-    {GST_DECKLINK_MODE_2160p2398, "2160p2398", "4k 23.98p"},
-    {GST_DECKLINK_MODE_2160p24, "2160p24", "4k 24p"},
-    {GST_DECKLINK_MODE_2160p25, "2160p25", "4k 25p"},
-    {GST_DECKLINK_MODE_2160p2997, "2160p2997", "4k 29.97p"},
-    {GST_DECKLINK_MODE_2160p30, "2160p30", "4k 30p"},
-    {GST_DECKLINK_MODE_2160p50, "2160p50", "4k 50p"},
-    {GST_DECKLINK_MODE_2160p5994, "2160p5994", "4k 59.94p"},
-    {GST_DECKLINK_MODE_2160p60, "2160p60", "4k 60p"},
+    {GST_DECKLINK_MODE_2160p2398, "4k 23.98p", "2160p2398"},
+    {GST_DECKLINK_MODE_2160p24, "4k 24p", "2160p24"},
+    {GST_DECKLINK_MODE_2160p25, "4k 25p", "2160p25"},
+    {GST_DECKLINK_MODE_2160p2997, "4k 29.97p", "2160p2997"},
+    {GST_DECKLINK_MODE_2160p30, "4k 30p", "2160p30"},
+    {GST_DECKLINK_MODE_2160p50, "4k 50p", "2160p50"},
+    {GST_DECKLINK_MODE_2160p5994, "4k 59.94p", "2160p5994"},
+    {GST_DECKLINK_MODE_2160p60, "4k 60p", "2160p60"},
 
     {0, NULL, NULL}
   };
@@ -93,13 +93,13 @@
 {
   static gsize id = 0;
   static const GEnumValue connections[] = {
-    {GST_DECKLINK_CONNECTION_AUTO, "auto", "Auto"},
-    {GST_DECKLINK_CONNECTION_SDI, "sdi", "SDI"},
-    {GST_DECKLINK_CONNECTION_HDMI, "hdmi", "HDMI"},
-    {GST_DECKLINK_CONNECTION_OPTICAL_SDI, "optical-sdi", "Optical SDI"},
-    {GST_DECKLINK_CONNECTION_COMPONENT, "component", "Component"},
-    {GST_DECKLINK_CONNECTION_COMPOSITE, "composite", "Composite"},
-    {GST_DECKLINK_CONNECTION_SVIDEO, "svideo", "S-Video"},
+    {GST_DECKLINK_CONNECTION_AUTO, "Auto", "auto"},
+    {GST_DECKLINK_CONNECTION_SDI, "SDI", "sdi"},
+    {GST_DECKLINK_CONNECTION_HDMI, "HDMI", "hdmi"},
+    {GST_DECKLINK_CONNECTION_OPTICAL_SDI, "Optical SDI", "optical-sdi"},
+    {GST_DECKLINK_CONNECTION_COMPONENT, "Component", "component"},
+    {GST_DECKLINK_CONNECTION_COMPOSITE, "Composite", "composite"},
+    {GST_DECKLINK_CONNECTION_SVIDEO, "S-Video", "svideo"},
     {0, NULL, NULL}
   };
 
@@ -112,19 +112,74 @@
 }
 
 GType
+gst_decklink_video_format_get_type (void)
+{
+  static gsize id = 0;
+  static const GEnumValue types[] = {
+    {GST_DECKLINK_VIDEO_FORMAT_AUTO, "Auto", "auto"},
+    {GST_DECKLINK_VIDEO_FORMAT_8BIT_YUV, "bmdFormat8BitYUV", "8bit-yuv"},
+    {GST_DECKLINK_VIDEO_FORMAT_10BIT_YUV, "bmdFormat10BitYUV", "10bit-yuv"},
+    {GST_DECKLINK_VIDEO_FORMAT_8BIT_ARGB, "bmdFormat8BitARGB", "8bit-argb"},
+    {GST_DECKLINK_VIDEO_FORMAT_8BIT_BGRA, "bmdFormat8BitBGRA", "8bit-bgra"},
+    /* Not yet supported:
+       {GST_DECKLINK_VIDEO_FORMAT_10BIT_RGB, "bmdFormat10BitRGB", "10bit-rgb"},
+       {GST_DECKLINK_VIDEO_FORMAT_12BIT_RGB, "bmdFormat12BitRGB", "12bit-rgb"},
+       {GST_DECKLINK_VIDEO_FORMAT_12BIT_RGBLE, "bmdFormat12BitRGBLE", "12bit-rgble"},
+       {GST_DECKLINK_VIDEO_FORMAT_10BIT_RGBXLE, "bmdFormat10BitRGBXLE", "10bit-rgbxle"},
+       {GST_DECKLINK_VIDEO_FORMAT_10BIT_RGBX, "bmdFormat10BitRGBX", "10bit-rgbx"},
+     */
+    {0, NULL, NULL}
+  };
+
+  if (g_once_init_enter (&id)) {
+    GType tmp = g_enum_register_static ("GstDecklinkVideoFormat", types);
+    g_once_init_leave (&id, tmp);
+  }
+
+  return (GType) id;
+}
+
+GType
+gst_decklink_timecode_format_get_type (void)
+{
+  static gsize id = 0;
+  static const GEnumValue timecodeformats[] = {
+    {GST_DECKLINK_TIMECODE_FORMAT_RP188VITC1, "bmdTimecodeRP188VITC1",
+        "rp188vitc1"},
+    {GST_DECKLINK_TIMECODE_FORMAT_RP188VITC2, "bmdTimecodeRP188VITC2",
+        "rp188vitc2"},
+    {GST_DECKLINK_TIMECODE_FORMAT_RP188LTC, "bmdTimecodeRP188LTC", "rp188ltc"},
+    {GST_DECKLINK_TIMECODE_FORMAT_RP188ANY, "bmdTimecodeRP188Any", "rp188any"},
+    {GST_DECKLINK_TIMECODE_FORMAT_VITC, "bmdTimecodeVITC", "vitc"},
+    {GST_DECKLINK_TIMECODE_FORMAT_VITCFIELD2, "bmdTimecodeVITCField2",
+        "vitcfield2"},
+    {GST_DECKLINK_TIMECODE_FORMAT_SERIAL, "bmdTimecodeSerial", "serial"},
+    {0, NULL, NULL}
+  };
+
+  if (g_once_init_enter (&id)) {
+    GType tmp =
+        g_enum_register_static ("GstDecklinkTimecodeFormat", timecodeformats);
+    g_once_init_leave (&id, tmp);
+  }
+
+  return (GType) id;
+}
+
+GType
 gst_decklink_audio_connection_get_type (void)
 {
   static gsize id = 0;
   static const GEnumValue connections[] = {
-    {GST_DECKLINK_AUDIO_CONNECTION_AUTO, "auto", "Automatic"},
-    {GST_DECKLINK_AUDIO_CONNECTION_EMBEDDED, "embedded",
-        "SDI/HDMI embedded audio"},
-    {GST_DECKLINK_AUDIO_CONNECTION_AES_EBU, "aes", "AES/EBU input"},
-    {GST_DECKLINK_AUDIO_CONNECTION_ANALOG, "analog", "Analog input"},
-    {GST_DECKLINK_AUDIO_CONNECTION_ANALOG_XLR, "analog-xlr",
-        "Analog input (XLR)"},
-    {GST_DECKLINK_AUDIO_CONNECTION_ANALOG_RCA, "analog-rca",
-        "Analog input (RCA)"},
+    {GST_DECKLINK_AUDIO_CONNECTION_AUTO, "Automatic", "auto"},
+    {GST_DECKLINK_AUDIO_CONNECTION_EMBEDDED, "SDI/HDMI embedded audio",
+        "embedded"},
+    {GST_DECKLINK_AUDIO_CONNECTION_AES_EBU, "AES/EBU input", "aes"},
+    {GST_DECKLINK_AUDIO_CONNECTION_ANALOG, "Analog input", "analog"},
+    {GST_DECKLINK_AUDIO_CONNECTION_ANALOG_XLR, "Analog input (XLR)",
+        "analog-xlr"},
+    {GST_DECKLINK_AUDIO_CONNECTION_ANALOG_RCA, "Analog input (RCA)",
+        "analog-rca"},
     {0, NULL, NULL}
   };
 
@@ -183,6 +238,43 @@
   {bmdMode4K2160p60, 3840, 2160, 60, 1, false, UHD}
 };
 
+static const struct
+{
+  BMDPixelFormat format;
+  gint bpp;
+  GstVideoFormat vformat;
+} formats[] = {
+  /* *INDENT-OFF* */
+  {bmdFormat8BitYUV, 2, GST_VIDEO_FORMAT_UYVY},  /* auto */
+  {bmdFormat8BitYUV, 2, GST_VIDEO_FORMAT_UYVY},
+  {bmdFormat10BitYUV, 4, GST_VIDEO_FORMAT_v210},
+  {bmdFormat8BitARGB, 4, GST_VIDEO_FORMAT_ARGB},
+  {bmdFormat8BitBGRA, 4, GST_VIDEO_FORMAT_BGRA},
+/* Not yet supported
+  {bmdFormat10BitRGB, FIXME, FIXME},
+  {bmdFormat12BitRGB, FIXME, FIXME},
+  {bmdFormat12BitRGBLE, FIXME, FIXME},
+  {bmdFormat10BitRGBXLE, FIXME, FIXME},
+  {bmdFormat10BitRGBX, FIXME, FIXME} */
+  /* *INDENT-ON* */
+};
+
+static const struct
+{
+  BMDTimecodeFormat format;
+  GstDecklinkTimecodeFormat gstformat;
+} tcformats[] = {
+  /* *INDENT-OFF* */
+  {bmdTimecodeRP188VITC1, GST_DECKLINK_TIMECODE_FORMAT_RP188VITC1},
+  {bmdTimecodeRP188VITC2, GST_DECKLINK_TIMECODE_FORMAT_RP188VITC2},
+  {bmdTimecodeRP188LTC, GST_DECKLINK_TIMECODE_FORMAT_RP188LTC},
+  {bmdTimecodeRP188Any, GST_DECKLINK_TIMECODE_FORMAT_RP188ANY},
+  {bmdTimecodeVITC, GST_DECKLINK_TIMECODE_FORMAT_VITC},
+  {bmdTimecodeVITCField2, GST_DECKLINK_TIMECODE_FORMAT_VITCFIELD2},
+  {bmdTimecodeSerial, GST_DECKLINK_TIMECODE_FORMAT_SERIAL}
+  /* *INDENT-ON* */
+};
+
 const GstDecklinkMode *
 gst_decklink_get_mode (GstDecklinkModeEnum e)
 {
@@ -293,6 +385,50 @@
   return displayMode;
 }
 
+const BMDPixelFormat
+gst_decklink_pixel_format_from_type (GstDecklinkVideoFormat t)
+{
+  return formats[t].format;
+}
+
+const gint
+gst_decklink_bpp_from_type (GstDecklinkVideoFormat t)
+{
+  return formats[t].bpp;
+}
+
+const GstDecklinkVideoFormat
+gst_decklink_type_from_video_format (GstVideoFormat f)
+{
+  guint i;
+
+  for (i = 1; i < G_N_ELEMENTS (formats); i++) {
+    if (formats[i].vformat == f)
+      return (GstDecklinkVideoFormat) i;
+  }
+  g_assert_not_reached ();
+  return GST_DECKLINK_VIDEO_FORMAT_AUTO;
+}
+
+const BMDTimecodeFormat
+gst_decklink_timecode_format_from_enum (GstDecklinkTimecodeFormat f)
+{
+  return tcformats[f].format;
+}
+
+const GstDecklinkTimecodeFormat
+gst_decklink_timecode_format_to_enum (BMDTimecodeFormat f)
+{
+  guint i;
+
+  for (i = 0; i < G_N_ELEMENTS (tcformats); i++) {
+    if (tcformats[i].format == f)
+      return (GstDecklinkTimecodeFormat) i;
+  }
+  g_assert_not_reached ();
+  return GST_DECKLINK_TIMECODE_FORMAT_RP188ANY;
+}
+
 static const BMDVideoConnection connections[] = {
   0,                            /* auto */
   bmdVideoConnectionSDI,
@@ -315,6 +451,21 @@
   return connections[e];
 }
 
+static gboolean
+gst_decklink_caps_get_pixel_format (GstCaps * caps, BMDPixelFormat * format)
+{
+  GstVideoInfo vinfo;
+  GstVideoFormat f;
+
+  if (gst_video_info_from_caps (&vinfo, caps) == FALSE) {
+    GST_ERROR ("Could not get video info from caps: %" GST_PTR_FORMAT, caps);
+    return FALSE;
+  }
+
+  f = vinfo.finfo->format;
+  return gst_decklink_type_from_video_format (f);
+}
+
 static GstStructure *
 gst_decklink_mode_get_structure (GstDecklinkModeEnum e, BMDPixelFormat f)
 {
@@ -323,29 +474,30 @@
       "width", G_TYPE_INT, mode->width,
       "height", G_TYPE_INT, mode->height,
       "pixel-aspect-ratio", GST_TYPE_FRACTION, mode->par_n, mode->par_d,
-      "interlace-mode", G_TYPE_STRING, mode->interlaced ? "interleaved" : "progressive",
+      "interlace-mode", G_TYPE_STRING,
+      mode->interlaced ? "interleaved" : "progressive",
       "framerate", GST_TYPE_FRACTION, mode->fps_n, mode->fps_d, NULL);
 
   switch (f) {
-    case bmdFormat8BitYUV: /* '2vuy' */
+    case bmdFormat8BitYUV:     /* '2vuy' */
       gst_structure_set (s, "format", G_TYPE_STRING, "UYVY",
           "colorimetry", G_TYPE_STRING, mode->colorimetry,
           "chroma-site", G_TYPE_STRING, "mpeg2", NULL);
       break;
-    case bmdFormat10BitYUV: /* 'v210' */
+    case bmdFormat10BitYUV:    /* 'v210' */
       gst_structure_set (s, "format", G_TYPE_STRING, "v210", NULL);
       break;
-    case bmdFormat8BitARGB: /* 'ARGB' */
+    case bmdFormat8BitARGB:    /* 'ARGB' */
       gst_structure_set (s, "format", G_TYPE_STRING, "ARGB", NULL);
       break;
-    case bmdFormat8BitBGRA: /* 'BGRA' */
+    case bmdFormat8BitBGRA:    /* 'BGRA' */
       gst_structure_set (s, "format", G_TYPE_STRING, "BGRA", NULL);
       break;
-    case bmdFormat10BitRGB: /* 'r210' Big-endian RGB 10-bit per component with SMPTE video levels (64-960). Packed as 2:10:10:10 */
-    case bmdFormat12BitRGB: /* 'R12B' Big-endian RGB 12-bit per component with full range (0-4095). Packed as 12-bit per component */
-    case bmdFormat12BitRGBLE: /* 'R12L' Little-endian RGB 12-bit per component with full range (0-4095). Packed as 12-bit per component */
+    case bmdFormat10BitRGB:    /* 'r210' Big-endian RGB 10-bit per component with SMPTE video levels (64-960). Packed as 2:10:10:10 */
+    case bmdFormat12BitRGB:    /* 'R12B' Big-endian RGB 12-bit per component with full range (0-4095). Packed as 12-bit per component */
+    case bmdFormat12BitRGBLE:  /* 'R12L' Little-endian RGB 12-bit per component with full range (0-4095). Packed as 12-bit per component */
     case bmdFormat10BitRGBXLE: /* 'R10l' Little-endian 10-bit RGB with SMPTE video levels (64-940) */
-    case bmdFormat10BitRGBX: /* 'R10b' Big-endian 10-bit RGB with SMPTE video levels (64-940) */
+    case bmdFormat10BitRGBX:   /* 'R10b' Big-endian 10-bit RGB with SMPTE video levels (64-940) */
     default:
       GST_WARNING ("format not supported %d", f);
       gst_structure_free (s);
@@ -362,7 +514,39 @@
   GstCaps *caps;
 
   caps = gst_caps_new_empty ();
-  gst_caps_append_structure (caps, gst_decklink_mode_get_structure (e, f));
+  caps =
+      gst_caps_merge_structure (caps, gst_decklink_mode_get_structure (e, f));
+
+  return caps;
+}
+
+GstCaps *
+gst_decklink_mode_get_caps_all_formats (GstDecklinkModeEnum e)
+{
+  GstCaps *caps;
+  guint i;
+
+  caps = gst_caps_new_empty ();
+  for (i = 1; i < G_N_ELEMENTS (formats); i++)
+    caps =
+        gst_caps_merge_structure (caps, gst_decklink_mode_get_structure (e,
+            formats[i].format));
+
+  return caps;
+}
+
+GstCaps *
+gst_decklink_pixel_format_get_caps (BMDPixelFormat f)
+{
+  int i;
+  GstCaps *caps;
+  GstStructure *s;
+
+  caps = gst_caps_new_empty ();
+  for (i = 1; i < (int) G_N_ELEMENTS (modes); i++) {
+    s = gst_decklink_mode_get_structure ((GstDecklinkModeEnum) i, f);
+    caps = gst_caps_merge_structure (caps, s);
+  }
 
   return caps;
 }
@@ -372,27 +556,29 @@
 {
   int i;
   GstCaps *caps;
-  GstStructure *s;
 
   caps = gst_caps_new_empty ();
-  for (i = 1; i < (int) G_N_ELEMENTS (modes); i++) {
-    s = gst_decklink_mode_get_structure ((GstDecklinkModeEnum) i, bmdFormat8BitYUV);
-    gst_caps_append_structure (caps, s);
-    s = gst_decklink_mode_get_structure ((GstDecklinkModeEnum) i, bmdFormat8BitARGB);
-    gst_caps_append_structure (caps, s);
-  }
+  for (i = 1; i < (int) G_N_ELEMENTS (modes); i++)
+    caps =
+        gst_caps_merge (caps,
+        gst_decklink_mode_get_caps_all_formats ((GstDecklinkModeEnum) i));
 
   return caps;
 }
 
 const GstDecklinkMode *
-gst_decklink_find_mode_for_caps (GstCaps * caps)
+gst_decklink_find_mode_and_format_for_caps (GstCaps * caps,
+    BMDPixelFormat * format)
 {
   int i;
   GstCaps *mode_caps;
 
+  g_return_val_if_fail (gst_caps_is_fixed (caps), NULL);
+  if (!gst_decklink_caps_get_pixel_format (caps, format))
+    return NULL;
+
   for (i = 1; i < (int) G_N_ELEMENTS (modes); i++) {
-    mode_caps = gst_decklink_mode_get_caps ((GstDecklinkModeEnum) i, bmdFormat8BitYUV);
+    mode_caps = gst_decklink_mode_get_caps ((GstDecklinkModeEnum) i, *format);
     if (gst_caps_can_intersect (caps, mode_caps)) {
       gst_caps_unref (mode_caps);
       return gst_decklink_get_mode ((GstDecklinkModeEnum) i);
@@ -403,6 +589,14 @@
   return NULL;
 }
 
+const GstDecklinkMode *
+gst_decklink_find_mode_for_caps (GstCaps * caps)
+{
+  BMDPixelFormat format;
+
+  return gst_decklink_find_mode_and_format_for_caps (caps, &format);
+}
+
 #define GST_TYPE_DECKLINK_CLOCK \
   (gst_decklink_clock_get_type())
 #define GST_DECKLINK_CLOCK(obj) \
@@ -528,13 +722,21 @@
     GstElement *videosrc = NULL, *audiosrc = NULL;
     void (*got_video_frame) (GstElement * videosrc,
         IDeckLinkVideoInputFrame * frame, GstDecklinkModeEnum mode,
-        GstClockTime capture_time, GstClockTime capture_duration) = NULL;
+        GstClockTime capture_time, GstClockTime capture_duration, guint hours,
+        guint minutes, guint seconds, guint frames, BMDTimecodeFlags bflags) =
+        NULL;
     void (*got_audio_packet) (GstElement * videosrc,
-        IDeckLinkAudioInputPacket * packet, GstClockTime capture_time, gboolean discont) = NULL;
+        IDeckLinkAudioInputPacket * packet, GstClockTime capture_time,
+        gboolean discont) = NULL;
     GstDecklinkModeEnum mode;
-    BMDTimeValue capture_time = GST_CLOCK_TIME_NONE, capture_duration = GST_CLOCK_TIME_NONE;
+    BMDTimeValue capture_time = GST_CLOCK_TIME_NONE, capture_duration =
+        GST_CLOCK_TIME_NONE;
     HRESULT res;
+    IDeckLinkTimecode *dtc;
+    uint8_t hours, minutes, seconds, frames;
+    BMDTimecodeFlags bflags;
 
+    hours = minutes = seconds = frames = bflags = 0;
     if (video_frame == NULL)
       goto no_video_frame;
 
@@ -547,6 +749,36 @@
       capture_duration = GST_CLOCK_TIME_NONE;
     }
 
+    if (m_input->videosrc) {
+      /* FIXME: Avoid circularity between gstdecklink.cpp and
+       * gstdecklinkvideosrc.cpp */
+      videosrc = GST_ELEMENT_CAST (gst_object_ref (m_input->videosrc));
+      res =
+          video_frame->
+          GetTimecode (GST_DECKLINK_VIDEO_SRC (videosrc)->timecode_format,
+          &dtc);
+
+      if (res != S_OK) {
+        GST_DEBUG_OBJECT (videosrc, "Failed to get timecode: 0x%08x", res);
+        dtc = NULL;
+      } else {
+        res = dtc->GetComponents (&hours, &minutes, &seconds, &frames);
+        if (res != S_OK) {
+          GST_ERROR ("Could not get components for timecode %p: 0x%08x", dtc,
+              res);
+          hours = 0;
+          minutes = 0;
+          seconds = 0;
+          frames = 0;
+          bflags = 0;
+        } else {
+          GST_DEBUG_OBJECT (videosrc, "Got timecode %02d:%02d:%02d:%02d", hours,
+              minutes, seconds, frames);
+          bflags = dtc->GetFlags ();
+        }
+      }
+    }
+
     g_mutex_lock (&m_input->lock);
 
     if (capture_time > (BMDTimeValue) m_input->clock_start_time)
@@ -560,7 +792,6 @@
       capture_time = 0;
 
     if (m_input->videosrc) {
-      videosrc = GST_ELEMENT_CAST (gst_object_ref (m_input->videosrc));
       got_video_frame = m_input->got_video_frame;
     }
     mode = gst_decklink_get_mode_enum_from_bmd (m_input->mode->mode);
@@ -573,17 +804,20 @@
 
     if (got_video_frame && videosrc) {
       got_video_frame (videosrc, video_frame, mode, capture_time,
-          capture_duration);
+          capture_duration, (guint8) hours, (guint8) minutes, (guint8) seconds,
+          (guint8) frames, bflags);
     }
 
-no_video_frame:
+  no_video_frame:
     if (got_audio_packet && audiosrc && audio_packet) {
-      m_input->got_audio_packet (audiosrc, audio_packet, capture_time, m_input->audio_discont);
+      m_input->got_audio_packet (audiosrc, audio_packet, capture_time,
+          m_input->audio_discont);
       m_input->audio_discont = FALSE;
     } else {
       m_input->audio_discont = TRUE;
       if (!audio_packet)
-        GST_DEBUG ("Received no audio packet at %" GST_TIME_FORMAT, GST_TIME_ARGS (capture_time));
+        GST_DEBUG ("Received no audio packet at %" GST_TIME_FORMAT,
+            GST_TIME_ARGS (capture_time));
     }
 
     gst_object_replace ((GstObject **) & videosrc, NULL);
@@ -681,7 +915,8 @@
     ret = decklink->QueryInterface (IID_IDeckLinkInput,
         (void **) &devices[i].input.input);
     if (ret != S_OK) {
-      GST_WARNING ("selected device does not have input interface");
+      GST_WARNING ("selected device does not have input interface: 0x%08x",
+          ret);
     } else {
       devices[i].input.device = decklink;
       devices[i].input.clock = gst_decklink_clock_new ("GstDecklinkInputClock");
@@ -695,7 +930,8 @@
     ret = decklink->QueryInterface (IID_IDeckLinkOutput,
         (void **) &devices[i].output.output);
     if (ret != S_OK) {
-      GST_WARNING ("selected device does not have output interface");
+      GST_WARNING ("selected device does not have output interface: 0x%08x",
+          ret);
     } else {
       devices[i].output.device = decklink;
       devices[i].output.clock =
@@ -707,13 +943,16 @@
     ret = decklink->QueryInterface (IID_IDeckLinkConfiguration,
         (void **) &devices[i].input.config);
     if (ret != S_OK) {
-      GST_WARNING ("selected device does not have config interface");
+      GST_WARNING ("selected device does not have config interface: 0x%08x",
+          ret);
     }
 
     ret = decklink->QueryInterface (IID_IDeckLinkAttributes,
         (void **) &devices[i].input.attributes);
+    devices[i].output.attributes = devices[i].input.attributes;
     if (ret != S_OK) {
-      GST_WARNING ("selected device does not have attributes interface");
+      GST_WARNING ("selected device does not have attributes interface: 0x%08x",
+          ret);
     }
 
     ret = iterator->Next (&decklink);
diff --git a/sys/decklink/gstdecklink.h b/sys/decklink/gstdecklink.h
index bfe7d9f..9f95c56 100644
--- a/sys/decklink/gstdecklink.h
+++ b/sys/decklink/gstdecklink.h
@@ -23,6 +23,7 @@
 #define _GST_DECKLINK_H_
 
 #include <gst/gst.h>
+#include <gst/video/video.h>
 #ifdef G_OS_UNIX
 #include "linux/DeckLinkAPI.h"
 #endif
@@ -109,6 +110,39 @@
 #define GST_TYPE_DECKLINK_AUDIO_CONNECTION (gst_decklink_audio_connection_get_type ())
 GType gst_decklink_audio_connection_get_type (void);
 
+typedef enum {
+  GST_DECKLINK_VIDEO_FORMAT_AUTO,
+  GST_DECKLINK_VIDEO_FORMAT_8BIT_YUV, /* bmdFormat8BitYUV */
+  GST_DECKLINK_VIDEO_FORMAT_10BIT_YUV, /* bmdFormat10BitYUV */
+  GST_DECKLINK_VIDEO_FORMAT_8BIT_ARGB, /* bmdFormat8BitARGB */
+  GST_DECKLINK_VIDEO_FORMAT_8BIT_BGRA, /* bmdFormat8BitBGRA */
+  GST_DECKLINK_VIDEO_FORMAT_10BIT_RGB, /* bmdFormat10BitRGB */
+  GST_DECKLINK_VIDEO_FORMAT_12BIT_RGB, /* bmdFormat12BitRGB */
+  GST_DECKLINK_VIDEO_FORMAT_12BIT_RGBLE, /* bmdFormat12BitRGBLE */
+  GST_DECKLINK_VIDEO_FORMAT_10BIT_RGBXLE, /* bmdFormat10BitRGBXLE */
+  GST_DECKLINK_VIDEO_FORMAT_10BIT_RGBX, /* bmdFormat10BitRGBX */
+} GstDecklinkVideoFormat;
+#define GST_TYPE_DECKLINK_VIDEO_FORMAT (gst_decklink_video_format_get_type ())
+GType gst_decklink_video_format_get_type (void);
+
+typedef enum {
+  GST_DECKLINK_TIMECODE_FORMAT_RP188VITC1, /*bmdTimecodeRP188VITC1 */
+  GST_DECKLINK_TIMECODE_FORMAT_RP188VITC2, /*bmdTimecodeRP188VITC2 */
+  GST_DECKLINK_TIMECODE_FORMAT_RP188LTC, /*bmdTimecodeRP188LTC */
+  GST_DECKLINK_TIMECODE_FORMAT_RP188ANY, /*bmdTimecodeRP188Any */
+  GST_DECKLINK_TIMECODE_FORMAT_VITC, /*bmdTimecodeVITC */
+  GST_DECKLINK_TIMECODE_FORMAT_VITCFIELD2, /*bmdTimecodeVITCField2 */
+  GST_DECKLINK_TIMECODE_FORMAT_SERIAL /* bmdTimecodeSerial */
+} GstDecklinkTimecodeFormat;
+#define GST_TYPE_DECKLINK_TIMECODE_FORMAT (gst_decklink_timecode_format_get_type ())
+GType gst_decklink_timecode_format_get_type (void);
+
+const BMDPixelFormat gst_decklink_pixel_format_from_type (GstDecklinkVideoFormat t);
+const gint gst_decklink_bpp_from_type (GstDecklinkVideoFormat t);
+const GstDecklinkVideoFormat gst_decklink_type_from_video_format (GstVideoFormat f);
+const BMDTimecodeFormat gst_decklink_timecode_format_from_enum (GstDecklinkTimecodeFormat f);
+const GstDecklinkTimecodeFormat gst_decklink_timecode_format_to_enum (BMDTimecodeFormat f);
+
 typedef struct _GstDecklinkMode GstDecklinkMode;
 struct _GstDecklinkMode {
   BMDDisplayMode mode;
@@ -133,6 +167,7 @@
 struct _GstDecklinkOutput {
   IDeckLink *device;
   IDeckLinkOutput *output;
+  IDeckLinkAttributes *attributes;
   GstClock *clock;
   GstClockTime clock_start_time, clock_last_time, clock_epoch;
   GstClockTimeDiff clock_offset;
@@ -169,7 +204,7 @@
   GMutex lock;
 
   /* Set by the video source */
-  void (*got_video_frame) (GstElement *videosrc, IDeckLinkVideoInputFrame * frame, GstDecklinkModeEnum mode, GstClockTime capture_time, GstClockTime capture_duration);
+  void (*got_video_frame) (GstElement *videosrc, IDeckLinkVideoInputFrame * frame, GstDecklinkModeEnum mode, GstClockTime capture_time, GstClockTime capture_duration, guint hours, guint minutes, guint seconds, guint frames, BMDTimecodeFlags bflags);
   /* Configured mode or NULL */
   const GstDecklinkMode *mode;
   BMDPixelFormat format;
@@ -195,5 +230,8 @@
 void                gst_decklink_release_nth_input (gint n, GstElement * src, gboolean is_audio);
 
 const GstDecklinkMode * gst_decklink_find_mode_for_caps (GstCaps * caps);
+const GstDecklinkMode * gst_decklink_find_mode_and_format_for_caps (GstCaps * caps, BMDPixelFormat * format);
+GstCaps * gst_decklink_mode_get_caps_all_formats (GstDecklinkModeEnum e);
+GstCaps * gst_decklink_pixel_format_get_caps (BMDPixelFormat f);
 
 #endif
diff --git a/sys/decklink/gstdecklinkaudiosink.cpp b/sys/decklink/gstdecklinkaudiosink.cpp
index 1db9339..1d63154 100644
--- a/sys/decklink/gstdecklinkaudiosink.cpp
+++ b/sys/decklink/gstdecklinkaudiosink.cpp
@@ -310,13 +310,16 @@
   GstDecklinkAudioSinkRingBuffer *self =
       GST_DECKLINK_AUDIO_SINK_RING_BUFFER_CAST (rb);
   guint ret = 0;
+  HRESULT res = S_OK;
 
   if (self->output) {
-    if (self->output->output->GetBufferedAudioSampleFrameCount (&ret) != S_OK)
+    if ((res =
+            self->output->output->GetBufferedAudioSampleFrameCount (&ret)) !=
+        S_OK)
       ret = 0;
   }
 
-  GST_DEBUG_OBJECT (self->sink, "Delay: %u", ret);
+  GST_DEBUG_OBJECT (self->sink, "Delay: %u (0x%08x)", ret, res);
 
   return ret;
 }
@@ -409,7 +412,7 @@
   }
 
   ret = self->output->output->EnableAudioOutput (bmdAudioSampleRate48kHz,
-      sample_depth, 2, bmdAudioOutputStreamContinuous);
+      sample_depth, spec->info.channels, bmdAudioOutputStreamContinuous);
   if (ret != S_OK) {
     GST_WARNING_OBJECT (self->sink, "Failed to enable audio output 0x%08x",
         ret);
@@ -517,7 +520,7 @@
     GST_PAD_SINK,
     GST_PAD_ALWAYS,
     GST_STATIC_CAPS
-    ("audio/x-raw, format={S16LE,S32LE}, channels=2, rate=48000, "
+    ("audio/x-raw, format={S16LE,S32LE}, channels={2, 8, 16}, rate=48000, "
         "layout=interleaved")
     );
 
@@ -529,7 +532,8 @@
 
 static GstStateChangeReturn gst_decklink_audio_sink_change_state (GstElement *
     element, GstStateChange transition);
-
+static GstCaps *gst_decklink_audio_sink_get_caps (GstBaseSink * bsink,
+    GstCaps * filter);
 static GstAudioRingBuffer
     * gst_decklink_audio_sink_create_ringbuffer (GstAudioBaseSink * absink);
 
@@ -542,6 +546,7 @@
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+  GstBaseSinkClass *basesink_class = GST_BASE_SINK_CLASS (klass);
   GstAudioBaseSinkClass *audiobasesink_class =
       GST_AUDIO_BASE_SINK_CLASS (klass);
 
@@ -552,6 +557,9 @@
   element_class->change_state =
       GST_DEBUG_FUNCPTR (gst_decklink_audio_sink_change_state);
 
+  basesink_class->get_caps =
+      GST_DEBUG_FUNCPTR (gst_decklink_audio_sink_get_caps);
+
   audiobasesink_class->create_ringbuffer =
       GST_DEBUG_FUNCPTR (gst_decklink_audio_sink_create_ringbuffer);
 
@@ -561,8 +569,7 @@
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
               G_PARAM_CONSTRUCT)));
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
 
   gst_element_class_set_static_metadata (element_class, "Decklink Audio Sink",
       "Audio/Sink", "Decklink Sink", "David Schleef <ds@entropywave.com>, "
@@ -652,6 +659,65 @@
   return ret;
 }
 
+static GstCaps *
+gst_decklink_audio_sink_get_caps (GstBaseSink * bsink, GstCaps * filter)
+{
+  GstDecklinkAudioSink *self = GST_DECKLINK_AUDIO_SINK_CAST (bsink);
+  GstDecklinkAudioSinkRingBuffer *buf =
+      GST_DECKLINK_AUDIO_SINK_RING_BUFFER_CAST (GST_AUDIO_BASE_SINK_CAST
+      (self)->ringbuffer);
+  GstCaps *caps = gst_pad_get_pad_template_caps (GST_BASE_SINK_PAD (bsink));
+
+  if (buf) {
+    GST_OBJECT_LOCK (buf);
+    if (buf->output && buf->output->attributes) {
+      int64_t max_channels = 0;
+      HRESULT ret;
+      GstStructure *s;
+      GValue arr = G_VALUE_INIT;
+      GValue v = G_VALUE_INIT;
+
+      ret =
+          buf->output->attributes->GetInt (BMDDeckLinkMaximumAudioChannels,
+          &max_channels);
+      /* 2 should always be supported */
+      if (ret != S_OK) {
+        max_channels = 2;
+      }
+
+      caps = gst_caps_make_writable (caps);
+      s = gst_caps_get_structure (caps, 0);
+
+      g_value_init (&arr, GST_TYPE_LIST);
+      g_value_init (&v, G_TYPE_INT);
+      if (max_channels >= 16) {
+        g_value_set_int (&v, 16);
+        gst_value_list_append_value (&arr, &v);
+      }
+      if (max_channels >= 8) {
+        g_value_set_int (&v, 8);
+        gst_value_list_append_value (&arr, &v);
+      }
+      g_value_set_int (&v, 2);
+      gst_value_list_append_value (&arr, &v);
+
+      gst_structure_set_value (s, "channels", &arr);
+      g_value_unset (&v);
+      g_value_unset (&arr);
+    }
+    GST_OBJECT_UNLOCK (buf);
+  }
+
+  if (filter) {
+    GstCaps *intersection =
+        gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST);
+    gst_caps_unref (caps);
+    caps = intersection;
+  }
+
+  return caps;
+}
+
 static GstAudioRingBuffer *
 gst_decklink_audio_sink_create_ringbuffer (GstAudioBaseSink * absink)
 {
diff --git a/sys/decklink/gstdecklinkaudiosrc.cpp b/sys/decklink/gstdecklinkaudiosrc.cpp
index be52175..5024bb5 100644
--- a/sys/decklink/gstdecklinkaudiosrc.cpp
+++ b/sys/decklink/gstdecklinkaudiosrc.cpp
@@ -171,8 +171,7 @@
           G_MAXINT, DEFAULT_BUFFER_SIZE,
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
 
   gst_element_class_set_static_metadata (element_class, "Decklink Audio Source",
       "Audio/Src", "Decklink Source", "David Schleef <ds@entropywave.com>, "
@@ -368,7 +367,7 @@
         self->input->config->SetInt (bmdDeckLinkConfigAudioInputConnection,
         conn);
     if (ret != S_OK) {
-      GST_ERROR ("set configuration (audio input connection)");
+      GST_ERROR ("set configuration (audio input connection): 0x%08x", ret);
       return FALSE;
     }
   }
@@ -376,7 +375,7 @@
   ret = self->input->input->EnableAudioInput (bmdAudioSampleRate48kHz,
       sample_depth, 2);
   if (ret != S_OK) {
-    GST_WARNING_OBJECT (self, "Failed to enable audio input");
+    GST_WARNING_OBJECT (self, "Failed to enable audio input: 0x%08x", ret);
     return FALSE;
   }
 
@@ -492,8 +491,10 @@
   sample_count = p->packet->GetSampleFrameCount ();
   data_size = self->info.bpf * sample_count;
 
-  if (p->capture_time == GST_CLOCK_TIME_NONE && self->next_offset == (guint64) - 1) {
-    GST_DEBUG_OBJECT (self, "Got packet without timestamp before initial "
+  if (p->capture_time == GST_CLOCK_TIME_NONE
+      && self->next_offset == (guint64) - 1) {
+    GST_DEBUG_OBJECT (self,
+        "Got packet without timestamp before initial "
         "timestamp after discont - dropping");
     capture_packet_free (p);
     goto retry;
diff --git a/sys/decklink/gstdecklinkvideosink.cpp b/sys/decklink/gstdecklinkvideosink.cpp
index eebeff3..db7fa9d 100644
--- a/sys/decklink/gstdecklinkvideosink.cpp
+++ b/sys/decklink/gstdecklinkvideosink.cpp
@@ -118,7 +118,9 @@
 {
   PROP_0,
   PROP_MODE,
-  PROP_DEVICE_NUMBER
+  PROP_DEVICE_NUMBER,
+  PROP_VIDEO_FORMAT,
+  PROP_TIMECODE_FORMAT
 };
 
 static void gst_decklink_video_sink_set_property (GObject * object,
@@ -205,6 +207,21 @@
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
               G_PARAM_CONSTRUCT)));
 
+  g_object_class_install_property (gobject_class, PROP_VIDEO_FORMAT,
+      g_param_spec_enum ("video-format", "Video format",
+          "Video format type to use for playback",
+          GST_TYPE_DECKLINK_VIDEO_FORMAT, GST_DECKLINK_VIDEO_FORMAT_8BIT_YUV,
+          (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+              G_PARAM_CONSTRUCT)));
+
+  g_object_class_install_property (gobject_class, PROP_TIMECODE_FORMAT,
+      g_param_spec_enum ("timecode-format", "Timecode format",
+          "Timecode format type to use for playback",
+          GST_TYPE_DECKLINK_TIMECODE_FORMAT,
+          GST_DECKLINK_TIMECODE_FORMAT_RP188ANY,
+          (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+              G_PARAM_CONSTRUCT)));
+
   templ_caps = gst_decklink_mode_get_template_caps ();
   templ_caps = gst_caps_make_writable (templ_caps);
   /* For output we support any framerate and only really care about timestamps */
@@ -226,6 +243,9 @@
 {
   self->mode = GST_DECKLINK_MODE_NTSC;
   self->device_number = 0;
+  self->video_format = GST_DECKLINK_VIDEO_FORMAT_8BIT_YUV;
+  /* VITC is legacy, we should expect RP188 in modern use cases */
+  self->timecode_format = bmdTimecodeRP188Any;
 
   gst_base_sink_set_max_lateness (GST_BASE_SINK_CAST (self), 20 * GST_MSECOND);
   gst_base_sink_set_qos_enabled (GST_BASE_SINK_CAST (self), TRUE);
@@ -244,6 +264,26 @@
     case PROP_DEVICE_NUMBER:
       self->device_number = g_value_get_int (value);
       break;
+    case PROP_VIDEO_FORMAT:
+      self->video_format = (GstDecklinkVideoFormat) g_value_get_enum (value);
+      switch (self->video_format) {
+        case GST_DECKLINK_VIDEO_FORMAT_AUTO:
+        case GST_DECKLINK_VIDEO_FORMAT_8BIT_YUV:
+        case GST_DECKLINK_VIDEO_FORMAT_10BIT_YUV:
+        case GST_DECKLINK_VIDEO_FORMAT_8BIT_ARGB:
+        case GST_DECKLINK_VIDEO_FORMAT_8BIT_BGRA:
+          break;
+        default:
+          GST_ELEMENT_WARNING (GST_ELEMENT (self), CORE, NOT_IMPLEMENTED,
+              ("Format %d not supported", self->video_format), (NULL));
+          break;
+      }
+      break;
+    case PROP_TIMECODE_FORMAT:
+      self->timecode_format =
+          gst_decklink_timecode_format_from_enum ((GstDecklinkTimecodeFormat)
+          g_value_get_enum (value));
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
@@ -263,6 +303,13 @@
     case PROP_DEVICE_NUMBER:
       g_value_set_int (value, self->device_number);
       break;
+    case PROP_VIDEO_FORMAT:
+      g_value_set_enum (value, self->video_format);
+      break;
+    case PROP_TIMECODE_FORMAT:
+      g_value_set_enum (value,
+          gst_decklink_timecode_format_to_enum (self->timecode_format));
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
@@ -283,6 +330,7 @@
   GstDecklinkVideoSink *self = GST_DECKLINK_VIDEO_SINK_CAST (bsink);
   const GstDecklinkMode *mode;
   HRESULT ret;
+  BMDVideoOutputFlags flags;
 
   GST_DEBUG_OBJECT (self, "Setting caps %" GST_PTR_FORMAT, caps);
 
@@ -293,21 +341,44 @@
       GStreamerVideoOutputCallback (self));
 
   if (self->mode == GST_DECKLINK_MODE_AUTO) {
-    mode = gst_decklink_find_mode_for_caps (caps);
+    BMDPixelFormat f;
+    mode = gst_decklink_find_mode_and_format_for_caps (caps, &f);
     if (mode == NULL) {
       GST_WARNING_OBJECT (self,
           "Failed to find compatible mode for caps  %" GST_PTR_FORMAT, caps);
       return FALSE;
     }
+    if (self->video_format != GST_DECKLINK_VIDEO_FORMAT_AUTO &&
+        gst_decklink_pixel_format_from_type (self->video_format) != f) {
+      GST_WARNING_OBJECT (self, "Failed to set pixel format to %d",
+          self->video_format);
+      return FALSE;
+    }
   } else {
+    /* We don't have to give the format in EnableVideoOutput. Therefore,
+     * even if it's AUTO, we have it stored in self->info and set it in
+     * gst_decklink_video_sink_prepare */
     mode = gst_decklink_get_mode (self->mode);
     g_assert (mode != NULL);
   };
 
-  ret = self->output->output->EnableVideoOutput (mode->mode,
-      bmdVideoOutputFlagDefault);
+  /* The timecode_format itself is used when we embed the actual timecode data
+   * into the frame. Now we only need to know which of the two standards the
+   * timecode format will adhere to: VITC or RP188, and send the appropriate
+   * flag to EnableVideoOutput. The exact format is specified later.
+   *
+   * Note that this flag will have no effect in practice if the video stream
+   * does not contain timecode metadata.
+   */
+  if (self->timecode_format == GST_DECKLINK_TIMECODE_FORMAT_VITC ||
+      self->timecode_format == GST_DECKLINK_TIMECODE_FORMAT_VITCFIELD2)
+    flags = bmdVideoOutputVITC;
+  else
+    flags = bmdVideoOutputRP188;
+
+  ret = self->output->output->EnableVideoOutput (mode->mode, flags);
   if (ret != S_OK) {
-    GST_WARNING_OBJECT (self, "Failed to enable video output");
+    GST_WARNING_OBJECT (self, "Failed to enable video output: 0x%08x", ret);
     return FALSE;
   }
 
@@ -327,10 +398,19 @@
   GstDecklinkVideoSink *self = GST_DECKLINK_VIDEO_SINK_CAST (bsink);
   GstCaps *mode_caps, *caps;
 
-  if (self->mode == GST_DECKLINK_MODE_AUTO)
+  if (self->mode == GST_DECKLINK_MODE_AUTO
+      && self->video_format == GST_DECKLINK_VIDEO_FORMAT_AUTO)
     mode_caps = gst_decklink_mode_get_template_caps ();
+  else if (self->video_format == GST_DECKLINK_VIDEO_FORMAT_AUTO)
+    mode_caps = gst_decklink_mode_get_caps_all_formats (self->mode);
+  else if (self->mode == GST_DECKLINK_MODE_AUTO)
+    mode_caps =
+        gst_decklink_pixel_format_get_caps (gst_decklink_pixel_format_from_type
+        (self->video_format));
   else
-    mode_caps = gst_decklink_mode_get_caps (self->mode, bmdFormat8BitYUV);
+    mode_caps =
+        gst_decklink_mode_get_caps (self->mode,
+        gst_decklink_pixel_format_from_type (self->video_format));
   mode_caps = gst_caps_make_writable (mode_caps);
   /* For output we support any framerate and only really care about timestamps */
   gst_caps_map_in_place (mode_caps, reset_framerate, NULL);
@@ -454,6 +534,10 @@
   GstClockTime latency, render_delay;
   GstClockTimeDiff ts_offset;
   gint i;
+  GstDecklinkVideoFormat caps_format;
+  BMDPixelFormat format;
+  gint bpp;
+  GstVideoTimeCodeMeta *tc_meta;
 
   GST_DEBUG_OBJECT (self, "Preparing buffer %p", buffer);
 
@@ -462,6 +546,10 @@
     return GST_FLOW_ERROR;
   }
 
+  caps_format = gst_decklink_type_from_video_format (self->info.finfo->format);
+  format = gst_decklink_pixel_format_from_type (caps_format);
+  bpp = gst_decklink_bpp_from_type (caps_format);
+
   timestamp = GST_BUFFER_TIMESTAMP (buffer);
   duration = GST_BUFFER_DURATION (buffer);
   if (duration == GST_CLOCK_TIME_NONE) {
@@ -499,8 +587,8 @@
     running_time = 0;
 
   ret = self->output->output->CreateVideoFrame (self->info.width,
-      self->info.height, self->info.stride[0], bmdFormat8BitYUV,
-      bmdFrameFlagDefault, &frame);
+      self->info.height, self->info.stride[0], format, bmdFrameFlagDefault,
+      &frame);
   if (ret != S_OK) {
     GST_ELEMENT_ERROR (self, STREAM, FAILED,
         (NULL), ("Failed to create video frame: 0x%08x", ret));
@@ -516,12 +604,41 @@
   frame->GetBytes ((void **) &outdata);
   indata = (guint8 *) GST_VIDEO_FRAME_PLANE_DATA (&vframe, 0);
   for (i = 0; i < self->info.height; i++) {
-    memcpy (outdata, indata, GST_VIDEO_FRAME_WIDTH (&vframe) * 2);
+    memcpy (outdata, indata, GST_VIDEO_FRAME_WIDTH (&vframe) * bpp);
     indata += GST_VIDEO_FRAME_PLANE_STRIDE (&vframe, 0);
     outdata += frame->GetRowBytes ();
   }
   gst_video_frame_unmap (&vframe);
 
+  tc_meta = gst_buffer_get_video_time_code_meta (buffer);
+  if (tc_meta) {
+    BMDTimecodeFlags bflags = (BMDTimecodeFlags) 0;
+    gchar *tc_str;
+
+    if (((GstVideoTimeCodeFlags) (tc_meta->tc.
+                config.flags)) & GST_VIDEO_TIME_CODE_FLAGS_DROP_FRAME)
+      bflags = (BMDTimecodeFlags) (bflags | bmdTimecodeIsDropFrame);
+    else
+      bflags = (BMDTimecodeFlags) (bflags | bmdTimecodeFlagDefault);
+    if (tc_meta->tc.field_count == 2)
+      bflags = (BMDTimecodeFlags) (bflags | bmdTimecodeFieldMark);
+
+    tc_str = gst_video_time_code_to_string (&tc_meta->tc);
+    ret = frame->SetTimecodeFromComponents (self->timecode_format,
+        (uint8_t) tc_meta->tc.hours,
+        (uint8_t) tc_meta->tc.minutes,
+        (uint8_t) tc_meta->tc.seconds, (uint8_t) tc_meta->tc.frames, bflags);
+    if (ret != S_OK) {
+      GST_ERROR_OBJECT (self,
+          "Failed to set timecode %s to video frame: 0x%08x", tc_str, ret);
+      flow_ret = GST_FLOW_ERROR;
+      g_free (tc_str);
+      goto out;
+    }
+    GST_DEBUG_OBJECT (self, "Set frame timecode to %s", tc_str);
+    g_free (tc_str);
+  }
+
   convert_to_internal_clock (self, &running_time, &running_time_duration);
 
   GST_LOG_OBJECT (self, "Scheduling video frame %p at %" GST_TIME_FORMAT
@@ -631,6 +748,14 @@
           || self->output->audio_enabled)
       && (GST_STATE (self) == GST_STATE_PLAYING
           || GST_STATE_PENDING (self) == GST_STATE_PLAYING)) {
+    GstClock *clock = NULL;
+
+    clock = gst_element_get_clock (element);
+    if (!clock) {
+      GST_ELEMENT_ERROR (self, STREAM, FAILED, (NULL),
+          ("Scheduled playback supposed to start but we have no clock"));
+      return;
+    }
     // Need to unlock to get the clock time
     g_mutex_unlock (&self->output->lock);
 
@@ -638,7 +763,7 @@
     // but what we need here is the start time of this element!
     start_time = gst_element_get_base_time (element);
     if (start_time != GST_CLOCK_TIME_NONE)
-      start_time = gst_clock_get_time (GST_ELEMENT_CLOCK (self)) - start_time;
+      start_time = gst_clock_get_time (clock) - start_time;
 
     // FIXME: This will probably not work
     if (start_time == GST_CLOCK_TIME_NONE)
@@ -652,15 +777,16 @@
     // because we might go to PLAYING later than the pipeline
     self->internal_base_time =
         gst_clock_get_internal_time (self->output->clock);
-    self->external_base_time =
-        gst_clock_get_internal_time (GST_ELEMENT_CLOCK (self));
+    self->external_base_time = gst_clock_get_internal_time (clock);
 
     convert_to_internal_clock (self, &start_time, NULL);
 
     g_mutex_lock (&self->output->lock);
     // Check if someone else started in the meantime
-    if (self->output->started)
+    if (self->output->started) {
+      gst_object_unref (clock);
       return;
+    }
 
     active = false;
     self->output->output->IsScheduledPlaybackRunning (&active);
@@ -673,6 +799,7 @@
       if (res != S_OK) {
         GST_ELEMENT_ERROR (self, STREAM, FAILED,
             (NULL), ("Failed to stop scheduled playback: 0x%08x", res));
+        gst_object_unref (clock);
         return;
       }
     }
@@ -687,6 +814,7 @@
     if (res != S_OK) {
       GST_ELEMENT_ERROR (self, STREAM, FAILED,
           (NULL), ("Failed to start scheduled playback: 0x%08x", res));
+      gst_object_unref (clock);
       return;
     }
 
@@ -700,9 +828,9 @@
     // after we started scheduled playback
     self->internal_base_time =
         gst_clock_get_internal_time (self->output->clock);
-    self->external_base_time =
-        gst_clock_get_internal_time (GST_ELEMENT_CLOCK (self));
+    self->external_base_time = gst_clock_get_internal_time (clock);
     g_mutex_lock (&self->output->lock);
+    gst_object_unref (clock);
   } else {
     GST_DEBUG_OBJECT (self, "Not starting scheduled playback yet");
   }
@@ -713,7 +841,7 @@
     GstStateChange transition)
 {
   GstDecklinkVideoSink *self = GST_DECKLINK_VIDEO_SINK_CAST (element);
-  GstStateChangeReturn ret;
+  GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
 
   switch (transition) {
     case GST_STATE_CHANGE_READY_TO_PAUSED:
@@ -731,14 +859,19 @@
       GstClock *clock, *audio_clock;
 
       clock = gst_element_get_clock (GST_ELEMENT_CAST (self));
-      audio_clock = gst_decklink_output_get_audio_clock (self->output);
-      if (clock && clock != self->output->clock && clock != audio_clock) {
-        gst_clock_set_master (self->output->clock, clock);
-      }
-      if (clock)
+      if (clock) {
+        audio_clock = gst_decklink_output_get_audio_clock (self->output);
+        if (clock && clock != self->output->clock && clock != audio_clock) {
+          gst_clock_set_master (self->output->clock, clock);
+        }
         gst_object_unref (clock);
-      if (audio_clock)
-        gst_object_unref (audio_clock);
+        if (audio_clock)
+          gst_object_unref (audio_clock);
+      } else {
+        GST_ELEMENT_ERROR (self, STREAM, FAILED,
+            (NULL), ("Need a clock to go to PLAYING"));
+        ret = GST_STATE_CHANGE_FAILURE;
+      }
 
       break;
     }
@@ -746,6 +879,8 @@
       break;
   }
 
+  if (ret == GST_STATE_CHANGE_FAILURE)
+    return ret;
   ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
   if (ret == GST_STATE_CHANGE_FAILURE)
     return ret;
@@ -769,21 +904,31 @@
     case GST_STATE_CHANGE_PLAYING_TO_PAUSED:{
       GstClockTime start_time;
       HRESULT res;
+      GstClock *clock;
 
-      // FIXME: start time is the same for the complete pipeline,
-      // but what we need here is the start time of this element!
-      start_time = gst_element_get_base_time (element);
-      if (start_time != GST_CLOCK_TIME_NONE)
-        start_time = gst_clock_get_time (GST_ELEMENT_CLOCK (self)) - start_time;
+      clock = gst_element_get_clock (GST_ELEMENT_CAST (self));
+      if (clock) {
+        // FIXME: start time is the same for the complete pipeline,
+        // but what we need here is the start time of this element!
+        start_time = gst_element_get_base_time (element);
+        if (start_time != GST_CLOCK_TIME_NONE)
+          start_time = gst_clock_get_time (clock) - start_time;
 
-      // FIXME: This will probably not work
-      if (start_time == GST_CLOCK_TIME_NONE)
+        // FIXME: This will probably not work
+        if (start_time == GST_CLOCK_TIME_NONE)
+          start_time = 0;
+
+        convert_to_internal_clock (self, &start_time, NULL);
+
+        // The start time is now the running time when we stopped
+        // playback
+
+        gst_object_unref (clock);
+      } else {
+        GST_WARNING_OBJECT (self,
+            "No clock, stopping scheduled playback immediately");
         start_time = 0;
-
-      convert_to_internal_clock (self, &start_time, NULL);
-
-      // The start time is now the running time when we stopped
-      // playback
+      }
 
       GST_DEBUG_OBJECT (self,
           "Stopping scheduled playback at %" GST_TIME_FORMAT,
diff --git a/sys/decklink/gstdecklinkvideosink.h b/sys/decklink/gstdecklinkvideosink.h
index 16b2fbb..b9aca28 100644
--- a/sys/decklink/gstdecklinkvideosink.h
+++ b/sys/decklink/gstdecklinkvideosink.h
@@ -51,6 +51,8 @@
 
   GstDecklinkModeEnum mode;
   gint device_number;
+  GstDecklinkVideoFormat video_format;
+  BMDTimecodeFormat timecode_format;
 
   GstVideoInfo info;
 
diff --git a/sys/decklink/gstdecklinkvideosrc.cpp b/sys/decklink/gstdecklinkvideosrc.cpp
index 2b304f9..d82c5fc 100644
--- a/sys/decklink/gstdecklinkvideosrc.cpp
+++ b/sys/decklink/gstdecklinkvideosrc.cpp
@@ -39,7 +39,9 @@
   PROP_MODE,
   PROP_CONNECTION,
   PROP_DEVICE_NUMBER,
-  PROP_BUFFER_SIZE
+  PROP_BUFFER_SIZE,
+  PROP_VIDEO_FORMAT,
+  PROP_TIMECODE_FORMAT
 };
 
 typedef struct
@@ -48,6 +50,7 @@
   GstClockTime capture_time, capture_duration;
   GstDecklinkModeEnum mode;
   BMDPixelFormat format;
+  GstVideoTimeCode *tc;
 } CaptureFrame;
 
 static void
@@ -161,6 +164,21 @@
           G_MAXINT, DEFAULT_BUFFER_SIZE,
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
 
+  g_object_class_install_property (gobject_class, PROP_VIDEO_FORMAT,
+      g_param_spec_enum ("video-format", "Video format",
+          "Video format type to use for input (Only use auto for mode=auto)",
+          GST_TYPE_DECKLINK_VIDEO_FORMAT, GST_DECKLINK_VIDEO_FORMAT_AUTO,
+          (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+              G_PARAM_CONSTRUCT)));
+
+  g_object_class_install_property (gobject_class, PROP_TIMECODE_FORMAT,
+      g_param_spec_enum ("timecode-format", "Timecode format",
+          "Timecode format type to use for input",
+          GST_TYPE_DECKLINK_TIMECODE_FORMAT,
+          GST_DECKLINK_TIMECODE_FORMAT_RP188ANY,
+          (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+              G_PARAM_CONSTRUCT)));
+
   templ_caps = gst_decklink_mode_get_template_caps ();
   gst_element_class_add_pad_template (element_class,
       gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, templ_caps));
@@ -183,6 +201,8 @@
   self->connection = DEFAULT_CONNECTION;
   self->device_number = 0;
   self->buffer_size = DEFAULT_BUFFER_SIZE;
+  self->video_format = GST_DECKLINK_VIDEO_FORMAT_AUTO;
+  self->timecode_format = bmdTimecodeRP188Any;
 
   gst_base_src_set_live (GST_BASE_SRC (self), TRUE);
   gst_base_src_set_format (GST_BASE_SRC (self), GST_FORMAT_TIME);
@@ -202,6 +222,13 @@
   switch (property_id) {
     case PROP_MODE:
       self->mode = (GstDecklinkModeEnum) g_value_get_enum (value);
+      /* setting the default value for caps_mode here: if mode==auto then we
+       * configure caps_mode from the caps, if mode!=auto we set caps_mode to
+       * the same value as the mode. so self->caps_mode is essentially
+       * self->mode with mode=auto filtered into whatever we got from the
+       * negotiation */
+      if (self->mode != GST_DECKLINK_MODE_AUTO)
+        self->caps_mode = self->mode;
       break;
     case PROP_CONNECTION:
       self->connection = (GstDecklinkConnectionEnum) g_value_get_enum (value);
@@ -212,6 +239,28 @@
     case PROP_BUFFER_SIZE:
       self->buffer_size = g_value_get_uint (value);
       break;
+    case PROP_VIDEO_FORMAT:
+      self->video_format = (GstDecklinkVideoFormat) g_value_get_enum (value);
+      switch (self->video_format) {
+        case GST_DECKLINK_VIDEO_FORMAT_8BIT_YUV:
+        case GST_DECKLINK_VIDEO_FORMAT_10BIT_YUV:
+        case GST_DECKLINK_VIDEO_FORMAT_8BIT_ARGB:
+        case GST_DECKLINK_VIDEO_FORMAT_8BIT_BGRA:
+          self->caps_format =
+              gst_decklink_pixel_format_from_type (self->video_format);
+        case GST_DECKLINK_VIDEO_FORMAT_AUTO:
+          break;
+        default:
+          GST_ELEMENT_WARNING (GST_ELEMENT (self), CORE, NOT_IMPLEMENTED,
+              ("Format %d not supported", self->video_format), (NULL));
+          break;
+      }
+      break;
+    case PROP_TIMECODE_FORMAT:
+      self->timecode_format =
+          gst_decklink_timecode_format_from_enum ((GstDecklinkTimecodeFormat)
+          g_value_get_enum (value));
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
@@ -237,6 +286,13 @@
     case PROP_BUFFER_SIZE:
       g_value_set_uint (value, self->buffer_size);
       break;
+    case PROP_VIDEO_FORMAT:
+      g_value_set_enum (value, self->video_format);
+      break;
+    case PROP_TIMECODE_FORMAT:
+      g_value_set_enum (value,
+          gst_decklink_timecode_format_to_enum (self->timecode_format));
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
@@ -262,6 +318,7 @@
   const GstDecklinkMode *mode;
   BMDVideoInputFlags flags;
   HRESULT ret;
+  BMDPixelFormat format;
 
   GST_DEBUG_OBJECT (self, "Setting caps %" GST_PTR_FORMAT, caps);
 
@@ -289,7 +346,8 @@
     ret = self->input->config->SetInt (bmdDeckLinkConfigVideoInputConnection,
         gst_decklink_get_connection (self->connection));
     if (ret != S_OK) {
-      GST_ERROR_OBJECT (self, "Failed to set configuration (input source)");
+      GST_ERROR_OBJECT (self,
+          "Failed to set configuration (input source): 0x%08x", ret);
       return FALSE;
     }
 
@@ -298,7 +356,7 @@
           bmdAnalogVideoFlagCompositeSetup75);
       if (ret != S_OK) {
         GST_ERROR_OBJECT (self,
-            "Failed to set configuration (composite setup)");
+            "Failed to set configuration (composite setup): 0x%08x", ret);
         return FALSE;
       }
     }
@@ -314,7 +372,8 @@
           attributes->GetFlag (BMDDeckLinkSupportsInputFormatDetection,
           &autoDetection);
       if (ret != S_OK) {
-        GST_ERROR_OBJECT (self, "Failed to get attribute (autodetection)");
+        GST_ERROR_OBJECT (self,
+            "Failed to get attribute (autodetection): 0x%08x", ret);
         return FALSE;
       }
       if (autoDetection)
@@ -329,10 +388,10 @@
   mode = gst_decklink_get_mode (self->mode);
   g_assert (mode != NULL);
 
-  ret = self->input->input->EnableVideoInput (mode->mode,
-      bmdFormat8BitYUV, flags);
+  format = self->caps_format;
+  ret = self->input->input->EnableVideoInput (mode->mode, format, flags);
   if (ret != S_OK) {
-    GST_WARNING_OBJECT (self, "Failed to enable video input");
+    GST_WARNING_OBJECT (self, "Failed to enable video input: 0x%08x", ret);
     return FALSE;
   }
 
@@ -351,14 +410,16 @@
 {
   GstDecklinkVideoSrc *self = GST_DECKLINK_VIDEO_SRC_CAST (bsrc);
   GstCaps *mode_caps, *caps;
+  BMDPixelFormat format;
+  GstDecklinkModeEnum mode;
 
   g_mutex_lock (&self->lock);
-  if (self->caps_mode != GST_DECKLINK_MODE_AUTO)
-    mode_caps = gst_decklink_mode_get_caps (self->caps_mode, self->caps_format);
-  else
-    mode_caps = gst_decklink_mode_get_caps (self->mode, self->caps_format);
+  mode = self->caps_mode;
+  format = self->caps_format;
   g_mutex_unlock (&self->lock);
 
+  mode_caps = gst_decklink_mode_get_caps (mode, format);
+
   if (filter) {
     caps =
         gst_caps_intersect_full (filter, mode_caps, GST_CAPS_INTERSECT_FIRST);
@@ -454,7 +515,8 @@
 static void
 gst_decklink_video_src_got_frame (GstElement * element,
     IDeckLinkVideoInputFrame * frame, GstDecklinkModeEnum mode,
-    GstClockTime capture_time, GstClockTime capture_duration)
+    GstClockTime capture_time, GstClockTime capture_duration, guint hours,
+    guint minutes, guint seconds, guint frames, BMDTimecodeFlags bflags)
 {
   GstDecklinkVideoSrc *self = GST_DECKLINK_VIDEO_SRC_CAST (element);
 
@@ -470,6 +532,9 @@
   g_mutex_lock (&self->lock);
   if (!self->flushing) {
     CaptureFrame *f;
+    const GstDecklinkMode *bmode;
+    GstVideoTimeCodeFlags flags = GST_VIDEO_TIME_CODE_FLAGS_NONE;
+    guint field_count = 0;
 
     while (g_queue_get_length (&self->current_frames) >= self->buffer_size) {
       f = (CaptureFrame *) g_queue_pop_head (&self->current_frames);
@@ -484,6 +549,24 @@
     f->capture_duration = capture_duration;
     f->mode = mode;
     f->format = frame->GetPixelFormat ();
+    bmode = gst_decklink_get_mode (mode);
+    if (bmode->interlaced) {
+      flags =
+          (GstVideoTimeCodeFlags) (flags |
+          GST_VIDEO_TIME_CODE_FLAGS_INTERLACED);
+      if (bflags & bmdTimecodeFieldMark)
+        field_count = 2;
+      else
+        field_count = 1;
+    }
+    if (bflags & bmdTimecodeIsDropFrame)
+      flags =
+          (GstVideoTimeCodeFlags) (flags |
+          GST_VIDEO_TIME_CODE_FLAGS_DROP_FRAME);
+    f->tc =
+        gst_video_time_code_new (bmode->fps_n, bmode->fps_d, NULL, flags, hours,
+        minutes, seconds, frames, field_count);
+
     frame->AddRef ();
     g_queue_push_tail (&self->current_frames, f);
     g_cond_signal (&self->cond);
@@ -501,6 +584,7 @@
   VideoFrame *vf;
   CaptureFrame *f;
   GstCaps *caps;
+  gboolean caps_changed = FALSE;
 
   g_mutex_lock (&self->lock);
   while (g_queue_is_empty (&self->current_frames) && !self->flushing) {
@@ -516,23 +600,50 @@
     GST_DEBUG_OBJECT (self, "Flushing");
     return GST_FLOW_FLUSHING;
   }
+  // If we're not flushing, we should have a valid frame from the queue
+  g_assert (f != NULL);
 
   g_mutex_lock (&self->lock);
-  if (self->mode == GST_DECKLINK_MODE_AUTO &&
-      (self->caps_mode != f->mode || self->caps_format != f->format)) {
-    GST_DEBUG_OBJECT (self, "Mode/Format changed from %d/%d to %d/%d",
-        self->caps_mode, self->caps_format, f->mode, f->format);
-    self->caps_mode = f->mode;
-    self->caps_format = f->format;
-    g_mutex_unlock (&self->lock);
+  if (self->caps_mode != f->mode) {
+    if (self->mode == GST_DECKLINK_MODE_AUTO) {
+      GST_DEBUG_OBJECT (self, "Mode changed from %d to %d", self->caps_mode,
+          f->mode);
+      caps_changed = TRUE;
+      self->caps_mode = f->mode;
+    } else {
+      g_mutex_unlock (&self->lock);
+      GST_ELEMENT_ERROR (self, CORE, NEGOTIATION,
+          ("Invalid mode in captured frame"),
+          ("Mode set to %d but captured %d", self->caps_mode, f->mode));
+      capture_frame_free (f);
+      return GST_FLOW_NOT_NEGOTIATED;
+    }
+  }
+  if (self->caps_format != f->format) {
+    if (self->video_format == GST_DECKLINK_VIDEO_FORMAT_AUTO) {
+      GST_DEBUG_OBJECT (self, "Format changed from %d to %d", self->caps_format,
+          f->format);
+      caps_changed = TRUE;
+      self->caps_format = f->format;
+    } else {
+      g_mutex_unlock (&self->lock);
+      GST_ELEMENT_ERROR (self, CORE, NEGOTIATION,
+          ("Invalid pixel format in captured frame"),
+          ("Format set to %d but captured %d", self->caps_format, f->format));
+      capture_frame_free (f);
+      return GST_FLOW_NOT_NEGOTIATED;
+    }
+  }
+
+  g_mutex_unlock (&self->lock);
+  if (caps_changed) {
     caps = gst_decklink_mode_get_caps (f->mode, f->format);
     gst_video_info_from_caps (&self->info, caps);
     gst_base_src_set_caps (GST_BASE_SRC_CAST (bsrc), caps);
     gst_element_post_message (GST_ELEMENT_CAST (self),
         gst_message_new_latency (GST_OBJECT_CAST (self)));
     gst_caps_unref (caps);
-  } else {
-    g_mutex_unlock (&self->lock);
+
   }
 
   f->frame->GetBytes ((gpointer *) & data);
@@ -552,6 +663,7 @@
 
   GST_BUFFER_TIMESTAMP (*buffer) = f->capture_time;
   GST_BUFFER_DURATION (*buffer) = f->capture_duration;
+  gst_buffer_add_video_time_code_meta (*buffer, f->tc);
 
   GST_DEBUG_OBJECT (self,
       "Outputting buffer %p with timestamp %" GST_TIME_FORMAT " and duration %"
@@ -576,10 +688,7 @@
         const GstDecklinkMode *mode;
 
         g_mutex_lock (&self->lock);
-        if (self->caps_mode != GST_DECKLINK_MODE_AUTO)
-          mode = gst_decklink_get_mode (self->caps_mode);
-        else
-          mode = gst_decklink_get_mode (self->mode);
+        mode = gst_decklink_get_mode (self->caps_mode);
         g_mutex_unlock (&self->lock);
 
         min = gst_util_uint64_scale_ceil (GST_SECOND, mode->fps_d, mode->fps_n);
@@ -710,12 +819,22 @@
           || self->input->audio_enabled)
       && (GST_STATE (self) == GST_STATE_PLAYING
           || GST_STATE_PENDING (self) == GST_STATE_PLAYING)) {
+    GstClock *clock;
+
+    clock = gst_element_get_clock (element);
+    if (!clock) {
+      GST_ELEMENT_ERROR (self, STREAM, FAILED, (NULL),
+          ("Streams supposed to start but we have no clock"));
+      return;
+    }
+
     GST_DEBUG_OBJECT (self, "Starting streams");
 
     res = self->input->input->StartStreams ();
     if (res != S_OK) {
       GST_ELEMENT_ERROR (self, STREAM, FAILED,
           (NULL), ("Failed to start streams: 0x%08x", res));
+      gst_object_unref (clock);
       return;
     }
 
@@ -732,9 +851,9 @@
     // We can't use the normal base time for the external clock
     // because we might go to PLAYING later than the pipeline
     self->internal_base_time = gst_clock_get_internal_time (self->input->clock);
-    self->external_base_time =
-        gst_clock_get_internal_time (GST_ELEMENT_CLOCK (self));
+    self->external_base_time = gst_clock_get_internal_time (clock);
 
+    gst_object_unref (clock);
     g_mutex_lock (&self->input->lock);
   } else {
     GST_DEBUG_OBJECT (self, "Not starting streams yet");
@@ -746,7 +865,7 @@
     GstStateChange transition)
 {
   GstDecklinkVideoSrc *self = GST_DECKLINK_VIDEO_SRC_CAST (element);
-  GstStateChangeReturn ret;
+  GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
 
   switch (transition) {
     case GST_STATE_CHANGE_NULL_TO_READY:
@@ -754,6 +873,11 @@
         ret = GST_STATE_CHANGE_FAILURE;
         goto out;
       }
+      if (self->mode == GST_DECKLINK_MODE_AUTO &&
+          self->video_format != GST_DECKLINK_VIDEO_FORMAT_AUTO) {
+        GST_WARNING_OBJECT (self, "Warning: mode=auto and format!=auto may \
+                            not work");
+      }
       break;
     case GST_STATE_CHANGE_READY_TO_PAUSED:
       g_mutex_lock (&self->input->lock);
@@ -771,11 +895,17 @@
       GstClock *clock;
 
       clock = gst_element_get_clock (GST_ELEMENT_CAST (self));
-      if (clock && clock != self->input->clock) {
-        gst_clock_set_master (self->input->clock, clock);
-      }
-      if (clock)
+      if (clock) {
+        if (clock != self->input->clock) {
+          gst_clock_set_master (self->input->clock, clock);
+        }
+
         gst_object_unref (clock);
+      } else {
+        GST_ELEMENT_ERROR (self, STREAM, FAILED,
+            (NULL), ("Need a clock to go to PLAYING"));
+        ret = GST_STATE_CHANGE_FAILURE;
+      }
 
       break;
     }
@@ -783,6 +913,8 @@
       break;
   }
 
+  if (ret == GST_STATE_CHANGE_FAILURE)
+    return ret;
   ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
   if (ret == GST_STATE_CHANGE_FAILURE)
     return ret;
diff --git a/sys/decklink/gstdecklinkvideosrc.h b/sys/decklink/gstdecklinkvideosrc.h
index b83495f..b1e7351 100644
--- a/sys/decklink/gstdecklinkvideosrc.h
+++ b/sys/decklink/gstdecklinkvideosrc.h
@@ -57,6 +57,8 @@
   gint device_number;
 
   GstVideoInfo info;
+  GstDecklinkVideoFormat video_format;
+  BMDTimecodeFormat timecode_format;
 
   GstDecklinkInput *input;
 
diff --git a/sys/decklink/linux/DeckLinkAPI.h b/sys/decklink/linux/DeckLinkAPI.h
index c46ed77..6b0ac18 100644
--- a/sys/decklink/linux/DeckLinkAPI.h
+++ b/sys/decklink/linux/DeckLinkAPI.h
@@ -1,5 +1,5 @@
 /* -LICENSE-START-
-** Copyright (c) 2014 Blackmagic Design
+** Copyright (c) 2016 Blackmagic Design
 **
 ** Permission is hereby granted, free of charge, to any person or organization
 ** obtaining a copy of the software and accompanying documentation covered by
@@ -57,23 +57,31 @@
 
 BMD_CONST REFIID IID_IDeckLinkVideoOutputCallback                 = /* 20AA5225-1958-47CB-820B-80A8D521A6EE */ {0x20,0xAA,0x52,0x25,0x19,0x58,0x47,0xCB,0x82,0x0B,0x80,0xA8,0xD5,0x21,0xA6,0xEE};
 BMD_CONST REFIID IID_IDeckLinkInputCallback                       = /* DD04E5EC-7415-42AB-AE4A-E80C4DFC044A */ {0xDD,0x04,0xE5,0xEC,0x74,0x15,0x42,0xAB,0xAE,0x4A,0xE8,0x0C,0x4D,0xFC,0x04,0x4A};
+BMD_CONST REFIID IID_IDeckLinkEncoderInputCallback                = /* ACF13E61-F4A0-4974-A6A7-59AFF6268B31 */ {0xAC,0xF1,0x3E,0x61,0xF4,0xA0,0x49,0x74,0xA6,0xA7,0x59,0xAF,0xF6,0x26,0x8B,0x31};
 BMD_CONST REFIID IID_IDeckLinkMemoryAllocator                     = /* B36EB6E7-9D29-4AA8-92EF-843B87A289E8 */ {0xB3,0x6E,0xB6,0xE7,0x9D,0x29,0x4A,0xA8,0x92,0xEF,0x84,0x3B,0x87,0xA2,0x89,0xE8};
 BMD_CONST REFIID IID_IDeckLinkAudioOutputCallback                 = /* 403C681B-7F46-4A12-B993-2BB127084EE6 */ {0x40,0x3C,0x68,0x1B,0x7F,0x46,0x4A,0x12,0xB9,0x93,0x2B,0xB1,0x27,0x08,0x4E,0xE6};
 BMD_CONST REFIID IID_IDeckLinkIterator                            = /* 50FB36CD-3063-4B73-BDBB-958087F2D8BA */ {0x50,0xFB,0x36,0xCD,0x30,0x63,0x4B,0x73,0xBD,0xBB,0x95,0x80,0x87,0xF2,0xD8,0xBA};
 BMD_CONST REFIID IID_IDeckLinkAPIInformation                      = /* 7BEA3C68-730D-4322-AF34-8A7152B532A4 */ {0x7B,0xEA,0x3C,0x68,0x73,0x0D,0x43,0x22,0xAF,0x34,0x8A,0x71,0x52,0xB5,0x32,0xA4};
 BMD_CONST REFIID IID_IDeckLinkOutput                              = /* CC5C8A6E-3F2F-4B3A-87EA-FD78AF300564 */ {0xCC,0x5C,0x8A,0x6E,0x3F,0x2F,0x4B,0x3A,0x87,0xEA,0xFD,0x78,0xAF,0x30,0x05,0x64};
 BMD_CONST REFIID IID_IDeckLinkInput                               = /* AF22762B-DFAC-4846-AA79-FA8883560995 */ {0xAF,0x22,0x76,0x2B,0xDF,0xAC,0x48,0x46,0xAA,0x79,0xFA,0x88,0x83,0x56,0x09,0x95};
+BMD_CONST REFIID IID_IDeckLinkEncoderInput                        = /* 270587DA-6B7D-42E7-A1F0-6D853F581185 */ {0x27,0x05,0x87,0xDA,0x6B,0x7D,0x42,0xE7,0xA1,0xF0,0x6D,0x85,0x3F,0x58,0x11,0x85};
 BMD_CONST REFIID IID_IDeckLinkVideoFrame                          = /* 3F716FE0-F023-4111-BE5D-EF4414C05B17 */ {0x3F,0x71,0x6F,0xE0,0xF0,0x23,0x41,0x11,0xBE,0x5D,0xEF,0x44,0x14,0xC0,0x5B,0x17};
 BMD_CONST REFIID IID_IDeckLinkMutableVideoFrame                   = /* 69E2639F-40DA-4E19-B6F2-20ACE815C390 */ {0x69,0xE2,0x63,0x9F,0x40,0xDA,0x4E,0x19,0xB6,0xF2,0x20,0xAC,0xE8,0x15,0xC3,0x90};
 BMD_CONST REFIID IID_IDeckLinkVideoFrame3DExtensions              = /* DA0F7E4A-EDC7-48A8-9CDD-2DB51C729CD7 */ {0xDA,0x0F,0x7E,0x4A,0xED,0xC7,0x48,0xA8,0x9C,0xDD,0x2D,0xB5,0x1C,0x72,0x9C,0xD7};
+BMD_CONST REFIID IID_IDeckLinkVideoFrameMetadataExtensions        = /* D5973DC9-6432-46D0-8F0B-2496F8A1238F */ {0xD5,0x97,0x3D,0xC9,0x64,0x32,0x46,0xD0,0x8F,0x0B,0x24,0x96,0xF8,0xA1,0x23,0x8F};
 BMD_CONST REFIID IID_IDeckLinkVideoInputFrame                     = /* 05CFE374-537C-4094-9A57-680525118F44 */ {0x05,0xCF,0xE3,0x74,0x53,0x7C,0x40,0x94,0x9A,0x57,0x68,0x05,0x25,0x11,0x8F,0x44};
 BMD_CONST REFIID IID_IDeckLinkVideoFrameAncillary                 = /* 732E723C-D1A4-4E29-9E8E-4A88797A0004 */ {0x73,0x2E,0x72,0x3C,0xD1,0xA4,0x4E,0x29,0x9E,0x8E,0x4A,0x88,0x79,0x7A,0x00,0x04};
+BMD_CONST REFIID IID_IDeckLinkEncoderPacket                       = /* B693F36C-316E-4AF1-B6C2-F389A4BCA620 */ {0xB6,0x93,0xF3,0x6C,0x31,0x6E,0x4A,0xF1,0xB6,0xC2,0xF3,0x89,0xA4,0xBC,0xA6,0x20};
+BMD_CONST REFIID IID_IDeckLinkEncoderVideoPacket                  = /* 4E7FD944-E8C7-4EAC-B8C0-7B77F80F5AE0 */ {0x4E,0x7F,0xD9,0x44,0xE8,0xC7,0x4E,0xAC,0xB8,0xC0,0x7B,0x77,0xF8,0x0F,0x5A,0xE0};
+BMD_CONST REFIID IID_IDeckLinkEncoderAudioPacket                  = /* 49E8EDC8-693B-4E14-8EF6-12C658F5A07A */ {0x49,0xE8,0xED,0xC8,0x69,0x3B,0x4E,0x14,0x8E,0xF6,0x12,0xC6,0x58,0xF5,0xA0,0x7A};
+BMD_CONST REFIID IID_IDeckLinkH265NALPacket                       = /* 639C8E0B-68D5-4BDE-A6D4-95F3AEAFF2E7 */ {0x63,0x9C,0x8E,0x0B,0x68,0xD5,0x4B,0xDE,0xA6,0xD4,0x95,0xF3,0xAE,0xAF,0xF2,0xE7};
 BMD_CONST REFIID IID_IDeckLinkAudioInputPacket                    = /* E43D5870-2894-11DE-8C30-0800200C9A66 */ {0xE4,0x3D,0x58,0x70,0x28,0x94,0x11,0xDE,0x8C,0x30,0x08,0x00,0x20,0x0C,0x9A,0x66};
 BMD_CONST REFIID IID_IDeckLinkScreenPreviewCallback               = /* B1D3F49A-85FE-4C5D-95C8-0B5D5DCCD438 */ {0xB1,0xD3,0xF4,0x9A,0x85,0xFE,0x4C,0x5D,0x95,0xC8,0x0B,0x5D,0x5D,0xCC,0xD4,0x38};
 BMD_CONST REFIID IID_IDeckLinkGLScreenPreviewHelper               = /* 504E2209-CAC7-4C1A-9FB4-C5BB6274D22F */ {0x50,0x4E,0x22,0x09,0xCA,0xC7,0x4C,0x1A,0x9F,0xB4,0xC5,0xBB,0x62,0x74,0xD2,0x2F};
 BMD_CONST REFIID IID_IDeckLinkNotificationCallback                = /* B002A1EC-070D-4288-8289-BD5D36E5FF0D */ {0xB0,0x02,0xA1,0xEC,0x07,0x0D,0x42,0x88,0x82,0x89,0xBD,0x5D,0x36,0xE5,0xFF,0x0D};
 BMD_CONST REFIID IID_IDeckLinkNotification                        = /* 0A1FB207-E215-441B-9B19-6FA1575946C5 */ {0x0A,0x1F,0xB2,0x07,0xE2,0x15,0x44,0x1B,0x9B,0x19,0x6F,0xA1,0x57,0x59,0x46,0xC5};
 BMD_CONST REFIID IID_IDeckLinkAttributes                          = /* ABC11843-D966-44CB-96E2-A1CB5D3135C4 */ {0xAB,0xC1,0x18,0x43,0xD9,0x66,0x44,0xCB,0x96,0xE2,0xA1,0xCB,0x5D,0x31,0x35,0xC4};
+BMD_CONST REFIID IID_IDeckLinkStatus                              = /* 5F558200-4028-49BC-BEAC-DB3FA4A96E46 */ {0x5F,0x55,0x82,0x00,0x40,0x28,0x49,0xBC,0xBE,0xAC,0xDB,0x3F,0xA4,0xA9,0x6E,0x46};
 BMD_CONST REFIID IID_IDeckLinkKeyer                               = /* 89AFCAF5-65F8-421E-98F7-96FE5F5BFBA3 */ {0x89,0xAF,0xCA,0xF5,0x65,0xF8,0x42,0x1E,0x98,0xF7,0x96,0xFE,0x5F,0x5B,0xFB,0xA3};
 BMD_CONST REFIID IID_IDeckLinkVideoConversion                     = /* 3BBCB8A2-DA2C-42D9-B5D8-88083644E99A */ {0x3B,0xBC,0xB8,0xA2,0xDA,0x2C,0x42,0xD9,0xB5,0xD8,0x88,0x08,0x36,0x44,0xE9,0x9A};
 BMD_CONST REFIID IID_IDeckLinkDeviceNotificationCallback          = /* 4997053B-0ADF-4CC8-AC70-7A50C4BE728F */ {0x49,0x97,0x05,0x3B,0x0A,0xDF,0x4C,0xC8,0xAC,0x70,0x7A,0x50,0xC4,0xBE,0x72,0x8F};
@@ -90,12 +98,21 @@
     bmdVideoOutputDualStream3D                                   = 1 << 4
 };
 
+/* Enum BMDPacketType - Type of packet */
+
+typedef uint32_t BMDPacketType;
+enum _BMDPacketType {
+    bmdPacketTypeStreamInterruptedMarker                         = /* 'sint' */ 0x73696E74,	// A packet of this type marks the time when a video stream was interrupted, for example by a disconnected cable
+    bmdPacketTypeStreamData                                      = /* 'sdat' */ 0x73646174	// Regular stream data
+};
+
 /* Enum BMDFrameFlags - Frame flags */
 
 typedef uint32_t BMDFrameFlags;
 enum _BMDFrameFlags {
     bmdFrameFlagDefault                                          = 0,
     bmdFrameFlagFlipVertical                                     = 1 << 0,
+    bmdFrameContainsHDRMetadata                                  = 1 << 1,
 
     /* Flags that are applicable only to instances of IDeckLinkVideoInputFrame */
 
@@ -133,6 +150,7 @@
 
 typedef uint32_t BMDDeckLinkCapturePassthroughMode;
 enum _BMDDeckLinkCapturePassthroughMode {
+    bmdDeckLinkCapturePassthroughModeDisabled                    = /* 'pdis' */ 0x70646973,
     bmdDeckLinkCapturePassthroughModeDirect                      = /* 'pdir' */ 0x70646972,
     bmdDeckLinkCapturePassthroughModeCleanSwitch                 = /* 'pcln' */ 0x70636C6E
 };
@@ -155,6 +173,13 @@
     bmdReferenceLocked                                           = 1 << 1
 };
 
+/* Enum BMDAudioFormat - Audio Format */
+
+typedef uint32_t BMDAudioFormat;
+enum _BMDAudioFormat {
+    bmdAudioFormatPCM                                            = /* 'lpcm' */ 0x6C70636D	// Linear signed PCM samples
+};
+
 /* Enum BMDAudioSampleRate - Audio sample rates supported for output/input */
 
 typedef uint32_t BMDAudioSampleRate;
@@ -267,8 +292,71 @@
 typedef uint32_t BMDIdleVideoOutputOperation;
 enum _BMDIdleVideoOutputOperation {
     bmdIdleVideoOutputBlack                                      = /* 'blac' */ 0x626C6163,
-    bmdIdleVideoOutputLastFrame                                  = /* 'lafa' */ 0x6C616661,
-    bmdIdleVideoOutputDesktop                                    = /* 'desk' */ 0x6465736B
+    bmdIdleVideoOutputLastFrame                                  = /* 'lafa' */ 0x6C616661
+};
+
+/* Enum BMDVideoEncoderFrameCodingMode - Video frame coding mode */
+
+typedef uint32_t BMDVideoEncoderFrameCodingMode;
+enum _BMDVideoEncoderFrameCodingMode {
+    bmdVideoEncoderFrameCodingModeInter                          = /* 'inte' */ 0x696E7465,
+    bmdVideoEncoderFrameCodingModeIntra                          = /* 'intr' */ 0x696E7472
+};
+
+/* Enum BMDDNxHRLevel - DNxHR Levels */
+
+typedef uint32_t BMDDNxHRLevel;
+enum _BMDDNxHRLevel {
+    bmdDNxHRLevelSQ                                              = /* 'dnsq' */ 0x646E7371,
+    bmdDNxHRLevelLB                                              = /* 'dnlb' */ 0x646E6C62,
+    bmdDNxHRLevelHQ                                              = /* 'dnhq' */ 0x646E6871,
+    bmdDNxHRLevelHQX                                             = /* 'dhqx' */ 0x64687178,
+    bmdDNxHRLevel444                                             = /* 'd444' */ 0x64343434
+};
+
+/* Enum BMDLinkConfiguration - Video link configuration */
+
+typedef uint32_t BMDLinkConfiguration;
+enum _BMDLinkConfiguration {
+    bmdLinkConfigurationSingleLink                               = /* 'lcsl' */ 0x6C63736C,
+    bmdLinkConfigurationDualLink                                 = /* 'lcdl' */ 0x6C63646C,
+    bmdLinkConfigurationQuadLink                                 = /* 'lcql' */ 0x6C63716C
+};
+
+/* Enum BMDDeviceInterface - Device interface type */
+
+typedef uint32_t BMDDeviceInterface;
+enum _BMDDeviceInterface {
+    bmdDeviceInterfacePCI                                        = /* 'pci ' */ 0x70636920,
+    bmdDeviceInterfaceUSB                                        = /* 'usb ' */ 0x75736220,
+    bmdDeviceInterfaceThunderbolt                                = /* 'thun' */ 0x7468756E
+};
+
+/* Enum BMDDeckLinkFrameMetadataID - DeckLink Frame Metadata ID */
+
+typedef uint32_t BMDDeckLinkFrameMetadataID;
+enum _BMDDeckLinkFrameMetadataID {
+    bmdDeckLinkFrameMetadataHDRElectroOpticalTransferFunc        = /* 'eotf' */ 0x656F7466,	// EOTF in range 0-7 as per CEA 861.3
+    bmdDeckLinkFrameMetadataHDRDisplayPrimariesRedX              = /* 'hdrx' */ 0x68647278,	// Red display primaries in range 0.0 - 1.0
+    bmdDeckLinkFrameMetadataHDRDisplayPrimariesRedY              = /* 'hdry' */ 0x68647279,	// Red display primaries in range 0.0 - 1.0
+    bmdDeckLinkFrameMetadataHDRDisplayPrimariesGreenX            = /* 'hdgx' */ 0x68646778,	// Green display primaries in range 0.0 - 1.0
+    bmdDeckLinkFrameMetadataHDRDisplayPrimariesGreenY            = /* 'hdgy' */ 0x68646779,	// Green display primaries in range 0.0 - 1.0
+    bmdDeckLinkFrameMetadataHDRDisplayPrimariesBlueX             = /* 'hdbx' */ 0x68646278,	// Blue display primaries in range 0.0 - 1.0
+    bmdDeckLinkFrameMetadataHDRDisplayPrimariesBlueY             = /* 'hdby' */ 0x68646279,	// Blue display primaries in range 0.0 - 1.0
+    bmdDeckLinkFrameMetadataHDRWhitePointX                       = /* 'hdwx' */ 0x68647778,	// White point in range 0.0 - 1.0
+    bmdDeckLinkFrameMetadataHDRWhitePointY                       = /* 'hdwy' */ 0x68647779,	// White point in range 0.0 - 1.0
+    bmdDeckLinkFrameMetadataHDRMaxDisplayMasteringLuminance      = /* 'hdml' */ 0x68646D6C,	// Max display mastering luminance in range 1 cd/m2 - 65535 cd/m2
+    bmdDeckLinkFrameMetadataHDRMinDisplayMasteringLuminance      = /* 'hmil' */ 0x686D696C,	// Min display mastering luminance in range 0.0001 cd/m2 - 6.5535 cd/m2
+    bmdDeckLinkFrameMetadataHDRMaximumContentLightLevel          = /* 'mcll' */ 0x6D636C6C,	// Maximum Content Light Level in range 1 cd/m2 - 65535 cd/m2
+    bmdDeckLinkFrameMetadataHDRMaximumFrameAverageLightLevel     = /* 'fall' */ 0x66616C6C	// Maximum Frame Average Light Level in range 1 cd/m2 - 65535 cd/m2
+};
+
+/* Enum BMDDuplexMode - Duplex for configurable ports */
+
+typedef uint32_t BMDDuplexMode;
+enum _BMDDuplexMode {
+    bmdDuplexModeFull                                            = /* 'fdup' */ 0x66647570,
+    bmdDuplexModeHalf                                            = /* 'hdup' */ 0x68647570
 };
 
 /* Enum BMDDeckLinkAttributeID - DeckLink Attribute ID */
@@ -288,10 +376,16 @@
     BMDDeckLinkCanOnlyAdjustOverallVideoOutputGain               = /* 'ovog' */ 0x6F766F67,
     BMDDeckLinkHasVideoInputAntiAliasingFilter                   = /* 'aafl' */ 0x6161666C,
     BMDDeckLinkHasBypass                                         = /* 'byps' */ 0x62797073,
-    BMDDeckLinkSupportsDesktopDisplay                            = /* 'extd' */ 0x65787464,
     BMDDeckLinkSupportsClockTimingAdjustment                     = /* 'ctad' */ 0x63746164,
     BMDDeckLinkSupportsFullDuplex                                = /* 'fdup' */ 0x66647570,
     BMDDeckLinkSupportsFullFrameReferenceInputTimingOffset       = /* 'frin' */ 0x6672696E,
+    BMDDeckLinkSupportsSMPTELevelAOutput                         = /* 'lvla' */ 0x6C766C61,
+    BMDDeckLinkSupportsDualLinkSDI                               = /* 'sdls' */ 0x73646C73,
+    BMDDeckLinkSupportsQuadLinkSDI                               = /* 'sqls' */ 0x73716C73,
+    BMDDeckLinkSupportsIdleOutput                                = /* 'idou' */ 0x69646F75,
+    BMDDeckLinkHasLTCTimecodeInput                               = /* 'hltc' */ 0x686C7463,
+    BMDDeckLinkSupportsDuplexModeConfiguration                   = /* 'dupx' */ 0x64757078,
+    BMDDeckLinkSupportsHDRMetadata                               = /* 'hdrm' */ 0x6864726D,
 
     /* Integers */
 
@@ -300,13 +394,20 @@
     BMDDeckLinkNumberOfSubDevices                                = /* 'nsbd' */ 0x6E736264,
     BMDDeckLinkSubDeviceIndex                                    = /* 'subi' */ 0x73756269,
     BMDDeckLinkPersistentID                                      = /* 'peid' */ 0x70656964,
+    BMDDeckLinkDeviceGroupID                                     = /* 'dgid' */ 0x64676964,
     BMDDeckLinkTopologicalID                                     = /* 'toid' */ 0x746F6964,
     BMDDeckLinkVideoOutputConnections                            = /* 'vocn' */ 0x766F636E,
     BMDDeckLinkVideoInputConnections                             = /* 'vicn' */ 0x7669636E,
     BMDDeckLinkAudioOutputConnections                            = /* 'aocn' */ 0x616F636E,
     BMDDeckLinkAudioInputConnections                             = /* 'aicn' */ 0x6169636E,
-    BMDDeckLinkDeviceBusyState                                   = /* 'dbst' */ 0x64627374,
     BMDDeckLinkVideoIOSupport                                    = /* 'vios' */ 0x76696F73,	// Returns a BMDVideoIOSupport bit field
+    BMDDeckLinkDeckControlConnections                            = /* 'dccn' */ 0x6463636E,
+    BMDDeckLinkDeviceInterface                                   = /* 'dbus' */ 0x64627573,	// Returns a BMDDeviceInterface
+    BMDDeckLinkAudioInputRCAChannelCount                         = /* 'airc' */ 0x61697263,
+    BMDDeckLinkAudioInputXLRChannelCount                         = /* 'aixc' */ 0x61697863,
+    BMDDeckLinkAudioOutputRCAChannelCount                        = /* 'aorc' */ 0x616F7263,
+    BMDDeckLinkAudioOutputXLRChannelCount                        = /* 'aoxc' */ 0x616F7863,
+    BMDDeckLinkPairedDevicePersistentID                          = /* 'ppid' */ 0x70706964,
 
     /* Floats */
 
@@ -314,10 +415,16 @@
     BMDDeckLinkVideoInputGainMaximum                             = /* 'vigx' */ 0x76696778,
     BMDDeckLinkVideoOutputGainMinimum                            = /* 'vogm' */ 0x766F676D,
     BMDDeckLinkVideoOutputGainMaximum                            = /* 'vogx' */ 0x766F6778,
+    BMDDeckLinkMicrophoneInputGainMinimum                        = /* 'migm' */ 0x6D69676D,
+    BMDDeckLinkMicrophoneInputGainMaximum                        = /* 'migx' */ 0x6D696778,
 
     /* Strings */
 
-    BMDDeckLinkSerialPortDeviceName                              = /* 'slpn' */ 0x736C706E
+    BMDDeckLinkSerialPortDeviceName                              = /* 'slpn' */ 0x736C706E,
+    BMDDeckLinkVendorName                                        = /* 'vndr' */ 0x766E6472,
+    BMDDeckLinkDisplayName                                       = /* 'dspn' */ 0x6473706E,
+    BMDDeckLinkModelName                                         = /* 'mdln' */ 0x6D646C6E,
+    BMDDeckLinkDeviceHandle                                      = /* 'devh' */ 0x64657668
 };
 
 /* Enum BMDDeckLinkAPIInformationID - DeckLinkAPI information ID */
@@ -327,6 +434,52 @@
     BMDDeckLinkAPIVersion                                        = /* 'vers' */ 0x76657273
 };
 
+/* Enum BMDDeckLinkStatusID - DeckLink Status ID */
+
+typedef uint32_t BMDDeckLinkStatusID;
+enum _BMDDeckLinkStatusID {
+
+    /* Integers */
+
+    bmdDeckLinkStatusDetectedVideoInputMode                      = /* 'dvim' */ 0x6476696D,
+    bmdDeckLinkStatusDetectedVideoInputFlags                     = /* 'dvif' */ 0x64766966,
+    bmdDeckLinkStatusCurrentVideoInputMode                       = /* 'cvim' */ 0x6376696D,
+    bmdDeckLinkStatusCurrentVideoInputPixelFormat                = /* 'cvip' */ 0x63766970,
+    bmdDeckLinkStatusCurrentVideoInputFlags                      = /* 'cvif' */ 0x63766966,
+    bmdDeckLinkStatusCurrentVideoOutputMode                      = /* 'cvom' */ 0x63766F6D,
+    bmdDeckLinkStatusCurrentVideoOutputFlags                     = /* 'cvof' */ 0x63766F66,
+    bmdDeckLinkStatusPCIExpressLinkWidth                         = /* 'pwid' */ 0x70776964,
+    bmdDeckLinkStatusPCIExpressLinkSpeed                         = /* 'plnk' */ 0x706C6E6B,
+    bmdDeckLinkStatusLastVideoOutputPixelFormat                  = /* 'opix' */ 0x6F706978,
+    bmdDeckLinkStatusReferenceSignalMode                         = /* 'refm' */ 0x7265666D,
+    bmdDeckLinkStatusReferenceSignalFlags                        = /* 'reff' */ 0x72656666,
+    bmdDeckLinkStatusDuplexMode                                  = /* 'dupx' */ 0x64757078,
+    bmdDeckLinkStatusBusy                                        = /* 'busy' */ 0x62757379,
+
+    /* Flags */
+
+    bmdDeckLinkStatusVideoInputSignalLocked                      = /* 'visl' */ 0x7669736C,
+    bmdDeckLinkStatusReferenceSignalLocked                       = /* 'refl' */ 0x7265666C
+};
+
+/* Enum BMDDeckLinkVideoStatusFlags -  */
+
+typedef uint32_t BMDDeckLinkVideoStatusFlags;
+enum _BMDDeckLinkVideoStatusFlags {
+    bmdDeckLinkVideoStatusPsF                                    = 1 << 0,
+    bmdDeckLinkVideoStatusDualStream3D                           = 1 << 1
+};
+
+/* Enum BMDDuplexStatus - Duplex status of the device */
+
+typedef uint32_t BMDDuplexStatus;
+enum _BMDDuplexStatus {
+    bmdDuplexStatusFullDuplex                                    = /* 'fdup' */ 0x66647570,
+    bmdDuplexStatusHalfDuplex                                    = /* 'hdup' */ 0x68647570,
+    bmdDuplexStatusSimplex                                       = /* 'splx' */ 0x73706C78,
+    bmdDuplexStatusInactive                                      = /* 'inac' */ 0x696E6163
+};
+
 /* Enum BMDDeviceBusyState - Current device busy state */
 
 typedef uint32_t BMDDeviceBusyState;
@@ -359,7 +512,8 @@
 
 typedef uint32_t BMDNotifications;
 enum _BMDNotifications {
-    bmdPreferencesChanged                                        = /* 'pref' */ 0x70726566
+    bmdPreferencesChanged                                        = /* 'pref' */ 0x70726566,
+    bmdStatusChanged                                             = /* 'stat' */ 0x73746174
 };
 
 #if defined(__cplusplus)
@@ -368,23 +522,31 @@
 
 class IDeckLinkVideoOutputCallback;
 class IDeckLinkInputCallback;
+class IDeckLinkEncoderInputCallback;
 class IDeckLinkMemoryAllocator;
 class IDeckLinkAudioOutputCallback;
 class IDeckLinkIterator;
 class IDeckLinkAPIInformation;
 class IDeckLinkOutput;
 class IDeckLinkInput;
+class IDeckLinkEncoderInput;
 class IDeckLinkVideoFrame;
 class IDeckLinkMutableVideoFrame;
 class IDeckLinkVideoFrame3DExtensions;
+class IDeckLinkVideoFrameMetadataExtensions;
 class IDeckLinkVideoInputFrame;
 class IDeckLinkVideoFrameAncillary;
+class IDeckLinkEncoderPacket;
+class IDeckLinkEncoderVideoPacket;
+class IDeckLinkEncoderAudioPacket;
+class IDeckLinkH265NALPacket;
 class IDeckLinkAudioInputPacket;
 class IDeckLinkScreenPreviewCallback;
 class IDeckLinkGLScreenPreviewHelper;
 class IDeckLinkNotificationCallback;
 class IDeckLinkNotification;
 class IDeckLinkAttributes;
+class IDeckLinkStatus;
 class IDeckLinkKeyer;
 class IDeckLinkVideoConversion;
 class IDeckLinkDeviceNotificationCallback;
@@ -414,6 +576,19 @@
     virtual ~IDeckLinkInputCallback () {} // call Release method to drop reference count
 };
 
+/* Interface IDeckLinkEncoderInputCallback - Frame arrival callback. */
+
+class IDeckLinkEncoderInputCallback : public IUnknown
+{
+public:
+    virtual HRESULT VideoInputSignalChanged (/* in */ BMDVideoInputFormatChangedEvents notificationEvents, /* in */ IDeckLinkDisplayMode *newDisplayMode, /* in */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;
+    virtual HRESULT VideoPacketArrived (/* in */ IDeckLinkEncoderVideoPacket* videoPacket) = 0;
+    virtual HRESULT AudioPacketArrived (/* in */ IDeckLinkEncoderAudioPacket* audioPacket) = 0;
+
+protected:
+    virtual ~IDeckLinkEncoderInputCallback () {} // call Release method to drop reference count
+};
+
 /* Interface IDeckLinkMemoryAllocator - Memory allocator for video frames. */
 
 class IDeckLinkMemoryAllocator : public IUnknown
@@ -552,6 +727,43 @@
     virtual ~IDeckLinkInput () {} // call Release method to drop reference count
 };
 
+/* Interface IDeckLinkEncoderInput - Created by QueryInterface from IDeckLink. */
+
+class IDeckLinkEncoderInput : public IUnknown
+{
+public:
+    virtual HRESULT DoesSupportVideoMode (/* in */ BMDDisplayMode displayMode, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDVideoInputFlags flags, /* out */ BMDDisplayModeSupport *result, /* out */ IDeckLinkDisplayMode **resultDisplayMode) = 0;
+    virtual HRESULT GetDisplayModeIterator (/* out */ IDeckLinkDisplayModeIterator **iterator) = 0;
+
+    /* Video Input */
+
+    virtual HRESULT EnableVideoInput (/* in */ BMDDisplayMode displayMode, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDVideoInputFlags flags) = 0;
+    virtual HRESULT DisableVideoInput (void) = 0;
+    virtual HRESULT GetAvailablePacketsCount (/* out */ uint32_t *availablePacketsCount) = 0;
+    virtual HRESULT SetMemoryAllocator (/* in */ IDeckLinkMemoryAllocator *theAllocator) = 0;
+
+    /* Audio Input */
+
+    virtual HRESULT EnableAudioInput (/* in */ BMDAudioFormat audioFormat, /* in */ BMDAudioSampleRate sampleRate, /* in */ BMDAudioSampleType sampleType, /* in */ uint32_t channelCount) = 0;
+    virtual HRESULT DisableAudioInput (void) = 0;
+    virtual HRESULT GetAvailableAudioSampleFrameCount (/* out */ uint32_t *availableSampleFrameCount) = 0;
+
+    /* Input Control */
+
+    virtual HRESULT StartStreams (void) = 0;
+    virtual HRESULT StopStreams (void) = 0;
+    virtual HRESULT PauseStreams (void) = 0;
+    virtual HRESULT FlushStreams (void) = 0;
+    virtual HRESULT SetCallback (/* in */ IDeckLinkEncoderInputCallback *theCallback) = 0;
+
+    /* Hardware Timing */
+
+    virtual HRESULT GetHardwareReferenceClock (/* in */ BMDTimeScale desiredTimeScale, /* out */ BMDTimeValue *hardwareTime, /* out */ BMDTimeValue *timeInFrame, /* out */ BMDTimeValue *ticksPerFrame) = 0;
+
+protected:
+    virtual ~IDeckLinkEncoderInput () {} // call Release method to drop reference count
+};
+
 /* Interface IDeckLinkVideoFrame - Interface to encapsulate a video frame; can be caller-implemented. */
 
 class IDeckLinkVideoFrame : public IUnknown
@@ -599,6 +811,20 @@
     virtual ~IDeckLinkVideoFrame3DExtensions () {} // call Release method to drop reference count
 };
 
+/* Interface IDeckLinkVideoFrameMetadataExtensions - Optional interface implemented on IDeckLinkVideoFrame to support frame metadata such as HDMI HDR information */
+
+class IDeckLinkVideoFrameMetadataExtensions : public IUnknown
+{
+public:
+    virtual HRESULT GetInt (/* in */ BMDDeckLinkFrameMetadataID metadataID, /* out */ int64_t *value) = 0;
+    virtual HRESULT GetFloat (/* in */ BMDDeckLinkFrameMetadataID metadataID, /* out */ double *value) = 0;
+    virtual HRESULT GetFlag (/* in */ BMDDeckLinkFrameMetadataID metadataID, /* out */ bool* value) = 0;
+    virtual HRESULT GetString (/* in */ BMDDeckLinkFrameMetadataID metadataID, /* out */ const char **value) = 0;
+
+protected:
+    virtual ~IDeckLinkVideoFrameMetadataExtensions () {} // call Release method to drop reference count
+};
+
 /* Interface IDeckLinkVideoInputFrame - Provided by the IDeckLinkVideoInput frame arrival callback. */
 
 class IDeckLinkVideoInputFrame : public IDeckLinkVideoFrame
@@ -625,6 +851,58 @@
     virtual ~IDeckLinkVideoFrameAncillary () {} // call Release method to drop reference count
 };
 
+/* Interface IDeckLinkEncoderPacket - Interface to encapsulate an encoded packet. */
+
+class IDeckLinkEncoderPacket : public IUnknown
+{
+public:
+    virtual HRESULT GetBytes (/* out */ void **buffer) = 0;
+    virtual long GetSize (void) = 0;
+    virtual HRESULT GetStreamTime (/* out */ BMDTimeValue *frameTime, /* in */ BMDTimeScale timeScale) = 0;
+    virtual BMDPacketType GetPacketType (void) = 0;
+
+protected:
+    virtual ~IDeckLinkEncoderPacket () {} // call Release method to drop reference count
+};
+
+/* Interface IDeckLinkEncoderVideoPacket - Provided by the IDeckLinkEncoderInput video packet arrival callback. */
+
+class IDeckLinkEncoderVideoPacket : public IDeckLinkEncoderPacket
+{
+public:
+    virtual BMDPixelFormat GetPixelFormat (void) = 0;
+    virtual HRESULT GetHardwareReferenceTimestamp (/* in */ BMDTimeScale timeScale, /* out */ BMDTimeValue *frameTime, /* out */ BMDTimeValue *frameDuration) = 0;
+
+    virtual HRESULT GetTimecode (/* in */ BMDTimecodeFormat format, /* out */ IDeckLinkTimecode **timecode) = 0;
+
+protected:
+    virtual ~IDeckLinkEncoderVideoPacket () {} // call Release method to drop reference count
+};
+
+/* Interface IDeckLinkEncoderAudioPacket - Provided by the IDeckLinkEncoderInput audio packet arrival callback. */
+
+class IDeckLinkEncoderAudioPacket : public IDeckLinkEncoderPacket
+{
+public:
+    virtual BMDAudioFormat GetAudioFormat (void) = 0;
+
+protected:
+    virtual ~IDeckLinkEncoderAudioPacket () {} // call Release method to drop reference count
+};
+
+/* Interface IDeckLinkH265NALPacket - Obtained through QueryInterface() on an IDeckLinkEncoderVideoPacket object */
+
+class IDeckLinkH265NALPacket : public IDeckLinkEncoderVideoPacket
+{
+public:
+    virtual HRESULT GetUnitType (/* out */ uint8_t *unitType) = 0;
+    virtual HRESULT GetBytesNoPrefix (/* out */ void **buffer) = 0;
+    virtual long GetSizeNoPrefix (void) = 0;
+
+protected:
+    virtual ~IDeckLinkH265NALPacket () {} // call Release method to drop reference count
+};
+
 /* Interface IDeckLinkAudioInputPacket - Provided by the IDeckLinkInput callback. */
 
 class IDeckLinkAudioInputPacket : public IUnknown
@@ -697,6 +975,21 @@
     virtual ~IDeckLinkAttributes () {} // call Release method to drop reference count
 };
 
+/* Interface IDeckLinkStatus - DeckLink Status interface */
+
+class IDeckLinkStatus : public IUnknown
+{
+public:
+    virtual HRESULT GetFlag (/* in */ BMDDeckLinkStatusID statusID, /* out */ bool *value) = 0;
+    virtual HRESULT GetInt (/* in */ BMDDeckLinkStatusID statusID, /* out */ int64_t *value) = 0;
+    virtual HRESULT GetFloat (/* in */ BMDDeckLinkStatusID statusID, /* out */ double *value) = 0;
+    virtual HRESULT GetString (/* in */ BMDDeckLinkStatusID statusID, /* out */ const char **value) = 0;
+    virtual HRESULT GetBytes (/* in */ BMDDeckLinkStatusID statusID, /* out */ void *buffer, /* in, out */ uint32_t *bufferSize) = 0;
+
+protected:
+    virtual ~IDeckLinkStatus () {} // call Release method to drop reference count
+};
+
 /* Interface IDeckLinkKeyer - DeckLink Keyer interface */
 
 class IDeckLinkKeyer : public IUnknown
diff --git a/sys/decklink/linux/DeckLinkAPIConfiguration.h b/sys/decklink/linux/DeckLinkAPIConfiguration.h
index def498c..3a6ab69 100644
--- a/sys/decklink/linux/DeckLinkAPIConfiguration.h
+++ b/sys/decklink/linux/DeckLinkAPIConfiguration.h
@@ -1,5 +1,5 @@
 /* -LICENSE-START-
-** Copyright (c) 2014 Blackmagic Design
+** Copyright (c) 2016 Blackmagic Design
 **
 ** Permission is hereby granted, free of charge, to any person or organization
 ** obtaining a copy of the software and accompanying documentation covered by
@@ -42,7 +42,8 @@
 
 // Interface ID Declarations
 
-BMD_CONST REFIID IID_IDeckLinkConfiguration                       = /* 1E69FCF6-4203-4936-8076-2A9F4CFD50CB */ {0x1E,0x69,0xFC,0xF6,0x42,0x03,0x49,0x36,0x80,0x76,0x2A,0x9F,0x4C,0xFD,0x50,0xCB};
+BMD_CONST REFIID IID_IDeckLinkConfiguration                       = /* CB71734A-FE37-4E8D-8E13-802133A1C3F2 */ {0xCB,0x71,0x73,0x4A,0xFE,0x37,0x4E,0x8D,0x8E,0x13,0x80,0x21,0x33,0xA1,0xC3,0xF2};
+BMD_CONST REFIID IID_IDeckLinkEncoderConfiguration                = /* 138050E5-C60A-4552-BF3F-0F358049327E */ {0x13,0x80,0x50,0xE5,0xC6,0x0A,0x45,0x52,0xBF,0x3F,0x0F,0x35,0x80,0x49,0x32,0x7E};
 
 /* Enum BMDDeckLinkConfigurationID - DeckLink Configuration ID */
 
@@ -62,6 +63,7 @@
     bmdDeckLinkConfigHDMI3DPackingFormat                         = /* '3dpf' */ 0x33647066,
     bmdDeckLinkConfigBypass                                      = /* 'byps' */ 0x62797073,
     bmdDeckLinkConfigClockTimingAdjustment                       = /* 'ctad' */ 0x63746164,
+    bmdDeckLinkConfigDuplexMode                                  = /* 'dupx' */ 0x64757078,
 
     /* Audio Input/Output Flags */
 
@@ -72,9 +74,10 @@
     bmdDeckLinkConfigFieldFlickerRemoval                         = /* 'fdfr' */ 0x66646672,
     bmdDeckLinkConfigHD1080p24ToHD1080i5994Conversion            = /* 'to59' */ 0x746F3539,
     bmdDeckLinkConfig444SDIVideoOutput                           = /* '444o' */ 0x3434346F,
-    bmdDeckLinkConfigSingleLinkVideoOutput                       = /* 'sglo' */ 0x73676C6F,
     bmdDeckLinkConfigBlackVideoOutputDuringCapture               = /* 'bvoc' */ 0x62766F63,
     bmdDeckLinkConfigLowLatencyVideoOutput                       = /* 'llvo' */ 0x6C6C766F,
+    bmdDeckLinkConfigDownConversionOnAllAnalogOutput             = /* 'caao' */ 0x6361616F,
+    bmdDeckLinkConfigSMPTELevelAOutput                           = /* 'smta' */ 0x736D7461,
 
     /* Video Output Integers */
 
@@ -85,6 +88,7 @@
     bmdDeckLinkConfigVideoOutputIdleOperation                    = /* 'voio' */ 0x766F696F,
     bmdDeckLinkConfigDefaultVideoOutputMode                      = /* 'dvom' */ 0x64766F6D,
     bmdDeckLinkConfigDefaultVideoOutputModeFlags                 = /* 'dvof' */ 0x64766F66,
+    bmdDeckLinkConfigSDIOutputLinkConfiguration                  = /* 'solc' */ 0x736F6C63,
 
     /* Video Output Floats */
 
@@ -100,6 +104,7 @@
 
     bmdDeckLinkConfigVideoInputScanning                          = /* 'visc' */ 0x76697363,	// Applicable to H264 Pro Recorder only
     bmdDeckLinkConfigUseDedicatedLTCInput                        = /* 'dltc' */ 0x646C7463,	// Use timecode from LTC input instead of SDI stream
+    bmdDeckLinkConfigSDIInput3DPayloadOverride                   = /* '3dds' */ 0x33646473,
 
     /* Video Input Integers */
 
@@ -122,6 +127,10 @@
     bmdDeckLinkConfigVideoInputSVideoLumaGain                    = /* 'islg' */ 0x69736C67,
     bmdDeckLinkConfigVideoInputSVideoChromaGain                  = /* 'iscg' */ 0x69736367,
 
+    /* Audio Input Flags */
+
+    bmdDeckLinkConfigMicrophonePhantomPower                      = /* 'mphp' */ 0x6D706870,
+
     /* Audio Input Integers */
 
     bmdDeckLinkConfigAudioInputConnection                        = /* 'aicn' */ 0x6169636E,
@@ -133,6 +142,7 @@
     bmdDeckLinkConfigAnalogAudioInputScaleChannel3               = /* 'ais3' */ 0x61697333,
     bmdDeckLinkConfigAnalogAudioInputScaleChannel4               = /* 'ais4' */ 0x61697334,
     bmdDeckLinkConfigDigitalAudioInputScale                      = /* 'dais' */ 0x64616973,
+    bmdDeckLinkConfigMicrophoneInputGain                         = /* 'micg' */ 0x6D696367,
 
     /* Audio Output Integers */
 
@@ -144,12 +154,55 @@
     bmdDeckLinkConfigAnalogAudioOutputScaleChannel2              = /* 'aos2' */ 0x616F7332,
     bmdDeckLinkConfigAnalogAudioOutputScaleChannel3              = /* 'aos3' */ 0x616F7333,
     bmdDeckLinkConfigAnalogAudioOutputScaleChannel4              = /* 'aos4' */ 0x616F7334,
-    bmdDeckLinkConfigDigitalAudioOutputScale                     = /* 'daos' */ 0x64616F73
+    bmdDeckLinkConfigDigitalAudioOutputScale                     = /* 'daos' */ 0x64616F73,
+    bmdDeckLinkConfigHeadphoneVolume                             = /* 'hvol' */ 0x68766F6C,
+
+    /* Device Information Strings */
+
+    bmdDeckLinkConfigDeviceInformationLabel                      = /* 'dila' */ 0x64696C61,
+    bmdDeckLinkConfigDeviceInformationSerialNumber               = /* 'disn' */ 0x6469736E,
+    bmdDeckLinkConfigDeviceInformationCompany                    = /* 'dico' */ 0x6469636F,
+    bmdDeckLinkConfigDeviceInformationPhone                      = /* 'diph' */ 0x64697068,
+    bmdDeckLinkConfigDeviceInformationEmail                      = /* 'diem' */ 0x6469656D,
+    bmdDeckLinkConfigDeviceInformationDate                       = /* 'dida' */ 0x64696461,
+
+    /* Deck Control Integers */
+
+    bmdDeckLinkConfigDeckControlConnection                       = /* 'dcco' */ 0x6463636F
+};
+
+/* Enum BMDDeckLinkEncoderConfigurationID - DeckLink Encoder Configuration ID */
+
+typedef uint32_t BMDDeckLinkEncoderConfigurationID;
+enum _BMDDeckLinkEncoderConfigurationID {
+
+    /* Video Encoder Integers */
+
+    bmdDeckLinkEncoderConfigPreferredBitDepth                    = /* 'epbr' */ 0x65706272,
+    bmdDeckLinkEncoderConfigFrameCodingMode                      = /* 'efcm' */ 0x6566636D,
+
+    /* HEVC/H.265 Encoder Integers */
+
+    bmdDeckLinkEncoderConfigH265TargetBitrate                    = /* 'htbr' */ 0x68746272,
+
+    /* DNxHR/DNxHD Compression ID */
+
+    bmdDeckLinkEncoderConfigDNxHRCompressionID                   = /* 'dcid' */ 0x64636964,
+
+    /* DNxHR/DNxHD Level */
+
+    bmdDeckLinkEncoderConfigDNxHRLevel                           = /* 'dlev' */ 0x646C6576,
+
+    /* Encoded Sample Decriptions */
+
+    bmdDeckLinkEncoderConfigMPEG4SampleDescription               = /* 'stsE' */ 0x73747345,	// Full MPEG4 sample description (aka SampleEntry of an 'stsd' atom-box). Useful for MediaFoundation, QuickTime, MKV and more
+    bmdDeckLinkEncoderConfigMPEG4CodecSpecificDesc               = /* 'esds' */ 0x65736473	// Sample description extensions only (atom stream, each with size and fourCC header). Useful for AVFoundation, VideoToolbox, MKV and more
 };
 
 // Forward Declarations
 
 class IDeckLinkConfiguration;
+class IDeckLinkEncoderConfiguration;
 
 /* Interface IDeckLinkConfiguration - DeckLink Configuration interface */
 
@@ -170,6 +223,25 @@
     virtual ~IDeckLinkConfiguration () {} // call Release method to drop reference count
 };
 
+/* Interface IDeckLinkEncoderConfiguration - DeckLink Encoder Configuration interface. Obtained from IDeckLinkEncoderInput */
+
+class IDeckLinkEncoderConfiguration : public IUnknown
+{
+public:
+    virtual HRESULT SetFlag (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* in */ bool value) = 0;
+    virtual HRESULT GetFlag (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* out */ bool *value) = 0;
+    virtual HRESULT SetInt (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* in */ int64_t value) = 0;
+    virtual HRESULT GetInt (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* out */ int64_t *value) = 0;
+    virtual HRESULT SetFloat (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* in */ double value) = 0;
+    virtual HRESULT GetFloat (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* out */ double *value) = 0;
+    virtual HRESULT SetString (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* in */ const char *value) = 0;
+    virtual HRESULT GetString (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* out */ const char **value) = 0;
+    virtual HRESULT GetBytes (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* out */ void *buffer /* optional */, /* in, out */ uint32_t *bufferSize) = 0;
+
+protected:
+    virtual ~IDeckLinkEncoderConfiguration () {} // call Release method to drop reference count
+};
+
 /* Functions */
 
 extern "C" {
diff --git a/sys/decklink/linux/DeckLinkAPIDeckControl.h b/sys/decklink/linux/DeckLinkAPIDeckControl.h
index b83d013..24f72d2 100644
--- a/sys/decklink/linux/DeckLinkAPIDeckControl.h
+++ b/sys/decklink/linux/DeckLinkAPIDeckControl.h
@@ -1,5 +1,5 @@
 /* -LICENSE-START-
-** Copyright (c) 2014 Blackmagic Design
+** Copyright (c) 2016 Blackmagic Design
 **
 ** Permission is hereby granted, free of charge, to any person or organization
 ** obtaining a copy of the software and accompanying documentation covered by
diff --git a/sys/decklink/linux/DeckLinkAPIDiscovery.h b/sys/decklink/linux/DeckLinkAPIDiscovery.h
index 424d9d5..fac3099 100644
--- a/sys/decklink/linux/DeckLinkAPIDiscovery.h
+++ b/sys/decklink/linux/DeckLinkAPIDiscovery.h
@@ -1,5 +1,5 @@
 /* -LICENSE-START-
-** Copyright (c) 2014 Blackmagic Design
+** Copyright (c) 2016 Blackmagic Design
 **
 ** Permission is hereby granted, free of charge, to any person or organization
 ** obtaining a copy of the software and accompanying documentation covered by
diff --git a/sys/decklink/linux/DeckLinkAPIModes.h b/sys/decklink/linux/DeckLinkAPIModes.h
index 394d68c..2788e7a 100644
--- a/sys/decklink/linux/DeckLinkAPIModes.h
+++ b/sys/decklink/linux/DeckLinkAPIModes.h
@@ -1,5 +1,5 @@
 /* -LICENSE-START-
-** Copyright (c) 2014 Blackmagic Design
+** Copyright (c) 2016 Blackmagic Design
 **
 ** Permission is hereby granted, free of charge, to any person or organization
 ** obtaining a copy of the software and accompanying documentation covered by
@@ -135,7 +135,12 @@
     bmdFormat12BitRGB                                            = /* 'R12B' */ 0x52313242,	// Big-endian RGB 12-bit per component with full range (0-4095). Packed as 12-bit per component
     bmdFormat12BitRGBLE                                          = /* 'R12L' */ 0x5231324C,	// Little-endian RGB 12-bit per component with full range (0-4095). Packed as 12-bit per component
     bmdFormat10BitRGBXLE                                         = /* 'R10l' */ 0x5231306C,	// Little-endian 10-bit RGB with SMPTE video levels (64-940)
-    bmdFormat10BitRGBX                                           = /* 'R10b' */ 0x52313062	// Big-endian 10-bit RGB with SMPTE video levels (64-940)
+    bmdFormat10BitRGBX                                           = /* 'R10b' */ 0x52313062,	// Big-endian 10-bit RGB with SMPTE video levels (64-940)
+    bmdFormatH265                                                = /* 'hev1' */ 0x68657631,	// High Efficiency Video Coding (HEVC/h.265)
+
+    /* AVID DNxHR */
+
+    bmdFormatDNxHR                                               = /* 'AVdh' */ 0x41566468
 };
 
 /* Enum BMDDisplayModeFlags - Flags to describe the characteristics of an IDeckLinkDisplayMode. */
diff --git a/sys/decklink/linux/DeckLinkAPITypes.h b/sys/decklink/linux/DeckLinkAPITypes.h
index 55e015f..e3379e3 100644
--- a/sys/decklink/linux/DeckLinkAPITypes.h
+++ b/sys/decklink/linux/DeckLinkAPITypes.h
@@ -1,5 +1,5 @@
 /* -LICENSE-START-
-** Copyright (c) 2014 Blackmagic Design
+** Copyright (c) 2016 Blackmagic Design
 **
 ** Permission is hereby granted, free of charge, to any person or organization
 ** obtaining a copy of the software and accompanying documentation covered by
@@ -77,7 +77,17 @@
     bmdAudioConnectionAESEBU                                     = 1 << 1,
     bmdAudioConnectionAnalog                                     = 1 << 2,
     bmdAudioConnectionAnalogXLR                                  = 1 << 3,
-    bmdAudioConnectionAnalogRCA                                  = 1 << 4
+    bmdAudioConnectionAnalogRCA                                  = 1 << 4,
+    bmdAudioConnectionMicrophone                                 = 1 << 5,
+    bmdAudioConnectionHeadphones                                 = 1 << 6
+};
+
+/* Enum BMDDeckControlConnection - Deck control connections */
+
+typedef uint32_t BMDDeckControlConnection;
+enum _BMDDeckControlConnection {
+    bmdDeckControlConnectionRS422Remote1                         = 1 << 0,
+    bmdDeckControlConnectionRS422Remote2                         = 1 << 1
 };
 
 // Forward Declarations
diff --git a/sys/decklink/osx/DeckLinkAPI.h b/sys/decklink/osx/DeckLinkAPI.h
index 8c334c0..fe8e03b 100644
--- a/sys/decklink/osx/DeckLinkAPI.h
+++ b/sys/decklink/osx/DeckLinkAPI.h
@@ -1,5 +1,5 @@
 /* -LICENSE-START-
-** Copyright (c) 2014 Blackmagic Design
+** Copyright (c) 2016 Blackmagic Design
 **
 ** Permission is hereby granted, free of charge, to any person or organization
 ** obtaining a copy of the software and accompanying documentation covered by
@@ -60,17 +60,24 @@
 
 BMD_CONST REFIID IID_IDeckLinkVideoOutputCallback                 = /* 20AA5225-1958-47CB-820B-80A8D521A6EE */ {0x20,0xAA,0x52,0x25,0x19,0x58,0x47,0xCB,0x82,0x0B,0x80,0xA8,0xD5,0x21,0xA6,0xEE};
 BMD_CONST REFIID IID_IDeckLinkInputCallback                       = /* DD04E5EC-7415-42AB-AE4A-E80C4DFC044A */ {0xDD,0x04,0xE5,0xEC,0x74,0x15,0x42,0xAB,0xAE,0x4A,0xE8,0x0C,0x4D,0xFC,0x04,0x4A};
+BMD_CONST REFIID IID_IDeckLinkEncoderInputCallback                = /* ACF13E61-F4A0-4974-A6A7-59AFF6268B31 */ {0xAC,0xF1,0x3E,0x61,0xF4,0xA0,0x49,0x74,0xA6,0xA7,0x59,0xAF,0xF6,0x26,0x8B,0x31};
 BMD_CONST REFIID IID_IDeckLinkMemoryAllocator                     = /* B36EB6E7-9D29-4AA8-92EF-843B87A289E8 */ {0xB3,0x6E,0xB6,0xE7,0x9D,0x29,0x4A,0xA8,0x92,0xEF,0x84,0x3B,0x87,0xA2,0x89,0xE8};
 BMD_CONST REFIID IID_IDeckLinkAudioOutputCallback                 = /* 403C681B-7F46-4A12-B993-2BB127084EE6 */ {0x40,0x3C,0x68,0x1B,0x7F,0x46,0x4A,0x12,0xB9,0x93,0x2B,0xB1,0x27,0x08,0x4E,0xE6};
 BMD_CONST REFIID IID_IDeckLinkIterator                            = /* 50FB36CD-3063-4B73-BDBB-958087F2D8BA */ {0x50,0xFB,0x36,0xCD,0x30,0x63,0x4B,0x73,0xBD,0xBB,0x95,0x80,0x87,0xF2,0xD8,0xBA};
 BMD_CONST REFIID IID_IDeckLinkAPIInformation                      = /* 7BEA3C68-730D-4322-AF34-8A7152B532A4 */ {0x7B,0xEA,0x3C,0x68,0x73,0x0D,0x43,0x22,0xAF,0x34,0x8A,0x71,0x52,0xB5,0x32,0xA4};
 BMD_CONST REFIID IID_IDeckLinkOutput                              = /* CC5C8A6E-3F2F-4B3A-87EA-FD78AF300564 */ {0xCC,0x5C,0x8A,0x6E,0x3F,0x2F,0x4B,0x3A,0x87,0xEA,0xFD,0x78,0xAF,0x30,0x05,0x64};
 BMD_CONST REFIID IID_IDeckLinkInput                               = /* AF22762B-DFAC-4846-AA79-FA8883560995 */ {0xAF,0x22,0x76,0x2B,0xDF,0xAC,0x48,0x46,0xAA,0x79,0xFA,0x88,0x83,0x56,0x09,0x95};
+BMD_CONST REFIID IID_IDeckLinkEncoderInput                        = /* 270587DA-6B7D-42E7-A1F0-6D853F581185 */ {0x27,0x05,0x87,0xDA,0x6B,0x7D,0x42,0xE7,0xA1,0xF0,0x6D,0x85,0x3F,0x58,0x11,0x85};
 BMD_CONST REFIID IID_IDeckLinkVideoFrame                          = /* 3F716FE0-F023-4111-BE5D-EF4414C05B17 */ {0x3F,0x71,0x6F,0xE0,0xF0,0x23,0x41,0x11,0xBE,0x5D,0xEF,0x44,0x14,0xC0,0x5B,0x17};
 BMD_CONST REFIID IID_IDeckLinkMutableVideoFrame                   = /* 69E2639F-40DA-4E19-B6F2-20ACE815C390 */ {0x69,0xE2,0x63,0x9F,0x40,0xDA,0x4E,0x19,0xB6,0xF2,0x20,0xAC,0xE8,0x15,0xC3,0x90};
 BMD_CONST REFIID IID_IDeckLinkVideoFrame3DExtensions              = /* DA0F7E4A-EDC7-48A8-9CDD-2DB51C729CD7 */ {0xDA,0x0F,0x7E,0x4A,0xED,0xC7,0x48,0xA8,0x9C,0xDD,0x2D,0xB5,0x1C,0x72,0x9C,0xD7};
+BMD_CONST REFIID IID_IDeckLinkVideoFrameMetadataExtensions        = /* D5973DC9-6432-46D0-8F0B-2496F8A1238F */ {0xD5,0x97,0x3D,0xC9,0x64,0x32,0x46,0xD0,0x8F,0x0B,0x24,0x96,0xF8,0xA1,0x23,0x8F};
 BMD_CONST REFIID IID_IDeckLinkVideoInputFrame                     = /* 05CFE374-537C-4094-9A57-680525118F44 */ {0x05,0xCF,0xE3,0x74,0x53,0x7C,0x40,0x94,0x9A,0x57,0x68,0x05,0x25,0x11,0x8F,0x44};
 BMD_CONST REFIID IID_IDeckLinkVideoFrameAncillary                 = /* 732E723C-D1A4-4E29-9E8E-4A88797A0004 */ {0x73,0x2E,0x72,0x3C,0xD1,0xA4,0x4E,0x29,0x9E,0x8E,0x4A,0x88,0x79,0x7A,0x00,0x04};
+BMD_CONST REFIID IID_IDeckLinkEncoderPacket                       = /* B693F36C-316E-4AF1-B6C2-F389A4BCA620 */ {0xB6,0x93,0xF3,0x6C,0x31,0x6E,0x4A,0xF1,0xB6,0xC2,0xF3,0x89,0xA4,0xBC,0xA6,0x20};
+BMD_CONST REFIID IID_IDeckLinkEncoderVideoPacket                  = /* 4E7FD944-E8C7-4EAC-B8C0-7B77F80F5AE0 */ {0x4E,0x7F,0xD9,0x44,0xE8,0xC7,0x4E,0xAC,0xB8,0xC0,0x7B,0x77,0xF8,0x0F,0x5A,0xE0};
+BMD_CONST REFIID IID_IDeckLinkEncoderAudioPacket                  = /* 49E8EDC8-693B-4E14-8EF6-12C658F5A07A */ {0x49,0xE8,0xED,0xC8,0x69,0x3B,0x4E,0x14,0x8E,0xF6,0x12,0xC6,0x58,0xF5,0xA0,0x7A};
+BMD_CONST REFIID IID_IDeckLinkH265NALPacket                       = /* 639C8E0B-68D5-4BDE-A6D4-95F3AEAFF2E7 */ {0x63,0x9C,0x8E,0x0B,0x68,0xD5,0x4B,0xDE,0xA6,0xD4,0x95,0xF3,0xAE,0xAF,0xF2,0xE7};
 BMD_CONST REFIID IID_IDeckLinkAudioInputPacket                    = /* E43D5870-2894-11DE-8C30-0800200C9A66 */ {0xE4,0x3D,0x58,0x70,0x28,0x94,0x11,0xDE,0x8C,0x30,0x08,0x00,0x20,0x0C,0x9A,0x66};
 BMD_CONST REFIID IID_IDeckLinkScreenPreviewCallback               = /* B1D3F49A-85FE-4C5D-95C8-0B5D5DCCD438 */ {0xB1,0xD3,0xF4,0x9A,0x85,0xFE,0x4C,0x5D,0x95,0xC8,0x0B,0x5D,0x5D,0xCC,0xD4,0x38};
 BMD_CONST REFIID IID_IDeckLinkCocoaScreenPreviewCallback          = /* D174152F-8F96-4C07-83A5-DD5F5AF0A2AA */ {0xD1,0x74,0x15,0x2F,0x8F,0x96,0x4C,0x07,0x83,0xA5,0xDD,0x5F,0x5A,0xF0,0xA2,0xAA};
@@ -78,6 +85,7 @@
 BMD_CONST REFIID IID_IDeckLinkNotificationCallback                = /* B002A1EC-070D-4288-8289-BD5D36E5FF0D */ {0xB0,0x02,0xA1,0xEC,0x07,0x0D,0x42,0x88,0x82,0x89,0xBD,0x5D,0x36,0xE5,0xFF,0x0D};
 BMD_CONST REFIID IID_IDeckLinkNotification                        = /* 0A1FB207-E215-441B-9B19-6FA1575946C5 */ {0x0A,0x1F,0xB2,0x07,0xE2,0x15,0x44,0x1B,0x9B,0x19,0x6F,0xA1,0x57,0x59,0x46,0xC5};
 BMD_CONST REFIID IID_IDeckLinkAttributes                          = /* ABC11843-D966-44CB-96E2-A1CB5D3135C4 */ {0xAB,0xC1,0x18,0x43,0xD9,0x66,0x44,0xCB,0x96,0xE2,0xA1,0xCB,0x5D,0x31,0x35,0xC4};
+BMD_CONST REFIID IID_IDeckLinkStatus                              = /* 5F558200-4028-49BC-BEAC-DB3FA4A96E46 */ {0x5F,0x55,0x82,0x00,0x40,0x28,0x49,0xBC,0xBE,0xAC,0xDB,0x3F,0xA4,0xA9,0x6E,0x46};
 BMD_CONST REFIID IID_IDeckLinkKeyer                               = /* 89AFCAF5-65F8-421E-98F7-96FE5F5BFBA3 */ {0x89,0xAF,0xCA,0xF5,0x65,0xF8,0x42,0x1E,0x98,0xF7,0x96,0xFE,0x5F,0x5B,0xFB,0xA3};
 BMD_CONST REFIID IID_IDeckLinkVideoConversion                     = /* 3BBCB8A2-DA2C-42D9-B5D8-88083644E99A */ {0x3B,0xBC,0xB8,0xA2,0xDA,0x2C,0x42,0xD9,0xB5,0xD8,0x88,0x08,0x36,0x44,0xE9,0x9A};
 BMD_CONST REFIID IID_IDeckLinkDeviceNotificationCallback          = /* 4997053B-0ADF-4CC8-AC70-7A50C4BE728F */ {0x49,0x97,0x05,0x3B,0x0A,0xDF,0x4C,0xC8,0xAC,0x70,0x7A,0x50,0xC4,0xBE,0x72,0x8F};
@@ -94,12 +102,21 @@
     bmdVideoOutputDualStream3D                                   = 1 << 4
 };
 
+/* Enum BMDPacketType - Type of packet */
+
+typedef uint32_t BMDPacketType;
+enum _BMDPacketType {
+    bmdPacketTypeStreamInterruptedMarker                         = 'sint',	// A packet of this type marks the time when a video stream was interrupted, for example by a disconnected cable
+    bmdPacketTypeStreamData                                      = 'sdat'	// Regular stream data
+};
+
 /* Enum BMDFrameFlags - Frame flags */
 
 typedef uint32_t BMDFrameFlags;
 enum _BMDFrameFlags {
     bmdFrameFlagDefault                                          = 0,
     bmdFrameFlagFlipVertical                                     = 1 << 0,
+    bmdFrameContainsHDRMetadata                                  = 1 << 1,
 
     /* Flags that are applicable only to instances of IDeckLinkVideoInputFrame */
 
@@ -137,6 +154,7 @@
 
 typedef uint32_t BMDDeckLinkCapturePassthroughMode;
 enum _BMDDeckLinkCapturePassthroughMode {
+    bmdDeckLinkCapturePassthroughModeDisabled                    = 'pdis',
     bmdDeckLinkCapturePassthroughModeDirect                      = 'pdir',
     bmdDeckLinkCapturePassthroughModeCleanSwitch                 = 'pcln'
 };
@@ -159,6 +177,13 @@
     bmdReferenceLocked                                           = 1 << 1
 };
 
+/* Enum BMDAudioFormat - Audio Format */
+
+typedef uint32_t BMDAudioFormat;
+enum _BMDAudioFormat {
+    bmdAudioFormatPCM                                            = 'lpcm'	// Linear signed PCM samples
+};
+
 /* Enum BMDAudioSampleRate - Audio sample rates supported for output/input */
 
 typedef uint32_t BMDAudioSampleRate;
@@ -271,8 +296,71 @@
 typedef uint32_t BMDIdleVideoOutputOperation;
 enum _BMDIdleVideoOutputOperation {
     bmdIdleVideoOutputBlack                                      = 'blac',
-    bmdIdleVideoOutputLastFrame                                  = 'lafa',
-    bmdIdleVideoOutputDesktop                                    = 'desk'
+    bmdIdleVideoOutputLastFrame                                  = 'lafa'
+};
+
+/* Enum BMDVideoEncoderFrameCodingMode - Video frame coding mode */
+
+typedef uint32_t BMDVideoEncoderFrameCodingMode;
+enum _BMDVideoEncoderFrameCodingMode {
+    bmdVideoEncoderFrameCodingModeInter                          = 'inte',
+    bmdVideoEncoderFrameCodingModeIntra                          = 'intr'
+};
+
+/* Enum BMDDNxHRLevel - DNxHR Levels */
+
+typedef uint32_t BMDDNxHRLevel;
+enum _BMDDNxHRLevel {
+    bmdDNxHRLevelSQ                                              = 'dnsq',
+    bmdDNxHRLevelLB                                              = 'dnlb',
+    bmdDNxHRLevelHQ                                              = 'dnhq',
+    bmdDNxHRLevelHQX                                             = 'dhqx',
+    bmdDNxHRLevel444                                             = 'd444'
+};
+
+/* Enum BMDLinkConfiguration - Video link configuration */
+
+typedef uint32_t BMDLinkConfiguration;
+enum _BMDLinkConfiguration {
+    bmdLinkConfigurationSingleLink                               = 'lcsl',
+    bmdLinkConfigurationDualLink                                 = 'lcdl',
+    bmdLinkConfigurationQuadLink                                 = 'lcql'
+};
+
+/* Enum BMDDeviceInterface - Device interface type */
+
+typedef uint32_t BMDDeviceInterface;
+enum _BMDDeviceInterface {
+    bmdDeviceInterfacePCI                                        = 'pci ',
+    bmdDeviceInterfaceUSB                                        = 'usb ',
+    bmdDeviceInterfaceThunderbolt                                = 'thun'
+};
+
+/* Enum BMDDeckLinkFrameMetadataID - DeckLink Frame Metadata ID */
+
+typedef uint32_t BMDDeckLinkFrameMetadataID;
+enum _BMDDeckLinkFrameMetadataID {
+    bmdDeckLinkFrameMetadataHDRElectroOpticalTransferFunc        = 'eotf',	// EOTF in range 0-7 as per CEA 861.3
+    bmdDeckLinkFrameMetadataHDRDisplayPrimariesRedX              = 'hdrx',	// Red display primaries in range 0.0 - 1.0
+    bmdDeckLinkFrameMetadataHDRDisplayPrimariesRedY              = 'hdry',	// Red display primaries in range 0.0 - 1.0
+    bmdDeckLinkFrameMetadataHDRDisplayPrimariesGreenX            = 'hdgx',	// Green display primaries in range 0.0 - 1.0
+    bmdDeckLinkFrameMetadataHDRDisplayPrimariesGreenY            = 'hdgy',	// Green display primaries in range 0.0 - 1.0
+    bmdDeckLinkFrameMetadataHDRDisplayPrimariesBlueX             = 'hdbx',	// Blue display primaries in range 0.0 - 1.0
+    bmdDeckLinkFrameMetadataHDRDisplayPrimariesBlueY             = 'hdby',	// Blue display primaries in range 0.0 - 1.0
+    bmdDeckLinkFrameMetadataHDRWhitePointX                       = 'hdwx',	// White point in range 0.0 - 1.0
+    bmdDeckLinkFrameMetadataHDRWhitePointY                       = 'hdwy',	// White point in range 0.0 - 1.0
+    bmdDeckLinkFrameMetadataHDRMaxDisplayMasteringLuminance      = 'hdml',	// Max display mastering luminance in range 1 cd/m2 - 65535 cd/m2
+    bmdDeckLinkFrameMetadataHDRMinDisplayMasteringLuminance      = 'hmil',	// Min display mastering luminance in range 0.0001 cd/m2 - 6.5535 cd/m2
+    bmdDeckLinkFrameMetadataHDRMaximumContentLightLevel          = 'mcll',	// Maximum Content Light Level in range 1 cd/m2 - 65535 cd/m2
+    bmdDeckLinkFrameMetadataHDRMaximumFrameAverageLightLevel     = 'fall'	// Maximum Frame Average Light Level in range 1 cd/m2 - 65535 cd/m2
+};
+
+/* Enum BMDDuplexMode - Duplex for configurable ports */
+
+typedef uint32_t BMDDuplexMode;
+enum _BMDDuplexMode {
+    bmdDuplexModeFull                                            = 'fdup',
+    bmdDuplexModeHalf                                            = 'hdup'
 };
 
 /* Enum BMDDeckLinkAttributeID - DeckLink Attribute ID */
@@ -292,10 +380,16 @@
     BMDDeckLinkCanOnlyAdjustOverallVideoOutputGain               = 'ovog',
     BMDDeckLinkHasVideoInputAntiAliasingFilter                   = 'aafl',
     BMDDeckLinkHasBypass                                         = 'byps',
-    BMDDeckLinkSupportsDesktopDisplay                            = 'extd',
     BMDDeckLinkSupportsClockTimingAdjustment                     = 'ctad',
     BMDDeckLinkSupportsFullDuplex                                = 'fdup',
     BMDDeckLinkSupportsFullFrameReferenceInputTimingOffset       = 'frin',
+    BMDDeckLinkSupportsSMPTELevelAOutput                         = 'lvla',
+    BMDDeckLinkSupportsDualLinkSDI                               = 'sdls',
+    BMDDeckLinkSupportsQuadLinkSDI                               = 'sqls',
+    BMDDeckLinkSupportsIdleOutput                                = 'idou',
+    BMDDeckLinkHasLTCTimecodeInput                               = 'hltc',
+    BMDDeckLinkSupportsDuplexModeConfiguration                   = 'dupx',
+    BMDDeckLinkSupportsHDRMetadata                               = 'hdrm',
 
     /* Integers */
 
@@ -304,13 +398,20 @@
     BMDDeckLinkNumberOfSubDevices                                = 'nsbd',
     BMDDeckLinkSubDeviceIndex                                    = 'subi',
     BMDDeckLinkPersistentID                                      = 'peid',
+    BMDDeckLinkDeviceGroupID                                     = 'dgid',
     BMDDeckLinkTopologicalID                                     = 'toid',
     BMDDeckLinkVideoOutputConnections                            = 'vocn',
     BMDDeckLinkVideoInputConnections                             = 'vicn',
     BMDDeckLinkAudioOutputConnections                            = 'aocn',
     BMDDeckLinkAudioInputConnections                             = 'aicn',
-    BMDDeckLinkDeviceBusyState                                   = 'dbst',
     BMDDeckLinkVideoIOSupport                                    = 'vios',	// Returns a BMDVideoIOSupport bit field
+    BMDDeckLinkDeckControlConnections                            = 'dccn',
+    BMDDeckLinkDeviceInterface                                   = 'dbus',	// Returns a BMDDeviceInterface
+    BMDDeckLinkAudioInputRCAChannelCount                         = 'airc',
+    BMDDeckLinkAudioInputXLRChannelCount                         = 'aixc',
+    BMDDeckLinkAudioOutputRCAChannelCount                        = 'aorc',
+    BMDDeckLinkAudioOutputXLRChannelCount                        = 'aoxc',
+    BMDDeckLinkPairedDevicePersistentID                          = 'ppid',
 
     /* Floats */
 
@@ -318,10 +419,16 @@
     BMDDeckLinkVideoInputGainMaximum                             = 'vigx',
     BMDDeckLinkVideoOutputGainMinimum                            = 'vogm',
     BMDDeckLinkVideoOutputGainMaximum                            = 'vogx',
+    BMDDeckLinkMicrophoneInputGainMinimum                        = 'migm',
+    BMDDeckLinkMicrophoneInputGainMaximum                        = 'migx',
 
     /* Strings */
 
-    BMDDeckLinkSerialPortDeviceName                              = 'slpn'
+    BMDDeckLinkSerialPortDeviceName                              = 'slpn',
+    BMDDeckLinkVendorName                                        = 'vndr',
+    BMDDeckLinkDisplayName                                       = 'dspn',
+    BMDDeckLinkModelName                                         = 'mdln',
+    BMDDeckLinkDeviceHandle                                      = 'devh'
 };
 
 /* Enum BMDDeckLinkAPIInformationID - DeckLinkAPI information ID */
@@ -331,6 +438,52 @@
     BMDDeckLinkAPIVersion                                        = 'vers'
 };
 
+/* Enum BMDDeckLinkStatusID - DeckLink Status ID */
+
+typedef uint32_t BMDDeckLinkStatusID;
+enum _BMDDeckLinkStatusID {
+
+    /* Integers */
+
+    bmdDeckLinkStatusDetectedVideoInputMode                      = 'dvim',
+    bmdDeckLinkStatusDetectedVideoInputFlags                     = 'dvif',
+    bmdDeckLinkStatusCurrentVideoInputMode                       = 'cvim',
+    bmdDeckLinkStatusCurrentVideoInputPixelFormat                = 'cvip',
+    bmdDeckLinkStatusCurrentVideoInputFlags                      = 'cvif',
+    bmdDeckLinkStatusCurrentVideoOutputMode                      = 'cvom',
+    bmdDeckLinkStatusCurrentVideoOutputFlags                     = 'cvof',
+    bmdDeckLinkStatusPCIExpressLinkWidth                         = 'pwid',
+    bmdDeckLinkStatusPCIExpressLinkSpeed                         = 'plnk',
+    bmdDeckLinkStatusLastVideoOutputPixelFormat                  = 'opix',
+    bmdDeckLinkStatusReferenceSignalMode                         = 'refm',
+    bmdDeckLinkStatusReferenceSignalFlags                        = 'reff',
+    bmdDeckLinkStatusDuplexMode                                  = 'dupx',
+    bmdDeckLinkStatusBusy                                        = 'busy',
+
+    /* Flags */
+
+    bmdDeckLinkStatusVideoInputSignalLocked                      = 'visl',
+    bmdDeckLinkStatusReferenceSignalLocked                       = 'refl'
+};
+
+/* Enum BMDDeckLinkVideoStatusFlags -  */
+
+typedef uint32_t BMDDeckLinkVideoStatusFlags;
+enum _BMDDeckLinkVideoStatusFlags {
+    bmdDeckLinkVideoStatusPsF                                    = 1 << 0,
+    bmdDeckLinkVideoStatusDualStream3D                           = 1 << 1
+};
+
+/* Enum BMDDuplexStatus - Duplex status of the device */
+
+typedef uint32_t BMDDuplexStatus;
+enum _BMDDuplexStatus {
+    bmdDuplexStatusFullDuplex                                    = 'fdup',
+    bmdDuplexStatusHalfDuplex                                    = 'hdup',
+    bmdDuplexStatusSimplex                                       = 'splx',
+    bmdDuplexStatusInactive                                      = 'inac'
+};
+
 /* Enum BMDDeviceBusyState - Current device busy state */
 
 typedef uint32_t BMDDeviceBusyState;
@@ -363,7 +516,8 @@
 
 typedef uint32_t BMDNotifications;
 enum _BMDNotifications {
-    bmdPreferencesChanged                                        = 'pref'
+    bmdPreferencesChanged                                        = 'pref',
+    bmdStatusChanged                                             = 'stat'
 };
 
 #if defined(__cplusplus)
@@ -372,17 +526,24 @@
 
 class IDeckLinkVideoOutputCallback;
 class IDeckLinkInputCallback;
+class IDeckLinkEncoderInputCallback;
 class IDeckLinkMemoryAllocator;
 class IDeckLinkAudioOutputCallback;
 class IDeckLinkIterator;
 class IDeckLinkAPIInformation;
 class IDeckLinkOutput;
 class IDeckLinkInput;
+class IDeckLinkEncoderInput;
 class IDeckLinkVideoFrame;
 class IDeckLinkMutableVideoFrame;
 class IDeckLinkVideoFrame3DExtensions;
+class IDeckLinkVideoFrameMetadataExtensions;
 class IDeckLinkVideoInputFrame;
 class IDeckLinkVideoFrameAncillary;
+class IDeckLinkEncoderPacket;
+class IDeckLinkEncoderVideoPacket;
+class IDeckLinkEncoderAudioPacket;
+class IDeckLinkH265NALPacket;
 class IDeckLinkAudioInputPacket;
 class IDeckLinkScreenPreviewCallback;
 class IDeckLinkCocoaScreenPreviewCallback;
@@ -390,6 +551,7 @@
 class IDeckLinkNotificationCallback;
 class IDeckLinkNotification;
 class IDeckLinkAttributes;
+class IDeckLinkStatus;
 class IDeckLinkKeyer;
 class IDeckLinkVideoConversion;
 class IDeckLinkDeviceNotificationCallback;
@@ -419,6 +581,19 @@
     virtual ~IDeckLinkInputCallback () {} // call Release method to drop reference count
 };
 
+/* Interface IDeckLinkEncoderInputCallback - Frame arrival callback. */
+
+class IDeckLinkEncoderInputCallback : public IUnknown
+{
+public:
+    virtual HRESULT VideoInputSignalChanged (/* in */ BMDVideoInputFormatChangedEvents notificationEvents, /* in */ IDeckLinkDisplayMode *newDisplayMode, /* in */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;
+    virtual HRESULT VideoPacketArrived (/* in */ IDeckLinkEncoderVideoPacket* videoPacket) = 0;
+    virtual HRESULT AudioPacketArrived (/* in */ IDeckLinkEncoderAudioPacket* audioPacket) = 0;
+
+protected:
+    virtual ~IDeckLinkEncoderInputCallback () {} // call Release method to drop reference count
+};
+
 /* Interface IDeckLinkMemoryAllocator - Memory allocator for video frames. */
 
 class IDeckLinkMemoryAllocator : public IUnknown
@@ -557,6 +732,43 @@
     virtual ~IDeckLinkInput () {} // call Release method to drop reference count
 };
 
+/* Interface IDeckLinkEncoderInput - Created by QueryInterface from IDeckLink. */
+
+class IDeckLinkEncoderInput : public IUnknown
+{
+public:
+    virtual HRESULT DoesSupportVideoMode (/* in */ BMDDisplayMode displayMode, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDVideoInputFlags flags, /* out */ BMDDisplayModeSupport *result, /* out */ IDeckLinkDisplayMode **resultDisplayMode) = 0;
+    virtual HRESULT GetDisplayModeIterator (/* out */ IDeckLinkDisplayModeIterator **iterator) = 0;
+
+    /* Video Input */
+
+    virtual HRESULT EnableVideoInput (/* in */ BMDDisplayMode displayMode, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDVideoInputFlags flags) = 0;
+    virtual HRESULT DisableVideoInput (void) = 0;
+    virtual HRESULT GetAvailablePacketsCount (/* out */ uint32_t *availablePacketsCount) = 0;
+    virtual HRESULT SetMemoryAllocator (/* in */ IDeckLinkMemoryAllocator *theAllocator) = 0;
+
+    /* Audio Input */
+
+    virtual HRESULT EnableAudioInput (/* in */ BMDAudioFormat audioFormat, /* in */ BMDAudioSampleRate sampleRate, /* in */ BMDAudioSampleType sampleType, /* in */ uint32_t channelCount) = 0;
+    virtual HRESULT DisableAudioInput (void) = 0;
+    virtual HRESULT GetAvailableAudioSampleFrameCount (/* out */ uint32_t *availableSampleFrameCount) = 0;
+
+    /* Input Control */
+
+    virtual HRESULT StartStreams (void) = 0;
+    virtual HRESULT StopStreams (void) = 0;
+    virtual HRESULT PauseStreams (void) = 0;
+    virtual HRESULT FlushStreams (void) = 0;
+    virtual HRESULT SetCallback (/* in */ IDeckLinkEncoderInputCallback *theCallback) = 0;
+
+    /* Hardware Timing */
+
+    virtual HRESULT GetHardwareReferenceClock (/* in */ BMDTimeScale desiredTimeScale, /* out */ BMDTimeValue *hardwareTime, /* out */ BMDTimeValue *timeInFrame, /* out */ BMDTimeValue *ticksPerFrame) = 0;
+
+protected:
+    virtual ~IDeckLinkEncoderInput () {} // call Release method to drop reference count
+};
+
 /* Interface IDeckLinkVideoFrame - Interface to encapsulate a video frame; can be caller-implemented. */
 
 class IDeckLinkVideoFrame : public IUnknown
@@ -604,6 +816,20 @@
     virtual ~IDeckLinkVideoFrame3DExtensions () {} // call Release method to drop reference count
 };
 
+/* Interface IDeckLinkVideoFrameMetadataExtensions - Optional interface implemented on IDeckLinkVideoFrame to support frame metadata such as HDMI HDR information */
+
+class IDeckLinkVideoFrameMetadataExtensions : public IUnknown
+{
+public:
+    virtual HRESULT GetInt (/* in */ BMDDeckLinkFrameMetadataID metadataID, /* out */ int64_t *value) = 0;
+    virtual HRESULT GetFloat (/* in */ BMDDeckLinkFrameMetadataID metadataID, /* out */ double *value) = 0;
+    virtual HRESULT GetFlag (/* in */ BMDDeckLinkFrameMetadataID metadataID, /* out */ bool* value) = 0;
+    virtual HRESULT GetString (/* in */ BMDDeckLinkFrameMetadataID metadataID, /* out */ CFStringRef *value) = 0;
+
+protected:
+    virtual ~IDeckLinkVideoFrameMetadataExtensions () {} // call Release method to drop reference count
+};
+
 /* Interface IDeckLinkVideoInputFrame - Provided by the IDeckLinkVideoInput frame arrival callback. */
 
 class IDeckLinkVideoInputFrame : public IDeckLinkVideoFrame
@@ -630,6 +856,58 @@
     virtual ~IDeckLinkVideoFrameAncillary () {} // call Release method to drop reference count
 };
 
+/* Interface IDeckLinkEncoderPacket - Interface to encapsulate an encoded packet. */
+
+class IDeckLinkEncoderPacket : public IUnknown
+{
+public:
+    virtual HRESULT GetBytes (/* out */ void **buffer) = 0;
+    virtual long GetSize (void) = 0;
+    virtual HRESULT GetStreamTime (/* out */ BMDTimeValue *frameTime, /* in */ BMDTimeScale timeScale) = 0;
+    virtual BMDPacketType GetPacketType (void) = 0;
+
+protected:
+    virtual ~IDeckLinkEncoderPacket () {} // call Release method to drop reference count
+};
+
+/* Interface IDeckLinkEncoderVideoPacket - Provided by the IDeckLinkEncoderInput video packet arrival callback. */
+
+class IDeckLinkEncoderVideoPacket : public IDeckLinkEncoderPacket
+{
+public:
+    virtual BMDPixelFormat GetPixelFormat (void) = 0;
+    virtual HRESULT GetHardwareReferenceTimestamp (/* in */ BMDTimeScale timeScale, /* out */ BMDTimeValue *frameTime, /* out */ BMDTimeValue *frameDuration) = 0;
+
+    virtual HRESULT GetTimecode (/* in */ BMDTimecodeFormat format, /* out */ IDeckLinkTimecode **timecode) = 0;
+
+protected:
+    virtual ~IDeckLinkEncoderVideoPacket () {} // call Release method to drop reference count
+};
+
+/* Interface IDeckLinkEncoderAudioPacket - Provided by the IDeckLinkEncoderInput audio packet arrival callback. */
+
+class IDeckLinkEncoderAudioPacket : public IDeckLinkEncoderPacket
+{
+public:
+    virtual BMDAudioFormat GetAudioFormat (void) = 0;
+
+protected:
+    virtual ~IDeckLinkEncoderAudioPacket () {} // call Release method to drop reference count
+};
+
+/* Interface IDeckLinkH265NALPacket - Obtained through QueryInterface() on an IDeckLinkEncoderVideoPacket object */
+
+class IDeckLinkH265NALPacket : public IDeckLinkEncoderVideoPacket
+{
+public:
+    virtual HRESULT GetUnitType (/* out */ uint8_t *unitType) = 0;
+    virtual HRESULT GetBytesNoPrefix (/* out */ void **buffer) = 0;
+    virtual long GetSizeNoPrefix (void) = 0;
+
+protected:
+    virtual ~IDeckLinkH265NALPacket () {} // call Release method to drop reference count
+};
+
 /* Interface IDeckLinkAudioInputPacket - Provided by the IDeckLinkInput callback. */
 
 class IDeckLinkAudioInputPacket : public IUnknown
@@ -712,6 +990,21 @@
     virtual ~IDeckLinkAttributes () {} // call Release method to drop reference count
 };
 
+/* Interface IDeckLinkStatus - DeckLink Status interface */
+
+class IDeckLinkStatus : public IUnknown
+{
+public:
+    virtual HRESULT GetFlag (/* in */ BMDDeckLinkStatusID statusID, /* out */ bool *value) = 0;
+    virtual HRESULT GetInt (/* in */ BMDDeckLinkStatusID statusID, /* out */ int64_t *value) = 0;
+    virtual HRESULT GetFloat (/* in */ BMDDeckLinkStatusID statusID, /* out */ double *value) = 0;
+    virtual HRESULT GetString (/* in */ BMDDeckLinkStatusID statusID, /* out */ CFStringRef *value) = 0;
+    virtual HRESULT GetBytes (/* in */ BMDDeckLinkStatusID statusID, /* out */ void *buffer, /* in, out */ uint32_t *bufferSize) = 0;
+
+protected:
+    virtual ~IDeckLinkStatus () {} // call Release method to drop reference count
+};
+
 /* Interface IDeckLinkKeyer - DeckLink Keyer interface */
 
 class IDeckLinkKeyer : public IUnknown
diff --git a/sys/decklink/osx/DeckLinkAPIConfiguration.h b/sys/decklink/osx/DeckLinkAPIConfiguration.h
index 693fa38..717d17d 100644
--- a/sys/decklink/osx/DeckLinkAPIConfiguration.h
+++ b/sys/decklink/osx/DeckLinkAPIConfiguration.h
@@ -1,5 +1,5 @@
 /* -LICENSE-START-
-** Copyright (c) 2014 Blackmagic Design
+** Copyright (c) 2016 Blackmagic Design
 **
 ** Permission is hereby granted, free of charge, to any person or organization
 ** obtaining a copy of the software and accompanying documentation covered by
@@ -42,7 +42,8 @@
 
 // Interface ID Declarations
 
-BMD_CONST REFIID IID_IDeckLinkConfiguration                       = /* 1E69FCF6-4203-4936-8076-2A9F4CFD50CB */ {0x1E,0x69,0xFC,0xF6,0x42,0x03,0x49,0x36,0x80,0x76,0x2A,0x9F,0x4C,0xFD,0x50,0xCB};
+BMD_CONST REFIID IID_IDeckLinkConfiguration                       = /* CB71734A-FE37-4E8D-8E13-802133A1C3F2 */ {0xCB,0x71,0x73,0x4A,0xFE,0x37,0x4E,0x8D,0x8E,0x13,0x80,0x21,0x33,0xA1,0xC3,0xF2};
+BMD_CONST REFIID IID_IDeckLinkEncoderConfiguration                = /* 138050E5-C60A-4552-BF3F-0F358049327E */ {0x13,0x80,0x50,0xE5,0xC6,0x0A,0x45,0x52,0xBF,0x3F,0x0F,0x35,0x80,0x49,0x32,0x7E};
 
 /* Enum BMDDeckLinkConfigurationID - DeckLink Configuration ID */
 
@@ -62,6 +63,7 @@
     bmdDeckLinkConfigHDMI3DPackingFormat                         = '3dpf',
     bmdDeckLinkConfigBypass                                      = 'byps',
     bmdDeckLinkConfigClockTimingAdjustment                       = 'ctad',
+    bmdDeckLinkConfigDuplexMode                                  = 'dupx',
 
     /* Audio Input/Output Flags */
 
@@ -72,9 +74,10 @@
     bmdDeckLinkConfigFieldFlickerRemoval                         = 'fdfr',
     bmdDeckLinkConfigHD1080p24ToHD1080i5994Conversion            = 'to59',
     bmdDeckLinkConfig444SDIVideoOutput                           = '444o',
-    bmdDeckLinkConfigSingleLinkVideoOutput                       = 'sglo',
     bmdDeckLinkConfigBlackVideoOutputDuringCapture               = 'bvoc',
     bmdDeckLinkConfigLowLatencyVideoOutput                       = 'llvo',
+    bmdDeckLinkConfigDownConversionOnAllAnalogOutput             = 'caao',
+    bmdDeckLinkConfigSMPTELevelAOutput                           = 'smta',
 
     /* Video Output Integers */
 
@@ -85,6 +88,7 @@
     bmdDeckLinkConfigVideoOutputIdleOperation                    = 'voio',
     bmdDeckLinkConfigDefaultVideoOutputMode                      = 'dvom',
     bmdDeckLinkConfigDefaultVideoOutputModeFlags                 = 'dvof',
+    bmdDeckLinkConfigSDIOutputLinkConfiguration                  = 'solc',
 
     /* Video Output Floats */
 
@@ -100,6 +104,7 @@
 
     bmdDeckLinkConfigVideoInputScanning                          = 'visc',	// Applicable to H264 Pro Recorder only
     bmdDeckLinkConfigUseDedicatedLTCInput                        = 'dltc',	// Use timecode from LTC input instead of SDI stream
+    bmdDeckLinkConfigSDIInput3DPayloadOverride                   = '3dds',
 
     /* Video Input Integers */
 
@@ -122,6 +127,10 @@
     bmdDeckLinkConfigVideoInputSVideoLumaGain                    = 'islg',
     bmdDeckLinkConfigVideoInputSVideoChromaGain                  = 'iscg',
 
+    /* Audio Input Flags */
+
+    bmdDeckLinkConfigMicrophonePhantomPower                      = 'mphp',
+
     /* Audio Input Integers */
 
     bmdDeckLinkConfigAudioInputConnection                        = 'aicn',
@@ -133,6 +142,7 @@
     bmdDeckLinkConfigAnalogAudioInputScaleChannel3               = 'ais3',
     bmdDeckLinkConfigAnalogAudioInputScaleChannel4               = 'ais4',
     bmdDeckLinkConfigDigitalAudioInputScale                      = 'dais',
+    bmdDeckLinkConfigMicrophoneInputGain                         = 'micg',
 
     /* Audio Output Integers */
 
@@ -144,12 +154,55 @@
     bmdDeckLinkConfigAnalogAudioOutputScaleChannel2              = 'aos2',
     bmdDeckLinkConfigAnalogAudioOutputScaleChannel3              = 'aos3',
     bmdDeckLinkConfigAnalogAudioOutputScaleChannel4              = 'aos4',
-    bmdDeckLinkConfigDigitalAudioOutputScale                     = 'daos'
+    bmdDeckLinkConfigDigitalAudioOutputScale                     = 'daos',
+    bmdDeckLinkConfigHeadphoneVolume                             = 'hvol',
+
+    /* Device Information Strings */
+
+    bmdDeckLinkConfigDeviceInformationLabel                      = 'dila',
+    bmdDeckLinkConfigDeviceInformationSerialNumber               = 'disn',
+    bmdDeckLinkConfigDeviceInformationCompany                    = 'dico',
+    bmdDeckLinkConfigDeviceInformationPhone                      = 'diph',
+    bmdDeckLinkConfigDeviceInformationEmail                      = 'diem',
+    bmdDeckLinkConfigDeviceInformationDate                       = 'dida',
+
+    /* Deck Control Integers */
+
+    bmdDeckLinkConfigDeckControlConnection                       = 'dcco'
+};
+
+/* Enum BMDDeckLinkEncoderConfigurationID - DeckLink Encoder Configuration ID */
+
+typedef uint32_t BMDDeckLinkEncoderConfigurationID;
+enum _BMDDeckLinkEncoderConfigurationID {
+
+    /* Video Encoder Integers */
+
+    bmdDeckLinkEncoderConfigPreferredBitDepth                    = 'epbr',
+    bmdDeckLinkEncoderConfigFrameCodingMode                      = 'efcm',
+
+    /* HEVC/H.265 Encoder Integers */
+
+    bmdDeckLinkEncoderConfigH265TargetBitrate                    = 'htbr',
+
+    /* DNxHR/DNxHD Compression ID */
+
+    bmdDeckLinkEncoderConfigDNxHRCompressionID                   = 'dcid',
+
+    /* DNxHR/DNxHD Level */
+
+    bmdDeckLinkEncoderConfigDNxHRLevel                           = 'dlev',
+
+    /* Encoded Sample Decriptions */
+
+    bmdDeckLinkEncoderConfigMPEG4SampleDescription               = 'stsE',	// Full MPEG4 sample description (aka SampleEntry of an 'stsd' atom-box). Useful for MediaFoundation, QuickTime, MKV and more
+    bmdDeckLinkEncoderConfigMPEG4CodecSpecificDesc               = 'esds'	// Sample description extensions only (atom stream, each with size and fourCC header). Useful for AVFoundation, VideoToolbox, MKV and more
 };
 
 // Forward Declarations
 
 class IDeckLinkConfiguration;
+class IDeckLinkEncoderConfiguration;
 
 /* Interface IDeckLinkConfiguration - DeckLink Configuration interface */
 
@@ -170,6 +223,25 @@
     virtual ~IDeckLinkConfiguration () {} // call Release method to drop reference count
 };
 
+/* Interface IDeckLinkEncoderConfiguration - DeckLink Encoder Configuration interface. Obtained from IDeckLinkEncoderInput */
+
+class IDeckLinkEncoderConfiguration : public IUnknown
+{
+public:
+    virtual HRESULT SetFlag (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* in */ bool value) = 0;
+    virtual HRESULT GetFlag (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* out */ bool *value) = 0;
+    virtual HRESULT SetInt (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* in */ int64_t value) = 0;
+    virtual HRESULT GetInt (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* out */ int64_t *value) = 0;
+    virtual HRESULT SetFloat (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* in */ double value) = 0;
+    virtual HRESULT GetFloat (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* out */ double *value) = 0;
+    virtual HRESULT SetString (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* in */ CFStringRef value) = 0;
+    virtual HRESULT GetString (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* out */ CFStringRef *value) = 0;
+    virtual HRESULT GetBytes (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* out */ void *buffer /* optional */, /* in, out */ uint32_t *bufferSize) = 0;
+
+protected:
+    virtual ~IDeckLinkEncoderConfiguration () {} // call Release method to drop reference count
+};
+
 /* Functions */
 
 extern "C" {
diff --git a/sys/decklink/osx/DeckLinkAPIDeckControl.h b/sys/decklink/osx/DeckLinkAPIDeckControl.h
index 4075f32..0fd4e96 100644
--- a/sys/decklink/osx/DeckLinkAPIDeckControl.h
+++ b/sys/decklink/osx/DeckLinkAPIDeckControl.h
@@ -1,5 +1,5 @@
 /* -LICENSE-START-
-** Copyright (c) 2014 Blackmagic Design
+** Copyright (c) 2016 Blackmagic Design
 **
 ** Permission is hereby granted, free of charge, to any person or organization
 ** obtaining a copy of the software and accompanying documentation covered by
diff --git a/sys/decklink/osx/DeckLinkAPIDiscovery.h b/sys/decklink/osx/DeckLinkAPIDiscovery.h
index adbde29..ac17a1e 100644
--- a/sys/decklink/osx/DeckLinkAPIDiscovery.h
+++ b/sys/decklink/osx/DeckLinkAPIDiscovery.h
@@ -1,5 +1,5 @@
 /* -LICENSE-START-
-** Copyright (c) 2014 Blackmagic Design
+** Copyright (c) 2016 Blackmagic Design
 **
 ** Permission is hereby granted, free of charge, to any person or organization
 ** obtaining a copy of the software and accompanying documentation covered by
diff --git a/sys/decklink/osx/DeckLinkAPIDispatch.cpp b/sys/decklink/osx/DeckLinkAPIDispatch.cpp
index cb646de..cde0634 100644
--- a/sys/decklink/osx/DeckLinkAPIDispatch.cpp
+++ b/sys/decklink/osx/DeckLinkAPIDispatch.cpp
@@ -53,7 +53,7 @@
 static CreateDeckLinkDiscoveryInstanceFunc  gCreateDeckLinkDiscoveryFunc= NULL;
 
 
-void	InitDeckLinkAPI (void)
+static void	InitDeckLinkAPI (void)
 {
 	CFURLRef		bundleURL;
 
@@ -74,6 +74,7 @@
 	}
 }
 
+#if 0
 bool		IsDeckLinkAPIPresent (void)
 {
 	// If the DeckLink API bundle was successfully loaded, return this knowledge to the caller
@@ -82,6 +83,7 @@
 	
 	return false;
 }
+#endif
 
 IDeckLinkIterator*		CreateDeckLinkIteratorInstance (void)
 {
diff --git a/sys/decklink/osx/DeckLinkAPIModes.h b/sys/decklink/osx/DeckLinkAPIModes.h
index 478a2fd..7bd6852 100644
--- a/sys/decklink/osx/DeckLinkAPIModes.h
+++ b/sys/decklink/osx/DeckLinkAPIModes.h
@@ -1,5 +1,5 @@
 /* -LICENSE-START-
-** Copyright (c) 2014 Blackmagic Design
+** Copyright (c) 2016 Blackmagic Design
 **
 ** Permission is hereby granted, free of charge, to any person or organization
 ** obtaining a copy of the software and accompanying documentation covered by
@@ -135,7 +135,12 @@
     bmdFormat12BitRGB                                            = 'R12B',	// Big-endian RGB 12-bit per component with full range (0-4095). Packed as 12-bit per component
     bmdFormat12BitRGBLE                                          = 'R12L',	// Little-endian RGB 12-bit per component with full range (0-4095). Packed as 12-bit per component
     bmdFormat10BitRGBXLE                                         = 'R10l',	// Little-endian 10-bit RGB with SMPTE video levels (64-940)
-    bmdFormat10BitRGBX                                           = 'R10b'	// Big-endian 10-bit RGB with SMPTE video levels (64-940)
+    bmdFormat10BitRGBX                                           = 'R10b',	// Big-endian 10-bit RGB with SMPTE video levels (64-940)
+    bmdFormatH265                                                = 'hev1',	// High Efficiency Video Coding (HEVC/h.265)
+
+    /* AVID DNxHR */
+
+    bmdFormatDNxHR                                               = 'AVdh'
 };
 
 /* Enum BMDDisplayModeFlags - Flags to describe the characteristics of an IDeckLinkDisplayMode. */
diff --git a/sys/decklink/osx/DeckLinkAPIStreaming.h b/sys/decklink/osx/DeckLinkAPIStreaming.h
index 725c187..625ae55 100644
--- a/sys/decklink/osx/DeckLinkAPIStreaming.h
+++ b/sys/decklink/osx/DeckLinkAPIStreaming.h
@@ -1,5 +1,5 @@
 /* -LICENSE-START-
-** Copyright (c) 2014 Blackmagic Design
+** Copyright (c) 2016 Blackmagic Design
 **
 ** Permission is hereby granted, free of charge, to any person or organization
 ** obtaining a copy of the software and accompanying documentation covered by
diff --git a/sys/decklink/osx/DeckLinkAPITypes.h b/sys/decklink/osx/DeckLinkAPITypes.h
index 396680c..65866d9 100644
--- a/sys/decklink/osx/DeckLinkAPITypes.h
+++ b/sys/decklink/osx/DeckLinkAPITypes.h
@@ -1,5 +1,5 @@
 /* -LICENSE-START-
-** Copyright (c) 2014 Blackmagic Design
+** Copyright (c) 2016 Blackmagic Design
 **
 ** Permission is hereby granted, free of charge, to any person or organization
 ** obtaining a copy of the software and accompanying documentation covered by
@@ -77,7 +77,17 @@
     bmdAudioConnectionAESEBU                                     = 1 << 1,
     bmdAudioConnectionAnalog                                     = 1 << 2,
     bmdAudioConnectionAnalogXLR                                  = 1 << 3,
-    bmdAudioConnectionAnalogRCA                                  = 1 << 4
+    bmdAudioConnectionAnalogRCA                                  = 1 << 4,
+    bmdAudioConnectionMicrophone                                 = 1 << 5,
+    bmdAudioConnectionHeadphones                                 = 1 << 6
+};
+
+/* Enum BMDDeckControlConnection - Deck control connections */
+
+typedef uint32_t BMDDeckControlConnection;
+enum _BMDDeckControlConnection {
+    bmdDeckControlConnectionRS422Remote1                         = 1 << 0,
+    bmdDeckControlConnectionRS422Remote2                         = 1 << 1
 };
 
 // Forward Declarations
diff --git a/sys/decklink/osx/DeckLinkAPIVersion.h b/sys/decklink/osx/DeckLinkAPIVersion.h
index 4e41492..e19fa11 100644
--- a/sys/decklink/osx/DeckLinkAPIVersion.h
+++ b/sys/decklink/osx/DeckLinkAPIVersion.h
@@ -30,8 +30,8 @@
 #ifndef __DeckLink_API_Version_h__
 #define __DeckLink_API_Version_h__
 
-#define BLACKMAGIC_DECKLINK_API_VERSION					0x0a030100
-#define BLACKMAGIC_DECKLINK_API_VERSION_STRING			"10.3.1"
+#define BLACKMAGIC_DECKLINK_API_VERSION					0x0a080000
+#define BLACKMAGIC_DECKLINK_API_VERSION_STRING			"10.8"
 
 #endif	// __DeckLink_API_Version_h__
 
diff --git a/sys/directsound/Makefile.in b/sys/directsound/Makefile.in
index 38f85a0..9257db8 100644
--- a/sys/directsound/Makefile.in
+++ b/sys/directsound/Makefile.in
@@ -306,6 +306,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -327,6 +329,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -376,6 +380,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -521,6 +527,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -647,8 +655,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,8 +697,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/directsound/gstdirectsoundsrc.c b/sys/directsound/gstdirectsoundsrc.c
index 8f31f22..8687e86 100644
--- a/sys/directsound/gstdirectsoundsrc.c
+++ b/sys/directsound/gstdirectsoundsrc.c
@@ -213,8 +213,8 @@
       "Capture from a soundcard via DirectSound",
       "Joni Valtanen <joni.valtanen@movial.fi>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&directsound_src_src_factory));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &directsound_src_src_factory);
 
   g_object_class_install_property
       (gobject_class, PROP_DEVICE_NAME,
diff --git a/sys/dshowdecwrapper/Makefile.in b/sys/dshowdecwrapper/Makefile.in
index 3693411..8b8bd6e 100644
--- a/sys/dshowdecwrapper/Makefile.in
+++ b/sys/dshowdecwrapper/Makefile.in
@@ -308,6 +308,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -329,6 +331,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -378,6 +382,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -523,6 +529,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -649,8 +657,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -693,8 +699,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/dshowsrcwrapper/Makefile.in b/sys/dshowsrcwrapper/Makefile.in
index 027dde7..aab2d38 100644
--- a/sys/dshowsrcwrapper/Makefile.in
+++ b/sys/dshowsrcwrapper/Makefile.in
@@ -219,6 +219,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -240,6 +242,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -289,6 +293,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -434,6 +440,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -560,8 +568,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -604,8 +610,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/dshowsrcwrapper/gstdshow.cpp b/sys/dshowsrcwrapper/gstdshow.cpp
index 705adc9..421e49c 100644
--- a/sys/dshowsrcwrapper/gstdshow.cpp
+++ b/sys/dshowsrcwrapper/gstdshow.cpp
@@ -406,6 +406,18 @@
   if (gst_dshow_check_mediatype (mediatype, MEDIASUBTYPE_UYVY, FORMAT_VideoInfo))
     return GST_VIDEO_FORMAT_UYVY;
 
+  if (gst_dshow_check_mediatype (mediatype, MEDIASUBTYPE_RGB32, FORMAT_VideoInfo))
+    return GST_VIDEO_FORMAT_BGRx;
+
+  if (gst_dshow_check_mediatype (mediatype, MEDIASUBTYPE_RGB565, FORMAT_VideoInfo))
+    return GST_VIDEO_FORMAT_BGR16;
+
+  if (gst_dshow_check_mediatype (mediatype, MEDIASUBTYPE_RGB555, FORMAT_VideoInfo))
+    return GST_VIDEO_FORMAT_BGR15;
+
+  if (gst_dshow_check_mediatype (mediatype, MEDIASUBTYPE_RGB8, FORMAT_VideoInfo))
+    return GST_VIDEO_FORMAT_GRAY8;
+
   return GST_VIDEO_FORMAT_UNKNOWN;
 }
 
@@ -449,6 +461,18 @@
     case GST_VIDEO_FORMAT_UYVY:
       video_caps = gst_caps_from_string (GST_VIDEO_CAPS_MAKE ("UYVY"));
       break;
+    case GST_VIDEO_FORMAT_BGRx:
+      video_caps = gst_caps_from_string (GST_VIDEO_CAPS_MAKE ("BGRx"));
+      break;
+    case GST_VIDEO_FORMAT_BGR16:
+      video_caps = gst_caps_from_string (GST_VIDEO_CAPS_MAKE ("BGR16"));
+      break;
+    case GST_VIDEO_FORMAT_BGR15:
+      video_caps = gst_caps_from_string (GST_VIDEO_CAPS_MAKE ("BGR15"));
+      break;
+    case GST_VIDEO_FORMAT_GRAY8:
+      video_caps = gst_caps_from_string (GST_VIDEO_CAPS_MAKE ("GRAY8"));
+      break;
     default:
       break;
   }
diff --git a/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp b/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp
index c4d33e5..d78f139 100644
--- a/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp
+++ b/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp
@@ -122,8 +122,7 @@
           "Human-readable name of the sound device", NULL,
           static_cast < GParamFlags > (G_PARAM_READWRITE)));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_template);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "Directshow audio capture source", "Source/Audio",
diff --git a/sys/dshowsrcwrapper/gstdshowfakesink.cpp b/sys/dshowsrcwrapper/gstdshowfakesink.cpp
index c524c7c..3c5fca8 100644
--- a/sys/dshowsrcwrapper/gstdshowfakesink.cpp
+++ b/sys/dshowsrcwrapper/gstdshowfakesink.cpp
@@ -46,12 +46,19 @@
 
 HRESULT CDshowFakeSink::CheckMediaType (const CMediaType * pmt)
 {
-  if (pmt != NULL) {
-    if (*pmt == m_MediaType)
-      return S_OK;
-  }
+  if (!IsEqualGUID(pmt->majortype, m_MediaType.majortype) ||
+      !IsEqualGUID(pmt->subtype, m_MediaType.subtype) ||
+      !IsEqualGUID(pmt->formattype, m_MediaType.formattype) ||
+      (pmt->cbFormat != m_MediaType.cbFormat))
+    return S_FALSE;
 
-  return S_FALSE;
+  VIDEOINFOHEADER *info1 = (VIDEOINFOHEADER*)pmt->pbFormat;
+  VIDEOINFOHEADER *info2 = (VIDEOINFOHEADER*)m_MediaType.pbFormat;
+
+  if (memcmp(&info1->bmiHeader, &info2->bmiHeader, sizeof(BITMAPINFOHEADER)))
+    return S_FALSE;
+
+  return S_OK;
 }
 
 HRESULT CDshowFakeSink::DoRenderSample (IMediaSample * pMediaSample)
diff --git a/sys/dshowsrcwrapper/gstdshowvideosrc.cpp b/sys/dshowsrcwrapper/gstdshowvideosrc.cpp
index 7725fcb..9b478db 100644
--- a/sys/dshowsrcwrapper/gstdshowvideosrc.cpp
+++ b/sys/dshowsrcwrapper/gstdshowvideosrc.cpp
@@ -144,8 +144,7 @@
           "Human-readable name of the sound device", NULL,
           static_cast < GParamFlags > (G_PARAM_READWRITE)));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_template);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "DirectShow video capture source", "Source/Video",
@@ -683,6 +682,12 @@
           src->filter_graph->Disconnect (input_pin);
         }
 
+        hres = src->pVSC->SetFormat(pin_mediatype->mediatype);
+        if (FAILED (hres)) {
+          GST_ERROR ("Failed to set capture pin format (error=0x%x)", hres);
+          goto error;
+        }
+
         hres = src->filter_graph->ConnectDirect (pin_mediatype->capture_pin,
             input_pin, pin_mediatype->mediatype);
         input_pin->Release ();
diff --git a/sys/dshowvideosink/Makefile.in b/sys/dshowvideosink/Makefile.in
index f38fed8..b76897f 100644
--- a/sys/dshowvideosink/Makefile.in
+++ b/sys/dshowvideosink/Makefile.in
@@ -219,6 +219,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -240,6 +242,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -289,6 +293,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -434,6 +440,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -560,8 +568,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -604,8 +610,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/dshowvideosink/dshowvideosink.cpp b/sys/dshowvideosink/dshowvideosink.cpp
index c3d4bc3..cc9d332 100644
--- a/sys/dshowvideosink/dshowvideosink.cpp
+++ b/sys/dshowvideosink/dshowvideosink.cpp
@@ -206,8 +206,7 @@
       "Pioneers of the Inevitable <songbird@songbirdnest.com>, " \
       "FLUENDO S.A. <support@fluendo.com>");
 
-  gst_element_class_add_pad_template (e_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (e_class, &sink_template);
 
   e_class->change_state = GST_DEBUG_FUNCPTR (gst_dshowvideosink_change_state);
 
diff --git a/sys/dvb/Makefile.in b/sys/dvb/Makefile.in
index e7e76b6..3adcbbc 100644
--- a/sys/dvb/Makefile.in
+++ b/sys/dvb/Makefile.in
@@ -312,6 +312,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -333,6 +335,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -382,6 +386,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -527,6 +533,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -653,8 +661,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -697,8 +703,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/dvb/dvbbasebin.c b/sys/dvb/dvbbasebin.c
index a293617..c05f65e 100644
--- a/sys/dvb/dvbbasebin.c
+++ b/sys/dvb/dvbbasebin.c
@@ -335,10 +335,8 @@
   element_class->request_new_pad = dvb_base_bin_request_new_pad;
   element_class->release_pad = dvb_base_bin_release_pad;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&program_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (element_class, &program_template);
+  gst_element_class_add_static_pad_template (element_class, &src_template);
 
   gst_element_class_set_static_metadata (element_class, "DVB bin",
       "Source/Bin/Video",
@@ -539,7 +537,7 @@
   dvbbasebin->task =
       gst_task_new ((GstTaskFunction) dvb_base_bin_task, dvbbasebin, NULL);
   gst_task_set_lock (dvbbasebin->task, &dvbbasebin->lock);
-  dvbbasebin->poll = gst_poll_new_timer ();
+  dvbbasebin->poll = gst_poll_new (TRUE);
 }
 
 static void
@@ -1175,14 +1173,13 @@
   if (location == NULL)
     goto no_location;
 
+  /* FIXME: here is where we parse channels.conf */
   if (!set_properties_for_channel (GST_ELEMENT (dvbbasebin), location, &err))
     goto set_properties_failed;
 
-  /* FIXME: here is where we parse channels.conf */
-
   g_free (location);
   return TRUE;
-/* ERRORS */
+
 post_error_and_exit:
   {
     gst_element_message_full (GST_ELEMENT (dvbbasebin), GST_MESSAGE_ERROR,
@@ -1200,6 +1197,9 @@
 set_properties_failed:
   {
     g_free (location);
+    if (!err)
+      g_set_error (&err, GST_URI_ERROR, GST_URI_ERROR_BAD_REFERENCE,
+          "Could not find information for channel");
     goto post_error_and_exit;
   }
 }
diff --git a/sys/dvb/gstdvbsrc.c b/sys/dvb/gstdvbsrc.c
index b93255f..3376a05 100644
--- a/sys/dvb/gstdvbsrc.c
+++ b/sys/dvb/gstdvbsrc.c
@@ -23,7 +23,7 @@
  * SECTION:element-dvbsrc
  *
  * dvbsrc can be used to capture media from DVB cards. Supported DTV
- * broadcasting standards include DVB-T/C/S, ATSC ,ISDB-T and DTMB.
+ * broadcasting standards include DVB-T/C/S, ATSC, ISDB-T and DTMB.
  *
  * <refsect2>
  * <title>Example launch line</title>
@@ -37,8 +37,11 @@
  * gst-launch-1.0 dvbsrc polarity="h" frequency=11302000 symbol-rate=27500 diseqc-source=0 pids=50:102:103 ! mpegtsdemux name=demux ! queue max-size-buffers=0 max-size-time=0 ! mpeg2dec ! xvimagesink demux. ! queue max-size-buffers=0 max-size-time=0 ! mad ! alsasink
  * ]| Captures and renders a transport stream from DVB card 0 that is a DVB-S card for a program at tuned frequency 11302000 kHz, symbol rate of 27500 kBd (kilo bauds) with PMT PID of 50 and elementary stream PIDs of 102 and 103.
  * |[
- gst-launch-1.0 dvbsrc frequency=515142857 guard=16 trans-mode="8k" isdbt-layer-enabled=7 isdbt-partial-reception=1 isdbt-layera-fec="2/3" isdbt-layera-modulation="QPSK" isdbt-layera-segment-count=1 isdbt-layera-time-interleaving=4 isdbt-layerb-fec="3/4" isdbt-layerb-modulation="qam-64" isdbt-layerb-segment-count=12 isdbt-layerb-time-interleaving=2 isdbt-layerc-fec="1/2" isdbt-layerc-modulation="qam-64" isdbt-layerc-segment-count=0 isdbt-layerc-time-interleaving=0 delsys="isdb-t" ! tsdemux ! "video/x-h264" ! h264parse ! queue ! avdec_h264 ! videoconvert ! queue ! autovideosink
+ * gst-launch-1.0 dvbsrc frequency=515142857 guard=16 trans-mode="8k" isdbt-layer-enabled=7 isdbt-partial-reception=1 isdbt-layera-fec="2/3" isdbt-layera-modulation="QPSK" isdbt-layera-segment-count=1 isdbt-layera-time-interleaving=4 isdbt-layerb-fec="3/4" isdbt-layerb-modulation="qam-64" isdbt-layerb-segment-count=12 isdbt-layerb-time-interleaving=2 isdbt-layerc-fec="1/2" isdbt-layerc-modulation="qam-64" isdbt-layerc-segment-count=0 isdbt-layerc-time-interleaving=0 delsys="isdb-t" ! tsdemux ! "video/x-h264" ! h264parse ! queue ! avdec_h264 ! videoconvert ! queue ! autovideosink
  * ]| Captures and renders the video track of TV Paraíba HD (Globo affiliate) in Campina Grande, Brazil. This is an ISDB-T (Brazilian ISDB-Tb variant) broadcast.
+ * |[
+ *  gst-launch-1.0 dvbsrc frequency=503000000 delsys="atsc" modulation="8vsb" pids=48:49:52 ! decodebin name=dec dec. ! videoconvert ! autovideosink dec. ! audioconvert ! autoaudiosink
+ * ]| Captures and renders KOFY-HD in San Jose, California. This is an ATSC broadcast, PMT ID 48, Audio/Video elementary stream PIDs 49 and 52 respectively.
  * </refsect2>
  */
 
@@ -551,11 +554,14 @@
 static gboolean gst_dvbsrc_tune (GstDvbSrc * object);
 static gboolean gst_dvbsrc_set_fe_params (GstDvbSrc * object,
     struct dtv_properties *props);
+static void gst_dvbsrc_guess_delsys (GstDvbSrc * object);
 static gboolean gst_dvbsrc_tune_fe (GstDvbSrc * object);
 
 static void gst_dvbsrc_set_pes_filters (GstDvbSrc * object);
 static void gst_dvbsrc_unset_pes_filters (GstDvbSrc * object);
 static gboolean gst_dvbsrc_is_valid_modulation (guint delsys, guint mod);
+static gboolean gst_dvbsrc_is_valid_trans_mode (guint delsys, guint mode);
+static gboolean gst_dvbsrc_is_valid_bandwidth (guint delsys, guint bw);
 
 /**
  * This loop should be safe enough considering:
@@ -614,8 +620,7 @@
 
   gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_dvbsrc_change_state);
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&ts_src_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &ts_src_factory);
 
   gst_element_class_set_static_metadata (gstelement_class, "DVB Source",
       "Source/Video",
@@ -660,7 +665,9 @@
 
   g_object_class_install_property (gobject_class, ARG_DVBSRC_PIDS,
       g_param_spec_string ("pids", "pids",
-          "Colon seperated list of pids (eg. 110:120)",
+          "Colon-separated list of PIDs (eg. 110:120) to capture. ACT and CAT "
+          "are automatically included but PMT should be added explicitly. "
+          "Special value 8192 gets full MPEG-TS",
           DEFAULT_PIDS, GST_PARAM_MUTABLE_PLAYING | G_PARAM_WRITABLE));
 
   g_object_class_install_property (gobject_class, ARG_DVBSRC_SYM_RATE,
@@ -681,11 +688,9 @@
           "DiSEqC switch. Otherwise leave at -1 (disabled)", -1, 7,
           DEFAULT_DISEQC_SRC, GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
 
-  /* DVB-T, additional properties */
-
   g_object_class_install_property (gobject_class, ARG_DVBSRC_BANDWIDTH_HZ,
       g_param_spec_uint ("bandwidth-hz", "bandwidth-hz",
-          "(DVB-T) Bandwidth in Hz", 0, G_MAXUINT, DEFAULT_BANDWIDTH_HZ,
+          "Channel bandwidth in Hz", 0, G_MAXUINT, DEFAULT_BANDWIDTH_HZ,
           GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
 
 #ifndef GST_REMOVE_DEPRECATED
@@ -797,7 +802,7 @@
   g_object_class_install_property (gobject_class,
       ARG_DVBSRC_ISDBT_LAYER_ENABLED,
       g_param_spec_uint ("isdbt-layer-enabled",
-          "ISB-T layer enabled",
+          "ISDB-T layer enabled",
           "(ISDB-T) Layer Enabled (7 = All layers)", 1, 7,
           DEFAULT_ISDBT_LAYER_ENABLED,
           GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
@@ -805,7 +810,7 @@
   g_object_class_install_property (gobject_class,
       ARG_DVBSRC_ISDBT_PARTIAL_RECEPTION,
       g_param_spec_int ("isdbt-partial-reception",
-          "ISB-T partial reception",
+          "ISDB-T partial reception",
           "(ISDB-T) Partial Reception (-1 = AUTO)", -1, 1,
           DEFAULT_ISDBT_PARTIAL_RECEPTION,
           GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
@@ -813,7 +818,7 @@
   g_object_class_install_property (gobject_class,
       ARG_DVBSRC_ISDBT_SOUND_BROADCASTING,
       g_param_spec_int ("isdbt-sound-broadcasting",
-          "ISB-T sound broadcasting",
+          "ISDB-T sound broadcasting",
           "(ISDB-T) Sound Broadcasting", 0, 1,
           DEFAULT_ISDBT_SOUND_BROADCASTING,
           GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
@@ -821,7 +826,7 @@
   g_object_class_install_property (gobject_class,
       ARG_DVBSRC_ISDBT_SB_SUBCHANNEL_ID,
       g_param_spec_int ("isdbt-sb-subchannel-id",
-          "ISB-T SB subchannel ID",
+          "ISDB-T SB subchannel ID",
           "(ISDB-T) SB Subchannel ID (-1 = AUTO)", -1, 41,
           DEFAULT_ISDBT_SB_SEGMENT_IDX,
           GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
@@ -829,7 +834,7 @@
   g_object_class_install_property (gobject_class,
       ARG_DVBSRC_ISDBT_SB_SEGMENT_IDX,
       g_param_spec_int ("isdbt-sb-segment-idx",
-          "ISB-T SB segment IDX",
+          "ISDB-T SB segment IDX",
           "(ISDB-T) SB segment IDX", 0, 12,
           DEFAULT_ISDBT_SB_SEGMENT_IDX,
           GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
@@ -837,7 +842,7 @@
   g_object_class_install_property (gobject_class,
       ARG_DVBSRC_ISDBT_SB_SEGMENT_COUNT,
       g_param_spec_uint ("isdbt-sb-segment-count",
-          "ISB-T SB segment count",
+          "ISDB-T SB segment count",
           "(ISDB-T) SB segment count", 1, 13,
           DEFAULT_ISDBT_SB_SEGMENT_COUNT,
           GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
@@ -884,7 +889,7 @@
   g_object_class_install_property (gobject_class,
       ARG_DVBSRC_ISDBT_LAYERA_SEGMENT_COUNT,
       g_param_spec_int ("isdbt-layera-segment-count",
-          "ISB-T layer A segment count",
+          "ISDB-T layer A segment count",
           "(ISDB-T) Layer A segment count (-1 = AUTO)", -1, 13,
           DEFAULT_ISDBT_LAYERA_SEGMENT_COUNT,
           GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
@@ -892,7 +897,7 @@
   g_object_class_install_property (gobject_class,
       ARG_DVBSRC_ISDBT_LAYERB_SEGMENT_COUNT,
       g_param_spec_int ("isdbt-layerb-segment-count",
-          "ISB-T layer B segment count",
+          "ISDB-T layer B segment count",
           "(ISDB-T) Layer B segment count (-1 = AUTO)", -1, 13,
           DEFAULT_ISDBT_LAYERB_SEGMENT_COUNT,
           GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
@@ -900,7 +905,7 @@
   g_object_class_install_property (gobject_class,
       ARG_DVBSRC_ISDBT_LAYERC_SEGMENT_COUNT,
       g_param_spec_int ("isdbt-layerc-segment-count",
-          "ISB-T layer C segment count",
+          "ISDB-T layer C segment count",
           "(ISDB-T) Layer C segment count (-1 = AUTO)", -1, 13,
           DEFAULT_ISDBT_LAYERC_SEGMENT_COUNT,
           GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
@@ -908,7 +913,7 @@
   g_object_class_install_property (gobject_class,
       ARG_DVBSRC_ISDBT_LAYERA_TIME_INTERLEAVING,
       g_param_spec_int ("isdbt-layera-time-interleaving",
-          "ISB-T layer A time interleaving ",
+          "ISDB-T layer A time interleaving",
           "(ISDB-T) Layer A time interleaving (-1 = AUTO)", -1, 8,
           DEFAULT_ISDBT_LAYERA_TIME_INTERLEAVING,
           GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
@@ -916,7 +921,7 @@
   g_object_class_install_property (gobject_class,
       ARG_DVBSRC_ISDBT_LAYERB_TIME_INTERLEAVING,
       g_param_spec_int ("isdbt-layerb-time-interleaving",
-          "ISB-T layer B time interleaving ",
+          "ISDB-T layer B time interleaving",
           "(ISDB-T) Layer B time interleaving (-1 = AUTO)", -1, 8,
           DEFAULT_ISDBT_LAYERB_TIME_INTERLEAVING,
           GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
@@ -924,7 +929,7 @@
   g_object_class_install_property (gobject_class,
       ARG_DVBSRC_ISDBT_LAYERC_TIME_INTERLEAVING,
       g_param_spec_int ("isdbt-layerc-time-interleaving",
-          "ISB-T layer C time interleaving ",
+          "ISDB-T layer C time interleaving",
           "(ISDB-T) Layer C time interleaving (-1 = AUTO)", -1, 8,
           DEFAULT_ISDBT_LAYERC_TIME_INTERLEAVING,
           GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
@@ -1013,7 +1018,6 @@
 {
   int i = 0;
 
-  GST_INFO_OBJECT (object, "gst_dvbsrc_init");
   GST_DEBUG_OBJECT (object, "Kernel DVB API version %d.%d", DVB_API_VERSION,
       DVB_API_VERSION_MINOR);
 
@@ -1025,13 +1029,15 @@
 
   object->fd_frontend = -1;
   object->fd_dvr = -1;
+  object->supported_delsys = NULL;
 
   for (i = 0; i < MAX_FILTERS; i++) {
-    object->pids[i] = G_MAXUINT16;
     object->fd_filters[i] = -1;
   }
+
   /* PID 8192 on DVB gets the whole transport stream */
   object->pids[0] = 8192;
+  object->pids[1] = G_MAXUINT16;
   object->dvb_buffer_size = DEFAULT_DVB_BUFFER_SIZE;
   object->adapter_number = DEFAULT_ADAPTER;
   object->frontend_number = DEFAULT_FRONTEND;
@@ -1090,48 +1096,46 @@
 static void
 gst_dvbsrc_set_pids (GstDvbSrc * dvbsrc, const gchar * pid_string)
 {
+  int pid = 0;
+  int pid_count;
+  gchar **pids;
+  char **tmp;
+
   if (!strcmp (pid_string, "8192")) {
-    /* get the whole ts */
-    int pid_count = 1;
+    /* get the whole TS */
     dvbsrc->pids[0] = 8192;
-    while (pid_count < MAX_FILTERS) {
-      dvbsrc->pids[pid_count++] = G_MAXUINT16;
-    }
-  } else {
-    int pid = 0;
-    int pid_count;
-    gchar **pids;
-    char **tmp;
-
-    tmp = pids = g_strsplit (pid_string, ":", MAX_FILTERS);
-
-    /* always add the PAT and CAT pids */
-    dvbsrc->pids[0] = 0;
-    dvbsrc->pids[1] = 1;
-
-    pid_count = 2;
-    while (*pids != NULL && pid_count < MAX_FILTERS) {
-      pid = strtol (*pids, NULL, 0);
-      if (pid > 1 && pid <= 8192) {
-        GST_INFO_OBJECT (dvbsrc, "\tParsed Pid: %d", pid);
-        dvbsrc->pids[pid_count] = pid;
-        pid_count++;
-      }
-      pids++;
-    }
-    while (pid_count < MAX_FILTERS) {
-      dvbsrc->pids[pid_count++] = G_MAXUINT16;
-    }
-
-    g_strfreev (tmp);
+    dvbsrc->pids[1] = G_MAXUINT16;
+    goto done;
   }
-  /* if we are in playing or paused, then set filters now */
-  GST_INFO_OBJECT (dvbsrc, "checking if playing for setting pes filters");
-  if (GST_ELEMENT (dvbsrc)->current_state == GST_STATE_PLAYING ||
-      GST_ELEMENT (dvbsrc)->current_state == GST_STATE_PAUSED) {
-    GST_INFO_OBJECT (dvbsrc, "Setting pes filters now");
+
+  /* always add the PAT and CAT pids */
+  dvbsrc->pids[0] = 0;
+  dvbsrc->pids[1] = 1;
+  pid_count = 2;
+
+  tmp = pids = g_strsplit (pid_string, ":", MAX_FILTERS);
+
+  while (*pids != NULL && pid_count < MAX_FILTERS) {
+    pid = strtol (*pids, NULL, 0);
+    if (pid > 1 && pid <= 8192) {
+      GST_INFO_OBJECT (dvbsrc, "Parsed PID: %d", pid);
+      dvbsrc->pids[pid_count] = pid;
+      pid_count++;
+    }
+    pids++;
+  }
+
+  g_strfreev (tmp);
+
+  if (pid_count < MAX_FILTERS)
+    dvbsrc->pids[pid_count] = G_MAXUINT16;
+
+done:
+  if (GST_ELEMENT (dvbsrc)->current_state > GST_STATE_READY) {
+    GST_INFO_OBJECT (dvbsrc, "Setting PES filters now");
     gst_dvbsrc_set_pes_filters (dvbsrc);
-  }
+  } else
+    GST_INFO_OBJECT (dvbsrc, "Not setting PES filters because state < PAUSED");
 }
 
 static void
@@ -1169,9 +1173,8 @@
       s = g_value_get_string (value);
       if (s != NULL) {
         object->pol = (s[0] == 'h' || s[0] == 'H') ? DVB_POL_H : DVB_POL_V;
-        GST_INFO_OBJECT (object, "Set Property: ARG_DVBSRC_POLARITY");
-        GST_INFO_OBJECT (object, "\t%s", (s[0] == 'h'
-                || s[0] == 'H') ? "DVB_POL_H" : "DVB_POL_V");
+        GST_INFO_OBJECT (object, "Set Property: ARG_DVBSRC_POLARITY to %s",
+            object->pol ? "Vertical" : "Horizontal");
       }
       break;
     }
@@ -1574,6 +1577,11 @@
     return FALSE;
   }
 
+  if (object->supported_delsys)
+    goto delsys_detection_done;
+
+  /* Perform delivery system autodetection */
+
   GST_DEBUG_OBJECT (object, "Device opened, querying information");
 
   LOOP_WHILE_EINTR (err, ioctl (object->fd_frontend, FE_GET_INFO, &fe_info));
@@ -1587,7 +1595,7 @@
     return FALSE;
   }
 
-  GST_DEBUG_OBJECT (object, "check delivery systems");
+  GST_DEBUG_OBJECT (object, "Get list of supported delivery systems");
 
   dvb_prop[0].cmd = DTV_ENUM_DELSYS;
   props.num = 1;
@@ -1604,7 +1612,7 @@
     return FALSE;
   }
 
-  GST_DEBUG_OBJECT (object, "Got information about adapter : %s", fe_info.name);
+  GST_INFO_OBJECT (object, "Got information about adapter: %s", fe_info.name);
 
   adapter_name = g_strdup (fe_info.name);
 
@@ -1621,117 +1629,136 @@
 
   /* Capability delivery systems */
   if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_DVBC_ANNEX_A)) {
+    object->supported_delsys = g_list_append (object->supported_delsys,
+        GINT_TO_POINTER (SYS_DVBC_ANNEX_A));
     gst_structure_set (adapter_structure, "dvb-c-a", G_TYPE_STRING,
         "DVB-C ANNEX A", NULL);
-    object->best_guess_delsys = SYS_DVBC_ANNEX_A;
   }
 
   if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_DVBC_ANNEX_B)) {
+    object->supported_delsys = g_list_append (object->supported_delsys,
+        GINT_TO_POINTER (SYS_DVBC_ANNEX_B));
     gst_structure_set (adapter_structure, "dvb-c-b", G_TYPE_STRING,
         "DVB-C ANNEX C", NULL);
-    object->best_guess_delsys = SYS_DVBC_ANNEX_B;
   }
 
   if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_DVBT)) {
+    object->supported_delsys = g_list_append (object->supported_delsys,
+        GINT_TO_POINTER (SYS_DVBT));
     gst_structure_set (adapter_structure, "dvb-t", G_TYPE_STRING, "DVB-T",
         NULL);
-    object->best_guess_delsys = SYS_DVBT;
   }
 
   if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_DSS)) {
+    object->supported_delsys = g_list_append (object->supported_delsys,
+        GINT_TO_POINTER (SYS_DSS));
     gst_structure_set (adapter_structure, "dss", G_TYPE_STRING, "DSS", NULL);
-    object->best_guess_delsys = SYS_DSS;
   }
 
   if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_DVBS)) {
+    object->supported_delsys = g_list_append (object->supported_delsys,
+        GINT_TO_POINTER (SYS_DVBS));
     gst_structure_set (adapter_structure, "dvb-s", G_TYPE_STRING, "DVB-S",
         NULL);
-    object->best_guess_delsys = SYS_DVBS;
   }
 
   if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_DVBS2)) {
+    object->supported_delsys = g_list_append (object->supported_delsys,
+        GINT_TO_POINTER (SYS_DVBS2));
     gst_structure_set (adapter_structure, "dvb-s2", G_TYPE_STRING, "DVB-S2",
         NULL);
-    object->best_guess_delsys = SYS_DVBS2;
   }
 
   if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_DVBH)) {
+    object->supported_delsys = g_list_append (object->supported_delsys,
+        GINT_TO_POINTER (SYS_DVBH));
     gst_structure_set (adapter_structure, "dvb-h", G_TYPE_STRING, "DVB-H",
         NULL);
-    object->best_guess_delsys = SYS_DVBH;
   }
 
   if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_ISDBT)) {
+    object->supported_delsys = g_list_append (object->supported_delsys,
+        GINT_TO_POINTER (SYS_ISDBT));
     gst_structure_set (adapter_structure, "isdb-t", G_TYPE_STRING, "ISDB-T",
         NULL);
-    object->best_guess_delsys = SYS_ISDBT;
   }
 
   if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_ISDBS)) {
+    object->supported_delsys = g_list_append (object->supported_delsys,
+        GINT_TO_POINTER (SYS_ISDBS));
     gst_structure_set (adapter_structure, "isdb-s", G_TYPE_STRING, "ISDB-S",
         NULL);
-    object->best_guess_delsys = SYS_ISDBS;
   }
 
   if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_ISDBC)) {
+    object->supported_delsys = g_list_append (object->supported_delsys,
+        GINT_TO_POINTER (SYS_ISDBC));
     gst_structure_set (adapter_structure, "isdb-c", G_TYPE_STRING, "ISDB-C",
         NULL);
-    object->best_guess_delsys = SYS_ISDBC;
   }
 
   if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_ATSC)) {
+    object->supported_delsys = g_list_append (object->supported_delsys,
+        GINT_TO_POINTER (SYS_ATSC));
     gst_structure_set (adapter_structure, "atsc", G_TYPE_STRING, "ATSC", NULL);
-    object->best_guess_delsys = SYS_ATSC;
   }
 
   if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_ATSCMH)) {
+    object->supported_delsys = g_list_append (object->supported_delsys,
+        GINT_TO_POINTER (SYS_ATSCMH));
     gst_structure_set (adapter_structure, "atsc-mh", G_TYPE_STRING, "ATSC-MH",
         NULL);
-    object->best_guess_delsys = SYS_ATSCMH;
   }
 #if HAVE_V5_MINOR(7)
   if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_DTMB)) {
+    object->supported_delsys = g_list_append (object->supported_delsys,
+        GINT_TO_POINTER (SYS_DTMB));
     gst_structure_set (adapter_structure, "dtmb", G_TYPE_STRING, "DTMB", NULL);
-    object->best_guess_delsys = SYS_DTMB;
   }
 #endif
 
   if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_CMMB)) {
+    object->supported_delsys = g_list_append (object->supported_delsys,
+        GINT_TO_POINTER (SYS_CMMB));
     gst_structure_set (adapter_structure, "cmmb", G_TYPE_STRING, "CMMB", NULL);
-    object->best_guess_delsys = SYS_CMMB;
   }
 
   if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_DAB)) {
+    object->supported_delsys = g_list_append (object->supported_delsys,
+        GINT_TO_POINTER (SYS_DAB));
     gst_structure_set (adapter_structure, "dab", G_TYPE_STRING, "DAB", NULL);
-    object->best_guess_delsys = SYS_DAB;
   }
 
   if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_DVBT2)) {
+    object->supported_delsys = g_list_append (object->supported_delsys,
+        GINT_TO_POINTER (SYS_DVBT2));
     gst_structure_set (adapter_structure, "dvb-t2", G_TYPE_STRING, "DVB-T2",
         NULL);
-    object->best_guess_delsys = SYS_DVBT2;
   }
 
   if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_TURBO)) {
+    object->supported_delsys = g_list_append (object->supported_delsys,
+        GINT_TO_POINTER (SYS_TURBO));
     gst_structure_set (adapter_structure, "turbo", G_TYPE_STRING, "TURBO",
         NULL);
-    object->best_guess_delsys = SYS_TURBO;
   }
 
   if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_DVBC_ANNEX_C)) {
+    object->supported_delsys = g_list_append (object->supported_delsys,
+        GINT_TO_POINTER (SYS_DVBC_ANNEX_C));
     gst_structure_set (adapter_structure, "dvb-c-c", G_TYPE_STRING,
         "DVB-C ANNEX C", NULL);
-    object->best_guess_delsys = SYS_DVBC_ANNEX_C;
   }
 
-  GST_INFO_OBJECT (object, "DVB card: %s ", adapter_name);
   GST_TRACE_OBJECT (object, "%s description: %" GST_PTR_FORMAT, adapter_name,
       adapter_structure);
   gst_element_post_message (GST_ELEMENT_CAST (object), gst_message_new_element
       (GST_OBJECT (object), adapter_structure));
-  g_free (frontend_dev);
   g_free (adapter_name);
 
+delsys_detection_done:
+  g_free (frontend_dev);
+
   return TRUE;
 }
 
@@ -1743,7 +1770,7 @@
 
   dvr_dev = g_strdup_printf ("/dev/dvb/adapter%d/dvr%d",
       object->adapter_number, object->frontend_number);
-  GST_INFO_OBJECT (object, "Using dvr device: %s", dvr_dev);
+  GST_INFO_OBJECT (object, "Using DVR device: %s", dvr_dev);
 
   /* open DVR */
   if ((object->fd_dvr = open (dvr_dev, O_RDONLY | O_NONBLOCK)) < 0) {
@@ -1763,7 +1790,7 @@
   }
   g_free (dvr_dev);
 
-  GST_INFO_OBJECT (object, "Setting DVB kernel buffer size to %d ",
+  GST_INFO_OBJECT (object, "Setting DVB kernel buffer size to %d",
       object->dvb_buffer_size);
   LOOP_WHILE_EINTR (err, ioctl (object->fd_dvr, DMX_SET_BUFFER_SIZE,
           object->dvb_buffer_size));
@@ -1931,7 +1958,10 @@
   switch (transition) {
     case GST_STATE_CHANGE_NULL_TO_READY:
       /* open frontend then close it again, just so caps sent */
-      gst_dvbsrc_open_frontend (src, FALSE);
+      if (!gst_dvbsrc_open_frontend (src, FALSE)) {
+        GST_ERROR_OBJECT (src, "Could not open frontend device");
+        ret = GST_STATE_CHANGE_FAILURE;
+      }
       if (src->fd_frontend) {
         close (src->fd_frontend);
       }
@@ -1949,35 +1979,35 @@
 {
   GstDvbSrc *src = GST_DVBSRC (bsrc);
 
-  gst_dvbsrc_open_frontend (src, TRUE);
-  if (!gst_dvbsrc_tune (src)) {
-    GST_ERROR_OBJECT (src, "Not able to lock on to the dvb channel");
-    gst_dvbsrc_unset_pes_filters (src);
-    close (src->fd_frontend);
+  if (!gst_dvbsrc_open_frontend (src, TRUE)) {
+    GST_ERROR_OBJECT (src, "Could not open frontend device");
     return FALSE;
   }
+  if (!gst_dvbsrc_tune (src)) {
+    GST_ERROR_OBJECT (src, "Not able to lock on to the dvb channel");
+    goto fail;
+  }
   if (!gst_dvbsrc_open_dvr (src)) {
-    GST_ERROR_OBJECT (src, "Not able to open dvr_device");
-    /* unset filters also */
-    gst_dvbsrc_unset_pes_filters (src);
-    close (src->fd_frontend);
-    return FALSE;
+    GST_ERROR_OBJECT (src, "Not able to open DVR device");
+    goto fail;
   }
   if (!(src->poll = gst_poll_new (TRUE))) {
     GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ_WRITE, (NULL),
-        ("could not create an fdset: %s (%d)", g_strerror (errno), errno));
-    /* unset filters also */
-    gst_dvbsrc_unset_pes_filters (src);
-    close (src->fd_frontend);
-    return FALSE;
-  } else {
-    gst_poll_fd_init (&src->poll_fd_dvr);
-    src->poll_fd_dvr.fd = src->fd_dvr;
-    gst_poll_add_fd (src->poll, &src->poll_fd_dvr);
-    gst_poll_fd_ctl_read (src->poll, &src->poll_fd_dvr, TRUE);
+        ("Could not create an fd set: %s (%d)", g_strerror (errno), errno));
+    goto fail;
   }
 
+  gst_poll_fd_init (&src->poll_fd_dvr);
+  src->poll_fd_dvr.fd = src->fd_dvr;
+  gst_poll_add_fd (src->poll, &src->poll_fd_dvr);
+  gst_poll_fd_ctl_read (src->poll, &src->poll_fd_dvr, TRUE);
+
   return TRUE;
+
+fail:
+  gst_dvbsrc_unset_pes_filters (src);
+  close (src->fd_frontend);
+  return FALSE;
 }
 
 static gboolean
@@ -1986,6 +2016,8 @@
   GstDvbSrc *src = GST_DVBSRC (bsrc);
 
   gst_dvbsrc_close_devices (src);
+  g_list_free (src->supported_delsys);
+  src->supported_delsys = NULL;
   if (src->poll) {
     gst_poll_free (src->poll);
     src->poll = NULL;
@@ -2019,6 +2051,41 @@
 }
 
 static gboolean
+gst_dvbsrc_is_valid_trans_mode (guint delsys, guint mode)
+{
+  /* FIXME: check valid transmission modes for other broadcast standards */
+  switch (delsys) {
+    case SYS_DVBT:
+      if (mode == TRANSMISSION_MODE_AUTO || mode == TRANSMISSION_MODE_2K ||
+          mode == TRANSMISSION_MODE_8K) {
+        return TRUE;
+      }
+      break;
+    case SYS_DVBT2:
+      if (mode == TRANSMISSION_MODE_AUTO || mode == TRANSMISSION_MODE_1K ||
+          mode == TRANSMISSION_MODE_2K || mode == TRANSMISSION_MODE_4K ||
+          mode == TRANSMISSION_MODE_8K || mode == TRANSMISSION_MODE_16K ||
+          mode == TRANSMISSION_MODE_32K) {
+        return TRUE;
+      }
+      break;
+#if HAVE_V5_MINOR(7)
+    case SYS_DTMB:
+      if (mode == TRANSMISSION_MODE_AUTO || mode == TRANSMISSION_MODE_C1 ||
+          mode == TRANSMISSION_MODE_C3780) {
+        return TRUE;
+      }
+      break;
+#endif
+    default:
+      GST_FIXME ("No delsys/transmission-mode sanity checks implemented for "
+          "this delivery system");
+      return TRUE;
+  }
+  return FALSE;
+}
+
+static gboolean
 gst_dvbsrc_is_valid_modulation (guint delsys, guint mod)
 {
   /* FIXME: check valid modulations for other broadcast standards */
@@ -2028,6 +2095,18 @@
           mod == QAM_64 || mod == DQPSK)
         return TRUE;
       break;
+    case SYS_ATSC:
+      if (mod == VSB_8 || mod == VSB_16)
+        return TRUE;
+      break;
+    case SYS_DVBT:
+      if (mod == QPSK || mod == QAM_16 || mod == QAM_64)
+        return TRUE;
+      break;
+    case SYS_DVBT2:
+      if (mod == QPSK || mod == QAM_16 || mod == QAM_64 || mod == QAM_256)
+        return TRUE;
+      break;
     default:
       GST_FIXME ("No delsys/modulation sanity checks implemented for this "
           "delivery system");
@@ -2037,6 +2116,37 @@
 }
 
 static gboolean
+gst_dvbsrc_is_valid_bandwidth (guint delsys, guint bw)
+{
+  /* FIXME: check valid bandwidth values for other broadcast standards */
+
+  /* Bandwidth == 0 means auto, this should be valid for every delivery system
+   * for which the bandwidth parameter makes sense */
+
+  switch (delsys) {
+    case SYS_DVBT:
+      if (bw == 6000000 || bw == 7000000 || bw == 8000000 || bw == 0)
+        return TRUE;
+      break;
+    case SYS_DVBT2:
+      if (bw == 1172000 || bw == 5000000 || bw == 6000000 || bw == 0 ||
+          bw == 7000000 || bw == 8000000 || bw == 10000000) {
+        return TRUE;
+      }
+      break;
+    case SYS_ISDBT:
+      if (bw == 6000000 || bw == 0)
+        return TRUE;
+      break;
+    default:
+      GST_FIXME ("No bandwidth sanity checks implemented for this "
+          "delivery system");
+      return TRUE;
+  }
+  return FALSE;
+}
+
+static gboolean
 gst_dvbsrc_get_size (GstBaseSrc * src, guint64 * size)
 {
   return FALSE;
@@ -2055,7 +2165,7 @@
 gst_dvbsrc_output_frontend_stats (GstDvbSrc * src)
 {
   fe_status_t status;
-  guint16 snr, _signal;
+  guint16 snr, signal;
   guint32 ber, bad_blks;
   GstMessage *message;
   GstStructure *structure;
@@ -2063,36 +2173,41 @@
   gint err;
 
   LOOP_WHILE_EINTR (err, ioctl (fe_fd, FE_READ_STATUS, &status));
-  if (err)
-    goto error_out;
+  if (!err) {
+    structure = gst_structure_new ("dvb-frontend-stats",
+        "status", G_TYPE_INT, status,
+        "lock", G_TYPE_BOOLEAN, status & FE_HAS_LOCK, NULL);
+  } else {
+    GST_ERROR_OBJECT (src, "Error getting frontend status: '%s'",
+        g_strerror (errno));
+    return;
+  }
 
-  LOOP_WHILE_EINTR (err, ioctl (fe_fd, FE_READ_SIGNAL_STRENGTH, &_signal));
-  if (err)
-    goto error_out;
+  errno = 0;
+  LOOP_WHILE_EINTR (err, ioctl (fe_fd, FE_READ_SIGNAL_STRENGTH, &signal));
+  if (!err)
+    gst_structure_set (structure, "signal", G_TYPE_INT, signal, NULL);
 
   LOOP_WHILE_EINTR (err, ioctl (fe_fd, FE_READ_SNR, &snr));
-  if (err)
-    goto error_out;
+  if (!err)
+    gst_structure_set (structure, "snr", G_TYPE_INT, snr, NULL);
 
   LOOP_WHILE_EINTR (err, ioctl (fe_fd, FE_READ_BER, &ber));
-  if (err)
-    goto error_out;
+  if (!err)
+    gst_structure_set (structure, "ber", G_TYPE_INT, ber, NULL);
 
   LOOP_WHILE_EINTR (err, ioctl (fe_fd, FE_READ_UNCORRECTED_BLOCKS, &bad_blks));
-  if (err)
-    goto error_out;
+  if (!err)
+    gst_structure_set (structure, "unc", G_TYPE_INT, bad_blks, NULL);
 
-  structure = gst_structure_new ("dvb-frontend-stats", "status", G_TYPE_INT,
-      status, "signal", G_TYPE_INT, _signal, "snr", G_TYPE_INT, snr,
-      "ber", G_TYPE_INT, ber, "unc", G_TYPE_INT, bad_blks,
-      "lock", G_TYPE_BOOLEAN, status & FE_HAS_LOCK, NULL);
+  if (errno)
+    GST_WARNING_OBJECT (src,
+        "There were errors getting frontend status information: '%s'",
+        g_strerror (errno));
+
+  GST_INFO_OBJECT (src, "Frontend stats: %" GST_PTR_FORMAT, structure);
   message = gst_message_new_element (GST_OBJECT (src), structure);
   gst_element_post_message (GST_ELEMENT (src), message);
-  return;
-
-error_out:
-  GST_WARNING_OBJECT (src, "Failed to get statistics from the device: %s",
-      g_strerror (errno));
 }
 
 struct diseqc_cmd
@@ -2186,12 +2301,10 @@
 static gboolean
 gst_dvbsrc_tune_fe (GstDvbSrc * object)
 {
-  GstPoll *poll_set;
-  GstPollFD fe_fd;
   fe_status_t status;
   struct dtv_properties props;
   struct dtv_property dvb_prop[NUM_DTV_PROPS];
-  GstClockTimeDiff elapsed_time, timeout_step = 500 * GST_MSECOND;
+  GstClockTimeDiff elapsed_time;
   GstClockTime start;
   gint err;
 
@@ -2202,46 +2315,27 @@
     return FALSE;
   }
 
-  GST_DEBUG_OBJECT (object, "check delivery systems");
-
-  dvb_prop[0].cmd = DTV_ENUM_DELSYS;
-  props.num = 1;
-  props.props = dvb_prop;
-
-  LOOP_WHILE_EINTR (err, ioctl (object->fd_frontend, FE_GET_PROPERTY, &props));
-  if (err) {
-    GST_WARNING_OBJECT (object, "Error enumerating delsys: %s",
-        g_strerror (errno));
-
-    return FALSE;
-  }
-
-  /* If there's no delivery system set yet. Choose the
-   * last from the list of frontend supported ones */
-  if (object->delsys == SYS_UNDEFINED) {
-    object->delsys = object->best_guess_delsys;
-  } else if (!gst_dvbsrc_check_delsys (&dvb_prop[0], object->delsys)) {
-    GST_WARNING_OBJECT (object, "Delsys fail %u", object->delsys);
-    return FALSE;
+  /* If set, confirm the choosen delivery system is actually
+   * supported by the hardware */
+  if (object->delsys != SYS_UNDEFINED) {
+    GST_DEBUG_OBJECT (object, "Confirming delsys '%u' is supported",
+        object->delsys);
+    if (!g_list_find (object->supported_delsys,
+            GINT_TO_POINTER (object->delsys))) {
+      GST_WARNING_OBJECT (object, "Adapter does not support delsys '%u'",
+          object->delsys);
+      return FALSE;
+    }
   }
 
   gst_dvbsrc_unset_pes_filters (object);
 
   g_mutex_lock (&object->tune_mutex);
 
-  gst_poll_fd_init (&fe_fd);
-  fe_fd.fd = object->fd_frontend;
-  poll_set = gst_poll_new (TRUE);
-
-  if (!gst_poll_add_fd (poll_set, &fe_fd)) {
-    GST_WARNING_OBJECT (object, "Could not add frontend fd to poll set");
-    goto fail;
-  }
-
-  gst_poll_fd_ctl_read (poll_set, &fe_fd, TRUE);
-
   memset (dvb_prop, 0, sizeof (dvb_prop));
   dvb_prop[0].cmd = DTV_CLEAR;
+  props.num = 1;
+  props.props = dvb_prop;
 
   LOOP_WHILE_EINTR (err, ioctl (object->fd_frontend, FE_SET_PROPERTY, &props));
   if (err) {
@@ -2265,21 +2359,11 @@
   }
 
   g_signal_emit (object, gst_dvbsrc_signals[SIGNAL_TUNING_START], 0);
-
-  LOOP_WHILE_EINTR (err, ioctl (object->fd_frontend, FE_READ_STATUS, &status));
-  if (err) {
-    GST_WARNING_OBJECT (object, "Failed querying frontend for tuning status:"
-        " %s (%d)", g_strerror (errno), errno);
-    goto fail_with_signal;
-  }
-
-  /* signal locking loop */
   elapsed_time = 0;
   start = gst_util_get_timestamp ();
 
-  while (!(status & FE_HAS_LOCK) && elapsed_time <= object->tuning_timeout) {
-    if (gst_poll_wait (poll_set, timeout_step) == -1)
-      goto fail_with_signal;
+  /* signal locking loop */
+  do {
     LOOP_WHILE_EINTR (err, ioctl (object->fd_frontend, FE_READ_STATUS,
             &status));
     if (err) {
@@ -2292,9 +2376,9 @@
     if (object->tuning_timeout)
       elapsed_time = GST_CLOCK_DIFF (start, gst_util_get_timestamp ());
     GST_LOG_OBJECT (object,
-        "Tuning. Time elapsed %" GST_STIME_FORMAT " Limit %" G_GUINT64_FORMAT,
-        GST_STIME_ARGS (elapsed_time), object->tuning_timeout);
-  }
+        "Tuning. Time elapsed %" GST_STIME_FORMAT " Limit %" GST_TIME_FORMAT,
+        GST_STIME_ARGS (elapsed_time), GST_TIME_ARGS (object->tuning_timeout));
+  } while (!(status & FE_HAS_LOCK) && elapsed_time <= object->tuning_timeout);
 
   if (!(status & FE_HAS_LOCK)) {
     GST_WARNING_OBJECT (object,
@@ -2307,7 +2391,6 @@
   g_signal_emit (object, gst_dvbsrc_signals[SIGNAL_TUNING_DONE], 0);
   GST_DEBUG_OBJECT (object, "Successfully set frontend tuning params");
 
-  gst_poll_free (poll_set);
   g_mutex_unlock (&object->tune_mutex);
   return TRUE;
 
@@ -2315,11 +2398,80 @@
   g_signal_emit (object, gst_dvbsrc_signals[SIGNAL_TUNING_FAIL], 0);
 fail:
   GST_WARNING_OBJECT (object, "Could not tune to desired frequency");
-  gst_poll_free (poll_set);
   g_mutex_unlock (&object->tune_mutex);
   return FALSE;
 }
 
+static void
+gst_dvbsrc_guess_delsys (GstDvbSrc * object)
+{
+  GList *valid, *candidate;
+  guint alternatives;
+
+  if (g_list_length (object->supported_delsys) == 1) {
+    object->delsys = GPOINTER_TO_INT (object->supported_delsys->data);
+    GST_DEBUG_OBJECT (object, "Adapter supports a single delsys: '%u'",
+        object->delsys);
+    goto autoselection_done;
+  }
+
+  /* Automatic delivery system selection based on known-correct
+   * parameter combinations */
+
+  valid = g_list_copy (object->supported_delsys);
+
+  candidate = valid;
+  while (candidate) {
+    GList *next = candidate->next;
+    if (!gst_dvbsrc_is_valid_modulation (GPOINTER_TO_INT (candidate->data),
+            object->modulation) ||
+        !gst_dvbsrc_is_valid_trans_mode (GPOINTER_TO_INT (candidate->data),
+            object->transmission_mode) ||
+        !gst_dvbsrc_is_valid_bandwidth (GPOINTER_TO_INT (candidate->data),
+            object->bandwidth)) {
+      valid = g_list_delete_link (valid, candidate);
+    }
+    candidate = next;
+  }
+
+  alternatives = g_list_length (valid);
+
+  switch (alternatives) {
+    case 0:
+      GST_WARNING_OBJECT (object, "Delivery system autodetection provided no "
+          "valid alternative");
+      candidate = g_list_last (object->supported_delsys);
+      break;
+    case 1:
+      candidate = g_list_last (valid);
+      GST_DEBUG_OBJECT (object, "Delivery system autodetection provided only "
+          "one valid alternative: '%d'", GPOINTER_TO_INT (candidate->data));
+      break;
+    default:
+      /* More than one alternative. Selection based on best guess */
+      if (g_list_find (valid, GINT_TO_POINTER (SYS_DVBT)) &&
+          g_list_find (valid, GINT_TO_POINTER (SYS_DVBT2))) {
+        /* There is no way to tell one over the other when parameters seem valid
+         * for DVB-T and DVB-T2 and the adapter supports both. Reason to go with
+         * the former here is that, from experience, most DVB-T2 channels out
+         * there seem to use parameters that are not valid for DVB-T, like
+         * QAM_256 */
+        GST_WARNING_OBJECT (object, "Channel parameters valid for DVB-T and "
+            "DVB-T2. Choosing DVB-T");
+        candidate = g_list_find (valid, GINT_TO_POINTER (SYS_DVBT));
+      } else {
+        candidate = g_list_last (valid);
+      }
+  }
+
+  object->delsys = GPOINTER_TO_INT (candidate->data);
+  g_list_free (valid);
+
+autoselection_done:
+  GST_INFO_OBJECT (object, "Automatically selecting delivery system '%u'",
+      object->delsys);
+}
+
 static gboolean
 gst_dvbsrc_set_fe_params (GstDvbSrc * object, struct dtv_properties *props)
 {
@@ -2330,6 +2482,10 @@
   int n;
   gint err;
 
+  /* If delsys hasn't been set, ask for it to be automatically selected */
+  if (object->delsys == SYS_UNDEFINED)
+    gst_dvbsrc_guess_delsys (object);
+
   /* first 3 entries are reserved */
   n = 3;
 
@@ -2391,6 +2547,11 @@
         set_prop (props->props, &n, DTV_MODULATION, object->modulation);
 
       if (object->delsys == SYS_DVBS2) {
+        if (object->stream_id > 255) {
+          GST_WARNING_OBJECT (object, "Invalid (> 255) DVB-S2 stream ID '%d'. "
+              "Disabling sub-stream filtering", object->stream_id);
+          object->stream_id = NO_STREAM_ID_FILTER;
+        }
         set_prop (props->props, &n, DTV_PILOT, object->pilot);
         set_prop (props->props, &n, DTV_ROLLOFF, object->rolloff);
         set_prop (props->props, &n, DTV_STREAM_ID, object->stream_id);
@@ -2398,31 +2559,6 @@
       break;
     case SYS_DVBT:
     case SYS_DVBT2:
-      if (object->delsys == SYS_DVBT) {
-        if (object->transmission_mode != TRANSMISSION_MODE_AUTO &&
-            object->transmission_mode != TRANSMISSION_MODE_2K &&
-            object->transmission_mode != TRANSMISSION_MODE_8K) {
-          GST_WARNING_OBJECT (object, "Wrong DVB-T parameter combination: "
-              "transmission mode should be either AUTO, 2K or 8K");
-        }
-        if (object->bandwidth != 6000000 && object->bandwidth != 7000000 &&
-            object->bandwidth != 8000000) {
-          GST_WARNING_OBJECT (object, "Wrong DVB-T parameter value: bandwidth "
-              "is %d but only 6, 7 and 8 MHz are allowed", object->bandwidth);
-        }
-      } else if (object->delsys == SYS_DVBT2) {
-        if (object->transmission_mode != TRANSMISSION_MODE_AUTO &&
-            object->transmission_mode != TRANSMISSION_MODE_1K &&
-            object->transmission_mode != TRANSMISSION_MODE_2K &&
-            object->transmission_mode != TRANSMISSION_MODE_4K &&
-            object->transmission_mode != TRANSMISSION_MODE_8K &&
-            object->transmission_mode != TRANSMISSION_MODE_16K &&
-            object->transmission_mode != TRANSMISSION_MODE_32K) {
-          GST_WARNING_OBJECT (object, "Wrong DVB-T2 parameter combination: "
-              "transmission mode should be either AUTO, 1K, 2K, 4K, 8K, 16K "
-              "or 32K");
-        }
-      }
       set_prop (props->props, &n, DTV_BANDWIDTH_HZ, object->bandwidth);
       set_prop (props->props, &n, DTV_CODE_RATE_HP, object->code_rate_hp);
       set_prop (props->props, &n, DTV_CODE_RATE_LP, object->code_rate_lp);
@@ -2431,7 +2567,13 @@
           object->transmission_mode);
       set_prop (props->props, &n, DTV_GUARD_INTERVAL, object->guard_interval);
       set_prop (props->props, &n, DTV_HIERARCHY, object->hierarchy_information);
+
       if (object->delsys == SYS_DVBT2) {
+        if (object->stream_id > 255) {
+          GST_WARNING_OBJECT (object, "Invalid (> 255) DVB-T2 stream ID '%d'. "
+              "Disabling sub-stream filtering", object->stream_id);
+          object->stream_id = NO_STREAM_ID_FILTER;
+        }
         set_prop (props->props, &n, DTV_STREAM_ID, object->stream_id);
       }
 
@@ -2476,11 +2618,6 @@
             "layer C modulation is DQPSK but layer B modulation is different");
       }
 
-      if (object->bandwidth != 6000000) {
-        GST_WARNING_OBJECT (object, "Wrong ISDB-T parameter value: bandwidth "
-            "is %d but only 6 MHz is allowed", object->bandwidth);
-      }
-
       GST_INFO_OBJECT (object, "Tuning ISDB-T to %d", freq);
       set_prop (props->props, &n, DTV_BANDWIDTH_HZ, object->bandwidth);
       set_prop (props->props, &n, DTV_GUARD_INTERVAL, object->guard_interval);
@@ -2547,9 +2684,22 @@
       return FALSE;
   }
 
+  /* Informative checks */
   if (!gst_dvbsrc_is_valid_modulation (object->delsys, object->modulation)) {
     GST_WARNING_OBJECT (object,
-        "Attempting an invalid modulation/delsys combination");
+        "Attempting invalid modulation '%u' for delivery system '%u'",
+        object->modulation, object->delsys);
+  }
+  if (!gst_dvbsrc_is_valid_trans_mode (object->delsys,
+          object->transmission_mode)) {
+    GST_WARNING_OBJECT (object,
+        "Attempting invalid transmission mode '%u' for delivery system '%u'",
+        object->transmission_mode, object->delsys);
+  }
+  if (!gst_dvbsrc_is_valid_bandwidth (object->delsys, object->bandwidth)) {
+    GST_WARNING_OBJECT (object,
+        "Attempting invalid bandwidth '%u' for delivery system '%u'",
+        object->bandwidth, object->delsys);
   }
 
   set_prop (props->props, &n, DTV_TUNE, 0);
@@ -2611,6 +2761,12 @@
 
   GST_INFO_OBJECT (object, "Setting PES filter");
 
+  /* Set common params for all filters */
+  pes_filter.input = DMX_IN_FRONTEND;
+  pes_filter.output = DMX_OUT_TS_TAP;
+  pes_filter.pes_type = DMX_PES_OTHER;
+  pes_filter.flags = DMX_IMMEDIATE_START;
+
   for (i = 0; i < MAX_FILTERS; i++) {
     if (object->pids[i] == G_MAXUINT16)
       break;
@@ -2628,12 +2784,8 @@
     g_return_if_fail (*fd != -1);
 
     pes_filter.pid = pid;
-    pes_filter.input = DMX_IN_FRONTEND;
-    pes_filter.output = DMX_OUT_TS_TAP;
-    pes_filter.pes_type = DMX_PES_OTHER;
-    pes_filter.flags = DMX_IMMEDIATE_START;
 
-    GST_INFO_OBJECT (object, "Setting pes-filter, pid = %d, type = %d",
+    GST_INFO_OBJECT (object, "Setting PES filter: pid = %d, type = %d",
         pes_filter.pid, pes_filter.pes_type);
 
     LOOP_WHILE_EINTR (err, ioctl (*fd, DMX_SET_PES_FILTER, &pes_filter));
diff --git a/sys/dvb/gstdvbsrc.h b/sys/dvb/gstdvbsrc.h
index 27a27b7..e504ea8 100644
--- a/sys/dvb/gstdvbsrc.h
+++ b/sys/dvb/gstdvbsrc.h
@@ -64,8 +64,8 @@
   GMutex tune_mutex;
   gboolean need_tune;
 
+  GList * supported_delsys;
   guchar delsys;
-  guchar best_guess_delsys;
 
   int adapter_number;
   int frontend_number;
diff --git a/sys/dvb/parsechannels.c b/sys/dvb/parsechannels.c
index 1d30580..e39cd94 100644
--- a/sys/dvb/parsechannels.c
+++ b/sys/dvb/parsechannels.c
@@ -37,6 +37,20 @@
 
 #include <linux/dvb/frontend.h>
 
+typedef enum
+{
+  CHANNEL_CONF_FORMAT_NONE,
+  CHANNEL_CONF_FORMAT_DVBV5,
+  CHANNEL_CONF_FORMAT_ZAP
+} GstDvbChannelConfFormat;
+
+static gboolean parse_and_configure_from_v5_conf_file (GstElement * dvbbasebin,
+    const gchar * filename, const gchar * channel_name, GError ** error);
+static gboolean parse_and_configure_from_zap_conf_file (GstElement * dvbbasebin,
+    const gchar * filename, const gchar * channel_name, GError ** error);
+static GstDvbChannelConfFormat detect_file_format (const gchar * filename);
+
+
 GST_DEBUG_CATEGORY_EXTERN (dvb_base_bin_debug);
 #define GST_CAT_DEFAULT dvb_base_bin_debug
 
@@ -45,6 +59,342 @@
  * Detect when the file changed on disk
  */
 
+typedef gboolean (*GstDvbV5ChannelsConfPropSetFunction) (GstElement *
+    dvbbasebin, const gchar * property, GKeyFile * kf,
+    const gchar * channel_name, const gchar * key);
+
+static gint
+gst_dvb_base_bin_find_string_in_array (const gchar ** array, const gchar * str)
+{
+  gint i = 0;
+  const gchar *cur;
+  while ((cur = array[i])) {
+    if (strcmp (cur, str) == 0)
+      return i;
+
+    i++;
+  }
+
+  return -1;
+}
+
+static gboolean
+gst_dvb_base_bin_conf_set_property_from_string_array (GstElement * dvbbasebin,
+    const gchar * property, GKeyFile * kf, const gchar * channel_name,
+    const gchar * key, const gchar ** strings, gint default_value)
+{
+  gchar *str;
+  gint v;
+
+  str = g_key_file_get_string (kf, channel_name, key, NULL);
+  v = gst_dvb_base_bin_find_string_in_array (strings, str);
+  if (v == -1) {
+    GST_WARNING_OBJECT (dvbbasebin, "Unexpected value '%s' for property "
+        "'%s', using default: %d", str, property, default_value);
+    v = default_value;
+  }
+
+  g_free (str);
+  g_object_set (dvbbasebin, property, v, NULL);
+  return TRUE;
+}
+
+static gboolean
+gst_dvb_base_bin_conf_set_string (GstElement * dvbbasebin,
+    const gchar * property, GKeyFile * kf, const gchar * channel_name,
+    const gchar * key)
+{
+  gchar *str;
+
+  str = g_key_file_get_string (kf, channel_name, key, NULL);
+  if (!str) {
+    GST_WARNING_OBJECT (dvbbasebin,
+        "Could not get value for '%s' on channel '%s'", key, channel_name);
+    return FALSE;
+  }
+
+  g_object_set (dvbbasebin, property, str, NULL);
+  g_free (str);
+  return TRUE;
+}
+
+static gboolean
+gst_dvb_base_bin_conf_set_uint (GstElement * dvbbasebin, const gchar * property,
+    GKeyFile * kf, const gchar * channel_name, const gchar * key)
+{
+  guint64 v;
+
+  v = g_key_file_get_uint64 (kf, channel_name, key, NULL);
+  if (!v) {
+    GST_WARNING_OBJECT (dvbbasebin,
+        "Could not get value for '%s' on channel '%s'", key, channel_name);
+    return FALSE;
+  }
+
+  g_object_set (dvbbasebin, property, (guint) v, NULL);
+  return TRUE;
+}
+
+static gboolean
+gst_dvb_base_bin_conf_set_int (GstElement * dvbbasebin, const gchar * property,
+    GKeyFile * kf, const gchar * channel_name, const gchar * key)
+{
+  gint v;
+
+  v = g_key_file_get_integer (kf, channel_name, key, NULL);
+  if (!v) {
+    GST_WARNING_OBJECT (dvbbasebin,
+        "Could not get value for '%s' on channel '%s'", key, channel_name);
+    return FALSE;
+  }
+
+  g_object_set (dvbbasebin, property, v, NULL);
+  return TRUE;
+}
+
+static gboolean
+gst_dvb_base_bin_conf_set_inversion (GstElement * dvbbasebin,
+    const gchar * property, GKeyFile * kf, const gchar * channel_name,
+    const gchar * key)
+{
+  gchar *str;
+  gint v;
+
+  str = g_key_file_get_string (kf, channel_name, key, NULL);
+  if (!str) {
+    GST_WARNING_OBJECT (dvbbasebin,
+        "Could not get value for '%s' on channel '%s'", key, channel_name);
+    return FALSE;
+  }
+
+  if (strcmp (str, "AUTO") == 0)
+    v = 2;
+  else if (strcmp (str, "ON") == 0)
+    v = 1;
+  else
+    v = 0;                      /* OFF */
+
+  g_free (str);
+  g_object_set (dvbbasebin, property, v, NULL);
+  return TRUE;
+}
+
+static gboolean
+gst_dvb_base_bin_conf_set_guard (GstElement * dvbbasebin,
+    const gchar * property, GKeyFile * kf, const gchar * channel_name,
+    const gchar * key)
+{
+  const gchar *guards[] = {
+    "32", "16", "8", "4", "auto",
+    "128", "19/128", "19/256",
+    "PN420", "PN595", "PN945", NULL
+  };
+  return gst_dvb_base_bin_conf_set_property_from_string_array (dvbbasebin,
+      property, kf, channel_name, key, guards, 4);
+}
+
+static gboolean
+gst_dvb_base_bin_conf_set_trans_mode (GstElement * dvbbasebin,
+    const gchar * property, GKeyFile * kf, const gchar * channel_name,
+    const gchar * key)
+{
+  const gchar *trans_modes[] = {
+    "2K", "8K", "AUTO", "4K", "1K",
+    "16K", "32K", "C1", "C3780", NULL
+  };
+  return gst_dvb_base_bin_conf_set_property_from_string_array (dvbbasebin,
+      property, kf, channel_name, key, trans_modes, 2);
+}
+
+static gboolean
+gst_dvb_base_bin_conf_set_code_rate (GstElement * dvbbasebin,
+    const gchar * property, GKeyFile * kf, const gchar * channel_name,
+    const gchar * key)
+{
+  const gchar *code_rates[] = {
+    "NONE", "1/2", "2/3", "3/4", "4/5",
+    "5/6", "6/7", "7/8", "8/9", "AUTO",
+    "3/5", "9/10", "2/5", NULL
+  };
+  return gst_dvb_base_bin_conf_set_property_from_string_array (dvbbasebin,
+      property, kf, channel_name, key, code_rates, 9);
+}
+
+static gboolean
+gst_dvb_base_bin_conf_set_delsys (GstElement * dvbbasebin,
+    const gchar * property, GKeyFile * kf, const gchar * channel_name,
+    const gchar * key)
+{
+  const gchar *delsys[] = {
+    "UNDEFINED", "DVBCA", "DVBCB", "DVBT", "DSS",
+    "DVBS", "DVBS2", "DVBH", "ISDBT", "ISDBS",
+    "ISDBC", "ATSC", "ATSCMH", "DTMB", "CMMB",
+    "DAB", "DVBT2", "TURBO", "DVBCC", NULL
+  };
+  return gst_dvb_base_bin_conf_set_property_from_string_array (dvbbasebin,
+      property, kf, channel_name, key, delsys, 0);
+}
+
+static gboolean
+gst_dvb_base_bin_conf_set_modulation (GstElement * dvbbasebin,
+    const gchar * property, GKeyFile * kf, const gchar * channel_name,
+    const gchar * key)
+{
+  const gchar *modulations[] = {
+    "QPSK", "QAM/16", "QAM/32", "QAM/64",
+    "QAM/128", "QAM/256", "QAM/AUTO", "VSB/8",
+    "VSB/16", "PSK/8", "APSK/16", "APSK/32",
+    "DQPSK", "QAM/4_NR", NULL
+  };
+  return gst_dvb_base_bin_conf_set_property_from_string_array (dvbbasebin,
+      property, kf, channel_name, key, modulations, 6);
+}
+
+typedef struct
+{
+  const gchar *conf_property;
+  const gchar *elem_property;
+  GstDvbV5ChannelsConfPropSetFunction set_func;
+} GstDvbV5ChannelsConfToPropertyMap;
+
+GstDvbV5ChannelsConfToPropertyMap dvbv5_prop_map[] = {
+  {"SERVICE_ID", "program-numbers", gst_dvb_base_bin_conf_set_string},
+  {"FREQUENCY", "frequency", gst_dvb_base_bin_conf_set_uint},
+  {"BANDWIDTH_HZ", "bandwidth-hz", gst_dvb_base_bin_conf_set_uint},
+  {"INVERSION", "inversion", gst_dvb_base_bin_conf_set_inversion},
+  {"GUARD_INTERVAL", "guard", gst_dvb_base_bin_conf_set_guard},
+  {"TRANSMISSION_MODE", "trans-mode", gst_dvb_base_bin_conf_set_trans_mode},
+  {"MODULATION", "modulation", gst_dvb_base_bin_conf_set_modulation},
+  {"ISDBT_LAYER_ENABLED", "isdbt-layer-enabled",
+      gst_dvb_base_bin_conf_set_uint},
+  {"ISDBT_PARTIAL_RECEPTION", "isdbt-partial-reception",
+      gst_dvb_base_bin_conf_set_int},
+  {"ISDBT_SOUND_BROADCASTING", "isdbt-sound-broadcasting",
+      gst_dvb_base_bin_conf_set_int},
+  {"ISDBT_SB_SUBCHANNEL_ID", "isdbt-sb-subchannel-id",
+      gst_dvb_base_bin_conf_set_int},
+  {"ISDBT_SB_SEGMENT_IDX", "isdbt-sb-segment-idx",
+      gst_dvb_base_bin_conf_set_int},
+  {"ISDBT_SB_SEGMENT_COUNT", "isdbt-sb-segment-count", gst_dvb_base_bin_conf_set_int},  /* Range in files start from 0, property starts from 1 */
+  {"ISDBT_LAYERA_FEC", "isdbt-layera-fec", gst_dvb_base_bin_conf_set_code_rate},
+  {"ISDBT_LAYERA_MODULATION", "isdbt-layera-modulation",
+      gst_dvb_base_bin_conf_set_modulation},
+  {"ISDBT_LAYERA_SEGMENT_COUNT", "isdbt-layera-segment-count",
+      gst_dvb_base_bin_conf_set_int},
+  {"ISDBT_LAYERA_TIME_INTERLEAVING", "isdbt-layera-time-interleaving",
+      gst_dvb_base_bin_conf_set_int},
+  {"ISDBT_LAYERB_FEC", "isdbt-layerb-fec", gst_dvb_base_bin_conf_set_code_rate},
+  {"ISDBT_LAYERB_MODULATION", "isdbt-layerb-modulation",
+      gst_dvb_base_bin_conf_set_modulation},
+  {"ISDBT_LAYERB_SEGMENT_COUNT", "isdbt-layerb-segment-count",
+      gst_dvb_base_bin_conf_set_int},
+  {"ISDBT_LAYERB_TIME_INTERLEAVING", "isdbt-layerb-time-interleaving",
+      gst_dvb_base_bin_conf_set_int},
+  {"ISDBT_LAYERC_FEC", "isdbt-layerc-fec", gst_dvb_base_bin_conf_set_code_rate},
+  {"ISDBT_LAYERC_MODULATION", "isdbt-layerc-modulation",
+      gst_dvb_base_bin_conf_set_modulation},
+  {"ISDBT_LAYERC_SEGMENT_COUNT", "isdbt-layerc-segment-count",
+      gst_dvb_base_bin_conf_set_int},
+  {"ISDBT_LAYERC_TIME_INTERLEAVING", "isdbt-layerc-time-interleaving",
+      gst_dvb_base_bin_conf_set_int},
+  {"DELIVERY_SYSTEM", "delsys", gst_dvb_base_bin_conf_set_delsys},
+  {NULL,}
+};
+
+static gboolean
+parse_and_configure_from_v5_conf_file (GstElement * dvbbasebin,
+    const gchar * filename, const gchar * channel_name, GError ** error)
+{
+  GKeyFile *keyfile;
+  gchar **keys, **keys_p;
+  GError *err = NULL;
+
+  keyfile = g_key_file_new ();
+  if (!g_key_file_load_from_file (keyfile, filename, G_KEY_FILE_NONE, &err))
+    goto load_error;
+
+  if (!g_key_file_has_group (keyfile, channel_name))
+    goto unknown_channel;
+
+  keys = g_key_file_get_keys (keyfile, channel_name, NULL, &err);
+  if (!keys)
+    goto no_properties;
+
+  keys_p = keys;
+  while (*keys_p) {
+    const gchar *k = *keys_p;
+    const GstDvbV5ChannelsConfToPropertyMap *map_entry = dvbv5_prop_map;
+    gboolean property_found = FALSE;
+
+    GST_LOG_OBJECT (dvbbasebin, "Setting property %s", k);
+
+    while (map_entry->conf_property) {
+      if (strcmp (map_entry->conf_property, k) == 0) {
+        if (!map_entry->set_func (dvbbasebin, map_entry->elem_property, keyfile,
+                channel_name, k))
+          goto property_error;
+        property_found = TRUE;
+        break;
+      }
+      map_entry++;
+    }
+
+    if (!property_found)
+      GST_WARNING_OBJECT (dvbbasebin, "Failed to map property '%s'", k);
+
+    keys_p++;
+  }
+
+  GST_DEBUG_OBJECT (dvbbasebin, "Successfully parsed channel configuration "
+      "file '%s'", filename);
+  g_strfreev (keys);
+  g_key_file_unref (keyfile);
+  return TRUE;
+
+load_error:
+  if ((err->domain == G_FILE_ERROR && err->code == G_FILE_ERROR_NOENT) ||
+      (err->domain == G_KEY_FILE_ERROR
+          && err->code == G_KEY_FILE_ERROR_NOT_FOUND)) {
+    g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_NOT_FOUND,
+        _("Couldn't find DVB channel configuration file"));
+  } else {
+    g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_READ,
+        _("Couldn't load DVB channel configuration file: %s"), err->message);
+  }
+  g_clear_error (&err);
+  return FALSE;
+
+unknown_channel:
+  {
+    /* FIXME: is channel name guaranteed to be ASCII or UTF-8? */
+    g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_NOT_FOUND,
+        _("Couldn't find details for DVB channel %s"), channel_name);
+    g_key_file_unref (keyfile);
+    g_clear_error (&err);
+    return FALSE;
+  }
+
+no_properties:
+  {
+    /* FIXME: is channel name guaranteed to be ASCII or UTF-8? */
+    g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_NOT_FOUND,
+        _("No properties for the DVB channel %s"), channel_name);
+    g_key_file_unref (keyfile);
+    g_clear_error (&err);
+    return FALSE;
+  }
+
+property_error:
+  {
+    /* FIXME: is channel name guaranteed to be ASCII or UTF-8? */
+    g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_FAILED,
+        _("Failed to set properties for the DVB channel %s"), channel_name);
+    g_key_file_unref (keyfile);
+    g_clear_error (&err);
+    return FALSE;
+  }
+}
+
 /* this will do zap style channels.conf only for the moment */
 static GHashTable *
 parse_channels_conf_from_file (GstElement * dvbbasebin, const gchar * filename,
@@ -162,7 +512,7 @@
 open_fail:
   if (err->code == G_FILE_ERROR_NOENT) {
     g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_NOT_FOUND,
-        _("Couldn't find DVB channel configuration file"));
+        _("Couldn't find DVB channel configuration file: %s"), err->message);
   } else {
     g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_READ,
         _("Couldn't load DVB channel configuration file: %s"), err->message);
@@ -192,23 +542,26 @@
   g_hash_table_foreach_remove (channels, remove_channel_from_hash, NULL);
 }
 
-gboolean
-set_properties_for_channel (GstElement * dvbbasebin,
-    const gchar * channel_name, GError ** error)
+static gboolean
+parse_and_configure_from_zap_conf_file (GstElement * dvbbasebin,
+    const gchar * filename, const gchar * channel_name, GError ** error)
 {
   gboolean ret = FALSE;
   GHashTable *channels, *params;
-  gchar *filename;
   gchar *type;
-  const gchar *adapter;
 
-  filename = g_strdup (g_getenv ("GST_DVB_CHANNELS_CONF"));
-  if (filename == NULL) {
-    filename = g_build_filename (g_get_user_config_dir (),
-        "gstreamer-" GST_API_VERSION, "dvb-channels.conf", NULL);
-  }
+  /**
+   * Assumptions are made here about a format that is loosely
+   * defined. Particularly, we assume a given delivery system
+   * out of counting the number of fields per line. dvbsrc has
+   * smarter code to auto-detect a delivery system based on
+   * known-correct combinations of parameters so if you ever
+   * encounter cases where the delivery system is being
+   * wrongly set here, just remove the offending
+   * g_object_set line and let dvbsrc work his magic out.
+   */
+
   channels = parse_channels_conf_from_file (dvbbasebin, filename, error);
-  g_free (filename);
 
   if (!channels)
     goto beach;
@@ -221,24 +574,19 @@
   g_object_set (dvbbasebin, "program-numbers",
       g_hash_table_lookup (params, "sid"), NULL);
   /* check if it is terrestrial or satellite */
-  adapter = g_getenv ("GST_DVB_ADAPTER");
-  if (adapter)
-    g_object_set (dvbbasebin, "adapter", atoi (adapter), NULL);
   g_object_set (dvbbasebin, "frequency",
       atoi (g_hash_table_lookup (params, "frequency")), NULL);
   type = g_hash_table_lookup (params, "type");
   if (strcmp (type, "terrestrial") == 0) {
     gchar *val;
 
-    g_object_set (dvbbasebin, "delsys", SYS_DVBT, NULL);
-
     val = g_hash_table_lookup (params, "inversion");
     if (strcmp (val, "INVERSION_OFF") == 0)
-      g_object_set (dvbbasebin, "inversion", 0, NULL);
+      g_object_set (dvbbasebin, "inversion", INVERSION_OFF, NULL);
     else if (strcmp (val, "INVERSION_ON") == 0)
-      g_object_set (dvbbasebin, "inversion", 1, NULL);
+      g_object_set (dvbbasebin, "inversion", INVERSION_ON, NULL);
     else
-      g_object_set (dvbbasebin, "inversion", 2, NULL);
+      g_object_set (dvbbasebin, "inversion", INVERSION_AUTO, NULL);
 
     val = g_hash_table_lookup (params, "bandwidth");
     if (strcmp (val, "BANDWIDTH_8_MHZ") == 0)
@@ -247,6 +595,12 @@
       g_object_set (dvbbasebin, "bandwidth", 1, NULL);
     else if (strcmp (val, "BANDWIDTH_6_MHZ") == 0)
       g_object_set (dvbbasebin, "bandwidth", 2, NULL);
+    else if (strcmp (val, "BANDWIDTH_5_MHZ") == 0)
+      g_object_set (dvbbasebin, "bandwidth", 4, NULL);
+    else if (strcmp (val, "BANDWIDTH_10_MHZ") == 0)
+      g_object_set (dvbbasebin, "bandwidth", 5, NULL);
+    else if (strcmp (val, "BANDWIDTH_1_712_MHZ") == 0)
+      g_object_set (dvbbasebin, "bandwidth", 6, NULL);
     else
       g_object_set (dvbbasebin, "bandwidth", 3, NULL);
 
@@ -451,3 +805,82 @@
     return FALSE;
   }
 }
+
+static GstDvbChannelConfFormat
+detect_file_format (const gchar * filename)
+{
+  gchar *contents;
+  gchar **lines;
+  gchar **line;
+  GstDvbChannelConfFormat ret = CHANNEL_CONF_FORMAT_NONE;
+
+  if (!g_file_get_contents (filename, &contents, NULL, NULL))
+    return ret;
+
+  lines = g_strsplit (contents, "\n", 0);
+  line = lines;
+
+  while (*line) {
+    if (g_str_has_prefix (*line, "[") && g_str_has_suffix (*line, "]")) {
+      ret = CHANNEL_CONF_FORMAT_DVBV5;
+      break;
+    } else if (g_strrstr (*line, ":")) {
+      ret = CHANNEL_CONF_FORMAT_ZAP;
+      break;
+    }
+    line++;
+  }
+
+  g_strfreev (lines);
+  g_free (contents);
+  return ret;
+}
+
+gboolean
+set_properties_for_channel (GstElement * dvbbasebin,
+    const gchar * channel_name, GError ** error)
+{
+  gboolean ret = FALSE;
+  gchar *filename;
+  const gchar *adapter;
+
+  filename = g_strdup (g_getenv ("GST_DVB_CHANNELS_CONF"));
+  if (filename == NULL) {
+    filename = g_build_filename (g_get_user_config_dir (),
+        "gstreamer-" GST_API_VERSION, "dvb-channels.conf", NULL);
+  }
+
+  adapter = g_getenv ("GST_DVB_ADAPTER");
+  if (adapter)
+    g_object_set (dvbbasebin, "adapter", atoi (adapter), NULL);
+
+  switch (detect_file_format (filename)) {
+    case CHANNEL_CONF_FORMAT_DVBV5:
+      if (!parse_and_configure_from_v5_conf_file (dvbbasebin, filename,
+              channel_name, error)) {
+        GST_WARNING_OBJECT (dvbbasebin, "Could not parse libdvbv5 channel "
+            "configuration file '%s'", filename);
+      } else {
+        GST_INFO_OBJECT (dvbbasebin, "Parsed libdvbv5 channel configuration "
+            "file");
+        ret = TRUE;
+      }
+      break;
+    case CHANNEL_CONF_FORMAT_ZAP:
+      if (!parse_and_configure_from_zap_conf_file (dvbbasebin, filename,
+              channel_name, error)) {
+        GST_WARNING_OBJECT (dvbbasebin, "Could not parse ZAP channel "
+            "configuration file '%s'", filename);
+      } else {
+        GST_INFO_OBJECT (dvbbasebin, "Parsed ZAP channel configuration file");
+        ret = TRUE;
+      }
+      break;
+    default:
+      GST_WARNING_OBJECT (dvbbasebin, "Unknown configuration file format. "
+          "Can not get parameters for channel");
+  }
+
+  g_free (filename);
+  return ret;
+}
diff --git a/sys/fbdev/Makefile.in b/sys/fbdev/Makefile.in
index 9bd0561..554ba4d 100644
--- a/sys/fbdev/Makefile.in
+++ b/sys/fbdev/Makefile.in
@@ -302,6 +302,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -323,6 +325,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -372,6 +376,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -517,6 +523,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -643,8 +651,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,8 +693,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/fbdev/gstfbdevsink.c b/sys/fbdev/gstfbdevsink.c
index b559a7e..166c543 100644
--- a/sys/fbdev/gstfbdevsink.c
+++ b/sys/fbdev/gstfbdevsink.c
@@ -34,8 +34,14 @@
 #include <fcntl.h>
 #include <sys/ioctl.h>
 #include <sys/mman.h>
+
+#ifdef HAVE_UNISTD_H
 #include <unistd.h>
-#include "_stdint.h"
+#endif
+
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
 
 #include "gstfbdevsink.h"
 
@@ -227,7 +233,8 @@
   gst_structure_get_int (structure, "height", &fbdevsink->height);
 
   /* calculate centering and scanlengths for the video */
-  fbdevsink->bytespp = fbdevsink->fixinfo.line_length / fbdevsink->varinfo.xres_virtual;
+  fbdevsink->bytespp =
+      fbdevsink->fixinfo.line_length / fbdevsink->varinfo.xres_virtual;
 
   fbdevsink->cx = ((int) fbdevsink->varinfo.xres - fbdevsink->width) / 2;
   if (fbdevsink->cx < 0)
@@ -432,8 +439,7 @@
       "Sink/Video", "Linux framebuffer videosink",
       "Sean D'Epagnier <sean@depagnier.com>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_template);
 }
 
 static void
diff --git a/sys/kms/Makefile.am b/sys/kms/Makefile.am
new file mode 100644
index 0000000..9b12c72
--- /dev/null
+++ b/sys/kms/Makefile.am
@@ -0,0 +1,41 @@
+plugin_LTLIBRARIES = libgstkmssink.la
+
+libgstkmssink_la_SOURCES = 			\
+	gstkmssink.c				\
+	gstkmsutils.c				\
+	gstkmsallocator.c			\
+	gstkmsbufferpool.c			\
+	$(NUL)
+
+libgstkmssink_la_CFLAGS = 			\
+	$(GST_PLUGINS_BASE_CFLAGS) 		\
+	$(GST_BASE_CFLAGS) 			\
+	$(GST_VIDEO_CFLAGS)			\
+	$(GST_ALLOCATORS_CFLAGS)		\
+	$(GST_CFLAGS) 				\
+	$(DRM_CFLAGS) 				\
+	$(NULL)
+
+libgstkmssink_la_LIBADD = 			\
+	$(GST_PLUGINS_BASE_LIBS) 		\
+	$(GST_BASE_LIBS) 			\
+	$(GST_VIDEO_LIBS)			\
+	$(GST_ALLOCATORS_LIBS)			\
+	$(GST_LIBS) 				\
+	$(DRM_LIBS) 				\
+	$(NULL)
+
+libgstkmssink_la_LDFLAGS = 			\
+	$(GST_PLUGIN_LDFLAGS)			\
+	$(NULL)
+
+libgstkmssink_la_LIBTOOLFLAGS = 		\
+	$(GST_PLUGIN_LIBTOOLFLAGS) 		\
+	$(NULL)
+
+noinst_HEADERS = 				\
+	gstkmssink.h 				\
+	gstkmsutils.h				\
+	gstkmsallocator.h			\
+	gstkmsbufferpool.h			\
+	$(NULL)
diff --git a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.in b/sys/kms/Makefile.in
similarity index 68%
copy from tests/examples/gl/gtk/gtkvideooverlay/Makefile.in
copy to sys/kms/Makefile.in
index aef9ed4..0201bdc 100644
--- a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.in
+++ b/sys/kms/Makefile.in
@@ -14,6 +14,7 @@
 
 @SET_MAKE@
 
+
 VPATH = @srcdir@
 am__is_gnu_make = { \
   if test -z '$(MAKELEVEL)'; then \
@@ -89,8 +90,7 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-noinst_PROGRAMS = gtkvideooverlay$(EXEEXT)
-subdir = tests/examples/gl/gtk/gtkvideooverlay
+subdir = sys/kms
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -127,27 +127,59 @@
 	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
+	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-am_gtkvideooverlay_OBJECTS = gtkvideooverlay-main.$(OBJEXT)
-gtkvideooverlay_OBJECTS = $(am_gtkvideooverlay_OBJECTS)
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
 am__DEPENDENCIES_1 =
-gtkvideooverlay_DEPENDENCIES = ../libgstgtkhelper.la \
+libgstkmssink_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1)
+am_libgstkmssink_la_OBJECTS = libgstkmssink_la-gstkmssink.lo \
+	libgstkmssink_la-gstkmsutils.lo \
+	libgstkmssink_la-gstkmsallocator.lo \
+	libgstkmssink_la-gstkmsbufferpool.lo
+libgstkmssink_la_OBJECTS = $(am_libgstkmssink_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 am__v_lt_1 = 
-gtkvideooverlay_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
-	$(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+libgstkmssink_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(libgstkmssink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+	$(CCLD) $(libgstkmssink_la_CFLAGS) $(CFLAGS) \
+	$(libgstkmssink_la_LDFLAGS) $(LDFLAGS) -o $@
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -164,31 +196,32 @@
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
 am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_@AM_V@)
-am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
-am__v_CXX_0 = @echo "  CXX     " $@;
-am__v_CXX_1 = 
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo "  CXXLD   " $@;
-am__v_CXXLD_1 = 
-SOURCES = $(gtkvideooverlay_SOURCES)
-DIST_SOURCES = $(gtkvideooverlay_SOURCES)
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(libgstkmssink_la_SOURCES)
+DIST_SOURCES = $(libgstkmssink_la_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+HEADERS = $(noinst_HEADERS)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 # Read a list of newline-separated strings from the standard input,
 # and print each of them once, without duplicates.  Input order is
@@ -274,6 +307,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -295,6 +330,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -344,6 +381,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -489,6 +528,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -615,8 +656,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -659,8 +698,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -749,19 +793,51 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 wayland_scanner = @wayland_scanner@
-gtkvideooverlay_SOURCES = main.cpp
-gtkvideooverlay_CXXFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
-	$(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
-	$(GL_CFLAGS) $(GTK3_CFLAGS)  $(X11_CFLAGS)
+plugin_LTLIBRARIES = libgstkmssink.la
+libgstkmssink_la_SOURCES = \
+	gstkmssink.c				\
+	gstkmsutils.c				\
+	gstkmsallocator.c			\
+	gstkmsbufferpool.c			\
+	$(NUL)
 
-gtkvideooverlay_LDADD = ../libgstgtkhelper.la \
-	$(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
-	$(GL_LIBS) -lgstvideo-$(GST_API_VERSION) $(X11_LIBS)
+libgstkmssink_la_CFLAGS = \
+	$(GST_PLUGINS_BASE_CFLAGS) 		\
+	$(GST_BASE_CFLAGS) 			\
+	$(GST_VIDEO_CFLAGS)			\
+	$(GST_ALLOCATORS_CFLAGS)		\
+	$(GST_CFLAGS) 				\
+	$(DRM_CFLAGS) 				\
+	$(NULL)
+
+libgstkmssink_la_LIBADD = \
+	$(GST_PLUGINS_BASE_LIBS) 		\
+	$(GST_BASE_LIBS) 			\
+	$(GST_VIDEO_LIBS)			\
+	$(GST_ALLOCATORS_LIBS)			\
+	$(GST_LIBS) 				\
+	$(DRM_LIBS) 				\
+	$(NULL)
+
+libgstkmssink_la_LDFLAGS = \
+	$(GST_PLUGIN_LDFLAGS)			\
+	$(NULL)
+
+libgstkmssink_la_LIBTOOLFLAGS = \
+	$(GST_PLUGIN_LIBTOOLFLAGS) 		\
+	$(NULL)
+
+noinst_HEADERS = \
+	gstkmssink.h 				\
+	gstkmsutils.h				\
+	gstkmsallocator.h			\
+	gstkmsbufferpool.h			\
+	$(NULL)
 
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .cpp .lo .o .obj
+.SUFFIXES: .c .lo .o .obj
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -771,9 +847,9 @@
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/gl/gtk/gtkvideooverlay/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sys/kms/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu tests/examples/gl/gtk/gtkvideooverlay/Makefile
+	  $(AUTOMAKE) --gnu sys/kms/Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -792,18 +868,43 @@
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 
-clean-noinstPROGRAMS:
-	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
-	echo " rm -f" $$list; \
-	rm -f $$list || exit $$?; \
-	test -n "$(EXEEXT)" || exit 0; \
-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-	echo " rm -f" $$list; \
-	rm -f $$list
+install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
+	}
 
-gtkvideooverlay$(EXEEXT): $(gtkvideooverlay_OBJECTS) $(gtkvideooverlay_DEPENDENCIES) $(EXTRA_gtkvideooverlay_DEPENDENCIES) 
-	@rm -f gtkvideooverlay$(EXEEXT)
-	$(AM_V_CXXLD)$(gtkvideooverlay_LINK) $(gtkvideooverlay_OBJECTS) $(gtkvideooverlay_LDADD) $(LIBS)
+uninstall-pluginLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
+	done
+
+clean-pluginLTLIBRARIES:
+	-test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
+	@list='$(plugin_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+libgstkmssink.la: $(libgstkmssink_la_OBJECTS) $(libgstkmssink_la_DEPENDENCIES) $(EXTRA_libgstkmssink_la_DEPENDENCIES) 
+	$(AM_V_CCLD)$(libgstkmssink_la_LINK) -rpath $(plugindir) $(libgstkmssink_la_OBJECTS) $(libgstkmssink_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -811,45 +912,62 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkvideooverlay-main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstkmssink_la-gstkmsallocator.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstkmssink_la-gstkmsbufferpool.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstkmssink_la-gstkmssink.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstkmssink_la-gstkmsutils.Plo@am__quote@
 
-.cpp.o:
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+.c.o:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
 
-.cpp.obj:
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+.c.obj:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
-.cpp.lo:
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+.c.lo:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
-gtkvideooverlay-main.o: main.cpp
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -MT gtkvideooverlay-main.o -MD -MP -MF $(DEPDIR)/gtkvideooverlay-main.Tpo -c -o gtkvideooverlay-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/gtkvideooverlay-main.Tpo $(DEPDIR)/gtkvideooverlay-main.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='main.cpp' object='gtkvideooverlay-main.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -c -o gtkvideooverlay-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
+libgstkmssink_la-gstkmssink.lo: gstkmssink.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstkmssink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstkmssink_la_CFLAGS) $(CFLAGS) -MT libgstkmssink_la-gstkmssink.lo -MD -MP -MF $(DEPDIR)/libgstkmssink_la-gstkmssink.Tpo -c -o libgstkmssink_la-gstkmssink.lo `test -f 'gstkmssink.c' || echo '$(srcdir)/'`gstkmssink.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstkmssink_la-gstkmssink.Tpo $(DEPDIR)/libgstkmssink_la-gstkmssink.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstkmssink.c' object='libgstkmssink_la-gstkmssink.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstkmssink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstkmssink_la_CFLAGS) $(CFLAGS) -c -o libgstkmssink_la-gstkmssink.lo `test -f 'gstkmssink.c' || echo '$(srcdir)/'`gstkmssink.c
 
-gtkvideooverlay-main.obj: main.cpp
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -MT gtkvideooverlay-main.obj -MD -MP -MF $(DEPDIR)/gtkvideooverlay-main.Tpo -c -o gtkvideooverlay-main.obj `if test -f 'main.cpp'; then $(CYGPATH_W) 'main.cpp'; else $(CYGPATH_W) '$(srcdir)/main.cpp'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/gtkvideooverlay-main.Tpo $(DEPDIR)/gtkvideooverlay-main.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='main.cpp' object='gtkvideooverlay-main.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -c -o gtkvideooverlay-main.obj `if test -f 'main.cpp'; then $(CYGPATH_W) 'main.cpp'; else $(CYGPATH_W) '$(srcdir)/main.cpp'; fi`
+libgstkmssink_la-gstkmsutils.lo: gstkmsutils.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstkmssink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstkmssink_la_CFLAGS) $(CFLAGS) -MT libgstkmssink_la-gstkmsutils.lo -MD -MP -MF $(DEPDIR)/libgstkmssink_la-gstkmsutils.Tpo -c -o libgstkmssink_la-gstkmsutils.lo `test -f 'gstkmsutils.c' || echo '$(srcdir)/'`gstkmsutils.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstkmssink_la-gstkmsutils.Tpo $(DEPDIR)/libgstkmssink_la-gstkmsutils.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstkmsutils.c' object='libgstkmssink_la-gstkmsutils.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstkmssink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstkmssink_la_CFLAGS) $(CFLAGS) -c -o libgstkmssink_la-gstkmsutils.lo `test -f 'gstkmsutils.c' || echo '$(srcdir)/'`gstkmsutils.c
+
+libgstkmssink_la-gstkmsallocator.lo: gstkmsallocator.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstkmssink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstkmssink_la_CFLAGS) $(CFLAGS) -MT libgstkmssink_la-gstkmsallocator.lo -MD -MP -MF $(DEPDIR)/libgstkmssink_la-gstkmsallocator.Tpo -c -o libgstkmssink_la-gstkmsallocator.lo `test -f 'gstkmsallocator.c' || echo '$(srcdir)/'`gstkmsallocator.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstkmssink_la-gstkmsallocator.Tpo $(DEPDIR)/libgstkmssink_la-gstkmsallocator.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstkmsallocator.c' object='libgstkmssink_la-gstkmsallocator.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstkmssink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstkmssink_la_CFLAGS) $(CFLAGS) -c -o libgstkmssink_la-gstkmsallocator.lo `test -f 'gstkmsallocator.c' || echo '$(srcdir)/'`gstkmsallocator.c
+
+libgstkmssink_la-gstkmsbufferpool.lo: gstkmsbufferpool.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstkmssink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstkmssink_la_CFLAGS) $(CFLAGS) -MT libgstkmssink_la-gstkmsbufferpool.lo -MD -MP -MF $(DEPDIR)/libgstkmssink_la-gstkmsbufferpool.Tpo -c -o libgstkmssink_la-gstkmsbufferpool.lo `test -f 'gstkmsbufferpool.c' || echo '$(srcdir)/'`gstkmsbufferpool.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstkmssink_la-gstkmsbufferpool.Tpo $(DEPDIR)/libgstkmssink_la-gstkmsbufferpool.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstkmsbufferpool.c' object='libgstkmssink_la-gstkmsbufferpool.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstkmssink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstkmssink_la_CFLAGS) $(CFLAGS) -c -o libgstkmssink_la-gstkmsbufferpool.lo `test -f 'gstkmsbufferpool.c' || echo '$(srcdir)/'`gstkmsbufferpool.c
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -941,8 +1059,11 @@
 	done
 check-am: all-am
 check: check-am
-all-am: Makefile $(PROGRAMS)
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
 installdirs:
+	for dir in "$(DESTDIR)$(plugindir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
 install: install-am
 install-exec: install-exec-am
 install-data: install-data-am
@@ -975,7 +1096,7 @@
 	@echo "it deletes files that may require special tools to rebuild."
 clean: clean-am
 
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
 	mostlyclean-am
 
 distclean: distclean-am
@@ -996,7 +1117,7 @@
 
 info-am:
 
-install-data-am:
+install-data-am: install-pluginLTLIBRARIES
 
 install-dvi: install-dvi-am
 
@@ -1042,23 +1163,24 @@
 
 ps-am:
 
-uninstall-am:
+uninstall-am: uninstall-pluginLTLIBRARIES
 
 .MAKE: install-am install-strip
 
 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
+	clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \
 	ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
 	install-exec-am install-html install-html-am install-info \
 	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am
+	install-pluginLTLIBRARIES install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+	uninstall-pluginLTLIBRARIES
 
 .PRECIOUS: Makefile
 
diff --git a/sys/kms/gstkmsallocator.c b/sys/kms/gstkmsallocator.c
new file mode 100644
index 0000000..e031848
--- /dev/null
+++ b/sys/kms/gstkmsallocator.c
@@ -0,0 +1,437 @@
+/* GStreamer
+ *
+ * Copyright (C) 2016 Igalia
+ *
+ * Authors:
+ *  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+ *  Javier Martin <javiermartin@by.com.es>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <xf86drm.h>
+#include <xf86drmMode.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "gstkmsallocator.h"
+#include "gstkmsutils.h"
+
+#define GST_CAT_DEFAULT kmsallocator_debug
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
+
+#define GST_KMS_MEMORY_TYPE "KMSMemory"
+
+struct _GstKMSAllocatorPrivate
+{
+  int fd;
+  struct kms_driver *driver;
+};
+
+#define parent_class gst_kms_allocator_parent_class
+G_DEFINE_TYPE_WITH_CODE (GstKMSAllocator, gst_kms_allocator, GST_TYPE_ALLOCATOR,
+    G_ADD_PRIVATE (GstKMSAllocator);
+    GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "kmsallocator", 0,
+        "KMS allocator"));
+
+enum
+{
+  PROP_DRM_FD = 1,
+  PROP_N,
+};
+
+static GParamSpec *g_props[PROP_N] = { NULL, };
+
+gboolean
+gst_is_kms_memory (GstMemory * mem)
+{
+  return gst_memory_is_type (mem, GST_KMS_MEMORY_TYPE);
+}
+
+guint32
+gst_kms_memory_get_fb_id (GstMemory * mem)
+{
+  if (!gst_is_kms_memory (mem))
+    return 0;
+  return ((GstKMSMemory *) mem)->fb_id;
+}
+
+static gboolean
+ensure_kms_driver (GstKMSAllocator * alloc)
+{
+  GstKMSAllocatorPrivate *priv;
+  int err;
+
+  priv = alloc->priv;
+
+  if (priv->driver)
+    return TRUE;
+
+  if (priv->fd < 0)
+    return FALSE;
+
+  err = kms_create (priv->fd, &priv->driver);
+  if (err) {
+    GST_ERROR_OBJECT (alloc, "Could not create KMS driver: %s",
+        strerror (-err));
+    return FALSE;
+  }
+
+  return TRUE;
+}
+
+static void
+gst_kms_allocator_memory_reset (GstKMSAllocator * allocator, GstKMSMemory * mem)
+{
+  if (mem->fb_id) {
+    GST_DEBUG_OBJECT (allocator, "removing fb id %d", mem->fb_id);
+    drmModeRmFB (allocator->priv->fd, mem->fb_id);
+    mem->fb_id = 0;
+  }
+
+  if (!ensure_kms_driver (allocator))
+    return;
+
+  if (mem->bo) {
+    kms_bo_destroy (&mem->bo);
+    mem->bo = NULL;
+  }
+}
+
+static gboolean
+gst_kms_allocator_memory_create (GstKMSAllocator * allocator,
+    GstKMSMemory * kmsmem, GstVideoInfo * vinfo)
+{
+  gint ret;
+  guint attrs[] = {
+    KMS_WIDTH, GST_VIDEO_INFO_WIDTH (vinfo),
+    KMS_HEIGHT, GST_VIDEO_INFO_HEIGHT (vinfo),
+    KMS_TERMINATE_PROP_LIST,
+  };
+
+  if (kmsmem->bo)
+    return TRUE;
+
+  if (!ensure_kms_driver (allocator))
+    return FALSE;
+
+  ret = kms_bo_create (allocator->priv->driver, attrs, &kmsmem->bo);
+  if (ret) {
+    GST_ERROR_OBJECT (allocator, "Failed to create buffer object: %s (%d)",
+        strerror (-ret), ret);
+    return FALSE;
+  }
+
+  return TRUE;
+}
+
+static void
+gst_kms_allocator_free (GstAllocator * allocator, GstMemory * mem)
+{
+  GstKMSAllocator *alloc;
+  GstKMSMemory *kmsmem;
+
+  alloc = GST_KMS_ALLOCATOR (allocator);
+  kmsmem = (GstKMSMemory *) mem;
+
+  gst_kms_allocator_memory_reset (alloc, kmsmem);
+  g_slice_free (GstKMSMemory, kmsmem);
+}
+
+static void
+gst_kms_allocator_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstKMSAllocator *alloc;
+
+  alloc = GST_KMS_ALLOCATOR (object);
+
+  switch (prop_id) {
+    case PROP_DRM_FD:{
+      int fd = g_value_get_int (value);
+      if (fd > -1)
+        alloc->priv->fd = dup (fd);
+      break;
+    }
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_kms_allocator_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstKMSAllocator *alloc;
+
+  alloc = GST_KMS_ALLOCATOR (object);
+
+  switch (prop_id) {
+    case PROP_DRM_FD:
+      g_value_set_int (value, alloc->priv->fd);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_kms_allocator_finalize (GObject * obj)
+{
+  GstKMSAllocator *alloc;
+
+  alloc = GST_KMS_ALLOCATOR (obj);
+
+  if (alloc->priv->driver)
+    kms_destroy (&alloc->priv->driver);
+
+  if (alloc->priv->fd > -1)
+    close (alloc->priv->fd);
+
+  G_OBJECT_CLASS (parent_class)->finalize (obj);
+}
+
+static void
+gst_kms_allocator_class_init (GstKMSAllocatorClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstAllocatorClass *allocator_class;
+
+  allocator_class = GST_ALLOCATOR_CLASS (klass);
+  gobject_class = G_OBJECT_CLASS (klass);
+
+  allocator_class->free = gst_kms_allocator_free;
+
+  gobject_class->set_property = gst_kms_allocator_set_property;
+  gobject_class->get_property = gst_kms_allocator_get_property;
+  gobject_class->finalize = gst_kms_allocator_finalize;
+
+  g_props[PROP_DRM_FD] = g_param_spec_int ("drm-fd", "DRM fd",
+      "DRM file descriptor", -1, G_MAXINT, -1,
+      G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
+
+  g_object_class_install_properties (gobject_class, PROP_N, g_props);
+}
+
+static gpointer
+gst_kms_memory_map (GstMemory * mem, gsize maxsize, GstMapFlags flags)
+{
+  GstKMSMemory *kmsmem;
+  int err;
+  gpointer out;
+
+  if (!ensure_kms_driver ((GstKMSAllocator *) mem->allocator))
+    return NULL;
+
+  kmsmem = (GstKMSMemory *) mem;
+  if (!kmsmem->bo)
+    return NULL;
+
+  out = NULL;
+  err = kms_bo_map (kmsmem->bo, &out);
+  if (err) {
+    GST_ERROR ("could not map memory: %s %d", strerror (-err), err);
+    return NULL;
+  }
+
+  return out;
+}
+
+static void
+gst_kms_memory_unmap (GstMemory * mem)
+{
+  GstKMSMemory *kmsmem;
+
+  if (!ensure_kms_driver ((GstKMSAllocator *) mem->allocator))
+    return;
+
+  kmsmem = (GstKMSMemory *) mem;
+  if (kmsmem->bo)
+    kms_bo_unmap (kmsmem->bo);
+}
+
+static void
+gst_kms_allocator_init (GstKMSAllocator * allocator)
+{
+  GstAllocator *alloc;
+
+  alloc = GST_ALLOCATOR_CAST (allocator);
+
+  allocator->priv = gst_kms_allocator_get_instance_private (allocator);
+  allocator->priv->fd = -1;
+
+  alloc->mem_type = GST_KMS_MEMORY_TYPE;
+  alloc->mem_map = gst_kms_memory_map;
+  alloc->mem_unmap = gst_kms_memory_unmap;
+  /* Use the default, fallback copy function */
+
+  GST_OBJECT_FLAG_SET (allocator, GST_ALLOCATOR_FLAG_CUSTOM_ALLOC);
+}
+
+GstAllocator *
+gst_kms_allocator_new (int fd)
+{
+  return g_object_new (GST_TYPE_KMS_ALLOCATOR, "name",
+      "KMSMemory::allocator", "drm-fd", fd, NULL);
+}
+
+/* The mem_offsets are relative to the GstMemory start, unlike the vinfo->offset
+ * which are relative to the GstBuffer start. */
+static gboolean
+gst_kms_allocator_add_fb (GstKMSAllocator * alloc, GstKMSMemory * kmsmem,
+    gsize mem_offsets[GST_VIDEO_MAX_PLANES], GstVideoInfo * vinfo)
+{
+  int i, ret;
+  gint num_planes = GST_VIDEO_INFO_N_PLANES (vinfo);
+  guint32 w, h, fmt, pitch = 0, bo_handles[4] = { 0, };
+  guint32 offsets[4] = { 0, };
+  guint32 pitches[4] = { 0, };
+
+  if (kmsmem->fb_id)
+    return TRUE;
+
+  w = GST_VIDEO_INFO_WIDTH (vinfo);
+  h = GST_VIDEO_INFO_HEIGHT (vinfo);
+  fmt = gst_drm_format_from_video (GST_VIDEO_INFO_FORMAT (vinfo));
+
+  if (kmsmem->bo) {
+    kms_bo_get_prop (kmsmem->bo, KMS_HANDLE, &bo_handles[0]);
+    for (i = 1; i < num_planes; i++)
+      bo_handles[i] = bo_handles[0];
+
+    /* Get the bo pitch calculated by the kms driver.
+     * If it's defined, it will overwrite the video info's stride */
+    kms_bo_get_prop (kmsmem->bo, KMS_PITCH, &pitch);
+  } else {
+    for (i = 0; i < num_planes; i++)
+      bo_handles[i] = kmsmem->gem_handle[i];
+  }
+
+  GST_DEBUG_OBJECT (alloc, "bo handles: %d, %d, %d, %d", bo_handles[0],
+      bo_handles[1], bo_handles[2], bo_handles[3]);
+
+  for (i = 0; i < num_planes; i++) {
+    offsets[i] = mem_offsets[i];
+    if (pitch)
+      GST_VIDEO_INFO_PLANE_STRIDE (vinfo, i) = pitch;
+    pitches[i] = GST_VIDEO_INFO_PLANE_STRIDE (vinfo, i);
+    GST_DEBUG_OBJECT (alloc, "Create FB plane %i with stride %u and offset %u",
+        i, pitches[i], offsets[i]);
+  }
+
+  ret = drmModeAddFB2 (alloc->priv->fd, w, h, fmt, bo_handles, pitches,
+      offsets, &kmsmem->fb_id, 0);
+  if (ret) {
+    GST_ERROR_OBJECT (alloc, "Failed to bind to framebuffer: %s (%d)",
+        strerror (-ret), ret);
+    return FALSE;
+  }
+  return TRUE;
+}
+
+static GstMemory *
+gst_kms_allocator_alloc_empty (GstAllocator * allocator, GstVideoInfo * vinfo)
+{
+  GstKMSMemory *kmsmem;
+  GstMemory *mem;
+
+  kmsmem = g_slice_new0 (GstKMSMemory);
+  if (!kmsmem)
+    return NULL;
+  mem = GST_MEMORY_CAST (kmsmem);
+
+  gst_memory_init (mem, GST_MEMORY_FLAG_NO_SHARE, allocator, NULL,
+      GST_VIDEO_INFO_SIZE (vinfo), 0, 0, GST_VIDEO_INFO_SIZE (vinfo));
+
+  return mem;
+}
+
+GstMemory *
+gst_kms_allocator_bo_alloc (GstAllocator * allocator, GstVideoInfo * vinfo)
+{
+  GstKMSAllocator *alloc;
+  GstKMSMemory *kmsmem;
+  GstMemory *mem;
+
+  mem = gst_kms_allocator_alloc_empty (allocator, vinfo);
+  if (!mem)
+    return NULL;
+
+  alloc = GST_KMS_ALLOCATOR (allocator);
+  kmsmem = (GstKMSMemory *) mem;
+  if (!gst_kms_allocator_memory_create (alloc, kmsmem, vinfo))
+    goto fail;
+  if (!gst_kms_allocator_add_fb (alloc, kmsmem, vinfo->offset, vinfo))
+    goto fail;
+
+  return mem;
+
+  /* ERRORS */
+fail:
+  gst_memory_unref (mem);
+  return NULL;
+}
+
+GstKMSMemory *
+gst_kms_allocator_dmabuf_import (GstAllocator * allocator, gint * prime_fds,
+    gint n_planes, gsize offsets[GST_VIDEO_MAX_PLANES], GstVideoInfo * vinfo)
+{
+  GstKMSAllocator *alloc;
+  GstMemory *mem;
+  GstKMSMemory *tmp;
+  gint i, ret;
+
+  g_return_val_if_fail (n_planes <= GST_VIDEO_MAX_PLANES, FALSE);
+
+  mem = gst_kms_allocator_alloc_empty (allocator, vinfo);
+  if (!mem)
+    return FALSE;
+
+  tmp = (GstKMSMemory *) mem;
+  alloc = GST_KMS_ALLOCATOR (allocator);
+  for (i = 0; i < n_planes; i++) {
+    ret = drmPrimeFDToHandle (alloc->priv->fd, prime_fds[i],
+        &tmp->gem_handle[i]);
+    if (ret)
+      goto import_fd_failed;
+  }
+
+  if (!gst_kms_allocator_add_fb (alloc, tmp, offsets, vinfo))
+    goto failed;
+
+  return tmp;
+
+  /* ERRORS */
+import_fd_failed:
+  {
+    GST_ERROR_OBJECT (alloc, "Failed to import prime fd %d: %s (%d)",
+        prime_fds[i], strerror (-ret), ret);
+    /* fallback */
+  }
+
+failed:
+  {
+    gst_memory_unref (mem);
+    return NULL;
+  }
+}
diff --git a/sys/kms/gstkmsallocator.h b/sys/kms/gstkmsallocator.h
new file mode 100644
index 0000000..fefd4c2
--- /dev/null
+++ b/sys/kms/gstkmsallocator.h
@@ -0,0 +1,91 @@
+/* GStreamer
+ *
+ * Copyright (C) 2016 Igalia
+ *
+ * Authors:
+ *  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+ *  Javier Martin <javiermartin@by.com.es>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef __GST_KMS_ALLOCATOR_H__
+#define __GST_KMS_ALLOCATOR_H__
+
+#include <gst/gst.h>
+#include <gst/video/video.h>
+#include <libkms.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_KMS_ALLOCATOR	\
+   (gst_kms_allocator_get_type())
+#define GST_IS_KMS_ALLOCATOR(obj)				\
+   (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_KMS_ALLOCATOR))
+#define GST_IS_KMS_ALLOCATOR_CLASS(klass)			\
+   (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_KMS_ALLOCATOR))
+#define GST_KMS_ALLOCATOR_GET_CLASS(obj)			\
+   (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_KMS_ALLOCATOR, GstKMSAllocatorClass))
+#define GST_KMS_ALLOCATOR(obj)				\
+   (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_KMS_ALLOCATOR, GstKMSAllocator))
+#define GST_KMS_ALLOCATOR_CLASS(klass)			\
+   (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_KMS_ALLOCATOR, GstKMSAllocatorClass))
+
+typedef struct _GstKMSAllocator GstKMSAllocator;
+typedef struct _GstKMSAllocatorClass GstKMSAllocatorClass;
+typedef struct _GstKMSAllocatorPrivate GstKMSAllocatorPrivate;
+typedef struct _GstKMSMemory GstKMSMemory;
+
+struct _GstKMSMemory
+{
+  GstMemory parent;
+
+  guint32 fb_id;
+  guint32 gem_handle[GST_VIDEO_MAX_PLANES];
+  struct kms_bo *bo;
+};
+
+struct _GstKMSAllocator
+{
+  GstAllocator parent;
+  GstKMSAllocatorPrivate *priv;
+};
+
+struct _GstKMSAllocatorClass {
+  GstAllocatorClass parent_class;
+};
+
+GType gst_kms_allocator_get_type (void) G_GNUC_CONST;
+
+gboolean gst_is_kms_memory (GstMemory *mem);
+guint32 gst_kms_memory_get_fb_id (GstMemory *mem);
+
+GstAllocator* gst_kms_allocator_new (gint fd);
+
+GstMemory*    gst_kms_allocator_bo_alloc (GstAllocator *allocator,
+					  GstVideoInfo *vinfo);
+
+GstKMSMemory* gst_kms_allocator_dmabuf_import (GstAllocator *allocator,
+					       gint *prime_fds,
+					       gint n_planes,
+					       gsize offsets[GST_VIDEO_MAX_PLANES],
+					       GstVideoInfo *vinfo);
+
+G_END_DECLS
+
+
+#endif /* __GST_KMS_ALLOCATOR_H__ */
diff --git a/sys/kms/gstkmsbufferpool.c b/sys/kms/gstkmsbufferpool.c
new file mode 100644
index 0000000..329135c
--- /dev/null
+++ b/sys/kms/gstkmsbufferpool.c
@@ -0,0 +1,213 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Igalia
+ *
+ * Authors:
+ *  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+ *  Javier Martin <javiermartin@by.com.es>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <gst/video/gstvideometa.h>
+
+#include "gstkmsbufferpool.h"
+#include "gstkmsallocator.h"
+
+GST_DEBUG_CATEGORY_STATIC (gst_kms_buffer_pool_debug);
+#define GST_CAT_DEFAULT gst_kms_buffer_pool_debug
+
+struct _GstKMSBufferPoolPrivate
+{
+  gint fd;
+  GstVideoInfo vinfo;
+  GstAllocator *allocator;
+  gboolean add_videometa;
+};
+
+#define parent_class gst_kms_buffer_pool_parent_class
+G_DEFINE_TYPE_WITH_CODE (GstKMSBufferPool, gst_kms_buffer_pool,
+    GST_TYPE_VIDEO_BUFFER_POOL, G_ADD_PRIVATE (GstKMSBufferPool);
+    GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "kmsbufferpool", 0,
+        "KMS buffer pool"));
+
+static const gchar **
+gst_kms_buffer_pool_get_options (GstBufferPool * pool)
+{
+  static const gchar *options[] = { GST_BUFFER_POOL_OPTION_VIDEO_META,
+    GST_BUFFER_POOL_OPTION_KMS_BUFFER, NULL
+  };
+  return options;
+}
+
+static gboolean
+gst_kms_buffer_pool_set_config (GstBufferPool * pool, GstStructure * config)
+{
+  GstKMSBufferPool *vpool;
+  GstKMSBufferPoolPrivate *priv;
+  GstCaps *caps;
+  GstVideoInfo vinfo;
+  GstAllocator *allocator;
+  GstAllocationParams params;
+
+  vpool = GST_KMS_BUFFER_POOL_CAST (pool);
+  priv = vpool->priv;
+
+  if (!gst_buffer_pool_config_get_params (config, &caps, NULL, NULL, NULL))
+    goto wrong_config;
+
+  if (!caps)
+    goto no_caps;
+
+  /* now parse the caps from the config */
+  if (!gst_video_info_from_caps (&vinfo, caps))
+    goto wrong_caps;
+
+  allocator = NULL;
+  gst_buffer_pool_config_get_allocator (config, &allocator, &params);
+
+  /* not our allocator, not our buffers */
+  if (allocator && GST_IS_KMS_ALLOCATOR (allocator)) {
+    if (priv->allocator)
+      gst_object_unref (priv->allocator);
+    if ((priv->allocator = allocator))
+      gst_object_ref (allocator);
+  }
+  if (!priv->allocator)
+    goto no_allocator;
+
+  priv->vinfo = vinfo;
+
+  /* enable metadata based on config of the pool */
+  priv->add_videometa = gst_buffer_pool_config_has_option (config,
+      GST_BUFFER_POOL_OPTION_VIDEO_META);
+
+  return GST_BUFFER_POOL_CLASS (parent_class)->set_config (pool, config);
+
+  /* ERRORS */
+wrong_config:
+  {
+    GST_WARNING_OBJECT (pool, "invalid config");
+    return FALSE;
+  }
+no_caps:
+  {
+    GST_WARNING_OBJECT (pool, "no caps in config");
+    return FALSE;
+  }
+wrong_caps:
+  {
+    GST_WARNING_OBJECT (pool,
+        "failed getting geometry from caps %" GST_PTR_FORMAT, caps);
+    return FALSE;
+  }
+no_allocator:
+  {
+    GST_WARNING_OBJECT (pool, "no valid allocator in pool");
+    return FALSE;
+  }
+}
+
+static GstFlowReturn
+gst_kms_buffer_pool_alloc_buffer (GstBufferPool * pool, GstBuffer ** buffer,
+    GstBufferPoolAcquireParams * params)
+{
+  GstKMSBufferPool *vpool;
+  GstKMSBufferPoolPrivate *priv;
+  GstVideoInfo *info;
+  GstMemory *mem;
+
+  vpool = GST_KMS_BUFFER_POOL_CAST (pool);
+  priv = vpool->priv;
+  info = &priv->vinfo;
+
+  *buffer = gst_buffer_new ();
+  if (*buffer == NULL)
+    goto no_memory;
+  mem = gst_kms_allocator_bo_alloc (priv->allocator, info);
+  if (!mem) {
+    gst_buffer_unref (*buffer);
+    goto no_memory;
+  }
+  gst_buffer_append_memory (*buffer, mem);
+
+  if (priv->add_videometa) {
+    GST_DEBUG_OBJECT (pool, "adding GstVideoMeta");
+
+    gst_buffer_add_video_meta_full (*buffer, GST_VIDEO_FRAME_FLAG_NONE,
+        GST_VIDEO_INFO_FORMAT (info),
+        GST_VIDEO_INFO_WIDTH (info), GST_VIDEO_INFO_HEIGHT (info),
+        GST_VIDEO_INFO_N_PLANES (info), info->offset, info->stride);
+  }
+
+  return GST_FLOW_OK;
+
+  /* ERROR */
+no_memory:
+  {
+    GST_WARNING_OBJECT (pool, "can't create memory");
+    return GST_FLOW_ERROR;
+  }
+}
+
+static void
+gst_kms_buffer_pool_finalize (GObject * object)
+{
+  GstKMSBufferPool *pool;
+  GstKMSBufferPoolPrivate *priv;
+
+  pool = GST_KMS_BUFFER_POOL (object);
+  priv = pool->priv;
+
+  if (priv->allocator)
+    gst_object_unref (priv->allocator);
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+gst_kms_buffer_pool_init (GstKMSBufferPool * pool)
+{
+  pool->priv = gst_kms_buffer_pool_get_instance_private (pool);
+  pool->priv->fd = -1;
+}
+
+static void
+gst_kms_buffer_pool_class_init (GstKMSBufferPoolClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstBufferPoolClass *gstbufferpool_class;
+
+  gobject_class = (GObjectClass *) klass;
+  gstbufferpool_class = (GstBufferPoolClass *) klass;
+
+  gobject_class->finalize = gst_kms_buffer_pool_finalize;
+
+  gstbufferpool_class->get_options = gst_kms_buffer_pool_get_options;
+  gstbufferpool_class->set_config = gst_kms_buffer_pool_set_config;
+  gstbufferpool_class->alloc_buffer = gst_kms_buffer_pool_alloc_buffer;
+}
+
+GstBufferPool *
+gst_kms_buffer_pool_new (void)
+{
+  return g_object_new (GST_TYPE_KMS_BUFFER_POOL, NULL);
+}
diff --git a/sys/kms/gstkmsbufferpool.h b/sys/kms/gstkmsbufferpool.h
new file mode 100644
index 0000000..1ed9884
--- /dev/null
+++ b/sys/kms/gstkmsbufferpool.h
@@ -0,0 +1,75 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Igalia
+ *
+ * Authors:
+ *  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+ *  Javier Martin <javiermartin@by.com.es>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef __GST_KMS_BUFFER_POOL_H__
+#define __GST_KMS_BUFFER_POOL_H__
+
+#include <gst/gst.h>
+#include <gst/video/video.h>
+
+#include "gstkmssink.h"
+
+G_BEGIN_DECLS
+
+/**
+ * GST_BUFFER_POOL_OPTION_KMS_BUFFER:
+ *
+ * An option that can be activated on buffer pool to request KMS
+ * buffers.
+ */
+#define GST_BUFFER_POOL_OPTION_KMS_BUFFER "GstBufferPoolOptionKMSBuffer"
+
+/* video bufferpool */
+typedef struct _GstKMSBufferPool GstKMSBufferPool;
+typedef struct _GstKMSBufferPoolClass GstKMSBufferPoolClass;
+typedef struct _GstKMSBufferPoolPrivate GstKMSBufferPoolPrivate;
+
+#define GST_TYPE_KMS_BUFFER_POOL \
+  (gst_kms_buffer_pool_get_type())
+#define GST_IS_KMS_BUFFER_POOL(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_KMS_BUFFER_POOL))
+#define GST_KMS_BUFFER_POOL(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_KMS_BUFFER_POOL, GstKMSBufferPool))
+#define GST_KMS_BUFFER_POOL_CAST(obj) \
+  ((GstKMSBufferPool*)(obj))
+
+struct _GstKMSBufferPool
+{
+  GstVideoBufferPool parent;
+  GstKMSBufferPoolPrivate *priv;
+};
+
+struct _GstKMSBufferPoolClass
+{
+  GstVideoBufferPoolClass parent_class;
+};
+
+GType gst_kms_buffer_pool_get_type (void) G_GNUC_CONST;
+
+GstBufferPool *gst_kms_buffer_pool_new (void);
+
+G_END_DECLS
+
+#endif /* __GST_KMS_BUFFER_POOL_H__ */
diff --git a/sys/kms/gstkmssink.c b/sys/kms/gstkmssink.c
new file mode 100644
index 0000000..8508b0d
--- /dev/null
+++ b/sys/kms/gstkmssink.c
@@ -0,0 +1,1316 @@
+/* GStreamer
+ *
+ * Copyright (C) 2016 Igalia
+ *
+ * Authors:
+ *  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+ *  Javier Martin <javiermartin@by.com.es>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+/**
+ * SECTION:element-kmssink
+ * @short_description: A KMS/DRM based video sink
+ *
+ * kmssink is a simple video sink that renders video frames directly
+ * in a plane of a DRM device.
+ *
+ * <refsect2>
+ * <title>Example launch line</title>
+ * |[
+ * gst-launch-1.0 videotestsrc ! kmssink
+ * ]|
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <gst/video/video.h>
+#include <gst/allocators/gstdmabuf.h>
+
+#include <drm.h>
+#include <xf86drm.h>
+#include <xf86drmMode.h>
+#include <drm_fourcc.h>
+
+#include <string.h>
+
+#include "gstkmssink.h"
+#include "gstkmsutils.h"
+#include "gstkmsbufferpool.h"
+#include "gstkmsallocator.h"
+
+#define GST_PLUGIN_NAME "kmssink"
+#define GST_PLUGIN_DESC "Video sink using the Linux kernel mode setting API"
+
+GST_DEBUG_CATEGORY_STATIC (gst_kms_sink_debug);
+GST_DEBUG_CATEGORY_STATIC (CAT_PERFORMANCE);
+#define GST_CAT_DEFAULT gst_kms_sink_debug
+
+#define parent_class gst_kms_sink_parent_class
+G_DEFINE_TYPE_WITH_CODE (GstKMSSink, gst_kms_sink, GST_TYPE_VIDEO_SINK,
+    GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, GST_PLUGIN_NAME, 0,
+        GST_PLUGIN_DESC);
+    GST_DEBUG_CATEGORY_GET (CAT_PERFORMANCE, "GST_PERFORMANCE"));
+
+enum
+{
+  PROP_DRIVER_NAME = 1,
+  PROP_CONNECTOR_ID,
+  PROP_PLANE_ID,
+  PROP_N
+};
+
+static GParamSpec *g_properties[PROP_N] = { NULL, };
+
+static int
+kms_open (gchar ** driver)
+{
+  static const char *drivers[] = { "i915", "radeon", "nouveau", "vmwgfx",
+    "exynos", "amdgpu", "imx-drm", "rockchip", "atmel-hlcdc"
+  };
+  int i, fd = -1;
+
+  for (i = 0; i < G_N_ELEMENTS (drivers); i++) {
+    fd = drmOpen (drivers[i], NULL);
+    if (fd >= 0) {
+      if (driver)
+        *driver = g_strdup (drivers[i]);
+      break;
+    }
+  }
+
+  return fd;
+}
+
+static drmModePlane *
+find_plane_for_crtc (int fd, drmModeRes * res, drmModePlaneRes * pres,
+    int crtc_id)
+{
+  drmModePlane *plane;
+  int i, pipe;
+
+  plane = NULL;
+  pipe = -1;
+  for (i = 0; i < res->count_crtcs; i++) {
+    if (crtc_id == res->crtcs[i]) {
+      pipe = i;
+      break;
+    }
+  }
+
+  if (pipe == -1)
+    return NULL;
+
+  for (i = 0; i < pres->count_planes; i++) {
+    plane = drmModeGetPlane (fd, pres->planes[i]);
+    if (plane->possible_crtcs & (1 << pipe))
+      return plane;
+    drmModeFreePlane (plane);
+  }
+
+  return NULL;
+}
+
+static drmModeCrtc *
+find_crtc_for_connector (int fd, drmModeRes * res, drmModeConnector * conn,
+    guint * pipe)
+{
+  int i;
+  int crtc_id;
+  drmModeEncoder *enc;
+  drmModeCrtc *crtc;
+
+  crtc_id = -1;
+  for (i = 0; i < res->count_encoders; i++) {
+    enc = drmModeGetEncoder (fd, res->encoders[i]);
+    if (enc) {
+      if (enc->encoder_id == conn->encoder_id) {
+        crtc_id = enc->crtc_id;
+        drmModeFreeEncoder (enc);
+        break;
+      }
+      drmModeFreeEncoder (enc);
+    }
+  }
+
+  if (crtc_id == -1)
+    return NULL;
+
+  for (i = 0; i < res->count_crtcs; i++) {
+    crtc = drmModeGetCrtc (fd, res->crtcs[i]);
+    if (crtc) {
+      if (crtc_id == crtc->crtc_id) {
+        if (pipe)
+          *pipe = i;
+        return crtc;
+      }
+      drmModeFreeCrtc (crtc);
+    }
+  }
+
+  return NULL;
+}
+
+static gboolean
+connector_is_used (int fd, drmModeRes * res, drmModeConnector * conn)
+{
+  gboolean result;
+  drmModeCrtc *crtc;
+
+  result = FALSE;
+  crtc = find_crtc_for_connector (fd, res, conn, NULL);
+  if (crtc) {
+    result = crtc->buffer_id != 0;
+    drmModeFreeCrtc (crtc);
+  }
+
+  return result;
+}
+
+static drmModeConnector *
+find_used_connector_by_type (int fd, drmModeRes * res, int type)
+{
+  int i;
+  drmModeConnector *conn;
+
+  conn = NULL;
+  for (i = 0; i < res->count_connectors; i++) {
+    conn = drmModeGetConnector (fd, res->connectors[i]);
+    if (conn) {
+      if ((conn->connector_type == type) && connector_is_used (fd, res, conn))
+        return conn;
+      drmModeFreeConnector (conn);
+    }
+  }
+
+  return NULL;
+}
+
+static drmModeConnector *
+find_first_used_connector (int fd, drmModeRes * res)
+{
+  int i;
+  drmModeConnector *conn;
+
+  conn = NULL;
+  for (i = 0; i < res->count_connectors; i++) {
+    conn = drmModeGetConnector (fd, res->connectors[i]);
+    if (conn) {
+      if (connector_is_used (fd, res, conn))
+        return conn;
+      drmModeFreeConnector (conn);
+    }
+  }
+
+  return NULL;
+}
+
+static drmModeConnector *
+find_main_monitor (int fd, drmModeRes * res)
+{
+  /* Find the LVDS and eDP connectors: those are the main screens. */
+  static const int priority[] = { DRM_MODE_CONNECTOR_LVDS,
+    DRM_MODE_CONNECTOR_eDP
+  };
+  int i;
+  drmModeConnector *conn;
+
+  conn = NULL;
+  for (i = 0; !conn && i < G_N_ELEMENTS (priority); i++)
+    conn = find_used_connector_by_type (fd, res, priority[i]);
+
+  /* if we didn't find a connector, grab the first one in use */
+  if (!conn)
+    conn = find_first_used_connector (fd, res);
+
+  return conn;
+}
+
+static void
+log_drm_version (GstKMSSink * self)
+{
+#ifndef GST_DISABLE_GST_DEBUG
+  drmVersion *v;
+
+  v = drmGetVersion (self->fd);
+  if (v) {
+    GST_INFO_OBJECT (self, "DRM v%d.%d.%d [%s — %s — %s]", v->version_major,
+        v->version_minor, v->version_patchlevel, GST_STR_NULL (v->name),
+        GST_STR_NULL (v->desc), GST_STR_NULL (v->date));
+    drmFreeVersion (v);
+  } else {
+    GST_WARNING_OBJECT (self, "could not get driver information: %s",
+        GST_STR_NULL (self->devname));
+  }
+#endif
+  return;
+}
+
+static gboolean
+get_drm_caps (GstKMSSink * self)
+{
+  gint ret;
+  guint64 has_dumb_buffer;
+  guint64 has_prime;
+  guint64 has_async_page_flip;
+
+  has_dumb_buffer = 0;
+  ret = drmGetCap (self->fd, DRM_CAP_DUMB_BUFFER, &has_dumb_buffer);
+  if (ret)
+    GST_WARNING_OBJECT (self, "could not get dumb buffer capability");
+  if (has_dumb_buffer == 0) {
+    GST_ERROR_OBJECT (self, "driver cannot handle dumb buffers");
+    return FALSE;
+  }
+
+  has_prime = 0;
+  ret = drmGetCap (self->fd, DRM_CAP_PRIME, &has_prime);
+  if (ret)
+    GST_WARNING_OBJECT (self, "could not get prime capability");
+  else
+    self->has_prime_import = (gboolean) (has_prime & DRM_PRIME_CAP_IMPORT);
+
+  has_async_page_flip = 0;
+  ret = drmGetCap (self->fd, DRM_CAP_ASYNC_PAGE_FLIP, &has_async_page_flip);
+  if (ret)
+    GST_WARNING_OBJECT (self, "could not get async page flip capability");
+  else
+    self->has_async_page_flip = (gboolean) has_async_page_flip;
+
+  GST_INFO_OBJECT (self, "prime import (%s) / async page flip (%s)",
+      self->has_prime_import ? "✓" : "✗",
+      self->has_async_page_flip ? "✓" : "✗");
+
+  return TRUE;
+}
+
+static gboolean
+ensure_allowed_caps (GstKMSSink * self, drmModePlane * plane, drmModeRes * res)
+{
+  GstCaps *out_caps, *caps;
+  int i;
+  GstVideoFormat fmt;
+  const gchar *format;
+
+  if (self->allowed_caps)
+    return TRUE;
+
+  out_caps = gst_caps_new_empty ();
+  if (!out_caps)
+    return FALSE;
+
+  for (i = 0; i < plane->count_formats; i++) {
+    fmt = gst_video_format_from_drm (plane->formats[i]);
+    if (fmt == GST_VIDEO_FORMAT_UNKNOWN) {
+      GST_INFO_OBJECT (self, "ignoring format %" GST_FOURCC_FORMAT,
+          GST_FOURCC_ARGS (plane->formats[i]));
+      continue;
+    }
+
+    format = gst_video_format_to_string (fmt);
+    caps = gst_caps_new_simple ("video/x-raw", "format", G_TYPE_STRING, format,
+        "width", GST_TYPE_INT_RANGE, res->min_width, res->max_width,
+        "height", GST_TYPE_INT_RANGE, res->min_height, res->max_height,
+        "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, G_MAXINT, 1, NULL);
+    if (!caps)
+      continue;
+
+    out_caps = gst_caps_merge (out_caps, caps);
+  }
+
+  self->allowed_caps = gst_caps_simplify (out_caps);
+
+  GST_DEBUG_OBJECT (self, "allowed caps = %" GST_PTR_FORMAT,
+      self->allowed_caps);
+
+  return TRUE;
+}
+
+static gboolean
+gst_kms_sink_start (GstBaseSink * bsink)
+{
+  GstKMSSink *self;
+  drmModeRes *res;
+  drmModeConnector *conn;
+  drmModeCrtc *crtc;
+  drmModePlaneRes *pres;
+  drmModePlane *plane;
+  gboolean universal_planes;
+  gboolean ret;
+
+  self = GST_KMS_SINK (bsink);
+  universal_planes = FALSE;
+  ret = FALSE;
+  res = NULL;
+  conn = NULL;
+  crtc = NULL;
+  pres = NULL;
+  plane = NULL;
+
+  if (self->devname)
+    self->fd = drmOpen (self->devname, NULL);
+  else
+    self->fd = kms_open (&self->devname);
+  if (self->fd < 0)
+    goto open_failed;
+
+  log_drm_version (self);
+  if (!get_drm_caps (self))
+    goto bail;
+
+  res = drmModeGetResources (self->fd);
+  if (!res)
+    goto resources_failed;
+
+  if (self->conn_id == -1)
+    conn = find_main_monitor (self->fd, res);
+  else
+    conn = drmModeGetConnector (self->fd, self->conn_id);
+  if (!conn)
+    goto connector_failed;
+
+  crtc = find_crtc_for_connector (self->fd, res, conn, &self->pipe);
+  if (!crtc)
+    goto crtc_failed;
+
+retry_find_plane:
+  if (universal_planes &&
+      drmSetClientCap (self->fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1))
+    goto set_cap_failed;
+
+  pres = drmModeGetPlaneResources (self->fd);
+  if (!pres)
+    goto plane_resources_failed;
+
+  if (self->plane_id == -1)
+    plane = find_plane_for_crtc (self->fd, res, pres, crtc->crtc_id);
+  else
+    plane = drmModeGetPlane (self->fd, self->plane_id);
+  if (!plane)
+    goto plane_failed;
+
+  /* let's get the available color formats in plane */
+  if (!ensure_allowed_caps (self, plane, res))
+    goto bail;
+
+  self->conn_id = conn->connector_id;
+  self->crtc_id = crtc->crtc_id;
+  self->plane_id = plane->plane_id;
+
+  GST_INFO_OBJECT (self, "connector id = %d / crtc id = %d / plane id = %d",
+      self->conn_id, self->crtc_id, self->plane_id);
+
+  self->hdisplay = crtc->mode.hdisplay;
+  self->vdisplay = crtc->mode.vdisplay;
+  self->buffer_id = crtc->buffer_id;
+
+  self->mm_width = conn->mmWidth;
+  self->mm_height = conn->mmHeight;
+
+  GST_INFO_OBJECT (self, "display size: pixels = %dx%d / millimeters = %dx%d",
+      self->hdisplay, self->vdisplay, self->mm_width, self->mm_height);
+
+  self->pollfd.fd = self->fd;
+  gst_poll_add_fd (self->poll, &self->pollfd);
+  gst_poll_fd_ctl_read (self->poll, &self->pollfd, TRUE);
+
+  ret = TRUE;
+
+bail:
+  if (plane)
+    drmModeFreePlane (plane);
+  if (pres)
+    drmModeFreePlaneResources (pres);
+  if (crtc)
+    drmModeFreeCrtc (crtc);
+  if (conn)
+    drmModeFreeConnector (conn);
+  if (res)
+    drmModeFreeResources (res);
+
+  if (!ret && self->fd >= 0) {
+    drmClose (self->fd);
+    self->fd = -1;
+  }
+
+  return ret;
+
+  /* ERRORS */
+open_failed:
+  {
+    GST_ERROR_OBJECT (self, "Could not open DRM module %s: %s",
+        GST_STR_NULL (self->devname), strerror (errno));
+    return FALSE;
+  }
+
+resources_failed:
+  {
+    GST_ERROR_OBJECT (self, "drmModeGetResources failed: %s (%d)",
+        strerror (errno), errno);
+    goto bail;
+  }
+
+connector_failed:
+  {
+    GST_ERROR_OBJECT (self, "Could not find a valid monitor connector");
+    goto bail;
+  }
+
+crtc_failed:
+  {
+    GST_ERROR_OBJECT (self, "Could not find a crtc for connector");
+    goto bail;
+  }
+
+set_cap_failed:
+  {
+    GST_ERROR_OBJECT (self, "Could not set universal planes capability bit");
+    goto bail;
+  }
+
+plane_resources_failed:
+  {
+    GST_ERROR_OBJECT (self, "drmModeGetPlaneResources failed: %s (%d)",
+        strerror (errno), errno);
+    goto bail;
+  }
+
+plane_failed:
+  {
+    if (universal_planes) {
+      GST_ERROR_OBJECT (self, "Could not find a plane for crtc");
+      goto bail;
+    } else {
+      universal_planes = TRUE;
+      goto retry_find_plane;
+    }
+  }
+}
+
+static gboolean
+gst_kms_sink_stop (GstBaseSink * bsink)
+{
+  GstKMSSink *self;
+
+  self = GST_KMS_SINK (bsink);
+
+  gst_buffer_replace (&self->last_buffer, NULL);
+  gst_caps_replace (&self->allowed_caps, NULL);
+  gst_object_replace ((GstObject **) & self->pool, NULL);
+  gst_object_replace ((GstObject **) & self->allocator, NULL);
+
+  gst_poll_remove_fd (self->poll, &self->pollfd);
+  gst_poll_restart (self->poll);
+  gst_poll_fd_init (&self->pollfd);
+
+  if (self->fd >= 0) {
+    drmClose (self->fd);
+    self->fd = -1;
+  }
+
+  return TRUE;
+}
+
+static GstCaps *
+gst_kms_sink_get_allowed_caps (GstKMSSink * self)
+{
+  if (!self->allowed_caps)
+    return NULL;                /* base class will return the template caps */
+  return gst_caps_ref (self->allowed_caps);
+}
+
+static GstCaps *
+gst_kms_sink_get_caps (GstBaseSink * bsink, GstCaps * filter)
+{
+  GstKMSSink *self;
+  GstCaps *caps, *out_caps;
+
+  self = GST_KMS_SINK (bsink);
+
+  caps = gst_kms_sink_get_allowed_caps (self);
+  if (caps && filter) {
+    out_caps = gst_caps_intersect_full (caps, filter, GST_CAPS_INTERSECT_FIRST);
+    gst_caps_unref (caps);
+  } else {
+    out_caps = caps;
+  }
+
+  return out_caps;
+}
+
+static void
+ensure_kms_allocator (GstKMSSink * self)
+{
+  if (self->allocator)
+    return;
+  self->allocator = gst_kms_allocator_new (self->fd);
+}
+
+static GstBufferPool *
+gst_kms_sink_create_pool (GstKMSSink * self, GstCaps * caps, gsize size,
+    gint min)
+{
+  GstBufferPool *pool;
+  GstStructure *config;
+
+  pool = gst_kms_buffer_pool_new ();
+  if (!pool)
+    goto pool_failed;
+
+  config = gst_buffer_pool_get_config (pool);
+  gst_buffer_pool_config_set_params (config, caps, size, min, 0);
+  gst_buffer_pool_config_add_option (config, GST_BUFFER_POOL_OPTION_VIDEO_META);
+
+  ensure_kms_allocator (self);
+  gst_buffer_pool_config_set_allocator (config, self->allocator, NULL);
+
+  if (!gst_buffer_pool_set_config (pool, config))
+    goto config_failed;
+
+  return pool;
+
+  /* ERRORS */
+pool_failed:
+  {
+    GST_ERROR_OBJECT (self, "failed to create buffer pool");
+    return NULL;
+  }
+config_failed:
+  {
+    GST_ERROR_OBJECT (self, "failed to set config");
+    gst_object_unref (pool);
+    return NULL;
+  }
+}
+
+static gboolean
+gst_kms_sink_calculate_display_ratio (GstKMSSink * self, GstVideoInfo * vinfo)
+{
+  guint dar_n, dar_d;
+  guint video_width, video_height;
+  guint video_par_n, video_par_d;
+  guint dpy_par_n, dpy_par_d;
+
+  video_width = GST_VIDEO_INFO_WIDTH (vinfo);
+  video_height = GST_VIDEO_INFO_HEIGHT (vinfo);
+  video_par_n = GST_VIDEO_INFO_PAR_N (vinfo);
+  video_par_d = GST_VIDEO_INFO_PAR_D (vinfo);
+
+  gst_video_calculate_device_ratio (self->hdisplay, self->vdisplay,
+      self->mm_width, self->mm_height, &dpy_par_n, &dpy_par_d);
+
+  if (!gst_video_calculate_display_ratio (&dar_n, &dar_d, video_width,
+          video_height, video_par_n, video_par_d, dpy_par_n, dpy_par_d))
+    return FALSE;
+
+  GST_DEBUG_OBJECT (self, "video calculated display ratio: %d/%d", dar_n,
+      dar_d);
+
+  /* now find a width x height that respects this display ratio.
+   * prefer those that have one of w/h the same as the incoming video
+   * using wd / hd = dar_n / dar_d */
+
+  /* start with same height, because of interlaced video */
+  /* check hd / dar_d is an integer scale factor, and scale wd with the PAR */
+  if (video_height % dar_d == 0) {
+    GST_DEBUG_OBJECT (self, "keeping video height");
+    GST_VIDEO_SINK_WIDTH (self) = (guint)
+        gst_util_uint64_scale_int (video_height, dar_n, dar_d);
+    GST_VIDEO_SINK_HEIGHT (self) = video_height;
+  } else if (video_width % dar_n == 0) {
+    GST_DEBUG_OBJECT (self, "keeping video width");
+    GST_VIDEO_SINK_WIDTH (self) = video_width;
+    GST_VIDEO_SINK_HEIGHT (self) = (guint)
+        gst_util_uint64_scale_int (video_width, dar_d, dar_n);
+  } else {
+    GST_DEBUG_OBJECT (self, "approximating while keeping video height");
+    GST_VIDEO_SINK_WIDTH (self) = (guint)
+        gst_util_uint64_scale_int (video_height, dar_n, dar_d);
+    GST_VIDEO_SINK_HEIGHT (self) = video_height;
+  }
+  GST_DEBUG_OBJECT (self, "scaling to %dx%d", GST_VIDEO_SINK_WIDTH (self),
+      GST_VIDEO_SINK_HEIGHT (self));
+
+  return TRUE;
+}
+
+static gboolean
+gst_kms_sink_set_caps (GstBaseSink * bsink, GstCaps * caps)
+{
+  GstKMSSink *self;
+  GstVideoInfo vinfo;
+  GstBufferPool *newpool, *oldpool;
+
+  self = GST_KMS_SINK (bsink);
+
+  if (!gst_video_info_from_caps (&vinfo, caps))
+    goto invalid_format;
+
+  if (!gst_kms_sink_calculate_display_ratio (self, &vinfo))
+    goto no_disp_ratio;
+
+  if (GST_VIDEO_SINK_WIDTH (self) <= 0 || GST_VIDEO_SINK_HEIGHT (self) <= 0)
+    goto invalid_size;
+
+  /* create a new pool for the new configuration */
+  newpool = gst_kms_sink_create_pool (self, caps, GST_VIDEO_INFO_SIZE (&vinfo),
+      2);
+  if (!newpool)
+    goto no_pool;
+
+  /* we don't activate the internal pool yet as it may not be needed */
+  oldpool = self->pool;
+  self->pool = newpool;
+
+  if (oldpool) {
+    gst_buffer_pool_set_active (oldpool, FALSE);
+    gst_object_unref (oldpool);
+  }
+
+  self->vinfo = vinfo;
+
+  GST_DEBUG_OBJECT (self, "negotiated caps = %" GST_PTR_FORMAT, caps);
+
+  return TRUE;
+
+  /* ERRORS */
+invalid_format:
+  {
+    GST_ERROR_OBJECT (self, "caps invalid");
+    return FALSE;
+  }
+
+invalid_size:
+  {
+    GST_ELEMENT_ERROR (self, CORE, NEGOTIATION, (NULL),
+        ("Invalid image size."));
+    return FALSE;
+  }
+
+no_disp_ratio:
+  {
+    GST_ELEMENT_ERROR (self, CORE, NEGOTIATION, (NULL),
+        ("Error calculating the output display ratio of the video."));
+    return FALSE;
+  }
+no_pool:
+  {
+    /* Already warned in create_pool */
+    return FALSE;
+  }
+}
+
+static gboolean
+gst_kms_sink_propose_allocation (GstBaseSink * bsink, GstQuery * query)
+{
+  GstKMSSink *self;
+  GstCaps *caps;
+  gboolean need_pool;
+  GstVideoInfo vinfo;
+  GstBufferPool *pool;
+  gsize size;
+
+  self = GST_KMS_SINK (bsink);
+
+  gst_query_parse_allocation (query, &caps, &need_pool);
+  if (!caps)
+    goto no_caps;
+  if (!gst_video_info_from_caps (&vinfo, caps))
+    goto invalid_caps;
+
+  size = GST_VIDEO_INFO_SIZE (&vinfo);
+
+  pool = NULL;
+  if (need_pool) {
+    pool = gst_kms_sink_create_pool (self, caps, size, 0);
+    if (!pool)
+      goto no_pool;
+  }
+
+  if (pool) {
+    /* we need at least 2 buffer because we hold on to the last one */
+    gst_query_add_allocation_pool (query, pool, size, 2, 0);
+    gst_object_unref (pool);
+  }
+
+  gst_query_add_allocation_meta (query, GST_VIDEO_META_API_TYPE, NULL);
+  gst_query_add_allocation_meta (query, GST_VIDEO_CROP_META_API_TYPE, NULL);
+
+  return TRUE;
+
+  /* ERRORS */
+no_caps:
+  {
+    GST_DEBUG_OBJECT (bsink, "no caps specified");
+    return FALSE;
+  }
+invalid_caps:
+  {
+    GST_DEBUG_OBJECT (bsink, "invalid caps specified");
+    return FALSE;
+  }
+no_pool:
+  {
+    /* Already warned in create_pool */
+    return FALSE;
+  }
+}
+
+static void
+gst_kms_sink_get_times (GstBaseSink * bsink, GstBuffer * buf,
+    GstClockTime * start, GstClockTime * end)
+{
+  GstKMSSink *self;
+
+  self = GST_KMS_SINK (bsink);
+
+  if (GST_BUFFER_TIMESTAMP_IS_VALID (buf)) {
+    *start = GST_BUFFER_TIMESTAMP (buf);
+    if (GST_BUFFER_DURATION_IS_VALID (buf))
+      *end = *start + GST_BUFFER_DURATION (buf);
+    else {
+      if (GST_VIDEO_INFO_FPS_N (&self->vinfo) > 0) {
+        *end = *start +
+            gst_util_uint64_scale_int (GST_SECOND,
+            GST_VIDEO_INFO_FPS_D (&self->vinfo),
+            GST_VIDEO_INFO_FPS_N (&self->vinfo));
+      }
+    }
+  }
+}
+
+static void
+sync_handler (gint fd, guint frame, guint sec, guint usec, gpointer data)
+{
+  gboolean *waiting;
+
+  waiting = data;
+  *waiting = FALSE;
+}
+
+static gboolean
+gst_kms_sink_sync (GstKMSSink * self)
+{
+  gint ret;
+  gboolean waiting;
+  drmEventContext evctxt = {
+    .version = DRM_EVENT_CONTEXT_VERSION,
+    .page_flip_handler = sync_handler,
+    .vblank_handler = sync_handler,
+  };
+  drmVBlank vbl = {
+    .request = {
+          .type = DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT,
+          .sequence = 1,
+          .signal = (gulong) & waiting,
+        },
+  };
+
+  if (self->pipe == 1)
+    vbl.request.type |= DRM_VBLANK_SECONDARY;
+  else if (self->pipe > 1)
+    vbl.request.type |= self->pipe << DRM_VBLANK_HIGH_CRTC_SHIFT;
+
+  waiting = TRUE;
+  if (!self->has_async_page_flip) {
+    ret = drmWaitVBlank (self->fd, &vbl);
+    if (ret)
+      goto vblank_failed;
+  } else {
+    ret = drmModePageFlip (self->fd, self->crtc_id, self->buffer_id,
+        DRM_MODE_PAGE_FLIP_EVENT, &waiting);
+    if (ret)
+      goto pageflip_failed;
+  }
+
+  while (waiting) {
+    do {
+      ret = gst_poll_wait (self->poll, 3 * GST_SECOND);
+    } while (ret == -1 && (errno == EAGAIN || errno == EINTR));
+
+    ret = drmHandleEvent (self->fd, &evctxt);
+    if (ret)
+      goto event_failed;
+  }
+
+  return TRUE;
+
+  /* ERRORS */
+vblank_failed:
+  {
+    GST_WARNING_OBJECT (self, "drmWaitVBlank failed: %s (%d)", strerror (-ret),
+        ret);
+    return FALSE;
+  }
+pageflip_failed:
+  {
+    GST_WARNING_OBJECT (self, "drmModePageFlip failed: %s (%d)",
+        strerror (-ret), ret);
+    return FALSE;
+  }
+event_failed:
+  {
+    GST_ERROR_OBJECT (self, "drmHandleEvent failed: %s (%d)", strerror (-ret),
+        ret);
+    return FALSE;
+  }
+}
+
+static GstMemory *
+get_cached_kmsmem (GstMemory * mem)
+{
+  return gst_mini_object_get_qdata (GST_MINI_OBJECT (mem),
+      g_quark_from_static_string ("kmsmem"));
+}
+
+static void
+set_cached_kmsmem (GstMemory * mem, GstMemory * kmsmem)
+{
+  return gst_mini_object_set_qdata (GST_MINI_OBJECT (mem),
+      g_quark_from_static_string ("kmsmem"), kmsmem,
+      (GDestroyNotify) gst_memory_unref);
+}
+
+static gboolean
+gst_kms_sink_import_dmabuf (GstKMSSink * self, GstBuffer * inbuf,
+    GstBuffer ** outbuf)
+{
+  gint prime_fds[GST_VIDEO_MAX_PLANES] = { 0, };
+  GstVideoMeta *meta;
+  guint i, n_mem, n_planes;
+  GstKMSMemory *kmsmem;
+  guint mems_idx[GST_VIDEO_MAX_PLANES];
+  gsize mems_skip[GST_VIDEO_MAX_PLANES];
+  GstMemory *mems[GST_VIDEO_MAX_PLANES];
+
+  if (!self->has_prime_import)
+    return FALSE;
+
+  /* This will eliminate most non-dmabuf out there */
+  if (!gst_is_dmabuf_memory (gst_buffer_peek_memory (inbuf, 0)))
+    return FALSE;
+
+  n_planes = GST_VIDEO_INFO_N_PLANES (&self->vinfo);
+  n_mem = gst_buffer_n_memory (inbuf);
+  meta = gst_buffer_get_video_meta (inbuf);
+
+  GST_TRACE_OBJECT (self, "Found a dmabuf with %u planes and %u memories",
+      n_planes, n_mem);
+
+  /* We cannot have multiple dmabuf per plane */
+  if (n_mem > n_planes)
+    return FALSE;
+
+  /* Update video info based on video meta */
+  if (meta) {
+    GST_VIDEO_INFO_WIDTH (&self->vinfo) = meta->width;
+    GST_VIDEO_INFO_HEIGHT (&self->vinfo) = meta->height;
+
+    for (i = 0; i < meta->n_planes; i++) {
+      GST_VIDEO_INFO_PLANE_OFFSET (&self->vinfo, i) = meta->offset[i];
+      GST_VIDEO_INFO_PLANE_STRIDE (&self->vinfo, i) = meta->stride[i];
+    }
+  }
+
+  /* Find and validate all memories */
+  for (i = 0; i < n_planes; i++) {
+    guint length;
+
+    if (!gst_buffer_find_memory (inbuf,
+            GST_VIDEO_INFO_PLANE_OFFSET (&self->vinfo, i), 1,
+            &mems_idx[i], &length, &mems_skip[i]))
+      return FALSE;
+
+    mems[i] = gst_buffer_peek_memory (inbuf, mems_idx[i]);
+
+    /* And all memory found must be dmabuf */
+    if (!gst_is_dmabuf_memory (mems[i]))
+      return FALSE;
+  }
+
+  kmsmem = (GstKMSMemory *) get_cached_kmsmem (mems[0]);
+  if (kmsmem) {
+    GST_LOG_OBJECT (self, "found KMS mem %p in DMABuf mem %p with fb id = %d",
+        kmsmem, mems[0], kmsmem->fb_id);
+    goto wrap_mem;
+  }
+
+  for (i = 0; i < n_planes; i++)
+    prime_fds[i] = gst_dmabuf_memory_get_fd (mems[i]);
+
+  GST_LOG_OBJECT (self, "found these prime ids: %d, %d, %d, %d", prime_fds[0],
+      prime_fds[1], prime_fds[2], prime_fds[3]);
+
+  kmsmem = gst_kms_allocator_dmabuf_import (self->allocator, prime_fds,
+      n_planes, mems_skip, &self->vinfo);
+  if (!kmsmem)
+    return FALSE;
+
+  GST_LOG_OBJECT (self, "setting KMS mem %p to DMABuf mem %p with fb id = %d",
+      kmsmem, mems[0], kmsmem->fb_id);
+  set_cached_kmsmem (mems[0], GST_MEMORY_CAST (kmsmem));
+
+wrap_mem:
+  *outbuf = gst_buffer_new ();
+  if (!*outbuf)
+    return FALSE;
+  gst_buffer_append_memory (*outbuf, gst_memory_ref (GST_MEMORY_CAST (kmsmem)));
+  gst_buffer_add_parent_buffer_meta (*outbuf, inbuf);
+
+  return TRUE;
+}
+
+static GstBuffer *
+gst_kms_sink_get_input_buffer (GstKMSSink * self, GstBuffer * inbuf)
+{
+  GstMemory *mem;
+  GstBuffer *buf;
+  GstFlowReturn ret;
+  GstVideoFrame inframe, outframe;
+  gboolean success;
+
+  mem = gst_buffer_peek_memory (inbuf, 0);
+  if (!mem)
+    return NULL;
+
+  if (gst_is_kms_memory (mem))
+    return gst_buffer_ref (inbuf);
+
+  buf = NULL;
+  if (gst_kms_sink_import_dmabuf (self, inbuf, &buf))
+    return buf;
+
+  GST_CAT_INFO_OBJECT (CAT_PERFORMANCE, self, "frame copy");
+
+  if (!gst_buffer_pool_set_active (self->pool, TRUE))
+    goto activate_pool_failed;
+
+  ret = gst_buffer_pool_acquire_buffer (self->pool, &buf, NULL);
+  if (ret != GST_FLOW_OK)
+    goto create_buffer_failed;
+
+  if (!gst_video_frame_map (&inframe, &self->vinfo, inbuf, GST_MAP_READ))
+    goto error_map_src_buffer;
+
+  if (!gst_video_frame_map (&outframe, &self->vinfo, buf, GST_MAP_WRITE))
+    goto error_map_dst_buffer;
+
+  success = gst_video_frame_copy (&outframe, &inframe);
+  gst_video_frame_unmap (&outframe);
+  gst_video_frame_unmap (&inframe);
+  if (!success)
+    goto error_copy_buffer;
+
+  return buf;
+
+bail:
+  {
+    if (buf)
+      gst_buffer_unref (buf);
+    return NULL;
+  }
+
+  /* ERRORS */
+activate_pool_failed:
+  {
+    GST_ELEMENT_ERROR (self, STREAM, FAILED, ("failed to activate buffer pool"),
+        ("failed to activate buffer pool"));
+    goto bail;
+  }
+create_buffer_failed:
+  {
+    GST_ELEMENT_ERROR (self, STREAM, FAILED, ("allocation failed"),
+        ("failed to create buffer"));
+    goto bail;
+  }
+error_copy_buffer:
+  {
+    GST_WARNING_OBJECT (self, "failed to upload buffer");
+    goto bail;
+  }
+error_map_dst_buffer:
+  {
+    gst_video_frame_unmap (&inframe);
+    /* fall-through */
+  }
+error_map_src_buffer:
+  {
+    GST_WARNING_OBJECT (self, "failed to map buffer");
+    goto bail;
+  }
+}
+
+static GstFlowReturn
+gst_kms_sink_show_frame (GstVideoSink * vsink, GstBuffer * buf)
+{
+  gint ret;
+  GstBuffer *buffer;
+  guint32 fb_id;
+  GstKMSSink *self;
+  GstVideoCropMeta *crop;
+  GstVideoRectangle src = { 0, };
+  GstVideoRectangle dst = { 0, };
+  GstVideoRectangle result;
+  GstFlowReturn res;
+
+  self = GST_KMS_SINK (vsink);
+
+  res = GST_FLOW_ERROR;
+
+  buffer = gst_kms_sink_get_input_buffer (self, buf);
+  if (!buffer)
+    return GST_FLOW_ERROR;
+  fb_id = gst_kms_memory_get_fb_id (gst_buffer_peek_memory (buffer, 0));
+  if (fb_id == 0)
+    goto buffer_invalid;
+
+  GST_TRACE_OBJECT (self, "displaying fb %d", fb_id);
+
+  if ((crop = gst_buffer_get_video_crop_meta (buffer))) {
+    GstVideoInfo vinfo = self->vinfo;
+    vinfo.width = crop->width;
+    vinfo.height = crop->height;
+
+    if (!gst_kms_sink_calculate_display_ratio (self, &vinfo))
+      goto no_disp_ratio;
+
+    src.x = crop->x;
+    src.y = crop->y;
+  }
+
+  src.w = GST_VIDEO_SINK_WIDTH (self);
+  src.h = GST_VIDEO_SINK_HEIGHT (self);
+
+  dst.w = self->hdisplay;
+  dst.h = self->vdisplay;
+
+  gst_video_sink_center_rect (src, dst, &result, TRUE);
+
+  if (crop) {
+    src.w = crop->width;
+    src.h = crop->height;
+  } else {
+    src.w = GST_VIDEO_INFO_WIDTH (&self->vinfo);
+    src.h = GST_VIDEO_INFO_HEIGHT (&self->vinfo);
+  }
+
+  GST_TRACE_OBJECT (self,
+      "drmModeSetPlane at (%i,%i) %ix%i sourcing at (%i,%i) %ix%i",
+      result.x, result.y, result.w, result.h, src.x, src.y, src.w, src.h);
+
+  ret = drmModeSetPlane (self->fd, self->plane_id, self->crtc_id, fb_id, 0,
+      result.x, result.y, result.w, result.h,
+      /* source/cropping coordinates are given in Q16 */
+      src.x << 16, src.y << 16, src.w << 16, src.h << 16);
+  if (ret)
+    goto set_plane_failed;
+
+  /* Wait for the previous frame to complete redraw */
+  if (!gst_kms_sink_sync (self))
+    goto bail;
+
+  gst_buffer_replace (&self->last_buffer, buffer);
+
+  res = GST_FLOW_OK;
+
+bail:
+  gst_buffer_unref (buffer);
+  return res;
+
+  /* ERRORS */
+buffer_invalid:
+  {
+    GST_ERROR_OBJECT (self, "invalid buffer: it doesn't have a fb id");
+    goto bail;
+  }
+set_plane_failed:
+  {
+    GST_DEBUG_OBJECT (self, "result = { %d, %d, %d, %d} / "
+        "src = { %d, %d, %d %d } / dst = { %d, %d, %d %d }", result.x, result.y,
+        result.w, result.h, src.x, src.y, src.w, src.h, dst.x, dst.y, dst.w,
+        dst.h);
+    GST_ELEMENT_ERROR (self, RESOURCE, FAILED,
+        (NULL), ("drmModeSetPlane failed: %s (%d)", strerror (-ret), ret));
+    goto bail;
+  }
+no_disp_ratio:
+  {
+    GST_ELEMENT_ERROR (self, CORE, NEGOTIATION, (NULL),
+        ("Error calculating the output display ratio of the video."));
+    goto bail;
+  }
+}
+
+static void
+gst_kms_sink_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstKMSSink *sink;
+
+  sink = GST_KMS_SINK (object);
+
+  switch (prop_id) {
+    case PROP_DRIVER_NAME:
+      sink->devname = g_value_dup_string (value);
+      break;
+    case PROP_CONNECTOR_ID:
+      sink->conn_id = g_value_get_int (value);
+      break;
+    case PROP_PLANE_ID:
+      sink->plane_id = g_value_get_int (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_kms_sink_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstKMSSink *sink;
+
+  sink = GST_KMS_SINK (object);
+
+  switch (prop_id) {
+    case PROP_DRIVER_NAME:
+      g_value_take_string (value, sink->devname);
+      break;
+    case PROP_CONNECTOR_ID:
+      g_value_set_int (value, sink->conn_id);
+      break;
+    case PROP_PLANE_ID:
+      g_value_set_int (value, sink->plane_id);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_kms_sink_finalize (GObject * object)
+{
+  GstKMSSink *sink;
+
+  sink = GST_KMS_SINK (object);
+  g_clear_pointer (&sink->devname, g_free);
+  gst_poll_free (sink->poll);
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+gst_kms_sink_init (GstKMSSink * sink)
+{
+  sink->fd = -1;
+  sink->conn_id = -1;
+  sink->plane_id = -1;
+  gst_poll_fd_init (&sink->pollfd);
+  sink->poll = gst_poll_new (TRUE);
+  gst_video_info_init (&sink->vinfo);
+}
+
+static void
+gst_kms_sink_class_init (GstKMSSinkClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstElementClass *element_class;
+  GstBaseSinkClass *basesink_class;
+  GstVideoSinkClass *videosink_class;
+  GstCaps *caps;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  element_class = GST_ELEMENT_CLASS (klass);
+  basesink_class = GST_BASE_SINK_CLASS (klass);
+  videosink_class = GST_VIDEO_SINK_CLASS (klass);
+
+  gst_element_class_set_static_metadata (element_class, "KMS video sink",
+      "Sink/Video", GST_PLUGIN_DESC, "Víctor Jáquez <vjaquez@igalia.com>");
+
+  caps = gst_kms_sink_caps_template_fill ();
+  gst_element_class_add_pad_template (element_class,
+      gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, caps));
+  gst_caps_unref (caps);
+
+  basesink_class->start = GST_DEBUG_FUNCPTR (gst_kms_sink_start);
+  basesink_class->stop = GST_DEBUG_FUNCPTR (gst_kms_sink_stop);
+  basesink_class->set_caps = GST_DEBUG_FUNCPTR (gst_kms_sink_set_caps);
+  basesink_class->get_caps = GST_DEBUG_FUNCPTR (gst_kms_sink_get_caps);
+  basesink_class->propose_allocation = gst_kms_sink_propose_allocation;
+  basesink_class->get_times = gst_kms_sink_get_times;
+
+  videosink_class->show_frame = gst_kms_sink_show_frame;
+
+  gobject_class->finalize = gst_kms_sink_finalize;
+  gobject_class->set_property = gst_kms_sink_set_property;
+  gobject_class->get_property = gst_kms_sink_get_property;
+
+  /**
+   * kmssink:driver-name:
+   *
+   * If you have a system with multiple GPUs, you can choose which GPU
+   * to use setting the DRM device driver name. Otherwise, the first
+   * one from an internal list is used.
+   */
+  g_properties[PROP_DRIVER_NAME] = g_param_spec_string ("driver-name",
+      "device name", "DRM device driver name", NULL,
+      G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT);
+
+  /**
+   * kmssink:connector-id:
+   *
+   * A GPU has several output connectors, for example: LVDS, VGA,
+   * HDMI, etc. By default the first LVDS is tried, then the first
+   * eDP, and at the end, the first connected one.
+   */
+  g_properties[PROP_CONNECTOR_ID] = g_param_spec_int ("connector-id",
+      "Connector ID", "DRM connector id", -1, G_MAXINT32, -1,
+      G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT);
+
+   /**
+   * kmssink:plane-id:
+   *
+   * There could be several planes associated with a CRTC.
+   * By default the first plane that's possible to use with a given
+   * CRTC is tried.
+   */
+  g_properties[PROP_PLANE_ID] = g_param_spec_int ("plane-id",
+      "Plane ID", "DRM plane id", -1, G_MAXINT32, -1,
+      G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT);
+
+  g_object_class_install_properties (gobject_class, PROP_N, g_properties);
+}
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+  if (!gst_element_register (plugin, GST_PLUGIN_NAME, GST_RANK_SECONDARY,
+          GST_TYPE_KMS_SINK))
+    return FALSE;
+
+  return TRUE;
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, GST_VERSION_MINOR, kms,
+    GST_PLUGIN_DESC, plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME,
+    GST_PACKAGE_ORIGIN)
diff --git a/sys/kms/gstkmssink.h b/sys/kms/gstkmssink.h
new file mode 100644
index 0000000..494f440
--- /dev/null
+++ b/sys/kms/gstkmssink.h
@@ -0,0 +1,87 @@
+/* GStreamer
+ *
+ * Copyright (C) 2016 Igalia
+ *
+ * Authors:
+ *  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+ *  Javier Martin <javiermartin@by.com.es>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef __GST_KMS_SINK_H__
+#define __GST_KMS_SINK_H__
+
+#include <gst/video/gstvideosink.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_KMS_SINK \
+  (gst_kms_sink_get_type())
+#define GST_KMS_SINK(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_KMS_SINK, GstKMSSink))
+#define GST_KMS_SINK_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_KMS_SINK, GstKMSSinkClass))
+#define GST_IS_KMS_SINK(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_KMS_SINK))
+#define GST_IS_KMS_SINK_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_KMS_SINK))
+
+typedef struct _GstKMSSink GstKMSSink;
+typedef struct _GstKMSSinkClass GstKMSSinkClass;
+
+struct _GstKMSSink {
+  GstVideoSink videosink;
+
+  /*< private >*/
+  gint fd;
+  gint conn_id;
+  gint crtc_id;
+  gint plane_id;
+  guint pipe;
+
+  /* crtc data */
+  guint16 hdisplay, vdisplay;
+  guint32 buffer_id;
+
+  /* capabilities */
+  gboolean has_prime_import;
+  gboolean has_async_page_flip;
+
+  GstVideoInfo vinfo;
+  GstCaps *allowed_caps;
+  GstBufferPool *pool;
+  GstAllocator *allocator;
+  GstBuffer *last_buffer;
+
+  gchar *devname;
+
+  guint32 mm_width, mm_height;
+
+  GstPoll *poll;
+  GstPollFD pollfd;
+};
+
+struct _GstKMSSinkClass {
+  GstVideoSinkClass parent_class;
+};
+
+GType gst_kms_sink_get_type (void) G_GNUC_CONST;
+
+G_END_DECLS
+
+#endif /* __GST_KMS_SINK_H__ */
diff --git a/sys/kms/gstkmsutils.c b/sys/kms/gstkmsutils.c
new file mode 100644
index 0000000..ddf8d2d
--- /dev/null
+++ b/sys/kms/gstkmsutils.c
@@ -0,0 +1,179 @@
+/* GStreamer
+ *
+ * Copyright (C) 2016 Igalia
+ *
+ * Authors:
+ *  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+ *  Javier Martin <javiermartin@by.com.es>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <drm_fourcc.h>
+
+#include "gstkmsutils.h"
+
+/* *INDENT-OFF* */
+static const struct
+{
+  guint32 fourcc;
+  GstVideoFormat format;
+} format_map[] = {
+#define DEF_FMT(fourcc, fmt) \
+  { DRM_FORMAT_##fourcc,GST_VIDEO_FORMAT_##fmt }
+
+  /* DEF_FMT (XRGB1555, ???), */
+  /* DEF_FMT (XBGR1555, ???), */
+#if G_BYTE_ORDER == G_LITTLE_ENDIAN
+  DEF_FMT (ARGB8888, BGRA),
+  DEF_FMT (XRGB8888, BGRx),
+  DEF_FMT (ABGR8888, RGBA),
+  DEF_FMT (XBGR8888, RGBx),
+#else
+  DEF_FMT (ARGB8888, ARGB),
+  DEF_FMT (XRGB8888, xRGB),
+  DEF_FMT (ABGR8888, ABGR),
+  DEF_FMT (XBGR8888, xBGR),
+#endif
+  DEF_FMT (UYVY, UYVY),
+  DEF_FMT (YUYV, YUY2),
+  DEF_FMT (YVYU, YVYU),
+  DEF_FMT (YUV420, I420),
+  DEF_FMT (YVU420, YV12),
+  DEF_FMT (YUV422, Y42B),
+  DEF_FMT (NV12, NV12),
+  DEF_FMT (NV21, NV21),
+  DEF_FMT (NV16, NV16),
+
+#undef DEF_FMT
+};
+/* *INDENT-ON* */
+
+GstVideoFormat
+gst_video_format_from_drm (guint32 drmfmt)
+{
+  gint i;
+
+  for (i = 0; i < G_N_ELEMENTS (format_map); i++) {
+    if (format_map[i].fourcc == drmfmt)
+      return format_map[i].format;
+  }
+
+  return GST_VIDEO_FORMAT_UNKNOWN;
+}
+
+guint32
+gst_drm_format_from_video (GstVideoFormat fmt)
+{
+  gint i;
+
+  for (i = 0; i < G_N_ELEMENTS (format_map); i++) {
+    if (format_map[i].format == fmt)
+      return format_map[i].fourcc;
+  }
+
+  return 0;
+}
+
+static GstStructure *
+gst_video_format_to_structure (GstVideoFormat format)
+{
+  GstStructure *structure;
+
+  structure = NULL;
+  if (format != GST_VIDEO_FORMAT_UNKNOWN)
+    structure = gst_structure_new ("video/x-raw", "format", G_TYPE_STRING,
+        gst_video_format_to_string (format), NULL);
+
+  return structure;
+}
+
+GstCaps *
+gst_kms_sink_caps_template_fill (void)
+{
+  gint i;
+  GstCaps *caps;
+  GstStructure *template;
+
+  caps = gst_caps_new_empty ();
+  for (i = 0; i < G_N_ELEMENTS (format_map); i++) {
+    template = gst_video_format_to_structure (format_map[i].format);
+    gst_structure_set (template,
+        "width", GST_TYPE_INT_RANGE, 1, G_MAXINT,
+        "height", GST_TYPE_INT_RANGE, 1, G_MAXINT,
+        "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, G_MAXINT, 1, NULL);
+    gst_caps_append_structure (caps, template);
+  }
+  return gst_caps_simplify (caps);
+}
+
+static const gint device_par_map[][2] = {
+  {1, 1},                       /* regular screen */
+  {16, 15},                     /* PAL TV */
+  {11, 10},                     /* 525 line Rec.601 video */
+  {54, 59},                     /* 625 line Rec.601 video */
+  {64, 45},                     /* 1280x1024 on 16:9 display */
+  {5, 3},                       /* 1280x1024 on 4:3 display */
+  {4, 3}                        /* 800x600 on 16:9 display */
+};
+
+#define DELTA(ratio, idx, w) \
+  (ABS(ratio - ((gdouble)device_par_map[idx][w] / device_par_map[idx][!(w)])))
+
+void
+gst_video_calculate_device_ratio (guint dev_width, guint dev_height,
+    guint dev_width_mm, guint dev_height_mm,
+    guint * dpy_par_n, guint * dpy_par_d)
+{
+  gdouble ratio, delta, cur_delta;
+  gint i, j, index, windex;
+
+  /* First, calculate the "real" ratio based on the X values; which is
+   * the "physical" w/h divided by the w/h in pixels of the display */
+  if (dev_width == 0 || dev_height == 0
+      || dev_width_mm == 0 || dev_height_mm == 0)
+    ratio = 1.0;
+  else
+    ratio = (gdouble) (dev_width_mm * dev_height) / (dev_height_mm * dev_width);
+
+  /* Now, find the one from device_par_map[][2] with the lowest delta
+   * to the real one */
+  delta = DELTA (ratio, 0, 0);
+  index = 0;
+  windex = 0;
+
+  for (i = 1; i < G_N_ELEMENTS (device_par_map); i++) {
+    for (j = 0; j < 2; j++) {
+      cur_delta = DELTA (ratio, i, j);
+      if (cur_delta < delta) {
+        index = i;
+        windex = j;
+        delta = cur_delta;
+      }
+    }
+  }
+
+  if (dpy_par_n)
+    *dpy_par_n = device_par_map[index][windex];
+
+  if (dpy_par_d)
+    *dpy_par_d = device_par_map[index][windex ^ 1];
+}
diff --git a/sys/kms/gstkmsutils.h b/sys/kms/gstkmsutils.h
new file mode 100644
index 0000000..75e9ba3
--- /dev/null
+++ b/sys/kms/gstkmsutils.h
@@ -0,0 +1,45 @@
+/* GStreamer
+ *
+ * Copyright (C) 2016 Igalia
+ *
+ * Authors:
+ *  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+ *  Javier Martin <javiermartin@by.com.es>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef __GST_KMS_UTILS_H__
+#define __GST_KMS_UTILS_H__
+
+#include <gst/video/video.h>
+
+G_BEGIN_DECLS
+
+GstVideoFormat gst_video_format_from_drm (guint32 drmfmt);
+guint32        gst_drm_format_from_video (GstVideoFormat fmt);
+GstCaps *      gst_kms_sink_caps_template_fill (void);
+void           gst_video_calculate_device_ratio (guint dev_width,
+						 guint dev_height,
+						 guint dev_width_mm,
+						 guint dev_height_mm,
+						 guint * dpy_par_n,
+						 guint * dpy_par_d);
+
+G_END_DECLS
+
+#endif
diff --git a/sys/linsys/Makefile.in b/sys/linsys/Makefile.in
index b609dd0..fd5824e 100644
--- a/sys/linsys/Makefile.in
+++ b/sys/linsys/Makefile.in
@@ -304,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/linsys/gstlinsyssdisink.c b/sys/linsys/gstlinsyssdisink.c
index b093bb5..a8edf37 100644
--- a/sys/linsys/gstlinsyssdisink.c
+++ b/sys/linsys/gstlinsyssdisink.c
@@ -99,8 +99,8 @@
 {
   GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_linsys_sdi_sink_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_linsys_sdi_sink_sink_template);
 
   gst_element_class_set_static_metadata (element_class, "SDI video sink",
       "Sink/Video", "Writes video from SDI transmit device",
diff --git a/sys/linsys/gstlinsyssdisrc.c b/sys/linsys/gstlinsyssdisrc.c
index 94a4e5a..43e2898 100644
--- a/sys/linsys/gstlinsyssdisrc.c
+++ b/sys/linsys/gstlinsyssdisrc.c
@@ -103,8 +103,8 @@
 {
   GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_linsys_sdi_src_src_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_linsys_sdi_src_src_template);
 
   gst_element_class_set_static_metadata (element_class, "SDI video source",
       "Source/Video", "Reads video from SDI capture device",
diff --git a/sys/nvenc/Makefile.in b/sys/nvenc/Makefile.in
index 80ec3ff..39922d6 100644
--- a/sys/nvenc/Makefile.in
+++ b/sys/nvenc/Makefile.in
@@ -308,6 +308,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -329,6 +331,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -378,6 +382,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -523,6 +529,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -649,8 +657,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -693,8 +699,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/nvenc/gstnvbaseenc.c b/sys/nvenc/gstnvbaseenc.c
index 2bc1ef3..9c457ff 100644
--- a/sys/nvenc/gstnvbaseenc.c
+++ b/sys/nvenc/gstnvbaseenc.c
@@ -50,6 +50,95 @@
 #define parent_class gst_nv_base_enc_parent_class
 G_DEFINE_ABSTRACT_TYPE (GstNvBaseEnc, gst_nv_base_enc, GST_TYPE_VIDEO_ENCODER);
 
+#define GST_TYPE_NV_PRESET (gst_nv_preset_get_type())
+static GType
+gst_nv_preset_get_type (void)
+{
+  static GType nv_preset_type = 0;
+
+  static const GEnumValue presets[] = {
+    {GST_NV_PRESET_DEFAULT, "Default", "default"},
+    {GST_NV_PRESET_HP, "High Performance", "hp"},
+    {GST_NV_PRESET_HQ, "High Quality", "hq"},
+/*    {GST_NV_PRESET_BD, "BD", "bd"}, */
+    {GST_NV_PRESET_LOW_LATENCY_DEFAULT, "Low Latency", "low-latency"},
+    {GST_NV_PRESET_LOW_LATENCY_HQ, "Low Latency, High Quality",
+        "low-latency-hq"},
+    {GST_NV_PRESET_LOW_LATENCY_HP, "Low Latency, High Performance",
+        "low-latency-hp"},
+    {GST_NV_PRESET_LOSSLESS_DEFAULT, "Lossless", "lossless"},
+    {GST_NV_PRESET_LOSSLESS_HP, "Lossless, High Performance", "lossless-hp"},
+    {0, NULL, NULL},
+  };
+
+  if (!nv_preset_type) {
+    nv_preset_type = g_enum_register_static ("GstNvPreset", presets);
+  }
+  return nv_preset_type;
+}
+
+static GUID
+_nv_preset_to_guid (GstNvPreset preset)
+{
+  GUID null = { 0, };
+
+  switch (preset) {
+#define CASE(gst,nv) case G_PASTE(GST_NV_PRESET_,gst): return G_PASTE(G_PASTE(NV_ENC_PRESET_,nv),_GUID)
+      CASE (DEFAULT, DEFAULT);
+      CASE (HP, HP);
+      CASE (HQ, HQ);
+/*    CASE (BD, BD);*/
+      CASE (LOW_LATENCY_DEFAULT, LOW_LATENCY_DEFAULT);
+      CASE (LOW_LATENCY_HQ, LOW_LATENCY_HQ);
+      CASE (LOW_LATENCY_HP, LOW_LATENCY_HQ);
+      CASE (LOSSLESS_DEFAULT, LOSSLESS_DEFAULT);
+      CASE (LOSSLESS_HP, LOSSLESS_HP);
+#undef CASE
+    default:
+      return null;
+  }
+}
+
+#define GST_TYPE_NV_RC_MODE (gst_nv_rc_mode_get_type())
+static GType
+gst_nv_rc_mode_get_type (void)
+{
+  static GType nv_rc_mode_type = 0;
+
+  static const GEnumValue modes[] = {
+    {GST_NV_RC_MODE_DEFAULT, "Default (from NVENC preset)", "default"},
+    {GST_NV_RC_MODE_CONSTQP, "Constant Quantization", "constqp"},
+    {GST_NV_RC_MODE_CBR, "Constant Bit Rate", "cbr"},
+    {GST_NV_RC_MODE_VBR, "Variable Bit Rate", "vbr"},
+    {GST_NV_RC_MODE_VBR_MINQP,
+          "Variable Bit Rate (with minimum quantization parameter)",
+        "vbr-minqp"},
+    {0, NULL, NULL},
+  };
+
+  if (!nv_rc_mode_type) {
+    nv_rc_mode_type = g_enum_register_static ("GstNvRCMode", modes);
+  }
+  return nv_rc_mode_type;
+}
+
+static NV_ENC_PARAMS_RC_MODE
+_rc_mode_to_nv (GstNvRCMode mode)
+{
+  switch (mode) {
+    case GST_NV_RC_MODE_DEFAULT:
+      return -1;
+#define CASE(gst,nv) case G_PASTE(GST_NV_RC_MODE_,gst): return G_PASTE(NV_ENC_PARAMS_RC_,nv)
+      CASE (CONSTQP, CONSTQP);
+      CASE (CBR, CBR);
+      CASE (VBR, VBR);
+      CASE (VBR_MINQP, VBR_MINQP);
+#undef CASE
+    default:
+      return -1;
+  }
+}
+
 static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
     GST_PAD_SINK,
     GST_PAD_ALWAYS,
@@ -71,8 +160,21 @@
 {
   PROP_0,
   PROP_DEVICE_ID,
+  PROP_PRESET,
+  PROP_BITRATE,
+  PROP_RC_MODE,
+  PROP_QP_MIN,
+  PROP_QP_MAX,
+  PROP_QP_CONST,
 };
 
+#define DEFAULT_PRESET GST_NV_PRESET_DEFAULT
+#define DEFAULT_BITRATE 0
+#define DEFAULT_RC_MODE GST_NV_RC_MODE_DEFAULT
+#define DEFAULT_QP_MIN -1
+#define DEFAULT_QP_MAX -1
+#define DEFAULT_QP_CONST -1
+
 /* This lock is needed to prevent the situation where multiple encoders are
  * initialised at the same time which appears to cause excessive CPU usage over
  * some period of time. */
@@ -147,14 +249,40 @@
   videoenc_class->finish = GST_DEBUG_FUNCPTR (gst_nv_base_enc_finish);
   videoenc_class->sink_query = GST_DEBUG_FUNCPTR (gst_nv_base_enc_sink_query);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
 
   g_object_class_install_property (gobject_class, PROP_DEVICE_ID,
       g_param_spec_uint ("cuda-device-id",
           "Cuda Device ID",
           "Set the GPU device to use for operations",
           0, G_MAXUINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_PRESET,
+      g_param_spec_enum ("preset", "Encoding Preset",
+          "Encoding Preset",
+          GST_TYPE_NV_PRESET,
+          DEFAULT_PRESET, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_RC_MODE,
+      g_param_spec_enum ("rc-mode", "RC Mode",
+          "Rate Control Mode",
+          GST_TYPE_NV_RC_MODE,
+          DEFAULT_RC_MODE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_QP_MIN,
+      g_param_spec_int ("qp-min", "Minimum Quantizer",
+          "Minimum quantizer (-1 = from NVENC preset)", -1, 51, DEFAULT_QP_MIN,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_QP_MAX,
+      g_param_spec_int ("qp-max", "Maximum Quantizer",
+          "Maximum quantizer (-1 = from NVENC preset)", -1, 51, DEFAULT_QP_MAX,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_QP_CONST,
+      g_param_spec_int ("qp-const", "Constant Quantizer",
+          "Constant quantizer (-1 = from NVENC preset)",
+          -1, 51, DEFAULT_QP_CONST,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_BITRATE,
+      g_param_spec_uint ("bitrate", "Bitrate",
+          "Bitrate in kbit/sec (0 = from NVENC preset)", 0, 2000 * 1024,
+          DEFAULT_BITRATE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 }
 
 static gboolean
@@ -518,6 +646,14 @@
 {
   GstVideoEncoder *encoder = GST_VIDEO_ENCODER (nvenc);
 
+  nvenc->preset_enum = DEFAULT_PRESET;
+  nvenc->selected_preset = _nv_preset_to_guid (nvenc->preset_enum);
+  nvenc->rate_control_mode = DEFAULT_RC_MODE;
+  nvenc->qp_min = DEFAULT_QP_MIN;
+  nvenc->qp_max = DEFAULT_QP_MAX;
+  nvenc->qp_const = DEFAULT_QP_CONST;
+  nvenc->bitrate = DEFAULT_BITRATE;
+
   GST_VIDEO_ENCODER_STREAM_LOCK (encoder);
   GST_VIDEO_ENCODER_STREAM_UNLOCK (encoder);
 }
@@ -910,22 +1046,163 @@
   GstNvBaseEnc *nvenc = GST_NV_BASE_ENC (enc);
   GstVideoInfo *info = &state->info;
   GstVideoCodecState *old_state = nvenc->input_state;
+  NV_ENC_RECONFIGURE_PARAMS reconfigure_params = { 0, };
+  NV_ENC_INITIALIZE_PARAMS init_params = { 0, };
+  NV_ENC_INITIALIZE_PARAMS *params;
+  NV_ENC_PRESET_CONFIG preset_config = { 0, };
   NVENCSTATUS nv_ret;
 
-  g_assert (nvenc_class->initialize_encoder);
+  if (old_state) {
+    reconfigure_params.version = NV_ENC_RECONFIGURE_PARAMS_VER;
+    params = &reconfigure_params.reInitEncodeParams;
+  } else {
+    params = &init_params;
+  }
+
+  params->version = NV_ENC_INITIALIZE_PARAMS_VER;
+  params->encodeGUID = nvenc_class->codec_id;
+  params->encodeWidth = GST_VIDEO_INFO_WIDTH (info);
+  params->encodeHeight = GST_VIDEO_INFO_HEIGHT (info);
+
+  {
+    guint32 n_presets;
+    GUID *presets;
+    guint32 i;
+
+    nv_ret =
+        NvEncGetEncodePresetCount (nvenc->encoder,
+        params->encodeGUID, &n_presets);
+    if (nv_ret != NV_ENC_SUCCESS) {
+      GST_ELEMENT_ERROR (nvenc, LIBRARY, SETTINGS, (NULL),
+          ("Failed to get encoder presets"));
+      return FALSE;
+    }
+
+    presets = g_new0 (GUID, n_presets);
+    nv_ret =
+        NvEncGetEncodePresetGUIDs (nvenc->encoder,
+        params->encodeGUID, presets, n_presets, &n_presets);
+    if (nv_ret != NV_ENC_SUCCESS) {
+      GST_ELEMENT_ERROR (nvenc, LIBRARY, SETTINGS, (NULL),
+          ("Failed to get encoder presets"));
+      g_free (presets);
+      return FALSE;
+    }
+
+    for (i = 0; i < n_presets; i++) {
+      if (gst_nvenc_cmp_guid (presets[i], nvenc->selected_preset))
+        break;
+    }
+    g_free (presets);
+    if (i >= n_presets) {
+      GST_ELEMENT_ERROR (nvenc, LIBRARY, SETTINGS, (NULL),
+          ("Selected preset not supported"));
+      return FALSE;
+    }
+
+    params->presetGUID = nvenc->selected_preset;
+  }
+
+  params->enablePTD = 1;
+  if (!old_state) {
+    /* this sets the required buffer size and the maximum allowed size on
+     * subsequent reconfigures */
+    /* FIXME: propertise this */
+    params->maxEncodeWidth = GST_VIDEO_INFO_WIDTH (info);
+    params->maxEncodeHeight = GST_VIDEO_INFO_HEIGHT (info);
+    gst_nv_base_enc_set_max_encode_size (nvenc, params->maxEncodeWidth,
+        params->maxEncodeHeight);
+  } else {
+    guint max_width, max_height;
+
+    gst_nv_base_enc_get_max_encode_size (nvenc, &max_width, &max_height);
+
+    if (GST_VIDEO_INFO_WIDTH (info) > max_width
+        || GST_VIDEO_INFO_HEIGHT (info) > max_height) {
+      GST_ELEMENT_ERROR (nvenc, STREAM, FORMAT, ("%s", "Requested stream "
+              "size is larger than the maximum configured size"), (NULL));
+      return FALSE;
+    }
+  }
+
+  preset_config.version = NV_ENC_PRESET_CONFIG_VER;
+  preset_config.presetCfg.version = NV_ENC_CONFIG_VER;
+
+  nv_ret =
+      NvEncGetEncodePresetConfig (nvenc->encoder,
+      params->encodeGUID, params->presetGUID, &preset_config);
+  if (nv_ret != NV_ENC_SUCCESS) {
+    GST_ELEMENT_ERROR (nvenc, LIBRARY, SETTINGS, (NULL),
+        ("Failed to get encode preset configuration: %d", nv_ret));
+    return FALSE;
+  }
+
+  params->encodeConfig = &preset_config.presetCfg;
+
+  if (GST_VIDEO_INFO_IS_INTERLACED (info)) {
+    if (GST_VIDEO_INFO_INTERLACE_MODE (info) ==
+        GST_VIDEO_INTERLACE_MODE_INTERLEAVED
+        || GST_VIDEO_INFO_INTERLACE_MODE (info) ==
+        GST_VIDEO_INTERLACE_MODE_MIXED) {
+      preset_config.presetCfg.frameFieldMode =
+          NV_ENC_PARAMS_FRAME_FIELD_MODE_FIELD;
+    }
+  }
+
+  if (info->fps_d > 0 && info->fps_n > 0) {
+    params->frameRateNum = info->fps_n;
+    params->frameRateDen = info->fps_d;
+  } else {
+    GST_FIXME_OBJECT (nvenc, "variable framerate");
+  }
+
+  if (nvenc->rate_control_mode != GST_NV_RC_MODE_DEFAULT) {
+    params->encodeConfig->rcParams.rateControlMode =
+        _rc_mode_to_nv (nvenc->rate_control_mode);
+    if (nvenc->bitrate > 0) {
+      /* FIXME: this produces larger bitrates?! */
+      params->encodeConfig->rcParams.averageBitRate = nvenc->bitrate * 1024;
+      params->encodeConfig->rcParams.maxBitRate = nvenc->bitrate * 1024;
+    }
+    if (nvenc->qp_const > 0) {
+      params->encodeConfig->rcParams.constQP.qpInterB = nvenc->qp_const;
+      params->encodeConfig->rcParams.constQP.qpInterP = nvenc->qp_const;
+      params->encodeConfig->rcParams.constQP.qpIntra = nvenc->qp_const;
+    }
+    if (nvenc->qp_min >= 0) {
+      params->encodeConfig->rcParams.enableMinQP = 1;
+      params->encodeConfig->rcParams.minQP.qpInterB = nvenc->qp_min;
+      params->encodeConfig->rcParams.minQP.qpInterP = nvenc->qp_min;
+      params->encodeConfig->rcParams.minQP.qpIntra = nvenc->qp_min;
+    }
+    if (nvenc->qp_max >= 0) {
+      params->encodeConfig->rcParams.enableMaxQP = 1;
+      params->encodeConfig->rcParams.maxQP.qpInterB = nvenc->qp_max;
+      params->encodeConfig->rcParams.maxQP.qpInterP = nvenc->qp_max;
+      params->encodeConfig->rcParams.maxQP.qpIntra = nvenc->qp_max;
+    }
+  }
+
+  g_assert (nvenc_class->set_encoder_config);
+  if (!nvenc_class->set_encoder_config (nvenc, state, params->encodeConfig)) {
+    GST_ERROR_OBJECT (enc, "Subclass failed to set encoder configuration");
+    return FALSE;
+  }
 
   G_LOCK (initialization_lock);
-  if (!nvenc_class->initialize_encoder (nvenc, old_state, state)) {
-    GST_ERROR_OBJECT (enc, "Subclass failed to reconfigure encoder");
-    G_UNLOCK (initialization_lock);
-    return FALSE;
+  if (old_state) {
+    nv_ret = NvEncReconfigureEncoder (nvenc->encoder, &reconfigure_params);
+  } else {
+    nv_ret = NvEncInitializeEncoder (nvenc->encoder, params);
   }
   G_UNLOCK (initialization_lock);
 
-  if (!nvenc->max_encode_width && !nvenc->max_encode_height) {
-    gst_nv_base_enc_set_max_encode_size (nvenc, GST_VIDEO_INFO_WIDTH (info),
-        GST_VIDEO_INFO_HEIGHT (info));
+  if (nv_ret != NV_ENC_SUCCESS) {
+    GST_ELEMENT_ERROR (nvenc, LIBRARY, SETTINGS, (NULL),
+        ("Failed to %sinit encoder: %d", old_state ? "re" : "", nv_ret));
+    return FALSE;
   }
+  GST_INFO_OBJECT (nvenc, "configured encoder");
 
   if (!old_state) {
     nvenc->input_info = *info;
@@ -1209,9 +1486,8 @@
     }
 
     cuda_ret =
-        cudaGraphicsResourceGetMappedPointer (&data->
-        in_gl_resource->cuda_plane_pointers[i],
-        &data->in_gl_resource->cuda_num_bytes,
+        cudaGraphicsResourceGetMappedPointer (&data->in_gl_resource->
+        cuda_plane_pointers[i], &data->in_gl_resource->cuda_num_bytes,
         data->in_gl_resource->cuda_texture);
     if (cuda_ret != cudaSuccess) {
       GST_ERROR_OBJECT (data->nvenc, "failed to get mapped pointer of map GL "
@@ -1591,6 +1867,25 @@
     case PROP_DEVICE_ID:
       nvenc->cuda_device_id = g_value_get_uint (value);
       break;
+    case PROP_PRESET:
+      nvenc->preset_enum = g_value_get_enum (value);
+      nvenc->selected_preset = _nv_preset_to_guid (nvenc->preset_enum);
+      break;
+    case PROP_RC_MODE:
+      nvenc->rate_control_mode = g_value_get_enum (value);
+      break;
+    case PROP_QP_MIN:
+      nvenc->qp_min = g_value_get_int (value);
+      break;
+    case PROP_QP_MAX:
+      nvenc->qp_max = g_value_get_int (value);
+      break;
+    case PROP_QP_CONST:
+      nvenc->qp_const = g_value_get_int (value);
+      break;
+    case PROP_BITRATE:
+      nvenc->bitrate = g_value_get_uint (value);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -1607,6 +1902,24 @@
     case PROP_DEVICE_ID:
       g_value_set_uint (value, nvenc->cuda_device_id);
       break;
+    case PROP_PRESET:
+      g_value_set_enum (value, nvenc->preset_enum);
+      break;
+    case PROP_RC_MODE:
+      g_value_set_enum (value, nvenc->rate_control_mode);
+      break;
+    case PROP_QP_MIN:
+      g_value_set_int (value, nvenc->qp_min);
+      break;
+    case PROP_QP_MAX:
+      g_value_set_int (value, nvenc->qp_max);
+      break;
+    case PROP_QP_CONST:
+      g_value_set_int (value, nvenc->qp_const);
+      break;
+    case PROP_BITRATE:
+      g_value_set_uint (value, nvenc->bitrate);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
diff --git a/sys/nvenc/gstnvbaseenc.h b/sys/nvenc/gstnvbaseenc.h
index 0a843e9..6623cc3 100644
--- a/sys/nvenc/gstnvbaseenc.h
+++ b/sys/nvenc/gstnvbaseenc.h
@@ -37,11 +37,38 @@
 #define GST_IS_NV_BASE_ENC_CLASS(obj) \
   (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_NV_BASE_ENC))
 
+typedef enum {
+  GST_NV_PRESET_DEFAULT,
+  GST_NV_PRESET_HP,
+  GST_NV_PRESET_HQ,
+/* FIXME: problematic GST_NV_PRESET_BD, */
+  GST_NV_PRESET_LOW_LATENCY_DEFAULT,
+  GST_NV_PRESET_LOW_LATENCY_HQ,
+  GST_NV_PRESET_LOW_LATENCY_HP,
+  GST_NV_PRESET_LOSSLESS_DEFAULT,
+  GST_NV_PRESET_LOSSLESS_HP,
+} GstNvPreset;
+
+typedef enum {
+  GST_NV_RC_MODE_DEFAULT,
+  GST_NV_RC_MODE_CONSTQP,
+  GST_NV_RC_MODE_CBR,
+  GST_NV_RC_MODE_VBR,
+  GST_NV_RC_MODE_VBR_MINQP,
+} GstNvRCMode;
+
 typedef struct {
   GstVideoEncoder video_encoder;
 
   /* properties */
   guint           cuda_device_id;
+  GstNvPreset     preset_enum;
+  GUID            selected_preset;
+  GstNvRCMode     rate_control_mode;
+  gint            qp_min;
+  gint            qp_max;
+  gint            qp_const;
+  guint           bitrate;
 
   CUcontext       cuda_ctx;
   void          * encoder;
@@ -90,14 +117,14 @@
 
   GUID codec_id;
 
-  gboolean (*initialize_encoder) (GstNvBaseEnc * nvenc,
-                                  GstVideoCodecState * old_state,
-                                  GstVideoCodecState * state);
   gboolean (*set_src_caps)       (GstNvBaseEnc * nvenc,
                                   GstVideoCodecState * state);
   gboolean (*set_pic_params)     (GstNvBaseEnc * nvenc,
                                   GstVideoCodecFrame * frame,
                                   NV_ENC_PIC_PARAMS * pic_params);
+  gboolean (*set_encoder_config) (GstNvBaseEnc * nvenc,
+                                  GstVideoCodecState * state,
+                                  NV_ENC_CONFIG * config);
 } GstNvBaseEncClass;
 
 G_GNUC_INTERNAL
diff --git a/sys/nvenc/gstnvenc.c b/sys/nvenc/gstnvenc.c
index 6b0d568..30b5b13 100644
--- a/sys/nvenc/gstnvenc.c
+++ b/sys/nvenc/gstnvenc.c
@@ -78,6 +78,24 @@
 }
 
 NVENCSTATUS
+NvEncGetEncodePresetCount (void *encoder, GUID encodeGUID,
+    uint32_t * encodePresetGUIDCount)
+{
+  g_assert (nvenc_api.nvEncGetEncodeProfileGUIDCount != NULL);
+  return nvenc_api.nvEncGetEncodePresetCount (encoder, encodeGUID,
+      encodePresetGUIDCount);
+}
+
+NVENCSTATUS
+NvEncGetEncodePresetGUIDs (void *encoder, GUID encodeGUID,
+    GUID * presetGUIDs, uint32_t guidArraySize, uint32_t * GUIDCount)
+{
+  g_assert (nvenc_api.nvEncGetEncodeProfileGUIDs != NULL);
+  return nvenc_api.nvEncGetEncodePresetGUIDs (encoder, encodeGUID,
+      presetGUIDs, guidArraySize, GUIDCount);
+}
+
+NVENCSTATUS
 NvEncGetEncodePresetConfig (void *encoder, GUID encodeGUID,
     GUID presetGUID, NV_ENC_PRESET_CONFIG * presetConfig)
 {
diff --git a/sys/nvenc/gstnvh264enc.c b/sys/nvenc/gstnvh264enc.c
index 170e3f7..2e60b3d 100644
--- a/sys/nvenc/gstnvh264enc.c
+++ b/sys/nvenc/gstnvh264enc.c
@@ -57,8 +57,8 @@
     GstCaps * filter);
 static gboolean gst_nv_h264_enc_set_src_caps (GstNvBaseEnc * nvenc,
     GstVideoCodecState * state);
-static gboolean gst_nv_h264_enc_initialize_encoder (GstNvBaseEnc * nvenc,
-    GstVideoCodecState * old_state, GstVideoCodecState * state);
+static gboolean gst_nv_h264_enc_set_encoder_config (GstNvBaseEnc * nvenc,
+    GstVideoCodecState * state, NV_ENC_CONFIG * config);
 static gboolean gst_nv_h264_enc_set_pic_params (GstNvBaseEnc * nvenc,
     GstVideoCodecFrame * frame, NV_ENC_PIC_PARAMS * pic_params);
 static void gst_nv_h264_enc_set_property (GObject * object, guint prop_id,
@@ -85,12 +85,11 @@
   videoenc_class->getcaps = GST_DEBUG_FUNCPTR (gst_nv_h264_enc_getcaps);
 
   nvenc_class->codec_id = NV_ENC_CODEC_H264_GUID;
-  nvenc_class->initialize_encoder = gst_nv_h264_enc_initialize_encoder;
+  nvenc_class->set_encoder_config = gst_nv_h264_enc_set_encoder_config;
   nvenc_class->set_src_caps = gst_nv_h264_enc_set_src_caps;
   nvenc_class->set_pic_params = gst_nv_h264_enc_set_pic_params;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_factory));
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
 
   gst_element_class_set_static_metadata (element_class,
       "NVENC H.264 Video Encoder",
@@ -412,27 +411,14 @@
 }
 
 static gboolean
-gst_nv_h264_enc_initialize_encoder (GstNvBaseEnc * nvenc,
-    GstVideoCodecState * old_state, GstVideoCodecState * state)
+gst_nv_h264_enc_set_encoder_config (GstNvBaseEnc * nvenc,
+    GstVideoCodecState * state, NV_ENC_CONFIG * config)
 {
   GstNvH264Enc *h264enc = GST_NV_H264_ENC (nvenc);
-  NV_ENC_RECONFIGURE_PARAMS reconfigure_params = { 0, };
-  NV_ENC_INITIALIZE_PARAMS init_params = { 0, };
-  NV_ENC_INITIALIZE_PARAMS *params;
-  NV_ENC_PRESET_CONFIG preset_config = { 0, };
-  NVENCSTATUS nv_ret;
-  GstVideoInfo *info = &state->info;
   GstCaps *allowed_caps, *template_caps;
   GUID selected_profile = NV_ENC_CODEC_PROFILE_AUTOSELECT_GUID;
   int level_idc = NV_ENC_LEVEL_AUTOSELECT;
-
-  /* TODO: support reconfiguration */
-  if (old_state) {
-    reconfigure_params.version = NV_ENC_RECONFIGURE_PARAMS_VER;
-    params = &reconfigure_params.reInitEncodeParams;
-  } else {
-    params = &init_params;
-  }
+  GstVideoInfo *info = &state->info;
 
   template_caps = gst_static_pad_template_get_caps (&src_factory);
   allowed_caps = gst_pad_get_allowed_caps (GST_VIDEO_ENCODER_SRC_PAD (h264enc));
@@ -482,96 +468,19 @@
   }
   gst_caps_unref (template_caps);
 
-  params->version = NV_ENC_INITIALIZE_PARAMS_VER;
-  params->encodeGUID = NV_ENC_CODEC_H264_GUID;
-  params->encodeWidth = GST_VIDEO_INFO_WIDTH (info);
-  params->encodeHeight = GST_VIDEO_INFO_HEIGHT (info);
-  /* FIXME: make this a property */
-  params->presetGUID = NV_ENC_PRESET_HP_GUID;   // _DEFAULT
-  params->enablePTD = 1;
-  if (!old_state) {
-    /* this sets the required buffer size and the maximum allowed size on
-     * subsequent reconfigures */
-    /* FIXME: propertise this */
-    params->maxEncodeWidth = GST_VIDEO_INFO_WIDTH (info);
-    params->maxEncodeHeight = GST_VIDEO_INFO_HEIGHT (info);
-    gst_nv_base_enc_set_max_encode_size (GST_NV_BASE_ENC (h264enc),
-        params->maxEncodeWidth, params->maxEncodeHeight);
-  } else {
-    guint max_width, max_height;
-
-    gst_nv_base_enc_get_max_encode_size (GST_NV_BASE_ENC (h264enc),
-        &max_width, &max_height);
-
-    if (GST_VIDEO_INFO_WIDTH (info) > max_width
-        || GST_VIDEO_INFO_HEIGHT (info) > max_height) {
-      GST_ELEMENT_ERROR (h264enc, STREAM, FORMAT, ("%s", "Requested stream "
-              "size is larger than the maximum configured size"), (NULL));
-      return FALSE;
-    }
-  }
-
-  preset_config.version = NV_ENC_PRESET_CONFIG_VER;
-  preset_config.presetCfg.version = NV_ENC_CONFIG_VER;
-
-  nv_ret =
-      NvEncGetEncodePresetConfig (GST_NV_BASE_ENC (h264enc)->encoder,
-      params->encodeGUID, params->presetGUID, &preset_config);
-  if (nv_ret != NV_ENC_SUCCESS) {
-    GST_ELEMENT_ERROR (h264enc, LIBRARY, SETTINGS, (NULL),
-        ("Failed to get encode preset configuration: %d", nv_ret));
-    return FALSE;
-  }
-  params->encodeConfig = &preset_config.presetCfg;
-
   /* override some defaults */
   GST_LOG_OBJECT (h264enc, "setting parameters");
-  preset_config.presetCfg.version = NV_ENC_CONFIG_VER;
-  preset_config.presetCfg.profileGUID = selected_profile;
-  preset_config.presetCfg.encodeCodecConfig.h264Config.level = level_idc;
-  preset_config.presetCfg.encodeCodecConfig.h264Config.chromaFormatIDC = 1;
+  config->profileGUID = selected_profile;
+  config->encodeCodecConfig.h264Config.level = level_idc;
+  config->encodeCodecConfig.h264Config.chromaFormatIDC = 1;
   if (GST_VIDEO_INFO_FORMAT (info) == GST_VIDEO_FORMAT_Y444) {
     GST_DEBUG_OBJECT (h264enc, "have Y444 input, setting config accordingly");
-    preset_config.presetCfg.encodeCodecConfig.
-        h264Config.separateColourPlaneFlag = 1;
-    preset_config.presetCfg.encodeCodecConfig.h264Config.chromaFormatIDC = 3;
+    config->encodeCodecConfig.h264Config.separateColourPlaneFlag = 1;
+    config->encodeCodecConfig.h264Config.chromaFormatIDC = 3;
   }
 
   /* FIXME: make property */
-  preset_config.presetCfg.encodeCodecConfig.h264Config.outputAUD = 1;
-
-  if (GST_VIDEO_INFO_IS_INTERLACED (info)) {
-    if (GST_VIDEO_INFO_INTERLACE_MODE (info) ==
-        GST_VIDEO_INTERLACE_MODE_INTERLEAVED
-        || GST_VIDEO_INFO_INTERLACE_MODE (info) ==
-        GST_VIDEO_INTERLACE_MODE_MIXED) {
-      preset_config.presetCfg.frameFieldMode =
-          NV_ENC_PARAMS_FRAME_FIELD_MODE_FIELD;
-    }
-  }
-
-  if (info->fps_d > 0 && info->fps_n > 0) {
-    params->frameRateNum = info->fps_n;
-    params->frameRateDen = info->fps_d;
-  } else {
-    GST_FIXME_OBJECT (h264enc, "variable framerate");
-  }
-
-  if (old_state) {
-    nv_ret =
-        NvEncReconfigureEncoder (GST_NV_BASE_ENC (h264enc)->encoder,
-        &reconfigure_params);
-  } else {
-    nv_ret =
-        NvEncInitializeEncoder (GST_NV_BASE_ENC (h264enc)->encoder, params);
-  }
-
-  if (nv_ret != NV_ENC_SUCCESS) {
-    GST_ELEMENT_ERROR (h264enc, LIBRARY, SETTINGS, (NULL),
-        ("Failed to %sinit encoder: %d", old_state ? "re" : "", nv_ret));
-    return FALSE;
-  }
-  GST_INFO_OBJECT (h264enc, "configured encoder");
+  config->encodeCodecConfig.h264Config.outputAUD = 1;
 
   return TRUE;
 }
diff --git a/sys/opensles/Makefile.am b/sys/opensles/Makefile.am
index 6236833..764078e 100644
--- a/sys/opensles/Makefile.am
+++ b/sys/opensles/Makefile.am
@@ -20,5 +20,6 @@
 noinst_HEADERS = openslescommon.h     \
                  openslesringbuffer.h \
                  openslessink.h       \
-                 openslessrc.h
+                 openslessrc.h        \
+                 opensles.h
 
diff --git a/sys/opensles/Makefile.in b/sys/opensles/Makefile.in
index 955e522..a804960 100644
--- a/sys/opensles/Makefile.in
+++ b/sys/opensles/Makefile.in
@@ -305,6 +305,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -326,6 +328,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -375,6 +379,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -520,6 +526,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -646,8 +654,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,8 +696,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -801,7 +812,8 @@
 noinst_HEADERS = openslescommon.h     \
                  openslesringbuffer.h \
                  openslessink.h       \
-                 openslessrc.h
+                 openslessrc.h        \
+                 opensles.h
 
 all: all-am
 
diff --git a/sys/applemedia-nonpublic/bufferfactory.h b/sys/opensles/opensles.h
similarity index 67%
rename from sys/applemedia-nonpublic/bufferfactory.h
rename to sys/opensles/opensles.h
index 132b953..dbc341c 100644
--- a/sys/applemedia-nonpublic/bufferfactory.h
+++ b/sys/opensles/opensles.h
@@ -1,5 +1,6 @@
-/*
- * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.com>
+/* GStreamer
+ * Copyright (C) 2012 Collabora Ltd.
+ *   Author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -17,18 +18,13 @@
  * Boston, MA 02110-1301, USA.
  */
 
-#import <Foundation/Foundation.h>
+#ifndef __OPENSLES_H__
+#define __OPENSLES_H__
 
 #include <gst/gst.h>
+#include <SLES/OpenSLES.h>
 
-@interface GstAMBufferFactory : NSObject {
-  gpointer coreMediaCtx;
-}
+SLObjectItf gst_opensles_get_engine (void);
+void gst_opensles_release_engine (SLObjectItf engine_object);
 
-- (id)initWithError:(GError **)error;
-- (void)finalize;
-
-- (GstBuffer *)createGstBufferForCoreVideoBuffer:(CFTypeRef)cvbuf;
-- (GstBuffer *)createGstBufferForSampleBuffer:(CFTypeRef)sbuf;
-
-@end
+#endif /* __OPENSLES_H__ */
diff --git a/sys/opensles/openslessink.c b/sys/opensles/openslessink.c
index c2ec806..2493853 100644
--- a/sys/opensles/openslessink.c
+++ b/sys/opensles/openslessink.c
@@ -272,8 +272,7 @@
           GST_TYPE_OPENSLES_STREAM_TYPE, DEFAULT_STREAM_TYPE,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
 
   gst_element_class_set_static_metadata (gstelement_class, "OpenSL ES Sink",
       "Sink/Audio",
diff --git a/sys/opensles/openslessrc.c b/sys/opensles/openslessrc.c
index 6505ab1..f32984a 100644
--- a/sys/opensles/openslessrc.c
+++ b/sys/opensles/openslessrc.c
@@ -131,8 +131,7 @@
           GST_TYPE_OPENSLES_RECORDING_PRESET, DEFAULT_PRESET,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_factory));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
 
   gst_element_class_set_static_metadata (gstelement_class, "OpenSL ES Src",
       "Source/Audio",
diff --git a/sys/pvr2d/Makefile.in b/sys/pvr2d/Makefile.in
index 447d445..45bcbdb 100644
--- a/sys/pvr2d/Makefile.in
+++ b/sys/pvr2d/Makefile.in
@@ -306,6 +306,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -327,6 +329,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -376,6 +380,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -521,6 +527,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -647,8 +655,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,8 +697,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/pvr2d/gstpvrbufferpool.c b/sys/pvr2d/gstpvrbufferpool.c
index 81106dc..620d581 100644
--- a/sys/pvr2d/gstpvrbufferpool.c
+++ b/sys/pvr2d/gstpvrbufferpool.c
@@ -37,6 +37,15 @@
 GST_DEBUG_CATEGORY_EXTERN (gst_debug_pvrvideosink);
 #define GST_CAT_DEFAULT gst_debug_pvrvideosink
 
+static gboolean
+gst_pvr_meta_init (GstPVRMeta * meta, gpointer params, GstBuffer * buffer)
+{
+  meta->src_mem = NULL;
+  meta->sink = NULL;
+
+  return TRUE;
+}
+
 static void
 gst_pvr_meta_free (GstPVRMeta * meta, GstBuffer * buffer)
 {
@@ -74,9 +83,9 @@
   if (g_once_init_enter (&pvr_meta_info)) {
     const GstMetaInfo *meta = gst_meta_register ("GstPVRMeta", "GstPVRMeta",
         sizeof (GstPVRMeta),
-        (GstMetaInitFunction) NULL,
+        (GstMetaInitFunction) gst_pvr_meta_init,
         (GstMetaFreeFunction) gst_pvr_meta_free,
-        (GstMetaCopyFunction) NULL, (GstMetaTransformFunction) NULL);
+        (GstMetaTransformFunction) NULL);
     g_once_init_leave (&pvr_meta_info, meta);
   }
   return pvr_meta_info;
diff --git a/sys/pvr2d/gstpvrvideosink.c b/sys/pvr2d/gstpvrvideosink.c
index 7c10243..4e32a8c 100644
--- a/sys/pvr2d/gstpvrvideosink.c
+++ b/sys/pvr2d/gstpvrvideosink.c
@@ -1464,8 +1464,8 @@
       "A PVR videosink",
       "Luciana Fujii Pontello <luciana.fujii@collabora.co.uk");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_pvrvideosink_sink_template_factory));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_pvrvideosink_sink_template_factory);
 
   gstelement_class->change_state = gst_pvrvideosink_change_state;
 
diff --git a/sys/shm/Makefile.in b/sys/shm/Makefile.in
index e212d99..07d3e25 100644
--- a/sys/shm/Makefile.in
+++ b/sys/shm/Makefile.in
@@ -304,6 +304,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -325,6 +327,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -374,6 +378,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -519,6 +525,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -645,8 +653,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,8 +695,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/shm/gstshmsink.c b/sys/shm/gstshmsink.c
index 13d67bd..a44097b 100644
--- a/sys/shm/gstshmsink.c
+++ b/sys/shm/gstshmsink.c
@@ -419,8 +419,7 @@
       GST_TYPE_SHM_SINK, G_SIGNAL_RUN_LAST, 0, NULL, NULL,
       g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT);
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sinktemplate));
+  gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "Shared Memory Sink",
diff --git a/sys/shm/gstshmsrc.c b/sys/shm/gstshmsrc.c
index 3caf90b..59fe44d 100644
--- a/sys/shm/gstshmsrc.c
+++ b/sys/shm/gstshmsrc.c
@@ -138,8 +138,7 @@
           "The name of the shared memory area used to get buffers",
           NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&srctemplate));
+  gst_element_class_add_static_pad_template (gstelement_class, &srctemplate);
 
   gst_element_class_set_static_metadata (gstelement_class,
       "Shared Memory Source",
@@ -273,11 +272,11 @@
   if (self->pipe) {
     gst_shm_pipe_dec (self->pipe);
     self->pipe = NULL;
+
+    gst_poll_remove_fd (self->poll, &self->pollfd);
   }
 
-  gst_poll_remove_fd (self->poll, &self->pollfd);
   gst_poll_fd_init (&self->pollfd);
-
   gst_poll_set_flushing (self->poll, TRUE);
 }
 
diff --git a/sys/tinyalsa/Makefile.in b/sys/tinyalsa/Makefile.in
index c87f829..fff9a69 100644
--- a/sys/tinyalsa/Makefile.in
+++ b/sys/tinyalsa/Makefile.in
@@ -303,6 +303,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -324,6 +326,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -373,6 +377,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -518,6 +524,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -644,8 +652,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,8 +694,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/tinyalsa/tinyalsasink.c b/sys/tinyalsa/tinyalsasink.c
index c29755e..7c7799c 100644
--- a/sys/tinyalsa/tinyalsasink.c
+++ b/sys/tinyalsa/tinyalsasink.c
@@ -473,8 +473,7 @@
       "Sink/Audio", "Plays audio to an ALSA device",
       "Arun Raghavan <arun@centricular.com>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
 
   g_object_class_install_property (gobject_class,
       PROP_CARD,
diff --git a/sys/uvch264/Makefile.in b/sys/uvch264/Makefile.in
index b2a71c1..7eda0dd 100644
--- a/sys/uvch264/Makefile.in
+++ b/sys/uvch264/Makefile.in
@@ -307,6 +307,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -328,6 +330,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -377,6 +381,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -522,6 +528,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -648,8 +656,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -692,8 +698,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/uvch264/gstuvch264_mjpgdemux.c b/sys/uvch264/gstuvch264_mjpgdemux.c
index 1f9b1c4..e253a04 100644
--- a/sys/uvch264/gstuvch264_mjpgdemux.c
+++ b/sys/uvch264/gstuvch264_mjpgdemux.c
@@ -190,20 +190,16 @@
   gobject_class->get_property = gst_uvc_h264_mjpg_demux_get_property;
   gobject_class->dispose = gst_uvc_h264_mjpg_demux_dispose;
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&mjpgsink_pad_template));
-
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&jpegsrc_pad_template));
-
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&h264src_pad_template));
-
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&yuy2src_pad_template));
-
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&nv12src_pad_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &mjpgsink_pad_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &jpegsrc_pad_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &h264src_pad_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &yuy2src_pad_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &nv12src_pad_template);
 
   gst_element_class_set_static_metadata (element_class,
       "UVC H264 MJPG Demuxer",
diff --git a/sys/uvch264/gstuvch264_src.c b/sys/uvch264/gstuvch264_src.c
index eae7d82..38397c3 100644
--- a/sys/uvch264/gstuvch264_src.c
+++ b/sys/uvch264/gstuvch264_src.c
@@ -281,14 +281,11 @@
       "UVC H264 Encoding camera source",
       "Youness Alaoui <youness.alaoui@collabora.co.uk>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&vidsrc_template));
-
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&imgsrc_template));
-
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&vfsrc_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &vidsrc_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &imgsrc_template);
+  gst_element_class_add_static_pad_template (gstelement_class, &vfsrc_template);
 
   /* Properties */
   g_object_class_install_property (gobject_class, PROP_COLORSPACE_NAME,
diff --git a/sys/vcd/Makefile.in b/sys/vcd/Makefile.in
index 88ed312..a60f7f8 100644
--- a/sys/vcd/Makefile.in
+++ b/sys/vcd/Makefile.in
@@ -302,6 +302,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -323,6 +325,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -372,6 +376,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -517,6 +523,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -643,8 +651,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,8 +693,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/vcd/vcdsrc.c b/sys/vcd/vcdsrc.c
index 7372ac5..1bf3cc5 100644
--- a/sys/vcd/vcdsrc.c
+++ b/sys/vcd/vcdsrc.c
@@ -118,8 +118,7 @@
       "Source/File",
       "Asynchronous read from VCD disk", "Erik Walthinsen <omega@cse.ogi.edu>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&srctemplate));
+  gst_element_class_add_static_pad_template (element_class, &srctemplate);
 }
 
 static void
diff --git a/sys/vdpau/Makefile.in b/sys/vdpau/Makefile.in
index cc681e3..ea82b95 100644
--- a/sys/vdpau/Makefile.in
+++ b/sys/vdpau/Makefile.in
@@ -310,6 +310,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -331,6 +333,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -380,6 +384,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -525,6 +531,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -651,8 +659,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -695,8 +701,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/vdpau/mpeg/gstvdpmpegdec.c b/sys/vdpau/mpeg/gstvdpmpegdec.c
index e6f6f95..1bcf9d9 100644
--- a/sys/vdpau/mpeg/gstvdpmpegdec.c
+++ b/sys/vdpau/mpeg/gstvdpmpegdec.c
@@ -525,8 +525,7 @@
       "Decode mpeg stream with vdpau",
       "Carl-Anton Ingmarsson <ca.ingmarsson@gmail.com>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (element_class, &sink_template);
 
   video_decoder_class->start = gst_vdp_mpeg_dec_start;
   video_decoder_class->stop = gst_vdp_mpeg_dec_stop;
diff --git a/sys/wasapi/Makefile.in b/sys/wasapi/Makefile.in
index 55a66ed..431242e 100644
--- a/sys/wasapi/Makefile.in
+++ b/sys/wasapi/Makefile.in
@@ -306,6 +306,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -327,6 +329,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -376,6 +380,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -521,6 +527,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -647,8 +655,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,8 +697,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/wasapi/gstwasapisink.c b/sys/wasapi/gstwasapisink.c
index 53f5c45..5b35b8e 100644
--- a/sys/wasapi/gstwasapisink.c
+++ b/sys/wasapi/gstwasapisink.c
@@ -77,8 +77,7 @@
   gobject_class->dispose = gst_wasapi_sink_dispose;
   gobject_class->finalize = gst_wasapi_sink_finalize;
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class, &sink_template);
   gst_element_class_set_static_metadata (gstelement_class, "WasapiSrc",
       "Sink/Audio",
       "Stream audio to an audio capture device through WASAPI",
diff --git a/sys/wasapi/gstwasapisrc.c b/sys/wasapi/gstwasapisrc.c
index 402875f..20c3929 100644
--- a/sys/wasapi/gstwasapisrc.c
+++ b/sys/wasapi/gstwasapisrc.c
@@ -50,13 +50,15 @@
 static void gst_wasapi_src_dispose (GObject * object);
 static void gst_wasapi_src_finalize (GObject * object);
 
-static GstCaps * gst_wasapi_src_get_caps (GstBaseSrc * bsrc, GstCaps * filter);
+static GstCaps *gst_wasapi_src_get_caps (GstBaseSrc * bsrc, GstCaps * filter);
 
 static gboolean gst_wasapi_src_open (GstAudioSrc * asrc);
 static gboolean gst_wasapi_src_close (GstAudioSrc * asrc);
-static gboolean gst_wasapi_src_prepare (GstAudioSrc * asrc, GstAudioRingBufferSpec * spec);
+static gboolean gst_wasapi_src_prepare (GstAudioSrc * asrc,
+    GstAudioRingBufferSpec * spec);
 static gboolean gst_wasapi_src_unprepare (GstAudioSrc * asrc);
-static guint gst_wasapi_src_read (GstAudioSrc * asrc, gpointer data, guint length, GstClockTime * timestamp);
+static guint gst_wasapi_src_read (GstAudioSrc * asrc, gpointer data,
+    guint length, GstClockTime * timestamp);
 static guint gst_wasapi_src_delay (GstAudioSrc * asrc);
 static void gst_wasapi_src_reset (GstAudioSrc * asrc);
 
@@ -76,8 +78,7 @@
   gobject_class->dispose = gst_wasapi_src_dispose;
   gobject_class->finalize = gst_wasapi_src_finalize;
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_template);
   gst_element_class_set_static_metadata (gstelement_class, "WasapiSrc",
       "Source/Audio",
       "Stream audio from an audio capture device through WASAPI",
@@ -89,8 +90,7 @@
   gstaudiosrc_class->close = GST_DEBUG_FUNCPTR (gst_wasapi_src_close);
   gstaudiosrc_class->read = GST_DEBUG_FUNCPTR (gst_wasapi_src_read);
   gstaudiosrc_class->prepare = GST_DEBUG_FUNCPTR (gst_wasapi_src_prepare);
-  gstaudiosrc_class->unprepare =
-      GST_DEBUG_FUNCPTR (gst_wasapi_src_unprepare);
+  gstaudiosrc_class->unprepare = GST_DEBUG_FUNCPTR (gst_wasapi_src_unprepare);
   gstaudiosrc_class->delay = GST_DEBUG_FUNCPTR (gst_wasapi_src_delay);
   gstaudiosrc_class->reset = GST_DEBUG_FUNCPTR (gst_wasapi_src_reset);
 
@@ -147,9 +147,10 @@
 {
   GstWasapiSrc *self = GST_WASAPI_SRC (asrc);
   gboolean res = FALSE;
-  IAudioClient * client = NULL;
+  IAudioClient *client = NULL;
 
-  if (!gst_wasapi_util_get_default_device_client (GST_ELEMENT (self), TRUE, &client)) {
+  if (!gst_wasapi_util_get_default_device_client (GST_ELEMENT (self), TRUE,
+          &client)) {
     GST_ELEMENT_ERROR (self, RESOURCE, OPEN_READ, (NULL),
         ("Failed to get default device"));
     goto beach;
@@ -197,8 +198,9 @@
   gst_wasapi_util_audio_info_to_waveformatex (&spec->info, &format);
   self->info = spec->info;
 
-  hr = IAudioClient_Initialize (self->client, AUDCLNT_SHAREMODE_SHARED, AUDCLNT_STREAMFLAGS_EVENTCALLBACK,
-      spec->buffer_time / 100, 0, (WAVEFORMATEX *) & format, NULL);
+  hr = IAudioClient_Initialize (self->client, AUDCLNT_SHAREMODE_SHARED,
+      AUDCLNT_STREAMFLAGS_EVENTCALLBACK, spec->buffer_time / 100, 0,
+      (WAVEFORMATEX *) & format, NULL);
   if (hr != S_OK) {
     GST_ELEMENT_ERROR (self, RESOURCE, OPEN_READ, (NULL),
         ("IAudioClient::Initialize () failed: %s",
diff --git a/sys/wininet/Makefile.in b/sys/wininet/Makefile.in
index 1b9d397..cc663ea 100644
--- a/sys/wininet/Makefile.in
+++ b/sys/wininet/Makefile.in
@@ -302,6 +302,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -323,6 +325,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -372,6 +376,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -517,6 +523,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -643,8 +651,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,8 +693,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/wininet/gstwininetsrc.c b/sys/wininet/gstwininetsrc.c
index 4cd9bf3..60d2944 100644
--- a/sys/wininet/gstwininetsrc.c
+++ b/sys/wininet/gstwininetsrc.c
@@ -83,8 +83,7 @@
 {
   GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (element_class, &src_template);
 
   gst_element_class_set_static_metadata (element_class,
       "Windows Network Source", "Source/Network",
diff --git a/sys/winks/Makefile.in b/sys/winks/Makefile.in
index b780516..117eae2 100644
--- a/sys/winks/Makefile.in
+++ b/sys/winks/Makefile.in
@@ -307,6 +307,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -328,6 +330,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -377,6 +381,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -522,6 +528,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -648,8 +656,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -692,8 +698,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/winscreencap/Makefile.in b/sys/winscreencap/Makefile.in
index 5fef8fa..c464bf3 100644
--- a/sys/winscreencap/Makefile.in
+++ b/sys/winscreencap/Makefile.in
@@ -306,6 +306,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -327,6 +329,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -376,6 +380,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -521,6 +527,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -647,8 +655,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,8 +697,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/winscreencap/gstdx9screencapsrc.c b/sys/winscreencap/gstdx9screencapsrc.c
index 0f889b2..d3bd61c 100644
--- a/sys/winscreencap/gstdx9screencapsrc.c
+++ b/sys/winscreencap/gstdx9screencapsrc.c
@@ -139,8 +139,7 @@
           "Height of screen capture area (0 = maximum)",
           0, G_MAXINT, 0, G_PARAM_READWRITE));
 
-  gst_element_class_add_pad_template (e_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (e_class, &src_template);
 
   gst_element_class_set_static_metadata (e_class,
       "DirectX 9 screen capture source", "Source/Video", "Captures screen",
@@ -203,10 +202,6 @@
 
   switch (prop_id) {
     case PROP_MONITOR:
-      if (g_value_get_int (value) >= GetSystemMetrics (SM_CMONITORS)) {
-        G_OBJECT_WARN_INVALID_PSPEC (object, "Monitor", prop_id, pspec);
-        break;
-      }
       src->monitor = g_value_get_int (value);
       break;
     case PROP_X_POS:
@@ -311,8 +306,13 @@
   RECT rect_dst;
   GstCaps *caps;
 
-  if (src->monitor >= IDirect3D9_GetAdapterCount (g_d3d9) ||
-      FAILED (IDirect3D9_GetAdapterDisplayMode (g_d3d9, src->monitor,
+  if (src->monitor >= IDirect3D9_GetAdapterCount (g_d3d9)) {
+    GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND,
+      ("Specified monitor with index %d not found", src->monitor), (NULL));
+    return NULL;
+  }
+
+  if (FAILED (IDirect3D9_GetAdapterDisplayMode (g_d3d9, src->monitor,
               &src->disp_mode))) {
     return NULL;
   }
@@ -383,6 +383,12 @@
   d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
   d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
 
+  if (src->monitor >= IDirect3D9_GetAdapterCount (g_d3d9)) {
+    GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND,
+      ("Specified monitor with index %d not found", src->monitor), (NULL));
+    return FALSE;
+  }
+
   res = IDirect3D9_CreateDevice (g_d3d9, src->monitor, D3DDEVTYPE_HAL,
       GetDesktopWindow (), D3DCREATE_SOFTWARE_VERTEXPROCESSING,
       &d3dpp, &src->d3d9_device);
diff --git a/sys/winscreencap/gstgdiscreencapsrc.c b/sys/winscreencap/gstgdiscreencapsrc.c
index 55bd4b5..65f0bd9 100644
--- a/sys/winscreencap/gstgdiscreencapsrc.c
+++ b/sys/winscreencap/gstgdiscreencapsrc.c
@@ -146,8 +146,7 @@
           "Height of screen capture area (0 = maximum)",
           0, G_MAXINT, 0, G_PARAM_READWRITE));
 
-  gst_element_class_add_pad_template (e_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (e_class, &src_template);
   gst_element_class_set_static_metadata (e_class,
       "GDI screen capture source", "Source/Video", "Captures screen",
       "Haakon Sporsheim <hakon.sporsheim@tandberg.com>");
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 610f24a..02adc4e 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -275,6 +275,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -296,6 +298,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -345,6 +349,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -490,6 +496,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -616,8 +624,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -660,8 +666,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am
index 3f9ad9d..2c0cdb2 100644
--- a/tests/check/Makefile.am
+++ b/tests/check/Makefile.am
@@ -17,7 +17,7 @@
 	GST_STATE_IGNORE_ELEMENTS="apexsink avdtpsrc camerabin dc1394src \
 	    dccpclientsrc dccpclientsink dccpserversrc dccpserversink decklinksrc \
 	    decklinksink dtlssrtpdec dtlssrtpenc dvbsrc dvbbasebin dfbvideosink festival fluidsynth \
-	    linsyssdisrc linsyssdisink nassink \
+	    linsyssdisrc linsyssdisink nassink kmssink \
 	    rsndvdbin sdlaudiosink sdlvideosink vcdsrc rfbsrc vdpauyuvvideo vdpauvideoyuv \
 	    vdpaumpegdec vdpaumpeg4dec vdpauh264dec vdpauvideopostprocess vdpausink neonhttpsrc"
 
@@ -41,7 +41,7 @@
 endif
 
 if USE_DASH
-check_dash = elements/dash_mpd
+check_dash = elements/dash_mpd elements/dash_isoff
 check_dash_demux = elements/dash_demux
 else
 check_dash =
@@ -211,7 +211,8 @@
     libs/gstglcolorconvert \
     libs/gstglquery \
     libs/gstglsl \
-    elements/glimagesink
+    elements/glimagesink \
+    pipelines/simple-launch-lines
 else
 check_gl=
 endif
@@ -227,15 +228,17 @@
 
 # these tests don't even pass
 # neon: too flaky (almost always fails 'the first time')
+# dashdemux: fails because it uses random data streams but dashdemux nowadays
+#            actually looks at the data and doesn't like randomness
 noinst_PROGRAMS = \
 	pipelines/streamheader \
+	$(check_dash_demux) \
 	$(check_neon)
 
 check_PROGRAMS = \
 	generic/states \
 	$(check_assrender) \
 	$(check_dash) \
-	$(check_dash_demux) \
 	$(check_faac)  \
 	$(check_faad)  \
 	$(check_voaacenc) \
@@ -272,6 +275,9 @@
 	elements/mxfmux \
 	elements/netsim \
 	elements/pcapparse \
+	elements/pnm \
+	elements/rawaudioparse \
+	elements/rawvideoparse \
 	elements/rtponvifparse \
 	elements/rtponviftimestamp \
 	elements/id3mux \
@@ -296,14 +302,14 @@
 	$(check_player) \
 	$(EXPERIMENTAL_CHECKS)
 
-noinst_HEADERS = elements/mxfdemux.h
+noinst_HEADERS = elements/mxfdemux.h elements/dash_isoff.h
 
 TESTS = $(check_PROGRAMS)
 
 AM_CFLAGS = $(GST_CFLAGS) $(GST_CHECK_CFLAGS) $(GST_OPTION_CFLAGS) \
 	-DGST_CHECK_TEST_ENVIRONMENT_BEACON="\"GST_PLUGIN_LOADING_WHITELIST\"" \
 	-DGST_TEST_FILES_PATH="\"$(TEST_FILES_DIRECTORY)\"" \
-	-UG_DISABLE_ASSERT -UG_DISABLE_CAST_CHECKS
+	-UG_DISABLE_ASSERT -UG_DISABLE_CAST_CHECKS $(PTHREAD_CFLAGS)
 LDADD = $(GST_CHECK_LIBS)
 
 generic_states_CFLAGS = $(AM_CFLAGS) $(GMODULE_NO_EXPORT_CFLAGS)
@@ -312,9 +318,15 @@
 elements_audiomixer_LDADD = $(GST_BASE_LIBS) $(GST_CONTROLLER_LIBS) -lgstbase-@GST_API_VERSION@ $(LDADD)
 elements_audiomixer_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CONTROLLER_CFLAGS) $(AM_CFLAGS)
 
-elements_audiointerleave_LDADD = $(GST_BASE_LIBS) -lgstbase-@GST_API_VERSION@ -lgstaudio-@GST_API_VERSION@ $(LDADD)
+elements_audiointerleave_LDADD = $(GST_BASE_LIBS) -lgstbase-@GST_API_VERSION@ $(GST_AUDIO_LIBS) $(LDADD)
 elements_audiointerleave_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS)
 
+elements_pnm_CFLAGS = \
+	$(GST_PLUGINS_BASE_CFLAGS)
+	$(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
+elements_pnm_LDADD = \
+	$(GST_PLUGINS_BASE_LIBS) -lgstapp-$(GST_API_VERSION) $(GST_BASE_LIBS) $(LDADD)
+#
 # parser unit test convenience lib
 noinst_LTLIBRARIES = libparser.la
 libparser_la_SOURCES = elements/parser.c elements/parser.h
@@ -332,6 +344,12 @@
 
 elements_pcapparse_LDADD = libparser.la $(LDADD)
 
+elements_rawaudioparse_LDADD = $(GST_BASE_LIBS) -lgstbase-@GST_API_VERSION@ $(GST_AUDIO_LIBS) $(LDADD)
+elements_rawaudioparse_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS)
+
+elements_rawvideoparse_LDADD = $(GST_BASE_LIBS) -lgstbase-@GST_API_VERSION@ $(GST_VIDEO_LIBS) $(LDADD)
+elements_rawvideoparse_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS)
+
 libs_mpegvideoparser_CFLAGS = \
 	$(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
 	-DGST_USE_UNSTABLE_API \
@@ -344,7 +362,8 @@
 libs_mpegts_CFLAGS = \
 	$(GST_PLUGINS_BAD_CFLAGS) \
 	-DGST_USE_UNSTABLE_API \
-	$(GST_CFLAGS)
+	$(GST_CFLAGS) \
+	$(PTHREAD_CFLAGS)
 
 libs_mpegts_LDADD = \
 	$(top_builddir)/gst-libs/gst/mpegts/libgstmpegts-@GST_API_VERSION@.la \
@@ -384,21 +403,21 @@
 	$(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
 elements_videoframe_audiolevel_LDADD = \
 	$(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD) \
-	-lgstaudio-@GST_API_VERSION@
+	$(GST_AUDIO_LIBS)
 
 elements_faad_CFLAGS = \
 	$(GST_PLUGINS_BASE_CFLAGS) \
 	$(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
 elements_faad_LDADD = \
 	$(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD) \
-	-lgstaudio-@GST_API_VERSION@
+	$(GST_AUDIO_LIBS)
 
 elements_faac_CFLAGS = \
 	$(GST_PLUGINS_BASE_CFLAGS) \
 	$(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
 elements_faac_LDADD = \
 	$(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD) \
-	-lgstaudio-@GST_API_VERSION@
+	$(GST_AUDIO_LIBS)
 
 elements_gdppay_CFLAGS = \
 	$(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
@@ -413,7 +432,7 @@
 	$(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
 elements_voaacenc_LDADD = \
 	$(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD) \
-	-lgstaudio-@GST_API_VERSION@
+	$(GST_AUDIO_LIBS)
 
 elements_camerabin_CFLAGS = \
 	$(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
@@ -436,10 +455,10 @@
 elements_kate_LDADD = $(GST_BASE_LIBS) $(LDADD)
 
 elements_assrender_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS)
-elements_assrender_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) -lgstapp-$(GST_API_VERSION) $(GST_BASE_LIBS) $(LDADD)
+elements_assrender_LDADD = $(GST_PLUGINS_BASE_LIBS) $(GST_VIDEO_LIBS) -lgstapp-$(GST_API_VERSION) $(GST_BASE_LIBS) $(LDADD)
 
 elements_mpegtsmux_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS)
-elements_mpegtsmux_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) $(GST_BASE_LIBS) $(LDADD)
+elements_mpegtsmux_LDADD = $(GST_PLUGINS_BASE_LIBS) $(GST_VIDEO_LIBS) $(GST_BASE_LIBS) $(LDADD)
 
 elements_uvch264demux_CFLAGS = -DUVCH264DEMUX_DATADIR="$(srcdir)/elements/uvch264demux_data" \
 				$(AM_CFLAGS)
@@ -449,18 +468,24 @@
 	$(top_builddir)/gst-libs/gst/uridownloader/libgsturidownloader-@GST_API_VERSION@.la
 elements_dash_mpd_SOURCES = elements/dash_mpd.c
 
+elements_dash_isoff_CFLAGS = $(AM_CFLAGS) $(GST_BASE_CFLAGS)
+elements_dash_isoff_LDADD = $(LDADD) $(GST_BASE_LIBS)
+elements_dash_isoff_SOURCES = elements/dash_isoff.c
+
 elements_dash_demux_CFLAGS = $(AM_CFLAGS) $(LIBXML2_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_PLUGINS_BAD_CFLAGS)
 elements_dash_demux_LDADD = \
-	$(LDADD) $(LIBXML2_LIBS) $(GST_BASE_LIBS) \
+	$(LDADD) $(LIBXML2_LIBS) $(GST_BASE_LIBS) $(GST_PLUGINS_BASE_LIBS) \
 	-lgsttag-$(GST_API_VERSION) \
 	-lgstapp-$(GST_API_VERSION) \
 	$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la
 
 elements_dash_demux_SOURCES = elements/test_http_src.c elements/test_http_src.h elements/adaptive_demux_engine.c elements/adaptive_demux_engine.h elements/adaptive_demux_common.c elements/adaptive_demux_common.h elements/dash_demux.c
 
+elements_neonhttpsrc_CFLAGS = $(AM_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS)
+
 elements_mssdemux_CFLAGS = $(AM_CFLAGS) $(LIBXML2_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_PLUGINS_BAD_CFLAGS)
 elements_mssdemux_LDADD = \
-	$(LDADD) $(LIBXML2_LIBS) $(GST_BASE_LIBS) \
+	$(LDADD) $(LIBXML2_LIBS) $(GST_BASE_LIBS) $(GST_PLUGINS_BASE_LIBS) \
 	-lgsttag-$(GST_API_VERSION) \
 	-lgstapp-$(GST_API_VERSION) \
 	$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la
@@ -480,9 +505,10 @@
 
 libs_player_LDADD = \
 	$(top_builddir)/gst-libs/gst/player/libgstplayer-@GST_API_VERSION@.la \
-	$(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
+	$(GST_VIDEO_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) \
+	$(LDADD)
 libs_player_CFLAGS = \
-	$(GST_PLUGINS_BAD_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS) \
+	$(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS) \
 	-DTEST_PATH=\"$(builddir)/media\"
 
 if WITH_GST_PLAYER_TESTS
@@ -532,7 +558,8 @@
 
 libs_gstglcontext_LDADD = \
 	$(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
-	$(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
+	$(GST_PLUGINS_BASE_LIBS) $(GST_VIDEO_LIBS) $(GST_BASE_LIBS) \
+	$(GST_LIBS) $(LDADD)
 
 libs_gstglcontext_CFLAGS = \
 	$(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
@@ -541,8 +568,8 @@
 
 libs_gstglmemory_LDADD = \
 	$(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
-	$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
-	$(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
+	$(GST_PLUGINS_BASE_LIBS) $(GST_VIDEO_LIBS) $(GST_BASE_LIBS) \
+	$(GST_LIBS) $(LDADD)
 
 libs_gstglmemory_CFLAGS = \
 	$(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
@@ -556,8 +583,8 @@
 
 libs_gstglupload_LDADD = \
 	$(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
-	$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
-	$(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
+	$(GST_PLUGINS_BASE_LIBS) $(GST_VIDEO_LIBS) $(GST_BASE_LIBS) \
+	$(GST_LIBS) $(LDADD)
 
 libs_gstglcolorconvert_CFLAGS = \
 	$(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
@@ -566,8 +593,8 @@
 
 libs_gstglcolorconvert_LDADD = \
 	$(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
-	$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
-	$(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
+	$(GST_PLUGINS_BASE_LIBS) $(GST_VIDEO_LIBS) $(GST_BASE_LIBS) \
+	$(GST_LIBS) $(LDADD)
 
 libs_gstglquery_LDADD = \
 	$(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
@@ -594,7 +621,15 @@
 
 elements_glimagesink_LDADD = \
 	$(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
-	$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
+	$(GST_PLUGINS_BASE_LIBS) $(GST_VIDEO_LIBS) $(GST_BASE_LIBS) \
+	$(GST_LIBS) $(LDADD)
+
+pipelines_simple_launch_lines_CFLAGS = \
+	$(GST_PLUGINS_BAD_CFLAGS) \
+	-DGST_USE_UNSTABLE_API \
+	$(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
+
+pipelines_simple_launch_lines_LDADD = \
 	$(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
 
 libs_aggregator_LDADD = \
@@ -608,8 +643,7 @@
 	$(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
 
 elements_compositor_LDADD = \
-	$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
-	$(GST_BASE_LIBS) $(LDADD)
+	$(GST_PLUGINS_BASE_LIBS) $(GST_VIDEO_LIBS) $(GST_BASE_LIBS) $(LDADD)
 elements_compositor_CFLAGS = \
 	$(GST_PLUGINS_BASE_CFLAGS) \
 	$(GST_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS)
@@ -619,7 +653,7 @@
 elements_hlsdemux_m3u8_SOURCES = elements/hlsdemux_m3u8.c
 
 elements_hls_demux_CFLAGS = $(GST_BASE_CFLAGS) $(AM_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_PLUGINS_BAD_CFLAGS)
-elements_hls_demux_LDADD = $(GST_BASE_LIBS) $(LDADD) \
+elements_hls_demux_LDADD = $(GST_BASE_LIBS) $(GST_PLUGINS_BASE_LIBS) $(LDADD) \
 	-lgsttag-$(GST_API_VERSION) \
 	-lgstapp-$(GST_API_VERSION) \
 	$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la
diff --git a/tests/check/Makefile.in b/tests/check/Makefile.in
index ee20570..cf3a183 100644
--- a/tests/check/Makefile.in
+++ b/tests/check/Makefile.in
@@ -91,14 +91,14 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-noinst_PROGRAMS = pipelines/streamheader$(EXEEXT) $(am__EXEEXT_29)
+noinst_PROGRAMS = pipelines/streamheader$(EXEEXT) $(am__EXEEXT_28) \
+	$(am__EXEEXT_29)
 check_PROGRAMS = generic/states$(EXEEXT) $(am__EXEEXT_1) \
 	$(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) \
 	$(am__EXEEXT_5) $(am__EXEEXT_6) $(am__EXEEXT_7) \
 	$(am__EXEEXT_8) $(am__EXEEXT_9) $(am__EXEEXT_10) \
 	$(am__EXEEXT_11) $(am__EXEEXT_12) $(am__EXEEXT_13) \
-	$(am__EXEEXT_14) $(am__EXEEXT_16) $(am__EXEEXT_17) \
-	elements/aiffparse$(EXEEXT) \
+	$(am__EXEEXT_15) $(am__EXEEXT_16) elements/aiffparse$(EXEEXT) \
 	elements/videoframe-audiolevel$(EXEEXT) \
 	elements/autoconvert$(EXEEXT) \
 	elements/autovideoconvert$(EXEEXT) \
@@ -106,21 +106,24 @@
 	elements/asfmux$(EXEEXT) elements/camerabin$(EXEEXT) \
 	elements/dataurisrc$(EXEEXT) elements/gdppay$(EXEEXT) \
 	elements/gdpdepay$(EXEEXT) elements/compositor$(EXEEXT) \
-	$(am__EXEEXT_18) elements/jpegparse$(EXEEXT) \
+	$(am__EXEEXT_17) elements/jpegparse$(EXEEXT) \
 	elements/h263parse$(EXEEXT) elements/h264parse$(EXEEXT) \
 	elements/mpegtsmux$(EXEEXT) elements/mpegvideoparse$(EXEEXT) \
 	elements/mpeg4videoparse$(EXEEXT) elements/mxfdemux$(EXEEXT) \
 	elements/mxfmux$(EXEEXT) elements/netsim$(EXEEXT) \
-	elements/pcapparse$(EXEEXT) elements/rtponvifparse$(EXEEXT) \
+	elements/pcapparse$(EXEEXT) elements/pnm$(EXEEXT) \
+	elements/rawaudioparse$(EXEEXT) \
+	elements/rawvideoparse$(EXEEXT) \
+	elements/rtponvifparse$(EXEEXT) \
 	elements/rtponviftimestamp$(EXEEXT) elements/id3mux$(EXEEXT) \
-	pipelines/mxf$(EXEEXT) $(am__EXEEXT_19) \
+	pipelines/mxf$(EXEEXT) $(am__EXEEXT_18) \
 	libs/mpegvideoparser$(EXEEXT) libs/mpegts$(EXEEXT) \
 	libs/h264parser$(EXEEXT) libs/vp8parser$(EXEEXT) \
-	libs/aggregator$(EXEEXT) $(am__EXEEXT_20) \
-	libs/vc1parser$(EXEEXT) $(am__EXEEXT_21) $(am__EXEEXT_22) \
-	elements/viewfinderbin$(EXEEXT) $(am__EXEEXT_23) \
-	$(am__EXEEXT_24) libs/insertbin$(EXEEXT) $(am__EXEEXT_25) \
-	$(am__EXEEXT_26) $(am__EXEEXT_27) $(am__EXEEXT_28)
+	libs/aggregator$(EXEEXT) $(am__EXEEXT_19) \
+	libs/vc1parser$(EXEEXT) $(am__EXEEXT_20) $(am__EXEEXT_21) \
+	elements/viewfinderbin$(EXEEXT) $(am__EXEEXT_22) \
+	$(am__EXEEXT_23) libs/insertbin$(EXEEXT) $(am__EXEEXT_24) \
+	$(am__EXEEXT_25) $(am__EXEEXT_26) $(am__EXEEXT_27)
 @WITH_GST_PLAYER_TESTS_TRUE@am__append_1 = $(PLAYER_MEDIA_FILES) libs/player_dummy.c
 subdir = tests/check
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -178,42 +181,44 @@
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(libparser_la_CFLAGS) \
 	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 @USE_ASSRENDER_TRUE@am__EXEEXT_1 = elements/assrender$(EXEEXT)
-@USE_DASH_TRUE@am__EXEEXT_2 = elements/dash_mpd$(EXEEXT)
-@USE_DASH_TRUE@am__EXEEXT_3 = elements/dash_demux$(EXEEXT)
-@USE_FAAC_TRUE@am__EXEEXT_4 = elements/faac$(EXEEXT)
-@USE_FAAD_TRUE@am__EXEEXT_5 = elements/faad$(EXEEXT)
-@USE_VOAACENC_TRUE@am__EXEEXT_6 = elements/voaacenc$(EXEEXT)
-@USE_VOAMRWBENC_TRUE@am__EXEEXT_7 = elements/voamrwbenc$(EXEEXT)
-@USE_MPEG2ENC_TRUE@am__EXEEXT_8 = elements/mpeg2enc$(EXEEXT)
-@USE_MPLEX_TRUE@am__EXEEXT_9 = elements/mplex$(EXEEXT)
-@USE_SMOOTHSTREAMING_TRUE@am__EXEEXT_10 = elements/mssdemux$(EXEEXT)
-@USE_OFA_TRUE@am__EXEEXT_11 = elements/ofa$(EXEEXT)
-@USE_TIMIDITY_TRUE@am__EXEEXT_12 = elements/timidity$(EXEEXT)
-@USE_KATE_TRUE@am__EXEEXT_13 = elements/kate$(EXEEXT)
-@USE_OPENCV_TRUE@am__EXEEXT_14 = elements/templatematch$(EXEEXT)
-@USE_SSH2_TRUE@am__EXEEXT_15 = elements/curlsftpsink$(EXEEXT)
-@USE_CURL_TRUE@am__EXEEXT_16 = elements/curlhttpsink$(EXEEXT) \
+@USE_DASH_TRUE@am__EXEEXT_2 = elements/dash_mpd$(EXEEXT) \
+@USE_DASH_TRUE@	elements/dash_isoff$(EXEEXT)
+@USE_FAAC_TRUE@am__EXEEXT_3 = elements/faac$(EXEEXT)
+@USE_FAAD_TRUE@am__EXEEXT_4 = elements/faad$(EXEEXT)
+@USE_VOAACENC_TRUE@am__EXEEXT_5 = elements/voaacenc$(EXEEXT)
+@USE_VOAMRWBENC_TRUE@am__EXEEXT_6 = elements/voamrwbenc$(EXEEXT)
+@USE_MPEG2ENC_TRUE@am__EXEEXT_7 = elements/mpeg2enc$(EXEEXT)
+@USE_MPLEX_TRUE@am__EXEEXT_8 = elements/mplex$(EXEEXT)
+@USE_SMOOTHSTREAMING_TRUE@am__EXEEXT_9 = elements/mssdemux$(EXEEXT)
+@USE_OFA_TRUE@am__EXEEXT_10 = elements/ofa$(EXEEXT)
+@USE_TIMIDITY_TRUE@am__EXEEXT_11 = elements/timidity$(EXEEXT)
+@USE_KATE_TRUE@am__EXEEXT_12 = elements/kate$(EXEEXT)
+@USE_OPENCV_TRUE@am__EXEEXT_13 = elements/templatematch$(EXEEXT)
+@USE_SSH2_TRUE@am__EXEEXT_14 = elements/curlsftpsink$(EXEEXT)
+@USE_CURL_TRUE@am__EXEEXT_15 = elements/curlhttpsink$(EXEEXT) \
 @USE_CURL_TRUE@	elements/curlfilesink$(EXEEXT) \
-@USE_CURL_TRUE@	elements/curlftpsink$(EXEEXT) $(am__EXEEXT_15) \
+@USE_CURL_TRUE@	elements/curlftpsink$(EXEEXT) $(am__EXEEXT_14) \
 @USE_CURL_TRUE@	elements/curlsmtpsink$(EXEEXT)
-@USE_SHM_TRUE@am__EXEEXT_17 = elements/shm$(EXEEXT)
-@USE_EXIF_TRUE@am__EXEEXT_18 = elements/jifmux$(EXEEXT)
-@USE_MIMIC_TRUE@am__EXEEXT_19 = pipelines/mimic$(EXEEXT)
-@USE_UVCH264_TRUE@am__EXEEXT_20 = elements/uvch264demux$(EXEEXT)
-@USE_SCHRO_TRUE@am__EXEEXT_21 = elements/schroenc$(EXEEXT)
-@USE_X265_TRUE@am__EXEEXT_22 = elements/x265enc$(EXEEXT)
-@USE_ZBAR_TRUE@am__EXEEXT_23 = elements/zbar$(EXEEXT)
-@HAVE_ORC_TRUE@am__EXEEXT_24 = orc/bayer$(EXEEXT) \
+@USE_SHM_TRUE@am__EXEEXT_16 = elements/shm$(EXEEXT)
+@USE_EXIF_TRUE@am__EXEEXT_17 = elements/jifmux$(EXEEXT)
+@USE_MIMIC_TRUE@am__EXEEXT_18 = pipelines/mimic$(EXEEXT)
+@USE_UVCH264_TRUE@am__EXEEXT_19 = elements/uvch264demux$(EXEEXT)
+@USE_SCHRO_TRUE@am__EXEEXT_20 = elements/schroenc$(EXEEXT)
+@USE_X265_TRUE@am__EXEEXT_21 = elements/x265enc$(EXEEXT)
+@USE_ZBAR_TRUE@am__EXEEXT_22 = elements/zbar$(EXEEXT)
+@HAVE_ORC_TRUE@am__EXEEXT_23 = orc/bayer$(EXEEXT) \
 @HAVE_ORC_TRUE@	orc/audiomixer$(EXEEXT) orc/compositor$(EXEEXT)
-@USE_GL_TRUE@am__EXEEXT_25 = libs/gstglcontext$(EXEEXT) \
+@USE_GL_TRUE@am__EXEEXT_24 = libs/gstglcontext$(EXEEXT) \
 @USE_GL_TRUE@	libs/gstglmemory$(EXEEXT) \
 @USE_GL_TRUE@	libs/gstglupload$(EXEEXT) \
 @USE_GL_TRUE@	libs/gstglcolorconvert$(EXEEXT) \
 @USE_GL_TRUE@	libs/gstglquery$(EXEEXT) libs/gstglsl$(EXEEXT) \
-@USE_GL_TRUE@	elements/glimagesink$(EXEEXT)
-@USE_HLS_TRUE@am__EXEEXT_26 = elements/hlsdemux_m3u8$(EXEEXT)
-@USE_HLS_TRUE@am__EXEEXT_27 = elements/hls_demux$(EXEEXT)
-@WITH_GST_PLAYER_TESTS_TRUE@am__EXEEXT_28 = libs/player$(EXEEXT)
+@USE_GL_TRUE@	elements/glimagesink$(EXEEXT) \
+@USE_GL_TRUE@	pipelines/simple-launch-lines$(EXEEXT)
+@USE_HLS_TRUE@am__EXEEXT_25 = elements/hlsdemux_m3u8$(EXEEXT)
+@USE_HLS_TRUE@am__EXEEXT_26 = elements/hls_demux$(EXEEXT)
+@WITH_GST_PLAYER_TESTS_TRUE@am__EXEEXT_27 = libs/player$(EXEEXT)
+@USE_DASH_TRUE@am__EXEEXT_28 = elements/dash_demux$(EXEEXT)
 @USE_NEON_TRUE@am__EXEEXT_29 = elements/neonhttpsrc$(EXEEXT)
 PROGRAMS = $(noinst_PROGRAMS)
 elements_aiffparse_SOURCES = elements/aiffparse.c
@@ -230,7 +235,8 @@
 	elements/elements_assrender-assrender.$(OBJEXT)
 am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
 elements_assrender_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_2)
 elements_assrender_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(elements_assrender_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
@@ -239,7 +245,7 @@
 elements_audiointerleave_OBJECTS =  \
 	elements/elements_audiointerleave-audiointerleave.$(OBJEXT)
 elements_audiointerleave_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
 elements_audiointerleave_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(elements_audiointerleave_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
@@ -277,7 +283,8 @@
 elements_compositor_OBJECTS =  \
 	elements/elements_compositor-compositor.$(OBJEXT)
 elements_compositor_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_2)
 elements_compositor_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(elements_compositor_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
@@ -310,11 +317,21 @@
 elements_dash_demux_OBJECTS = $(am_elements_dash_demux_OBJECTS)
 elements_dash_demux_DEPENDENCIES = $(am__DEPENDENCIES_2) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1) \
 	$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la
 elements_dash_demux_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(elements_dash_demux_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
+am_elements_dash_isoff_OBJECTS =  \
+	elements/elements_dash_isoff-dash_isoff.$(OBJEXT)
+elements_dash_isoff_OBJECTS = $(am_elements_dash_isoff_OBJECTS)
+elements_dash_isoff_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+	$(am__DEPENDENCIES_1)
+elements_dash_isoff_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(elements_dash_isoff_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am_elements_dash_mpd_OBJECTS =  \
 	elements/elements_dash_mpd-dash_mpd.$(OBJEXT)
 elements_dash_mpd_OBJECTS = $(am_elements_dash_mpd_OBJECTS)
@@ -333,7 +350,7 @@
 elements_faac_OBJECTS = elements/elements_faac-faac.$(OBJEXT)
 elements_faac_DEPENDENCIES = $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
+	$(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
 elements_faac_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(elements_faac_CFLAGS) \
 	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
@@ -341,7 +358,7 @@
 elements_faad_OBJECTS = elements/elements_faad-faad.$(OBJEXT)
 elements_faad_DEPENDENCIES = $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
+	$(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
 elements_faad_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(elements_faad_CFLAGS) \
 	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
@@ -368,7 +385,8 @@
 elements_glimagesink_DEPENDENCIES =  \
 	$(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_2)
 elements_glimagesink_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(elements_glimagesink_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
@@ -386,7 +404,7 @@
 	elements/elements_hls_demux-hls_demux.$(OBJEXT)
 elements_hls_demux_OBJECTS = $(am_elements_hls_demux_OBJECTS)
 elements_hls_demux_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2) \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
 	$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la
 elements_hls_demux_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
@@ -438,7 +456,8 @@
 elements_mpegtsmux_OBJECTS =  \
 	elements/elements_mpegtsmux-mpegtsmux.$(OBJEXT)
 elements_mpegtsmux_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_2)
 elements_mpegtsmux_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(elements_mpegtsmux_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
@@ -459,6 +478,7 @@
 elements_mssdemux_OBJECTS = $(am_elements_mssdemux_OBJECTS)
 elements_mssdemux_DEPENDENCIES = $(am__DEPENDENCIES_2) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1) \
 	$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la
 elements_mssdemux_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
@@ -473,9 +493,14 @@
 elements_mxfmux_LDADD = $(LDADD)
 elements_mxfmux_DEPENDENCIES = $(am__DEPENDENCIES_1)
 elements_neonhttpsrc_SOURCES = elements/neonhttpsrc.c
-elements_neonhttpsrc_OBJECTS = elements/neonhttpsrc.$(OBJEXT)
+elements_neonhttpsrc_OBJECTS =  \
+	elements/elements_neonhttpsrc-neonhttpsrc.$(OBJEXT)
 elements_neonhttpsrc_LDADD = $(LDADD)
 elements_neonhttpsrc_DEPENDENCIES = $(am__DEPENDENCIES_1)
+elements_neonhttpsrc_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(elements_neonhttpsrc_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
 elements_netsim_SOURCES = elements/netsim.c
 elements_netsim_OBJECTS = elements/netsim.$(OBJEXT)
 elements_netsim_LDADD = $(LDADD)
@@ -487,6 +512,31 @@
 elements_pcapparse_SOURCES = elements/pcapparse.c
 elements_pcapparse_OBJECTS = elements/pcapparse.$(OBJEXT)
 elements_pcapparse_DEPENDENCIES = libparser.la $(am__DEPENDENCIES_2)
+elements_pnm_SOURCES = elements/pnm.c
+elements_pnm_OBJECTS = elements/elements_pnm-pnm.$(OBJEXT)
+elements_pnm_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+elements_pnm_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(elements_pnm_CFLAGS) \
+	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+elements_rawaudioparse_SOURCES = elements/rawaudioparse.c
+elements_rawaudioparse_OBJECTS =  \
+	elements/elements_rawaudioparse-rawaudioparse.$(OBJEXT)
+elements_rawaudioparse_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+elements_rawaudioparse_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(elements_rawaudioparse_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
+elements_rawvideoparse_SOURCES = elements/rawvideoparse.c
+elements_rawvideoparse_OBJECTS =  \
+	elements/elements_rawvideoparse-rawvideoparse.$(OBJEXT)
+elements_rawvideoparse_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+elements_rawvideoparse_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(elements_rawvideoparse_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
 elements_rtponvifparse_SOURCES = elements/rtponvifparse.c
 elements_rtponvifparse_OBJECTS =  \
 	elements/elements_rtponvifparse-rtponvifparse.$(OBJEXT)
@@ -541,7 +591,7 @@
 elements_videoframe_audiolevel_OBJECTS = elements/elements_videoframe_audiolevel-videoframe-audiolevel.$(OBJEXT)
 elements_videoframe_audiolevel_DEPENDENCIES = $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
+	$(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
 elements_videoframe_audiolevel_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(elements_videoframe_audiolevel_CFLAGS) $(CFLAGS) \
@@ -555,7 +605,7 @@
 	elements/elements_voaacenc-voaacenc.$(OBJEXT)
 elements_voaacenc_DEPENDENCIES = $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
+	$(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1)
 elements_voaacenc_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(elements_voaacenc_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
@@ -595,7 +645,8 @@
 libs_gstglcolorconvert_DEPENDENCIES =  \
 	$(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_2)
 libs_gstglcolorconvert_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(libs_gstglcolorconvert_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
@@ -606,7 +657,8 @@
 libs_gstglcontext_DEPENDENCIES =  \
 	$(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_2)
 libs_gstglcontext_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(libs_gstglcontext_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
@@ -617,7 +669,8 @@
 libs_gstglmemory_DEPENDENCIES =  \
 	$(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_2)
 libs_gstglmemory_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(libs_gstglmemory_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
@@ -647,7 +700,8 @@
 libs_gstglupload_DEPENDENCIES =  \
 	$(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_2)
 libs_gstglupload_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(libs_gstglupload_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
@@ -694,7 +748,8 @@
 	$(nodist_libs_player_OBJECTS)
 libs_player_DEPENDENCIES = $(top_builddir)/gst-libs/gst/player/libgstplayer-@GST_API_VERSION@.la \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_2)
 libs_player_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(libs_player_CFLAGS) \
 	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
@@ -746,6 +801,15 @@
 pipelines_mxf_OBJECTS = pipelines/mxf.$(OBJEXT)
 pipelines_mxf_LDADD = $(LDADD)
 pipelines_mxf_DEPENDENCIES = $(am__DEPENDENCIES_1)
+pipelines_simple_launch_lines_SOURCES =  \
+	pipelines/simple-launch-lines.c
+pipelines_simple_launch_lines_OBJECTS = pipelines/pipelines_simple_launch_lines-simple-launch-lines.$(OBJEXT)
+pipelines_simple_launch_lines_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+pipelines_simple_launch_lines_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(pipelines_simple_launch_lines_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
 pipelines_streamheader_SOURCES = pipelines/streamheader.c
 pipelines_streamheader_OBJECTS =  \
 	pipelines/pipelines_streamheader-streamheader.$(OBJEXT)
@@ -797,10 +861,11 @@
 	elements/curlfilesink.c elements/curlftpsink.c \
 	elements/curlhttpsink.c elements/curlsftpsink.c \
 	elements/curlsmtpsink.c $(elements_dash_demux_SOURCES) \
-	$(elements_dash_mpd_SOURCES) elements/dataurisrc.c \
-	elements/faac.c elements/faad.c elements/gdpdepay.c \
-	elements/gdppay.c elements/glimagesink.c elements/h263parse.c \
-	elements/h264parse.c $(elements_hls_demux_SOURCES) \
+	$(elements_dash_isoff_SOURCES) $(elements_dash_mpd_SOURCES) \
+	elements/dataurisrc.c elements/faac.c elements/faad.c \
+	elements/gdpdepay.c elements/gdppay.c elements/glimagesink.c \
+	elements/h263parse.c elements/h264parse.c \
+	$(elements_hls_demux_SOURCES) \
 	$(elements_hlsdemux_m3u8_SOURCES) elements/id3mux.c \
 	$(elements_jifmux_SOURCES) elements/jpegparse.c \
 	elements/kate.c elements/mpeg2enc.c elements/mpeg4videoparse.c \
@@ -808,20 +873,23 @@
 	elements/mplex.c $(elements_mssdemux_SOURCES) \
 	elements/mxfdemux.c elements/mxfmux.c elements/neonhttpsrc.c \
 	elements/netsim.c elements/ofa.c elements/pcapparse.c \
-	elements/rtponvifparse.c elements/rtponviftimestamp.c \
-	elements/schroenc.c elements/shm.c elements/templatematch.c \
-	elements/timidity.c elements/uvch264demux.c \
-	elements/videoframe-audiolevel.c elements/viewfinderbin.c \
-	elements/voaacenc.c elements/voamrwbenc.c elements/x265enc.c \
-	elements/zbar.c generic/states.c libs/aggregator.c \
-	libs/gstglcolorconvert.c libs/gstglcontext.c \
-	libs/gstglmemory.c libs/gstglquery.c libs/gstglsl.c \
-	libs/gstglupload.c libs/h264parser.c libs/insertbin.c \
-	libs/mpegts.c libs/mpegvideoparser.c $(libs_player_SOURCES) \
-	$(nodist_libs_player_SOURCES) libs/vc1parser.c \
-	libs/vp8parser.c $(nodist_orc_audiomixer_SOURCES) \
-	$(nodist_orc_bayer_SOURCES) $(nodist_orc_compositor_SOURCES) \
-	pipelines/mimic.c pipelines/mxf.c pipelines/streamheader.c
+	elements/pnm.c elements/rawaudioparse.c \
+	elements/rawvideoparse.c elements/rtponvifparse.c \
+	elements/rtponviftimestamp.c elements/schroenc.c \
+	elements/shm.c elements/templatematch.c elements/timidity.c \
+	elements/uvch264demux.c elements/videoframe-audiolevel.c \
+	elements/viewfinderbin.c elements/voaacenc.c \
+	elements/voamrwbenc.c elements/x265enc.c elements/zbar.c \
+	generic/states.c libs/aggregator.c libs/gstglcolorconvert.c \
+	libs/gstglcontext.c libs/gstglmemory.c libs/gstglquery.c \
+	libs/gstglsl.c libs/gstglupload.c libs/h264parser.c \
+	libs/insertbin.c libs/mpegts.c libs/mpegvideoparser.c \
+	$(libs_player_SOURCES) $(nodist_libs_player_SOURCES) \
+	libs/vc1parser.c libs/vp8parser.c \
+	$(nodist_orc_audiomixer_SOURCES) $(nodist_orc_bayer_SOURCES) \
+	$(nodist_orc_compositor_SOURCES) pipelines/mimic.c \
+	pipelines/mxf.c pipelines/simple-launch-lines.c \
+	pipelines/streamheader.c
 DIST_SOURCES = $(libparser_la_SOURCES) elements/aiffparse.c \
 	elements/asfmux.c elements/assrender.c \
 	elements/audiointerleave.c elements/audiomixer.c \
@@ -830,10 +898,11 @@
 	elements/curlfilesink.c elements/curlftpsink.c \
 	elements/curlhttpsink.c elements/curlsftpsink.c \
 	elements/curlsmtpsink.c $(elements_dash_demux_SOURCES) \
-	$(elements_dash_mpd_SOURCES) elements/dataurisrc.c \
-	elements/faac.c elements/faad.c elements/gdpdepay.c \
-	elements/gdppay.c elements/glimagesink.c elements/h263parse.c \
-	elements/h264parse.c $(elements_hls_demux_SOURCES) \
+	$(elements_dash_isoff_SOURCES) $(elements_dash_mpd_SOURCES) \
+	elements/dataurisrc.c elements/faac.c elements/faad.c \
+	elements/gdpdepay.c elements/gdppay.c elements/glimagesink.c \
+	elements/h263parse.c elements/h264parse.c \
+	$(elements_hls_demux_SOURCES) \
 	$(elements_hlsdemux_m3u8_SOURCES) elements/id3mux.c \
 	$(elements_jifmux_SOURCES) elements/jpegparse.c \
 	elements/kate.c elements/mpeg2enc.c elements/mpeg4videoparse.c \
@@ -841,18 +910,20 @@
 	elements/mplex.c $(elements_mssdemux_SOURCES) \
 	elements/mxfdemux.c elements/mxfmux.c elements/neonhttpsrc.c \
 	elements/netsim.c elements/ofa.c elements/pcapparse.c \
-	elements/rtponvifparse.c elements/rtponviftimestamp.c \
-	elements/schroenc.c elements/shm.c elements/templatematch.c \
-	elements/timidity.c elements/uvch264demux.c \
-	elements/videoframe-audiolevel.c elements/viewfinderbin.c \
-	elements/voaacenc.c elements/voamrwbenc.c elements/x265enc.c \
-	elements/zbar.c generic/states.c libs/aggregator.c \
-	libs/gstglcolorconvert.c libs/gstglcontext.c \
-	libs/gstglmemory.c libs/gstglquery.c libs/gstglsl.c \
-	libs/gstglupload.c libs/h264parser.c libs/insertbin.c \
-	libs/mpegts.c libs/mpegvideoparser.c $(libs_player_SOURCES) \
-	libs/vc1parser.c libs/vp8parser.c pipelines/mimic.c \
-	pipelines/mxf.c pipelines/streamheader.c
+	elements/pnm.c elements/rawaudioparse.c \
+	elements/rawvideoparse.c elements/rtponvifparse.c \
+	elements/rtponviftimestamp.c elements/schroenc.c \
+	elements/shm.c elements/templatematch.c elements/timidity.c \
+	elements/uvch264demux.c elements/videoframe-audiolevel.c \
+	elements/viewfinderbin.c elements/voaacenc.c \
+	elements/voamrwbenc.c elements/x265enc.c elements/zbar.c \
+	generic/states.c libs/aggregator.c libs/gstglcolorconvert.c \
+	libs/gstglcontext.c libs/gstglmemory.c libs/gstglquery.c \
+	libs/gstglsl.c libs/gstglupload.c libs/h264parser.c \
+	libs/insertbin.c libs/mpegts.c libs/mpegvideoparser.c \
+	$(libs_player_SOURCES) libs/vc1parser.c libs/vp8parser.c \
+	pipelines/mimic.c pipelines/mxf.c \
+	pipelines/simple-launch-lines.c pipelines/streamheader.c
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -1149,6 +1220,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -1170,6 +1243,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -1219,6 +1294,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -1364,6 +1441,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -1490,8 +1569,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -1534,8 +1611,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -1634,10 +1716,10 @@
 	dc1394src dccpclientsrc dccpclientsink dccpserversrc \
 	dccpserversink decklinksrc decklinksink dtlssrtpdec \
 	dtlssrtpenc dvbsrc dvbbasebin dfbvideosink festival fluidsynth \
-	linsyssdisrc linsyssdisink nassink rsndvdbin sdlaudiosink \
-	sdlvideosink vcdsrc rfbsrc vdpauyuvvideo vdpauvideoyuv \
-	vdpaumpegdec vdpaumpeg4dec vdpauh264dec vdpauvideopostprocess \
-	vdpausink neonhttpsrc"
+	linsyssdisrc linsyssdisink nassink kmssink rsndvdbin \
+	sdlaudiosink sdlvideosink vcdsrc rfbsrc vdpauyuvvideo \
+	vdpauvideoyuv vdpaumpegdec vdpaumpeg4dec vdpauh264dec \
+	vdpauvideopostprocess vdpausink neonhttpsrc"
 
 # inspect every plugin feature
 GST_INSPECT = $(GST_TOOLS_DIR)/gst-inspect-$(GST_API_VERSION)
@@ -1653,7 +1735,7 @@
 @USE_ASSRENDER_FALSE@check_assrender = 
 @USE_ASSRENDER_TRUE@check_assrender = elements/assrender
 @USE_DASH_FALSE@check_dash = 
-@USE_DASH_TRUE@check_dash = elements/dash_mpd
+@USE_DASH_TRUE@check_dash = elements/dash_mpd elements/dash_isoff
 @USE_DASH_FALSE@check_dash_demux = 
 @USE_DASH_TRUE@check_dash_demux = elements/dash_demux
 @USE_FAAC_FALSE@check_faac = 
@@ -1725,7 +1807,8 @@
 @USE_GL_TRUE@    libs/gstglcolorconvert \
 @USE_GL_TRUE@    libs/gstglquery \
 @USE_GL_TRUE@    libs/gstglsl \
-@USE_GL_TRUE@    elements/glimagesink
+@USE_GL_TRUE@    elements/glimagesink \
+@USE_GL_TRUE@    pipelines/simple-launch-lines
 
 VALGRIND_TO_FIX = \
 	elements/mpeg2enc \
@@ -1737,21 +1820,27 @@
 VALGRIND_TESTS_DISABLE = \
 	$(VALGRIND_TO_FIX)
 
-noinst_HEADERS = elements/mxfdemux.h
+noinst_HEADERS = elements/mxfdemux.h elements/dash_isoff.h
 TESTS = $(check_PROGRAMS)
 AM_CFLAGS = $(GST_CFLAGS) $(GST_CHECK_CFLAGS) $(GST_OPTION_CFLAGS) \
 	-DGST_CHECK_TEST_ENVIRONMENT_BEACON="\"GST_PLUGIN_LOADING_WHITELIST\"" \
 	-DGST_TEST_FILES_PATH="\"$(TEST_FILES_DIRECTORY)\"" \
-	-UG_DISABLE_ASSERT -UG_DISABLE_CAST_CHECKS
+	-UG_DISABLE_ASSERT -UG_DISABLE_CAST_CHECKS $(PTHREAD_CFLAGS)
 
 LDADD = $(GST_CHECK_LIBS)
 generic_states_CFLAGS = $(AM_CFLAGS) $(GMODULE_NO_EXPORT_CFLAGS)
 generic_states_LDADD = $(LDADD) $(GMODULE_NO_EXPORT_LIBS)
 elements_audiomixer_LDADD = $(GST_BASE_LIBS) $(GST_CONTROLLER_LIBS) -lgstbase-@GST_API_VERSION@ $(LDADD)
 elements_audiomixer_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CONTROLLER_CFLAGS) $(AM_CFLAGS)
-elements_audiointerleave_LDADD = $(GST_BASE_LIBS) -lgstbase-@GST_API_VERSION@ -lgstaudio-@GST_API_VERSION@ $(LDADD)
+elements_audiointerleave_LDADD = $(GST_BASE_LIBS) -lgstbase-@GST_API_VERSION@ $(GST_AUDIO_LIBS) $(LDADD)
 elements_audiointerleave_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS)
+elements_pnm_CFLAGS = \
+	$(GST_PLUGINS_BASE_CFLAGS)
 
+elements_pnm_LDADD = \
+	$(GST_PLUGINS_BASE_LIBS) -lgstapp-$(GST_API_VERSION) $(GST_BASE_LIBS) $(LDADD)
+
+#
 # parser unit test convenience lib
 noinst_LTLIBRARIES = libparser.la
 libparser_la_SOURCES = elements/parser.c elements/parser.h
@@ -1764,6 +1853,10 @@
 elements_h263parse_LDADD = libparser.la $(LDADD)
 elements_h264parse_LDADD = libparser.la $(LDADD)
 elements_pcapparse_LDADD = libparser.la $(LDADD)
+elements_rawaudioparse_LDADD = $(GST_BASE_LIBS) -lgstbase-@GST_API_VERSION@ $(GST_AUDIO_LIBS) $(LDADD)
+elements_rawaudioparse_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS)
+elements_rawvideoparse_LDADD = $(GST_BASE_LIBS) -lgstbase-@GST_API_VERSION@ $(GST_VIDEO_LIBS) $(LDADD)
+elements_rawvideoparse_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS)
 libs_mpegvideoparser_CFLAGS = \
 	$(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
 	-DGST_USE_UNSTABLE_API \
@@ -1776,7 +1869,8 @@
 libs_mpegts_CFLAGS = \
 	$(GST_PLUGINS_BAD_CFLAGS) \
 	-DGST_USE_UNSTABLE_API \
-	$(GST_CFLAGS)
+	$(GST_CFLAGS) \
+	$(PTHREAD_CFLAGS)
 
 libs_mpegts_LDADD = \
 	$(top_builddir)/gst-libs/gst/mpegts/libgstmpegts-@GST_API_VERSION@.la \
@@ -1817,7 +1911,7 @@
 
 elements_videoframe_audiolevel_LDADD = \
 	$(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD) \
-	-lgstaudio-@GST_API_VERSION@
+	$(GST_AUDIO_LIBS)
 
 elements_faad_CFLAGS = \
 	$(GST_PLUGINS_BASE_CFLAGS) \
@@ -1825,7 +1919,7 @@
 
 elements_faad_LDADD = \
 	$(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD) \
-	-lgstaudio-@GST_API_VERSION@
+	$(GST_AUDIO_LIBS)
 
 elements_faac_CFLAGS = \
 	$(GST_PLUGINS_BASE_CFLAGS) \
@@ -1833,7 +1927,7 @@
 
 elements_faac_LDADD = \
 	$(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD) \
-	-lgstaudio-@GST_API_VERSION@
+	$(GST_AUDIO_LIBS)
 
 elements_gdppay_CFLAGS = \
 	$(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
@@ -1849,7 +1943,7 @@
 
 elements_voaacenc_LDADD = \
 	$(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD) \
-	-lgstaudio-@GST_API_VERSION@
+	$(GST_AUDIO_LIBS)
 
 elements_camerabin_CFLAGS = \
 	$(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
@@ -1870,9 +1964,9 @@
 elements_kate_CFLAGS = $(GST_BASE_CFLAGS) $(AM_CFLAGS)
 elements_kate_LDADD = $(GST_BASE_LIBS) $(LDADD)
 elements_assrender_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS)
-elements_assrender_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) -lgstapp-$(GST_API_VERSION) $(GST_BASE_LIBS) $(LDADD)
+elements_assrender_LDADD = $(GST_PLUGINS_BASE_LIBS) $(GST_VIDEO_LIBS) -lgstapp-$(GST_API_VERSION) $(GST_BASE_LIBS) $(LDADD)
 elements_mpegtsmux_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS)
-elements_mpegtsmux_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) $(GST_BASE_LIBS) $(LDADD)
+elements_mpegtsmux_LDADD = $(GST_PLUGINS_BASE_LIBS) $(GST_VIDEO_LIBS) $(GST_BASE_LIBS) $(LDADD)
 elements_uvch264demux_CFLAGS = -DUVCH264DEMUX_DATADIR="$(srcdir)/elements/uvch264demux_data" \
 				$(AM_CFLAGS)
 
@@ -1881,17 +1975,21 @@
 	$(top_builddir)/gst-libs/gst/uridownloader/libgsturidownloader-@GST_API_VERSION@.la
 
 elements_dash_mpd_SOURCES = elements/dash_mpd.c
+elements_dash_isoff_CFLAGS = $(AM_CFLAGS) $(GST_BASE_CFLAGS)
+elements_dash_isoff_LDADD = $(LDADD) $(GST_BASE_LIBS)
+elements_dash_isoff_SOURCES = elements/dash_isoff.c
 elements_dash_demux_CFLAGS = $(AM_CFLAGS) $(LIBXML2_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_PLUGINS_BAD_CFLAGS)
 elements_dash_demux_LDADD = \
-	$(LDADD) $(LIBXML2_LIBS) $(GST_BASE_LIBS) \
+	$(LDADD) $(LIBXML2_LIBS) $(GST_BASE_LIBS) $(GST_PLUGINS_BASE_LIBS) \
 	-lgsttag-$(GST_API_VERSION) \
 	-lgstapp-$(GST_API_VERSION) \
 	$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la
 
 elements_dash_demux_SOURCES = elements/test_http_src.c elements/test_http_src.h elements/adaptive_demux_engine.c elements/adaptive_demux_engine.h elements/adaptive_demux_common.c elements/adaptive_demux_common.h elements/dash_demux.c
+elements_neonhttpsrc_CFLAGS = $(AM_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS)
 elements_mssdemux_CFLAGS = $(AM_CFLAGS) $(LIBXML2_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_PLUGINS_BAD_CFLAGS)
 elements_mssdemux_LDADD = \
-	$(LDADD) $(LIBXML2_LIBS) $(GST_BASE_LIBS) \
+	$(LDADD) $(LIBXML2_LIBS) $(GST_BASE_LIBS) $(GST_PLUGINS_BASE_LIBS) \
 	-lgsttag-$(GST_API_VERSION) \
 	-lgstapp-$(GST_API_VERSION) \
 	$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la
@@ -1909,10 +2007,11 @@
 libs_player_SOURCES = libs/player.c
 libs_player_LDADD = \
 	$(top_builddir)/gst-libs/gst/player/libgstplayer-@GST_API_VERSION@.la \
-	$(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
+	$(GST_VIDEO_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) \
+	$(LDADD)
 
 libs_player_CFLAGS = \
-	$(GST_PLUGINS_BAD_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS) \
+	$(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS) \
 	-DTEST_PATH=\"$(builddir)/media\"
 
 @WITH_GST_PLAYER_TESTS_TRUE@PLAYER_MEDIA_FILES = \
@@ -1937,7 +2036,8 @@
 nodist_orc_audiomixer_SOURCES = orc/audiomixer.c
 libs_gstglcontext_LDADD = \
 	$(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
-	$(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
+	$(GST_PLUGINS_BASE_LIBS) $(GST_VIDEO_LIBS) $(GST_BASE_LIBS) \
+	$(GST_LIBS) $(LDADD)
 
 libs_gstglcontext_CFLAGS = \
 	$(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
@@ -1946,8 +2046,8 @@
 
 libs_gstglmemory_LDADD = \
 	$(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
-	$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
-	$(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
+	$(GST_PLUGINS_BASE_LIBS) $(GST_VIDEO_LIBS) $(GST_BASE_LIBS) \
+	$(GST_LIBS) $(LDADD)
 
 libs_gstglmemory_CFLAGS = \
 	$(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
@@ -1961,8 +2061,8 @@
 
 libs_gstglupload_LDADD = \
 	$(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
-	$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
-	$(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
+	$(GST_PLUGINS_BASE_LIBS) $(GST_VIDEO_LIBS) $(GST_BASE_LIBS) \
+	$(GST_LIBS) $(LDADD)
 
 libs_gstglcolorconvert_CFLAGS = \
 	$(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
@@ -1971,8 +2071,8 @@
 
 libs_gstglcolorconvert_LDADD = \
 	$(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
-	$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
-	$(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
+	$(GST_PLUGINS_BASE_LIBS) $(GST_VIDEO_LIBS) $(GST_BASE_LIBS) \
+	$(GST_LIBS) $(LDADD)
 
 libs_gstglquery_LDADD = \
 	$(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
@@ -1999,7 +2099,15 @@
 
 elements_glimagesink_LDADD = \
 	$(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
-	$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
+	$(GST_PLUGINS_BASE_LIBS) $(GST_VIDEO_LIBS) $(GST_BASE_LIBS) \
+	$(GST_LIBS) $(LDADD)
+
+pipelines_simple_launch_lines_CFLAGS = \
+	$(GST_PLUGINS_BAD_CFLAGS) \
+	-DGST_USE_UNSTABLE_API \
+	$(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
+
+pipelines_simple_launch_lines_LDADD = \
 	$(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
 
 libs_aggregator_LDADD = \
@@ -2013,8 +2121,7 @@
 	$(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
 
 elements_compositor_LDADD = \
-	$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
-	$(GST_BASE_LIBS) $(LDADD)
+	$(GST_PLUGINS_BASE_LIBS) $(GST_VIDEO_LIBS) $(GST_BASE_LIBS) $(LDADD)
 
 elements_compositor_CFLAGS = \
 	$(GST_PLUGINS_BASE_CFLAGS) \
@@ -2024,7 +2131,7 @@
 elements_hlsdemux_m3u8_LDADD = $(GST_BASE_LIBS) $(LDADD)
 elements_hlsdemux_m3u8_SOURCES = elements/hlsdemux_m3u8.c
 elements_hls_demux_CFLAGS = $(GST_BASE_CFLAGS) $(AM_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_PLUGINS_BAD_CFLAGS)
-elements_hls_demux_LDADD = $(GST_BASE_LIBS) $(LDADD) \
+elements_hls_demux_LDADD = $(GST_BASE_LIBS) $(GST_PLUGINS_BASE_LIBS) $(LDADD) \
 	-lgsttag-$(GST_API_VERSION) \
 	-lgstapp-$(GST_API_VERSION) \
 	$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la
@@ -2204,6 +2311,12 @@
 elements/dash_demux$(EXEEXT): $(elements_dash_demux_OBJECTS) $(elements_dash_demux_DEPENDENCIES) $(EXTRA_elements_dash_demux_DEPENDENCIES) elements/$(am__dirstamp)
 	@rm -f elements/dash_demux$(EXEEXT)
 	$(AM_V_CCLD)$(elements_dash_demux_LINK) $(elements_dash_demux_OBJECTS) $(elements_dash_demux_LDADD) $(LIBS)
+elements/elements_dash_isoff-dash_isoff.$(OBJEXT):  \
+	elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp)
+
+elements/dash_isoff$(EXEEXT): $(elements_dash_isoff_OBJECTS) $(elements_dash_isoff_DEPENDENCIES) $(EXTRA_elements_dash_isoff_DEPENDENCIES) elements/$(am__dirstamp)
+	@rm -f elements/dash_isoff$(EXEEXT)
+	$(AM_V_CCLD)$(elements_dash_isoff_LINK) $(elements_dash_isoff_OBJECTS) $(elements_dash_isoff_LDADD) $(LIBS)
 elements/elements_dash_mpd-dash_mpd.$(OBJEXT):  \
 	elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp)
 
@@ -2354,12 +2467,12 @@
 elements/mxfmux$(EXEEXT): $(elements_mxfmux_OBJECTS) $(elements_mxfmux_DEPENDENCIES) $(EXTRA_elements_mxfmux_DEPENDENCIES) elements/$(am__dirstamp)
 	@rm -f elements/mxfmux$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(elements_mxfmux_OBJECTS) $(elements_mxfmux_LDADD) $(LIBS)
-elements/neonhttpsrc.$(OBJEXT): elements/$(am__dirstamp) \
-	elements/$(DEPDIR)/$(am__dirstamp)
+elements/elements_neonhttpsrc-neonhttpsrc.$(OBJEXT):  \
+	elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp)
 
 elements/neonhttpsrc$(EXEEXT): $(elements_neonhttpsrc_OBJECTS) $(elements_neonhttpsrc_DEPENDENCIES) $(EXTRA_elements_neonhttpsrc_DEPENDENCIES) elements/$(am__dirstamp)
 	@rm -f elements/neonhttpsrc$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(elements_neonhttpsrc_OBJECTS) $(elements_neonhttpsrc_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(elements_neonhttpsrc_LINK) $(elements_neonhttpsrc_OBJECTS) $(elements_neonhttpsrc_LDADD) $(LIBS)
 elements/netsim.$(OBJEXT): elements/$(am__dirstamp) \
 	elements/$(DEPDIR)/$(am__dirstamp)
 
@@ -2378,6 +2491,24 @@
 elements/pcapparse$(EXEEXT): $(elements_pcapparse_OBJECTS) $(elements_pcapparse_DEPENDENCIES) $(EXTRA_elements_pcapparse_DEPENDENCIES) elements/$(am__dirstamp)
 	@rm -f elements/pcapparse$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(elements_pcapparse_OBJECTS) $(elements_pcapparse_LDADD) $(LIBS)
+elements/elements_pnm-pnm.$(OBJEXT): elements/$(am__dirstamp) \
+	elements/$(DEPDIR)/$(am__dirstamp)
+
+elements/pnm$(EXEEXT): $(elements_pnm_OBJECTS) $(elements_pnm_DEPENDENCIES) $(EXTRA_elements_pnm_DEPENDENCIES) elements/$(am__dirstamp)
+	@rm -f elements/pnm$(EXEEXT)
+	$(AM_V_CCLD)$(elements_pnm_LINK) $(elements_pnm_OBJECTS) $(elements_pnm_LDADD) $(LIBS)
+elements/elements_rawaudioparse-rawaudioparse.$(OBJEXT):  \
+	elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp)
+
+elements/rawaudioparse$(EXEEXT): $(elements_rawaudioparse_OBJECTS) $(elements_rawaudioparse_DEPENDENCIES) $(EXTRA_elements_rawaudioparse_DEPENDENCIES) elements/$(am__dirstamp)
+	@rm -f elements/rawaudioparse$(EXEEXT)
+	$(AM_V_CCLD)$(elements_rawaudioparse_LINK) $(elements_rawaudioparse_OBJECTS) $(elements_rawaudioparse_LDADD) $(LIBS)
+elements/elements_rawvideoparse-rawvideoparse.$(OBJEXT):  \
+	elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp)
+
+elements/rawvideoparse$(EXEEXT): $(elements_rawvideoparse_OBJECTS) $(elements_rawvideoparse_DEPENDENCIES) $(EXTRA_elements_rawvideoparse_DEPENDENCIES) elements/$(am__dirstamp)
+	@rm -f elements/rawvideoparse$(EXEEXT)
+	$(AM_V_CCLD)$(elements_rawvideoparse_LINK) $(elements_rawvideoparse_OBJECTS) $(elements_rawvideoparse_LDADD) $(LIBS)
 elements/elements_rtponvifparse-rtponvifparse.$(OBJEXT):  \
 	elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp)
 
@@ -2602,6 +2733,12 @@
 pipelines/mxf$(EXEEXT): $(pipelines_mxf_OBJECTS) $(pipelines_mxf_DEPENDENCIES) $(EXTRA_pipelines_mxf_DEPENDENCIES) pipelines/$(am__dirstamp)
 	@rm -f pipelines/mxf$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(pipelines_mxf_OBJECTS) $(pipelines_mxf_LDADD) $(LIBS)
+pipelines/pipelines_simple_launch_lines-simple-launch-lines.$(OBJEXT):  \
+	pipelines/$(am__dirstamp) pipelines/$(DEPDIR)/$(am__dirstamp)
+
+pipelines/simple-launch-lines$(EXEEXT): $(pipelines_simple_launch_lines_OBJECTS) $(pipelines_simple_launch_lines_DEPENDENCIES) $(EXTRA_pipelines_simple_launch_lines_DEPENDENCIES) pipelines/$(am__dirstamp)
+	@rm -f pipelines/simple-launch-lines$(EXEEXT)
+	$(AM_V_CCLD)$(pipelines_simple_launch_lines_LINK) $(pipelines_simple_launch_lines_OBJECTS) $(pipelines_simple_launch_lines_LDADD) $(LIBS)
 pipelines/pipelines_streamheader-streamheader.$(OBJEXT):  \
 	pipelines/$(am__dirstamp) pipelines/$(DEPDIR)/$(am__dirstamp)
 
@@ -2640,6 +2777,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_dash_demux-adaptive_demux_engine.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_dash_demux-dash_demux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_dash_demux-test_http_src.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_dash_isoff-dash_isoff.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_dash_mpd-dash_mpd.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_faac-faac.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_faad-faad.Po@am__quote@
@@ -2658,6 +2796,10 @@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_mssdemux-adaptive_demux_engine.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_mssdemux-mssdemux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_mssdemux-test_http_src.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_neonhttpsrc-neonhttpsrc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_pnm-pnm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_rawaudioparse-rawaudioparse.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_rawvideoparse-rawvideoparse.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_rtponvifparse-rtponvifparse.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_rtponviftimestamp-rtponviftimestamp.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_timidity-timidity.Po@am__quote@
@@ -2675,7 +2817,6 @@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/mplex.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/mxfdemux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/mxfmux.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/neonhttpsrc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/netsim.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/ofa.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/pcapparse.Po@am__quote@
@@ -2707,6 +2848,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@orc/$(DEPDIR)/orc_compositor-compositor.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@pipelines/$(DEPDIR)/mimic.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@pipelines/$(DEPDIR)/mxf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pipelines/$(DEPDIR)/pipelines_simple_launch_lines-simple-launch-lines.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@pipelines/$(DEPDIR)/pipelines_streamheader-streamheader.Po@am__quote@
 
 .c.o:
@@ -2866,6 +3008,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_dash_demux_CFLAGS) $(CFLAGS) -c -o elements/elements_dash_demux-dash_demux.obj `if test -f 'elements/dash_demux.c'; then $(CYGPATH_W) 'elements/dash_demux.c'; else $(CYGPATH_W) '$(srcdir)/elements/dash_demux.c'; fi`
 
+elements/elements_dash_isoff-dash_isoff.o: elements/dash_isoff.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_dash_isoff_CFLAGS) $(CFLAGS) -MT elements/elements_dash_isoff-dash_isoff.o -MD -MP -MF elements/$(DEPDIR)/elements_dash_isoff-dash_isoff.Tpo -c -o elements/elements_dash_isoff-dash_isoff.o `test -f 'elements/dash_isoff.c' || echo '$(srcdir)/'`elements/dash_isoff.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_dash_isoff-dash_isoff.Tpo elements/$(DEPDIR)/elements_dash_isoff-dash_isoff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/dash_isoff.c' object='elements/elements_dash_isoff-dash_isoff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_dash_isoff_CFLAGS) $(CFLAGS) -c -o elements/elements_dash_isoff-dash_isoff.o `test -f 'elements/dash_isoff.c' || echo '$(srcdir)/'`elements/dash_isoff.c
+
+elements/elements_dash_isoff-dash_isoff.obj: elements/dash_isoff.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_dash_isoff_CFLAGS) $(CFLAGS) -MT elements/elements_dash_isoff-dash_isoff.obj -MD -MP -MF elements/$(DEPDIR)/elements_dash_isoff-dash_isoff.Tpo -c -o elements/elements_dash_isoff-dash_isoff.obj `if test -f 'elements/dash_isoff.c'; then $(CYGPATH_W) 'elements/dash_isoff.c'; else $(CYGPATH_W) '$(srcdir)/elements/dash_isoff.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_dash_isoff-dash_isoff.Tpo elements/$(DEPDIR)/elements_dash_isoff-dash_isoff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/dash_isoff.c' object='elements/elements_dash_isoff-dash_isoff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_dash_isoff_CFLAGS) $(CFLAGS) -c -o elements/elements_dash_isoff-dash_isoff.obj `if test -f 'elements/dash_isoff.c'; then $(CYGPATH_W) 'elements/dash_isoff.c'; else $(CYGPATH_W) '$(srcdir)/elements/dash_isoff.c'; fi`
+
 elements/elements_dash_mpd-dash_mpd.o: elements/dash_mpd.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_dash_mpd_CFLAGS) $(CFLAGS) -MT elements/elements_dash_mpd-dash_mpd.o -MD -MP -MF elements/$(DEPDIR)/elements_dash_mpd-dash_mpd.Tpo -c -o elements/elements_dash_mpd-dash_mpd.o `test -f 'elements/dash_mpd.c' || echo '$(srcdir)/'`elements/dash_mpd.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_dash_mpd-dash_mpd.Tpo elements/$(DEPDIR)/elements_dash_mpd-dash_mpd.Po
@@ -3118,6 +3274,62 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_mssdemux_CFLAGS) $(CFLAGS) -c -o elements/elements_mssdemux-mssdemux.obj `if test -f 'elements/mssdemux.c'; then $(CYGPATH_W) 'elements/mssdemux.c'; else $(CYGPATH_W) '$(srcdir)/elements/mssdemux.c'; fi`
 
+elements/elements_neonhttpsrc-neonhttpsrc.o: elements/neonhttpsrc.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_neonhttpsrc_CFLAGS) $(CFLAGS) -MT elements/elements_neonhttpsrc-neonhttpsrc.o -MD -MP -MF elements/$(DEPDIR)/elements_neonhttpsrc-neonhttpsrc.Tpo -c -o elements/elements_neonhttpsrc-neonhttpsrc.o `test -f 'elements/neonhttpsrc.c' || echo '$(srcdir)/'`elements/neonhttpsrc.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_neonhttpsrc-neonhttpsrc.Tpo elements/$(DEPDIR)/elements_neonhttpsrc-neonhttpsrc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/neonhttpsrc.c' object='elements/elements_neonhttpsrc-neonhttpsrc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_neonhttpsrc_CFLAGS) $(CFLAGS) -c -o elements/elements_neonhttpsrc-neonhttpsrc.o `test -f 'elements/neonhttpsrc.c' || echo '$(srcdir)/'`elements/neonhttpsrc.c
+
+elements/elements_neonhttpsrc-neonhttpsrc.obj: elements/neonhttpsrc.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_neonhttpsrc_CFLAGS) $(CFLAGS) -MT elements/elements_neonhttpsrc-neonhttpsrc.obj -MD -MP -MF elements/$(DEPDIR)/elements_neonhttpsrc-neonhttpsrc.Tpo -c -o elements/elements_neonhttpsrc-neonhttpsrc.obj `if test -f 'elements/neonhttpsrc.c'; then $(CYGPATH_W) 'elements/neonhttpsrc.c'; else $(CYGPATH_W) '$(srcdir)/elements/neonhttpsrc.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_neonhttpsrc-neonhttpsrc.Tpo elements/$(DEPDIR)/elements_neonhttpsrc-neonhttpsrc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/neonhttpsrc.c' object='elements/elements_neonhttpsrc-neonhttpsrc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_neonhttpsrc_CFLAGS) $(CFLAGS) -c -o elements/elements_neonhttpsrc-neonhttpsrc.obj `if test -f 'elements/neonhttpsrc.c'; then $(CYGPATH_W) 'elements/neonhttpsrc.c'; else $(CYGPATH_W) '$(srcdir)/elements/neonhttpsrc.c'; fi`
+
+elements/elements_pnm-pnm.o: elements/pnm.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_pnm_CFLAGS) $(CFLAGS) -MT elements/elements_pnm-pnm.o -MD -MP -MF elements/$(DEPDIR)/elements_pnm-pnm.Tpo -c -o elements/elements_pnm-pnm.o `test -f 'elements/pnm.c' || echo '$(srcdir)/'`elements/pnm.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_pnm-pnm.Tpo elements/$(DEPDIR)/elements_pnm-pnm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/pnm.c' object='elements/elements_pnm-pnm.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_pnm_CFLAGS) $(CFLAGS) -c -o elements/elements_pnm-pnm.o `test -f 'elements/pnm.c' || echo '$(srcdir)/'`elements/pnm.c
+
+elements/elements_pnm-pnm.obj: elements/pnm.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_pnm_CFLAGS) $(CFLAGS) -MT elements/elements_pnm-pnm.obj -MD -MP -MF elements/$(DEPDIR)/elements_pnm-pnm.Tpo -c -o elements/elements_pnm-pnm.obj `if test -f 'elements/pnm.c'; then $(CYGPATH_W) 'elements/pnm.c'; else $(CYGPATH_W) '$(srcdir)/elements/pnm.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_pnm-pnm.Tpo elements/$(DEPDIR)/elements_pnm-pnm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/pnm.c' object='elements/elements_pnm-pnm.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_pnm_CFLAGS) $(CFLAGS) -c -o elements/elements_pnm-pnm.obj `if test -f 'elements/pnm.c'; then $(CYGPATH_W) 'elements/pnm.c'; else $(CYGPATH_W) '$(srcdir)/elements/pnm.c'; fi`
+
+elements/elements_rawaudioparse-rawaudioparse.o: elements/rawaudioparse.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rawaudioparse_CFLAGS) $(CFLAGS) -MT elements/elements_rawaudioparse-rawaudioparse.o -MD -MP -MF elements/$(DEPDIR)/elements_rawaudioparse-rawaudioparse.Tpo -c -o elements/elements_rawaudioparse-rawaudioparse.o `test -f 'elements/rawaudioparse.c' || echo '$(srcdir)/'`elements/rawaudioparse.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_rawaudioparse-rawaudioparse.Tpo elements/$(DEPDIR)/elements_rawaudioparse-rawaudioparse.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/rawaudioparse.c' object='elements/elements_rawaudioparse-rawaudioparse.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rawaudioparse_CFLAGS) $(CFLAGS) -c -o elements/elements_rawaudioparse-rawaudioparse.o `test -f 'elements/rawaudioparse.c' || echo '$(srcdir)/'`elements/rawaudioparse.c
+
+elements/elements_rawaudioparse-rawaudioparse.obj: elements/rawaudioparse.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rawaudioparse_CFLAGS) $(CFLAGS) -MT elements/elements_rawaudioparse-rawaudioparse.obj -MD -MP -MF elements/$(DEPDIR)/elements_rawaudioparse-rawaudioparse.Tpo -c -o elements/elements_rawaudioparse-rawaudioparse.obj `if test -f 'elements/rawaudioparse.c'; then $(CYGPATH_W) 'elements/rawaudioparse.c'; else $(CYGPATH_W) '$(srcdir)/elements/rawaudioparse.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_rawaudioparse-rawaudioparse.Tpo elements/$(DEPDIR)/elements_rawaudioparse-rawaudioparse.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/rawaudioparse.c' object='elements/elements_rawaudioparse-rawaudioparse.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rawaudioparse_CFLAGS) $(CFLAGS) -c -o elements/elements_rawaudioparse-rawaudioparse.obj `if test -f 'elements/rawaudioparse.c'; then $(CYGPATH_W) 'elements/rawaudioparse.c'; else $(CYGPATH_W) '$(srcdir)/elements/rawaudioparse.c'; fi`
+
+elements/elements_rawvideoparse-rawvideoparse.o: elements/rawvideoparse.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rawvideoparse_CFLAGS) $(CFLAGS) -MT elements/elements_rawvideoparse-rawvideoparse.o -MD -MP -MF elements/$(DEPDIR)/elements_rawvideoparse-rawvideoparse.Tpo -c -o elements/elements_rawvideoparse-rawvideoparse.o `test -f 'elements/rawvideoparse.c' || echo '$(srcdir)/'`elements/rawvideoparse.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_rawvideoparse-rawvideoparse.Tpo elements/$(DEPDIR)/elements_rawvideoparse-rawvideoparse.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/rawvideoparse.c' object='elements/elements_rawvideoparse-rawvideoparse.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rawvideoparse_CFLAGS) $(CFLAGS) -c -o elements/elements_rawvideoparse-rawvideoparse.o `test -f 'elements/rawvideoparse.c' || echo '$(srcdir)/'`elements/rawvideoparse.c
+
+elements/elements_rawvideoparse-rawvideoparse.obj: elements/rawvideoparse.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rawvideoparse_CFLAGS) $(CFLAGS) -MT elements/elements_rawvideoparse-rawvideoparse.obj -MD -MP -MF elements/$(DEPDIR)/elements_rawvideoparse-rawvideoparse.Tpo -c -o elements/elements_rawvideoparse-rawvideoparse.obj `if test -f 'elements/rawvideoparse.c'; then $(CYGPATH_W) 'elements/rawvideoparse.c'; else $(CYGPATH_W) '$(srcdir)/elements/rawvideoparse.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_rawvideoparse-rawvideoparse.Tpo elements/$(DEPDIR)/elements_rawvideoparse-rawvideoparse.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/rawvideoparse.c' object='elements/elements_rawvideoparse-rawvideoparse.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rawvideoparse_CFLAGS) $(CFLAGS) -c -o elements/elements_rawvideoparse-rawvideoparse.obj `if test -f 'elements/rawvideoparse.c'; then $(CYGPATH_W) 'elements/rawvideoparse.c'; else $(CYGPATH_W) '$(srcdir)/elements/rawvideoparse.c'; fi`
+
 elements/elements_rtponvifparse-rtponvifparse.o: elements/rtponvifparse.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rtponvifparse_CFLAGS) $(CFLAGS) -MT elements/elements_rtponvifparse-rtponvifparse.o -MD -MP -MF elements/$(DEPDIR)/elements_rtponvifparse-rtponvifparse.Tpo -c -o elements/elements_rtponvifparse-rtponvifparse.o `test -f 'elements/rtponvifparse.c' || echo '$(srcdir)/'`elements/rtponvifparse.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_rtponvifparse-rtponvifparse.Tpo elements/$(DEPDIR)/elements_rtponvifparse-rtponvifparse.Po
@@ -3468,6 +3680,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_compositor_CFLAGS) $(CFLAGS) -c -o orc/orc_compositor-compositor.obj `if test -f 'orc/compositor.c'; then $(CYGPATH_W) 'orc/compositor.c'; else $(CYGPATH_W) '$(srcdir)/orc/compositor.c'; fi`
 
+pipelines/pipelines_simple_launch_lines-simple-launch-lines.o: pipelines/simple-launch-lines.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_simple_launch_lines_CFLAGS) $(CFLAGS) -MT pipelines/pipelines_simple_launch_lines-simple-launch-lines.o -MD -MP -MF pipelines/$(DEPDIR)/pipelines_simple_launch_lines-simple-launch-lines.Tpo -c -o pipelines/pipelines_simple_launch_lines-simple-launch-lines.o `test -f 'pipelines/simple-launch-lines.c' || echo '$(srcdir)/'`pipelines/simple-launch-lines.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) pipelines/$(DEPDIR)/pipelines_simple_launch_lines-simple-launch-lines.Tpo pipelines/$(DEPDIR)/pipelines_simple_launch_lines-simple-launch-lines.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='pipelines/simple-launch-lines.c' object='pipelines/pipelines_simple_launch_lines-simple-launch-lines.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_simple_launch_lines_CFLAGS) $(CFLAGS) -c -o pipelines/pipelines_simple_launch_lines-simple-launch-lines.o `test -f 'pipelines/simple-launch-lines.c' || echo '$(srcdir)/'`pipelines/simple-launch-lines.c
+
+pipelines/pipelines_simple_launch_lines-simple-launch-lines.obj: pipelines/simple-launch-lines.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_simple_launch_lines_CFLAGS) $(CFLAGS) -MT pipelines/pipelines_simple_launch_lines-simple-launch-lines.obj -MD -MP -MF pipelines/$(DEPDIR)/pipelines_simple_launch_lines-simple-launch-lines.Tpo -c -o pipelines/pipelines_simple_launch_lines-simple-launch-lines.obj `if test -f 'pipelines/simple-launch-lines.c'; then $(CYGPATH_W) 'pipelines/simple-launch-lines.c'; else $(CYGPATH_W) '$(srcdir)/pipelines/simple-launch-lines.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) pipelines/$(DEPDIR)/pipelines_simple_launch_lines-simple-launch-lines.Tpo pipelines/$(DEPDIR)/pipelines_simple_launch_lines-simple-launch-lines.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='pipelines/simple-launch-lines.c' object='pipelines/pipelines_simple_launch_lines-simple-launch-lines.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_simple_launch_lines_CFLAGS) $(CFLAGS) -c -o pipelines/pipelines_simple_launch_lines-simple-launch-lines.obj `if test -f 'pipelines/simple-launch-lines.c'; then $(CYGPATH_W) 'pipelines/simple-launch-lines.c'; else $(CYGPATH_W) '$(srcdir)/pipelines/simple-launch-lines.c'; fi`
+
 pipelines/pipelines_streamheader-streamheader.o: pipelines/streamheader.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_streamheader_CFLAGS) $(CFLAGS) -MT pipelines/pipelines_streamheader-streamheader.o -MD -MP -MF pipelines/$(DEPDIR)/pipelines_streamheader-streamheader.Tpo -c -o pipelines/pipelines_streamheader-streamheader.o `test -f 'pipelines/streamheader.c' || echo '$(srcdir)/'`pipelines/streamheader.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) pipelines/$(DEPDIR)/pipelines_streamheader-streamheader.Tpo pipelines/$(DEPDIR)/pipelines_streamheader-streamheader.Po
@@ -3707,9 +3933,9 @@
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/dash_demux.log: elements/dash_demux$(EXEEXT)
-	@p='elements/dash_demux$(EXEEXT)'; \
-	b='elements/dash_demux'; \
+elements/dash_isoff.log: elements/dash_isoff$(EXEEXT)
+	@p='elements/dash_isoff$(EXEEXT)'; \
+	b='elements/dash_isoff'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
@@ -3994,6 +4220,27 @@
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/pnm.log: elements/pnm$(EXEEXT)
+	@p='elements/pnm$(EXEEXT)'; \
+	b='elements/pnm'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/rawaudioparse.log: elements/rawaudioparse$(EXEEXT)
+	@p='elements/rawaudioparse$(EXEEXT)'; \
+	b='elements/rawaudioparse'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/rawvideoparse.log: elements/rawvideoparse$(EXEEXT)
+	@p='elements/rawvideoparse$(EXEEXT)'; \
+	b='elements/rawvideoparse'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 elements/rtponvifparse.log: elements/rtponvifparse$(EXEEXT)
 	@p='elements/rtponvifparse$(EXEEXT)'; \
 	b='elements/rtponvifparse'; \
@@ -4183,6 +4430,13 @@
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+pipelines/simple-launch-lines.log: pipelines/simple-launch-lines$(EXEEXT)
+	@p='pipelines/simple-launch-lines$(EXEEXT)'; \
+	b='pipelines/simple-launch-lines'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 elements/hlsdemux_m3u8.log: elements/hlsdemux_m3u8$(EXEEXT)
 	@p='elements/hlsdemux_m3u8$(EXEEXT)'; \
 	b='elements/hlsdemux_m3u8'; \
@@ -4632,6 +4886,7 @@
 
 clean-local: clean-local-check
 distclean-local: distclean-local-orc
+	$(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
 
 @WITH_GST_PLAYER_TESTS_TRUE@$(PLAYER_MEDIA_FILES):
 @WITH_GST_PLAYER_TESTS_TRUE@	$(MKDIR_P) media
diff --git a/tests/check/elements/adaptive_demux_common.c b/tests/check/elements/adaptive_demux_common.c
index e310446..814b0ea 100644
--- a/tests/check/elements/adaptive_demux_common.c
+++ b/tests/check/elements/adaptive_demux_common.c
@@ -25,11 +25,6 @@
 
 #define GST_TEST_HTTP_SRC_NAME            "testhttpsrc"
 
-struct _GstAdaptiveDemuxTestCaseClass
-{
-  GObjectClass parent_class;
-};
-
 #define gst_adaptive_demux_test_case_parent_class parent_class
 
 static void gst_adaptive_demux_test_case_dispose (GObject * object);
@@ -202,11 +197,6 @@
 
   gst_buffer_map (buffer, &info, GST_MAP_READ);
 
-  GST_DEBUG
-      ("segment_start = %" G_GUINT64_FORMAT " segment_received_size = %"
-      G_GUINT64_FORMAT " bufferSize=%d",
-      stream->segment_start, stream->segment_received_size, (gint) info.size);
-
   pattern = streamOffset - streamOffset % sizeof (pattern);
   for (guint64 i = 0; i != info.size; ++i) {
     guint received = info.data[i];
@@ -242,8 +232,19 @@
   return TRUE;
 }
 
-/* function to check total size of data received by AppSink
- * will be called when AppSink receives eos.
+/* AppSink EOS callback.
+ * To be used by tests that don't expect AppSink to receive EOS.
+ */
+void
+gst_adaptive_demux_test_unexpected_eos (GstAdaptiveDemuxTestEngine *
+    engine, GstAdaptiveDemuxTestOutputStream * stream, gpointer user_data)
+{
+  fail_if (TRUE);
+}
+
+/* AppSink EOS callback.
+ * To be used by tests that expect AppSink to receive EOS.
+ * Will check total size of data received by AppSink.
  */
 void
 gst_adaptive_demux_test_check_size_of_received_data (GstAdaptiveDemuxTestEngine
@@ -430,6 +431,7 @@
         TEST_TASK_STATE_WAITING_FOR_TESTSRC_STATE_CHANGE) {
       GST_DEBUG ("changing test_task_state");
       testData->test_task_state = TEST_TASK_STATE_EXITING;
+      gst_bus_remove_signal_watch (bus);
       g_cond_signal (&testData->test_task_state_cond);
     }
     g_mutex_unlock (&testData->test_task_state_lock);
@@ -453,6 +455,7 @@
   gst_bus_add_signal_watch (bus);
   g_signal_connect (bus, "message::state-changed",
       G_CALLBACK (testSeekOnStateChanged), testData);
+  gst_object_unref (bus);
 }
 
 static void
diff --git a/tests/check/elements/adaptive_demux_common.h b/tests/check/elements/adaptive_demux_common.h
index f830387..448671b 100644
--- a/tests/check/elements/adaptive_demux_common.h
+++ b/tests/check/elements/adaptive_demux_common.h
@@ -77,7 +77,11 @@
   gboolean segment_verification_needed;
 } GstAdaptiveDemuxTestExpectedOutput;
 
-typedef struct _GstAdaptiveDemuxTestCaseClass GstAdaptiveDemuxTestCaseClass;
+typedef struct _GstAdaptiveDemuxTestCaseClass
+{
+  GObjectClass parent_class;
+} GstAdaptiveDemuxTestCaseClass;
+
 typedef struct _GstAdaptiveDemuxTestCase
 {
   GObject parent;
@@ -149,6 +153,19 @@
 /* Utility functions for use within a unit test */
 
 /**
+ * gst_adaptive_demux_test_unexpected_eos:
+ * @engine: The #GstAdaptiveDemuxTestEngine that caused this callback
+ * @stream: The #GstAdaptiveDemuxTestOutputStream that caused this callback
+ * @user_data: A pointer to a #GstAdaptiveDemuxTestCase object
+ *
+ * This function can be used as an EOS callback by tests that don't expect
+ * AppSink to receive EOS.
+ */
+void
+gst_adaptive_demux_test_unexpected_eos (GstAdaptiveDemuxTestEngine *
+    engine, GstAdaptiveDemuxTestOutputStream * stream, gpointer user_data);
+
+/**
  * gst_adaptive_demux_test_check_size_of_received_data:
  * @engine: The #GstAdaptiveDemuxTestEngine that caused this callback
  * @stream: The #GstAdaptiveDemuxTestOutputStream that caused this callback
diff --git a/tests/check/elements/adaptive_demux_engine.c b/tests/check/elements/adaptive_demux_engine.c
index b571fe3..b969831 100644
--- a/tests/check/elements/adaptive_demux_engine.c
+++ b/tests/check/elements/adaptive_demux_engine.c
@@ -19,6 +19,7 @@
  */
 
 #include <gst/check/gstcheck.h>
+#include <gst/check/gsttestclock.h>
 #include "adaptive_demux_engine.h"
 
 typedef struct _GstAdaptiveDemuxTestEnginePrivate
@@ -26,6 +27,7 @@
   GstAdaptiveDemuxTestEngine engine;
   const GstAdaptiveDemuxTestCallbacks *callbacks;
   gpointer user_data;
+  guint clock_update_id;
 } GstAdaptiveDemuxTestEnginePrivate;
 
 
@@ -193,6 +195,29 @@
   return GST_PAD_PROBE_OK;
 }
 
+/* callback called when dash sends event to AppSink */
+static GstPadProbeReturn
+on_demux_sent_event (GstPad * pad, GstPadProbeInfo * info, gpointer data)
+{
+  GstAdaptiveDemuxTestEnginePrivate *priv =
+      (GstAdaptiveDemuxTestEnginePrivate *) data;
+  GstAdaptiveDemuxTestOutputStream *stream = NULL;
+  GstEvent *event;
+
+  event = GST_PAD_PROBE_INFO_EVENT (info);
+
+  GST_TEST_LOCK (&priv->engine);
+
+  if (priv->callbacks->demux_sent_event) {
+    stream = getTestOutputDataByPad (priv, pad, TRUE);
+    (*priv->callbacks->demux_sent_event) (&priv->engine,
+        stream, event, priv->user_data);
+  }
+
+  GST_TEST_UNLOCK (&priv->engine);
+  return GST_PAD_PROBE_OK;
+}
+
 /* callback called when demux receives events from GstFakeSoupHTTPSrc */
 static GstPadProbeReturn
 on_demuxReceivesEvent (GstPad * pad, GstPadProbeInfo * info, gpointer data)
@@ -308,6 +333,9 @@
 
   gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BUFFER,
       (GstPadProbeCallback) on_demux_sent_data, priv, NULL);
+  gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM |
+      GST_PAD_PROBE_TYPE_EVENT_FLUSH,
+      (GstPadProbeCallback) on_demux_sent_event, priv, NULL);
   gobject_class = G_OBJECT_GET_CLASS (sink);
   if (g_object_class_find_property (gobject_class, "sync")) {
     GST_DEBUG ("Setting sync=FALSE on AppSink");
@@ -399,6 +427,38 @@
 }
 
 static gboolean
+gst_adaptive_demux_update_test_clock (gpointer user_data)
+{
+  GstAdaptiveDemuxTestEnginePrivate *priv =
+      (GstAdaptiveDemuxTestEnginePrivate *) user_data;
+  GstClockID id;
+  GstClockTime next_entry;
+  GstTestClock *clock = GST_TEST_CLOCK (priv->engine.clock);
+
+  fail_unless (clock != NULL);
+  next_entry = gst_test_clock_get_next_entry_time (clock);
+  if (next_entry != GST_CLOCK_TIME_NONE) {
+    /* tests that do not want the manifest to update will set the update period
+     * to a big value, eg 500s. The manifest update task will register an alarm
+     * for that value.
+     * We do not want the clock to jump to that. If it does, the manifest update
+     * task will keep scheduling and use all the cpu power, starving the other
+     * threads.
+     * Usually the test require the clock to update with approx 3s, so we will
+     * allow only updates smaller than 100s
+     */
+    GstClockTime curr_time = gst_clock_get_time (GST_CLOCK (clock));
+    if (next_entry - curr_time < 100 * GST_SECOND) {
+      gst_test_clock_set_time (clock, next_entry);
+      id = gst_test_clock_process_next_clock_id (clock);
+      fail_unless (id != NULL);
+      gst_clock_id_unref (id);
+    }
+  }
+  return TRUE;
+}
+
+static gboolean
 start_pipeline_playing (gpointer user_data)
 {
   GstAdaptiveDemuxTestEnginePrivate *priv =
@@ -473,6 +533,20 @@
   ret = gst_element_link (manifest_source, demux);
   fail_unless_equals_int (ret, TRUE);
 
+  priv->engine.clock = gst_system_clock_obtain ();
+  if (GST_IS_TEST_CLOCK (priv->engine.clock)) {
+    /*
+     * live tests will want to manipulate the clock, so they will register a
+     * gst_test_clock as the system clock.
+     * The on demand tests do not care about the clock, so they will let the
+     * system clock to the default one.
+     * If a gst_test_clock was installed as system clock, we register a
+     * periodic callback to update its value.
+     */
+    priv->clock_update_id =
+        g_timeout_add (100, gst_adaptive_demux_update_test_clock, priv);
+  }
+
   /* call a test callback before we start the pipeline */
   if (callbacks->pre_test)
     (*callbacks->pre_test) (&priv->engine, priv->user_data);
@@ -514,10 +588,14 @@
       priv);
 
   GST_DEBUG ("main thread pipeline stopped");
+  if (priv->clock_update_id != 0)
+    g_source_remove (priv->clock_update_id);
+  gst_object_unref (priv->engine.clock);
   gst_object_unref (priv->engine.pipeline);
   priv->engine.pipeline = NULL;
   g_main_loop_unref (priv->engine.loop);
   g_ptr_array_unref (priv->engine.output_streams);
+  gst_object_unref (bus);
 
   GST_TEST_UNLOCK (priv);
   g_mutex_clear (&priv->engine.lock);
diff --git a/tests/check/elements/adaptive_demux_engine.h b/tests/check/elements/adaptive_demux_engine.h
index f715ecb..372431e 100644
--- a/tests/check/elements/adaptive_demux_engine.h
+++ b/tests/check/elements/adaptive_demux_engine.h
@@ -136,6 +136,17 @@
       GstBuffer * buffer, gpointer user_data);
 
   /**
+   * demux_sent_event: called each time the demux sends event to AppSink
+   * @engine: #GstAdaptiveDemuxTestEngine
+   * @stream: #GstAdaptiveDemuxTestOutputStream
+   * @event: the #GstEvent that was sent by demux
+   * @user_data: the user_data passed to gst_adaptive_demux_test_run()
+   */
+  gboolean (*demux_sent_event) (GstAdaptiveDemuxTestEngine *engine,
+      GstAdaptiveDemuxTestOutputStream * stream,
+      GstEvent * event, gpointer user_data);
+
+  /**
    * bus_error_message: called if an error is posted to the bus
    * @engine: #GstAdaptiveDemuxTestEngine
    * @msg: the #GstMessage that contains the error
@@ -154,6 +165,7 @@
 struct _GstAdaptiveDemuxTestEngine
 {
   GstElement *pipeline;
+  GstClock *clock;
   GstElement *demux;
   GstElement *manifest_source;
   GMainLoop *loop;
diff --git a/tests/check/elements/aiffparse.c b/tests/check/elements/aiffparse.c
index ebf2028..5828ce1 100644
--- a/tests/check/elements/aiffparse.c
+++ b/tests/check/elements/aiffparse.c
@@ -112,15 +112,21 @@
       gst_event_parse_tag (event, &aiff_tags);
       fail_unless (aiff_tags != NULL);
 
+      have_tags = TRUE;
       for (i = 0; i < sizeof (tags) / sizeof (*tags); i++) {
         buf = NULL;
-        fail_unless (gst_tag_list_get_string (aiff_tags, tags[i][0], &buf));
+        if (!gst_tag_list_get_string (aiff_tags, tags[i][0], &buf)) {
+          have_tags = FALSE;
+          continue;
+        }
         ret = g_strcmp0 (buf, tags[i][1]);
         g_free (buf);
-        fail_unless (ret == 0);
+        if (ret != 0) {
+          have_tags = FALSE;
+          continue;
+        }
       }
 
-      have_tags = TRUE;
       break;
     }
     default:
diff --git a/tests/check/elements/audiointerleave.c b/tests/check/elements/audiointerleave.c
index 222cd4d..cb992f3 100644
--- a/tests/check/elements/audiointerleave.c
+++ b/tests/check/elements/audiointerleave.c
@@ -269,6 +269,7 @@
     g_cond_wait (&data_cond, &data_mutex);
   g_mutex_unlock (&data_mutex);
 
+  gst_bus_set_flushing (bus, TRUE);
   gst_element_set_state (interleave, GST_STATE_NULL);
   gst_element_set_state (queue, GST_STATE_NULL);
 
@@ -410,6 +411,7 @@
     g_cond_wait (&data_cond, &data_mutex);
   g_mutex_unlock (&data_mutex);
 
+  gst_bus_set_flushing (bus, TRUE);
   gst_element_set_state (interleave, GST_STATE_NULL);
   gst_element_set_state (queue, GST_STATE_NULL);
 
diff --git a/tests/check/elements/audiomixer.c b/tests/check/elements/audiomixer.c
index 55ea92e..9ef5c3c 100644
--- a/tests/check/elements/audiomixer.c
+++ b/tests/check/elements/audiomixer.c
@@ -431,7 +431,7 @@
   /* cleanup */
   g_main_loop_unref (main_loop);
   gst_consistency_checker_free (consist);
-  gst_event_ref (play_seek_event);
+  gst_event_unref (play_seek_event);
   gst_bus_remove_signal_watch (bus);
   gst_object_unref (bus);
   gst_object_unref (bin);
@@ -536,7 +536,7 @@
 
   /* cleanup */
   g_main_loop_unref (main_loop);
-  gst_event_ref (play_seek_event);
+  gst_event_unref (play_seek_event);
   gst_consistency_checker_free (consist);
   gst_bus_remove_signal_watch (bus);
   gst_object_unref (bus);
@@ -723,6 +723,7 @@
     g_main_loop_unref (main_loop);
   if (play_seek_event)
     gst_event_unref (play_seek_event);
+  gst_bus_remove_signal_watch (bus);
   gst_object_unref (bus);
   gst_object_unref (bin);
 }
diff --git a/tests/check/elements/autoconvert.c b/tests/check/elements/autoconvert.c
index 532f6b8..c1c040f 100644
--- a/tests/check/elements/autoconvert.c
+++ b/tests/check/elements/autoconvert.c
@@ -78,7 +78,7 @@
 
   g_object_set (G_OBJECT (autoconvert), "factories", factories, NULL);
 
-  g_list_free (factories);
+  g_list_free_full (factories, gst_object_unref);
 }
 
 GST_START_TEST (test_autoconvert_simple)
@@ -140,6 +140,7 @@
   gst_bus_set_flushing (bus, TRUE);
   gst_object_unref (bus);
 
+  gst_check_drop_buffers ();
   gst_pad_set_active (test_src_pad, FALSE);
   gst_pad_set_active (test_sink_pad, FALSE);
   gst_check_teardown_src_pad (autoconvert);
@@ -202,13 +203,9 @@
 test_element1_class_init (TestElement1Class * klass)
 {
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-  GstPadTemplate *src_template, *sink_template;
 
-  src_template = gst_static_pad_template_get (&src_factory);
-  gst_element_class_add_pad_template (element_class, src_template);
-
-  sink_template = gst_static_pad_template_get (&sink_factory);
-  gst_element_class_add_pad_template (element_class, sink_template);
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
 }
 
 static void
@@ -221,13 +218,10 @@
 test_element2_class_init (TestElement2Class * klass)
 {
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-  GstPadTemplate *src_template, *sink_template;
 
-  src_template = gst_static_pad_template_get (&src_factory);
-  gst_element_class_add_pad_template (element_class, src_template);
+  gst_element_class_add_static_pad_template (element_class, &src_factory);
 
-  sink_template = gst_static_pad_template_get (&sink_factory);
-  gst_element_class_add_pad_template (element_class, sink_template);
+  gst_element_class_add_static_pad_template (element_class, &sink_factory);
 }
 
 static void
diff --git a/tests/check/elements/autovideoconvert.c b/tests/check/elements/autovideoconvert.c
index 268f094..56757ab 100644
--- a/tests/check/elements/autovideoconvert.c
+++ b/tests/check/elements/autovideoconvert.c
@@ -77,8 +77,6 @@
 
   g_signal_connect (bus, "message", (GCallback) on_message_cb, &omud);
 
-  gst_object_unref (bus);
-
   ret = gst_element_set_state (pipeline, GST_STATE_PLAYING);
   fail_unless (ret == GST_STATE_CHANGE_SUCCESS
       || ret == GST_STATE_CHANGE_ASYNC);
@@ -90,6 +88,8 @@
 
   fail_unless (omud.eos == TRUE);
 
+  gst_bus_remove_signal_watch (bus);
+  gst_object_unref (bus);
   gst_object_unref (pipeline);
   g_main_loop_unref (loop);
 
diff --git a/tests/check/elements/camerabin.c b/tests/check/elements/camerabin.c
index 3458cac..e554b0b 100644
--- a/tests/check/elements/camerabin.c
+++ b/tests/check/elements/camerabin.c
@@ -162,12 +162,11 @@
       "Some test camera src",
       "Thiago Santos <thiago.sousa.santos@collabora.com>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&vidsrc_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&imgsrc_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&vfsrc_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &vidsrc_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &imgsrc_template);
+  gst_element_class_add_static_pad_template (gstelement_class, &vfsrc_template);
 }
 
 static void
@@ -372,8 +371,7 @@
       "Video/Src",
       "Test camera video src", "Thiago Santos <thiagoss@osg.samsung.com>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&src_template));
+  gst_element_class_add_static_pad_template (gstelement_class, &src_template);
 
   gobject_class->get_property = gst_test_video_src_get_property;
   gobject_class->set_property = gst_test_video_src_set_property;
@@ -441,7 +439,7 @@
 
 static GstElement *camera;
 static GstElement *testsrc;
-static guint bus_source;
+static GstBus *bus = NULL;
 static GMainLoop *main_loop;
 static gint capture_count = 0;
 guint32 test_id = 0;
@@ -617,21 +615,20 @@
   gchar *pipeline_str = g_strdup_printf ("filesrc location=%s ! "
       "jpegparse ! fakesink", filepath);
   GstElement *pipeline;
-  guint source;
 
   pipeline = gst_parse_launch (pipeline_str, NULL);
   fail_unless (pipeline != NULL);
   g_free (pipeline_str);
 
   bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
-  source = gst_bus_add_watch (bus, (GstBusFunc) validity_bus_cb, loop);
+  gst_bus_add_watch (bus, (GstBusFunc) validity_bus_cb, loop);
 
   gst_element_set_state (pipeline, GST_STATE_PLAYING);
   g_main_loop_run (loop);
   gst_element_set_state (pipeline, GST_STATE_NULL);
 
+  gst_bus_remove_watch (bus);
   gst_object_unref (bus);
-  g_source_remove (source);
   gst_object_unref (pipeline);
   g_main_loop_unref (loop);
 }
@@ -639,9 +636,7 @@
 static void
 setup_camerabin_common (void)
 {
-  GstBus *bus;
   test_id = g_random_int ();
-  bus_source = 0;
 
   main_loop = g_main_loop_new (NULL, TRUE);
 
@@ -649,8 +644,7 @@
   fail_unless (camera != NULL, "failed to create camerabin element");
 
   bus = gst_pipeline_get_bus (GST_PIPELINE (camera));
-  bus_source = gst_bus_add_watch (bus, (GstBusFunc) capture_bus_cb, main_loop);
-  gst_object_unref (bus);
+  gst_bus_add_watch (bus, (GstBusFunc) capture_bus_cb, main_loop);
 
   tags_found = NULL;
   capture_count = 0;
@@ -750,8 +744,10 @@
     gst_check_teardown_element (camera);
   camera = NULL;
 
-  if (bus_source)
-    g_source_remove (bus_source);
+  if (bus) {
+    gst_bus_remove_watch (bus);
+    gst_object_unref (bus);
+  }
 
   if (main_loop)
     g_main_loop_unref (main_loop);
@@ -844,7 +840,6 @@
   GstCaps *caps;
   gint caps_width, caps_height;
   GstState state;
-  guint source;
 
   GMainLoop *loop = g_main_loop_new (NULL, FALSE);
   GstElement *playbin = gst_element_factory_make ("playbin", NULL);
@@ -858,7 +853,7 @@
       "audio-sink", fakeaudio, NULL);
 
   bus = gst_pipeline_get_bus (GST_PIPELINE (playbin));
-  source = gst_bus_add_watch (bus, (GstBusFunc) validity_bus_cb, loop);
+  gst_bus_add_watch (bus, (GstBusFunc) validity_bus_cb, loop);
 
   gst_element_set_state (playbin, GST_STATE_PAUSED);
   gst_element_get_state (playbin, &state, NULL, GST_SECOND * 3);
@@ -901,7 +896,7 @@
   }
 
   g_free (uri);
-  g_source_remove (source);
+  gst_bus_remove_watch (bus);
   gst_object_unref (bus);
   gst_object_unref (playbin);
   g_main_loop_unref (loop);
@@ -1874,6 +1869,7 @@
     g_free (filenames[i]);
   }
   g_signal_handler_disconnect (src, notify_id);
+  gst_object_unref (src);
 }
 
 GST_END_TEST;
diff --git a/tests/check/elements/compositor.c b/tests/check/elements/compositor.c
index 8b5fd5b..e9f0165 100644
--- a/tests/check/elements/compositor.c
+++ b/tests/check/elements/compositor.c
@@ -355,6 +355,15 @@
   gst_caps_unref (caps);
   gst_caps_unref (restriction_caps);
 
+  /* check that compositor proxies downstream interlaced-mode */
+  restriction_caps =
+      gst_caps_from_string ("video/x-raw, interlace-mode=(string)interleaved");
+  g_object_set (capsfilter, "caps", restriction_caps, NULL);
+  caps = gst_pad_query_caps (sinkpad, NULL);
+  fail_unless (gst_caps_is_subset (caps, restriction_caps));
+  gst_caps_unref (caps);
+  gst_caps_unref (restriction_caps);
+
   gst_element_set_state (pipeline, GST_STATE_NULL);
   gst_element_release_request_pad (compositor, sinkpad);
   gst_object_unref (sinkpad);
@@ -365,6 +374,82 @@
 
 GST_END_TEST;
 
+
+GST_START_TEST (test_caps_query_interlaced)
+{
+  GstElement *compositor, *sink;
+  GstElement *pipeline;
+  gboolean res;
+  GstStateChangeReturn state_res;
+  GstPad *sinkpad;
+  GstCaps *caps;
+  GstCaps *caps_mixed, *caps_progressive, *caps_interleaved;
+  GstEvent *caps_event;
+
+  caps_interleaved =
+      gst_caps_from_string ("video/x-raw, interlace-mode=interleaved");
+  caps_mixed = gst_caps_from_string ("video/x-raw, interlace-mode=mixed");
+  caps_progressive =
+      gst_caps_from_string ("video/x-raw, interlace-mode=progressive");
+
+  /* initial setup */
+  compositor = gst_element_factory_make ("compositor", "compositor");
+  sink = gst_element_factory_make ("fakesink", "sink");
+  pipeline = gst_pipeline_new ("test-pipeline");
+
+  gst_bin_add_many (GST_BIN (pipeline), compositor, sink, NULL);
+  res = gst_element_link (compositor, sink);
+  fail_unless (res == TRUE, NULL);
+  sinkpad = gst_element_get_request_pad (compositor, "sink_%u");
+
+  state_res = gst_element_set_state (pipeline, GST_STATE_PLAYING);
+  fail_if (state_res == GST_STATE_CHANGE_FAILURE);
+
+  /* try an unrestricted caps query, should be compatible with all formats */
+  caps = gst_pad_query_caps (sinkpad, NULL);
+  fail_unless (gst_caps_can_intersect (caps, caps_interleaved));
+  fail_unless (gst_caps_can_intersect (caps, caps_progressive));
+  fail_unless (gst_caps_can_intersect (caps, caps_mixed));
+  gst_caps_unref (caps);
+
+  /* now set caps on the pad, it should restrict the interlaced-mode for
+   * future caps */
+  caps = gst_caps_from_string ("video/x-raw, width=100, height=100, "
+      "format=RGB, framerate=1/1, interlace-mode=progressive");
+  caps_event = gst_event_new_caps (caps);
+  gst_caps_unref (caps);
+  fail_unless (gst_pad_send_event (sinkpad, caps_event));
+
+  /* now recheck the interlace-mode */
+  gst_object_unref (sinkpad);
+  sinkpad = gst_element_get_request_pad (compositor, "sink_%u");
+  caps = gst_pad_query_caps (sinkpad, NULL);
+  fail_if (gst_caps_can_intersect (caps, caps_interleaved));
+  fail_unless (gst_caps_can_intersect (caps, caps_progressive));
+  fail_if (gst_caps_can_intersect (caps, caps_mixed));
+  gst_object_unref (sinkpad);
+  gst_caps_unref (caps);
+
+  gst_element_set_state (pipeline, GST_STATE_NULL);
+  gst_object_unref (pipeline);
+  gst_caps_unref (caps_interleaved);
+  gst_caps_unref (caps_mixed);
+  gst_caps_unref (caps_progressive);
+}
+
+GST_END_TEST;
+
+static void
+add_interlaced_mode_to_caps (GstCaps * caps, const gchar * mode)
+{
+  GstStructure *s;
+
+  for (gint i = 0; i < gst_caps_get_size (caps); i++) {
+    s = gst_caps_get_structure (caps, i);
+    gst_structure_set (s, "interlace-mode", G_TYPE_STRING, mode, NULL);
+  }
+}
+
 #define MODE_ALL 1
 #define MODE_NON_ALPHA 2
 
@@ -384,6 +469,11 @@
   all_caps = _compositor_get_all_supported_caps ();
   non_alpha_caps = _compositor_get_non_alpha_supported_caps ();
 
+  /* add progressive mode as it is what is used in the test, otherwise
+   * is_equal checks would fail */
+  add_interlaced_mode_to_caps (all_caps, "progressive");
+  add_interlaced_mode_to_caps (non_alpha_caps, "progressive");
+
   compositor = gst_element_factory_make ("compositor", "compositor");
   capsfilter = gst_element_factory_make ("capsfilter", "out-cf");
   sink = gst_element_factory_make ("fakesink", "sink");
@@ -450,7 +540,6 @@
 
   rgb_caps = gst_caps_from_string ("video/x-raw, format=(string)RGB, "
       "width=(int)100, height=(int)100, framerate=(fraction)1/1");
-
   non_alpha_caps = gst_caps_from_string ("video/x-raw, format=(string)RGB");
 
   /* check that a 2nd pad that is added late to compositor will be able to
@@ -465,6 +554,80 @@
 
 GST_END_TEST;
 
+static void
+run_late_caps_set_test (GstCaps * first_caps, GstCaps * expected_query_caps,
+    GstCaps * second_caps, gboolean accept_caps)
+{
+  GstElement *capsfilter_1;
+  GstElement *compositor;
+  GstElement *pipeline;
+  GstStateChangeReturn state_res;
+  GstPad *sinkpad_2;
+  GstCaps *caps;
+  GstEvent *caps_event;
+  GstBus *bus;
+  GstMessage *msg;
+
+  pipeline =
+      gst_parse_launch ("videotestsrc num-buffers=10 ! capsfilter name=cf1 !"
+      " compositor name=c ! fakesink sync=true", NULL);
+  fail_unless (pipeline != NULL);
+
+  bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
+
+  compositor = gst_bin_get_by_name (GST_BIN (pipeline), "c");
+  capsfilter_1 = gst_bin_get_by_name (GST_BIN (pipeline), "cf1");
+
+  g_object_set (capsfilter_1, "caps", first_caps, NULL);
+
+  state_res = gst_element_set_state (pipeline, GST_STATE_PAUSED);
+  fail_if (state_res == GST_STATE_CHANGE_FAILURE);
+
+  /* wait for pipeline to get to paused */
+  msg =
+      gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE,
+      GST_MESSAGE_ASYNC_DONE);
+  fail_unless (msg != NULL);
+  fail_unless (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_ASYNC_DONE);
+  gst_message_unref (msg);
+
+  /* try to set the second caps */
+  sinkpad_2 = gst_element_get_request_pad (compositor, "sink_%u");
+  caps = gst_pad_query_caps (sinkpad_2, NULL);
+  fail_unless (gst_caps_is_subset (expected_query_caps, caps));
+  caps_event = gst_event_new_caps (second_caps);
+  fail_unless (gst_pad_send_event (sinkpad_2, caps_event) == accept_caps);
+  gst_caps_unref (caps);
+  gst_object_unref (sinkpad_2);
+
+  gst_object_unref (bus);
+  gst_object_unref (compositor);
+  gst_object_unref (capsfilter_1);
+  gst_element_set_state (pipeline, GST_STATE_NULL);
+  gst_object_unref (pipeline);
+}
+
+GST_START_TEST (test_late_caps_different_interlaced)
+{
+  GstCaps *non_interlaced_caps;
+  GstCaps *interlaced_caps;
+
+  non_interlaced_caps =
+      gst_caps_from_string ("video/x-raw, interlace-mode=progressive, "
+      "format=RGB, width=100, height=100, framerate=1/1");
+  interlaced_caps =
+      gst_caps_from_string ("video/x-raw, interlace-mode=interleaved, "
+      "format=RGB, width=100, height=100, framerate=1/1");
+
+  run_late_caps_set_test (non_interlaced_caps, non_interlaced_caps,
+      interlaced_caps, FALSE);
+
+  gst_caps_unref (non_interlaced_caps);
+  gst_caps_unref (interlaced_caps);
+}
+
+GST_END_TEST;
+
 static guint play_count = 0;
 static GstEvent *play_seek_event = NULL;
 
@@ -591,7 +754,7 @@
   /* cleanup */
   g_main_loop_unref (main_loop);
   gst_consistency_checker_free (consist);
-  gst_event_ref (play_seek_event);
+  gst_event_unref (play_seek_event);
   gst_bus_remove_signal_watch (bus);
   gst_object_unref (bus);
   gst_object_unref (bin);
@@ -694,7 +857,7 @@
 
   /* cleanup */
   g_main_loop_unref (main_loop);
-  gst_event_ref (play_seek_event);
+  gst_event_unref (play_seek_event);
   gst_consistency_checker_free (consist);
   gst_bus_remove_signal_watch (bus);
   gst_object_unref (bus);
@@ -1708,6 +1871,40 @@
 
 GST_END_TEST;
 
+/* 
+ * Test that the pad numbering assigned by aggregator behaves as follows:
+ * 1. If a pad number is requested, it must be assigned if it is available
+ * 2. When numbering automatically, the largest available pad number is used
+ * 3. Pad names must be unique
+ */
+GST_START_TEST (test_pad_numbering)
+{
+  GstElement *mixer;
+  GstPad *sinkpad1, *sinkpad2, *sinkpad3, *sinkpad4;
+
+  GST_INFO ("preparing test");
+
+  mixer = gst_element_factory_make ("compositor", NULL);
+  sinkpad1 = gst_element_get_request_pad (mixer, "sink_%u");
+  sinkpad2 = gst_element_get_request_pad (mixer, "sink_7");
+  sinkpad3 = gst_element_get_request_pad (mixer, "sink_1");
+  sinkpad4 = gst_element_get_request_pad (mixer, "sink_%u");
+
+  ck_assert_str_eq (GST_PAD_NAME (sinkpad1), "sink_0");
+  ck_assert_str_eq (GST_PAD_NAME (sinkpad2), "sink_7");
+  ck_assert_str_eq (GST_PAD_NAME (sinkpad3), "sink_1");
+  ck_assert_str_eq (GST_PAD_NAME (sinkpad4), "sink_8");
+
+  /* cleanup */
+  gst_object_unref (mixer);
+  gst_object_unref (sinkpad1);
+  gst_object_unref (sinkpad2);
+  gst_object_unref (sinkpad3);
+  gst_object_unref (sinkpad4);
+}
+
+GST_END_TEST;
+
 typedef struct
 {
   gint buffers_sent;
@@ -1881,7 +2078,9 @@
   tcase_add_test (tc_chain, test_caps);
   tcase_add_test (tc_chain, test_event);
   tcase_add_test (tc_chain, test_caps_query);
+  tcase_add_test (tc_chain, test_caps_query_interlaced);
   tcase_add_test (tc_chain, test_late_caps_query);
+  tcase_add_test (tc_chain, test_late_caps_different_interlaced);
   tcase_add_test (tc_chain, test_play_twice);
   tcase_add_test (tc_chain, test_play_twice_then_add_and_play_again);
   tcase_add_test (tc_chain, test_add_pad);
@@ -1895,6 +2094,7 @@
   tcase_add_test (tc_chain, test_obscured_skipped);
   tcase_add_test (tc_chain, test_ignore_eos);
   tcase_add_test (tc_chain, test_pad_z_order);
+  tcase_add_test (tc_chain, test_pad_numbering);
   tcase_add_test (tc_chain, test_start_time_zero_live_drop_0);
   tcase_add_test (tc_chain, test_start_time_zero_live_drop_3);
   tcase_add_test (tc_chain, test_start_time_zero_live_drop_3_unlinked_1);
diff --git a/tests/check/elements/dash_demux.c b/tests/check/elements/dash_demux.c
index 961e12e..7733044 100644
--- a/tests/check/elements/dash_demux.c
+++ b/tests/check/elements/dash_demux.c
@@ -26,7 +26,7 @@
 #define COPY_OUTPUT_TEST_DATA(outputTestData,testData) do { \
     guint otdPos, otdLen = sizeof((outputTestData)) / sizeof((outputTestData)[0]); \
     for(otdPos=0; otdPos<otdLen; ++otdPos){ \
-  (testData)->output_streams = g_list_append ((testData)->output_streams, &(outputTestData)[otdPos]); \
+  GST_ADAPTIVE_DEMUX_TEST_CASE (testData)->output_streams = g_list_append (GST_ADAPTIVE_DEMUX_TEST_CASE (testData)->output_streams, &(outputTestData)[otdPos]); \
     } \
   } while(0)
 
@@ -37,18 +37,112 @@
   guint64 size;
 } GstDashDemuxTestInputData;
 
+typedef struct _GstTestHTTPSrcTestData
+{
+  const GstDashDemuxTestInputData *input;
+  GstStructure *data;
+} GstTestHTTPSrcTestData;
+
+typedef struct _GstDashDemuxTestCase
+{
+  GstAdaptiveDemuxTestCase parent;
+
+  /* the number of Protection Events sent to each pad */
+  GstStructure *countContentProtectionEvents;
+} GstDashDemuxTestCase;
+
+GType gst_dash_demux_test_case_get_type (void);
+static void gst_dash_demux_test_case_dispose (GObject * object);
+static void gst_dash_demux_test_case_finalize (GObject * object);
+static void gst_dash_demux_test_case_clear (GstDashDemuxTestCase * test_case);
+
+static GstDashDemuxTestCase *
+gst_dash_demux_test_case_new (void)
+    G_GNUC_MALLOC;
+
+#define GST_TYPE_DASH_DEMUX_TEST_CASE \
+  (gst_dash_demux_test_case_get_type())
+#define GST_DASH_DEMUX_TEST_CASE(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_DASH_DEMUX_TEST_CASE, GstDashDemuxTestCase))
+#define GST_DASH_DEMUX_TEST_CASE_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_DASH_DEMUX_TEST_CASE, GstDashDemuxTestCaseClass))
+#define GST_DASH_DEMUX_TEST_CASE_GET_CLASS(obj) \
+  (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_DASH_DEMUX_TEST_CASE, GstDashDemuxTestCaseClass))
+#define GST_IS_DASH_DEMUX_TEST_CASE(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_DASH_DEMUX_TEST_CASE))
+#define GST_IS_DASH_DEMUX_TEST_CASE_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_DASH_DEMUX_TEST_CASE))
+
+     static GstDashDemuxTestCase *gst_dash_demux_test_case_new (void)
+{
+  return g_object_newv (GST_TYPE_DASH_DEMUX_TEST_CASE, 0, NULL);
+}
+
+typedef struct _GstDashDemuxTestCaseClass
+{
+  GstAdaptiveDemuxTestCaseClass parent_class;
+} GstDashDemuxTestCaseClass;
+
+#define gst_dash_demux_test_case_parent_class parent_class
+
+G_DEFINE_TYPE (GstDashDemuxTestCase, gst_dash_demux_test_case,
+    GST_TYPE_ADAPTIVE_DEMUX_TEST_CASE);
+
+static void
+gst_dash_demux_test_case_class_init (GstDashDemuxTestCaseClass * klass)
+{
+  GObjectClass *object = G_OBJECT_CLASS (klass);
+
+  object->dispose = gst_dash_demux_test_case_dispose;
+  object->finalize = gst_dash_demux_test_case_finalize;
+}
+
+static void
+gst_dash_demux_test_case_init (GstDashDemuxTestCase * test_case)
+{
+  test_case->countContentProtectionEvents = NULL;
+  gst_dash_demux_test_case_clear (test_case);
+}
+
+static void
+gst_dash_demux_test_case_clear (GstDashDemuxTestCase * test_case)
+{
+  if (test_case->countContentProtectionEvents) {
+    gst_structure_free (test_case->countContentProtectionEvents);
+    test_case->countContentProtectionEvents = NULL;
+  }
+}
+
+static void
+gst_dash_demux_test_case_dispose (GObject * object)
+{
+  GstDashDemuxTestCase *testData = GST_DASH_DEMUX_TEST_CASE (object);
+
+  gst_dash_demux_test_case_clear (testData);
+
+  G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+static void
+gst_dash_demux_test_case_finalize (GObject * object)
+{
+  /*GstDashDemuxTestCase *testData = GST_DASH_DEMUX_TEST_CASE (object); */
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
 static gboolean
 gst_dashdemux_http_src_start (GstTestHTTPSrc * src,
     const gchar * uri, GstTestHTTPSrcInput * input_data, gpointer user_data)
 {
-  const GstDashDemuxTestInputData *input =
-      (const GstDashDemuxTestInputData *) user_data;
-  for (guint i = 0; input[i].uri; ++i) {
-    if (strcmp (input[i].uri, uri) == 0) {
-      input_data->context = (gpointer) & input[i];
-      input_data->size = input[i].size;
-      if (input[i].size == 0)
-        input_data->size = strlen ((gchar *) input[i].payload);
+  const GstTestHTTPSrcTestData *test_case =
+      (const GstTestHTTPSrcTestData *) user_data;
+  for (guint i = 0; test_case->input[i].uri; ++i) {
+    if (g_strcmp0 (test_case->input[i].uri, uri) == 0) {
+      input_data->context = (gpointer) & test_case->input[i];
+      input_data->size = test_case->input[i].size;
+      if (test_case->input[i].size == 0)
+        input_data->size = strlen ((gchar *) test_case->input[i].payload);
       return TRUE;
     }
   }
@@ -60,8 +154,6 @@
     guint64 offset,
     guint length, GstBuffer ** retbuf, gpointer context, gpointer user_data)
 {
-  /*  const GstDashDemuxTestInputData *input =
-     (const GstDashDemuxTestInputData *) user_data; */
   const GstDashDemuxTestInputData *input =
       (const GstDashDemuxTestInputData *) context;
   GstBuffer *buf;
@@ -140,34 +232,42 @@
       "          <Initialization range=\"0-233\" />"
       "        </SegmentBase>"
       "      </Representation></AdaptationSet></Period></MPD>";
+
   GstDashDemuxTestInputData inputTestData[] = {
     {"http://unit.test/test.mpd", (guint8 *) mpd, 0},
     {"http://unit.test/audio.webm", NULL, 5000},
     {"http://unit.test/video.webm", NULL, 9000},
     {NULL, NULL, 0},
   };
-  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
   GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
     {"audio_00", 5000, NULL},
     {"video_00", 9000, NULL}
   };
+  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+  GstTestHTTPSrcTestData http_src_test_data = { 0 };
   GstAdaptiveDemuxTestCallbacks test_callbacks = { 0 };
-  GstAdaptiveDemuxTestCase *testData;
+  GstDashDemuxTestCase *testData;
 
-  testData = gst_adaptive_demux_test_case_new ();
   http_src_callbacks.src_start = gst_dashdemux_http_src_start;
   http_src_callbacks.src_create = gst_dashdemux_http_src_create;
-  gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
+  http_src_test_data.input = inputTestData;
+  gst_test_http_src_install_callbacks (&http_src_callbacks,
+      &http_src_test_data);
 
-  COPY_OUTPUT_TEST_DATA (outputTestData, testData);
   test_callbacks.appsink_received_data =
       gst_adaptive_demux_test_check_received_data;
   test_callbacks.appsink_eos =
       gst_adaptive_demux_test_check_size_of_received_data;
 
+  testData = gst_dash_demux_test_case_new ();
+  COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+
   gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME, "http://unit.test/test.mpd",
       &test_callbacks, testData);
+
   g_object_unref (testData);
+  if (http_src_test_data.data)
+    gst_structure_free (http_src_test_data.data);
 }
 
 GST_END_TEST;
@@ -262,29 +362,37 @@
     {"http://unit.test/video2.webm", NULL, 9002},
     {NULL, NULL, 0},
   };
-  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
   GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
     {"audio_00", 5001, NULL},
     {"video_00", 9001, NULL},
     {"audio_01", 5002, NULL},
     {"video_01", 9002, NULL},
   };
+  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+  GstTestHTTPSrcTestData http_src_test_data = { 0 };
   GstAdaptiveDemuxTestCallbacks test_callbacks = { 0 };
-  GstAdaptiveDemuxTestCase *testData;
+  GstDashDemuxTestCase *testData;
 
-  testData = gst_adaptive_demux_test_case_new ();
   http_src_callbacks.src_start = gst_dashdemux_http_src_start;
   http_src_callbacks.src_create = gst_dashdemux_http_src_create;
-  COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+  http_src_test_data.input = inputTestData;
+  gst_test_http_src_install_callbacks (&http_src_callbacks,
+      &http_src_test_data);
+
   test_callbacks.appsink_received_data =
       gst_adaptive_demux_test_check_received_data;
   test_callbacks.appsink_eos =
       gst_adaptive_demux_test_check_size_of_received_data;
 
-  gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
+  testData = gst_dash_demux_test_case_new ();
+  COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+
   gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME,
       "http://unit.test/test.mpd", &test_callbacks, testData);
-  gst_object_unref (testData);
+
+  g_object_unref (testData);
+  if (http_src_test_data.data)
+    gst_structure_free (http_src_test_data.data);
 }
 
 GST_END_TEST;
@@ -344,7 +452,7 @@
 static void
 setAndTestDashParams (GstAdaptiveDemuxTestEngine * engine, gpointer user_data)
 {
-  /*  GstAdaptiveDemuxTestCase * testData = (GstAdaptiveDemuxTestCase*)user_data; */
+  /*  GstDashDemuxTestCase * testData = (GstDashDemuxTestCase*)user_data; */
   GObject *dashdemux = G_OBJECT (engine->demux);
 
   test_int_prop (dashdemux, "connection-speed", 1000);
@@ -401,27 +509,35 @@
     {"http://unit.test/audio.webm", NULL, 5000},
     {NULL, NULL, 0},
   };
-  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
   GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
     {"audio_00", 5000, NULL},
   };
+  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+  GstTestHTTPSrcTestData http_src_test_data = { 0 };
   GstAdaptiveDemuxTestCallbacks test_callbacks = { 0 };
-  GstAdaptiveDemuxTestCase *testData;
+  GstDashDemuxTestCase *testData;
 
-  testData = gst_adaptive_demux_test_case_new ();
   http_src_callbacks.src_start = gst_dashdemux_http_src_start;
   http_src_callbacks.src_create = gst_dashdemux_http_src_create;
-  COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+  http_src_test_data.input = inputTestData;
+  gst_test_http_src_install_callbacks (&http_src_callbacks,
+      &http_src_test_data);
+
   test_callbacks.pre_test = setAndTestDashParams;
   test_callbacks.appsink_received_data =
       gst_adaptive_demux_test_check_received_data;
   test_callbacks.appsink_eos =
       gst_adaptive_demux_test_check_size_of_received_data;
 
-  gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
+  testData = gst_dash_demux_test_case_new ();
+  COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+
   gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME, "http://unit.test/test.mpd",
       &test_callbacks, testData);
-  gst_object_unref (testData);
+
+  g_object_unref (testData);
+  if (http_src_test_data.data)
+    gst_structure_free (http_src_test_data.data);
 }
 
 GST_END_TEST;
@@ -458,21 +574,26 @@
       "          <Initialization range=\"0-4451\" />"
       "        </SegmentBase>"
       "      </Representation></AdaptationSet></Period></MPD>";
+
   GstDashDemuxTestInputData inputTestData[] = {
     {"http://unit.test/test.mpd", (guint8 *) mpd, 0},
     {"http://unit.test/audio.webm", NULL, 10000},
     {NULL, NULL, 0},
   };
-  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
   GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
     {"audio_00", 10000, NULL},
   };
-  GstAdaptiveDemuxTestCase *testData;
-
-  testData = gst_adaptive_demux_test_case_new ();
+  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+  GstTestHTTPSrcTestData http_src_test_data = { 0 };
+  GstDashDemuxTestCase *testData;
 
   http_src_callbacks.src_start = gst_dashdemux_http_src_start;
   http_src_callbacks.src_create = gst_dashdemux_http_src_create;
+  http_src_test_data.input = inputTestData;
+  gst_test_http_src_install_callbacks (&http_src_callbacks,
+      &http_src_test_data);
+
+  testData = gst_dash_demux_test_case_new ();
   COPY_OUTPUT_TEST_DATA (outputTestData, testData);
 
   /* media segment starts at 4687
@@ -480,21 +601,23 @@
    * on the first pad listed in GstAdaptiveDemuxTestOutputStreamData and the
    * first chunk of at least one byte has already arrived in AppSink
    */
-  testData->threshold_for_seek = 4687 + 1;
+  GST_ADAPTIVE_DEMUX_TEST_CASE (testData)->threshold_for_seek = 4687 + 1;
 
   /* seek to 5ms.
    * Because there is only one fragment, we expect the whole file to be
    * downloaded again
    */
-  testData->seek_event =
+  GST_ADAPTIVE_DEMUX_TEST_CASE (testData)->seek_event =
       gst_event_new_seek (1.0, GST_FORMAT_TIME,
       GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT, GST_SEEK_TYPE_SET,
       5 * GST_MSECOND, GST_SEEK_TYPE_NONE, 0);
 
-  gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
   gst_adaptive_demux_test_seek (DEMUX_ELEMENT_NAME,
-      "http://unit.test/test.mpd", testData);
-  gst_object_unref (testData);
+      "http://unit.test/test.mpd", GST_ADAPTIVE_DEMUX_TEST_CASE (testData));
+
+  g_object_unref (testData);
+  if (http_src_test_data.data)
+    gst_structure_free (http_src_test_data.data);
 }
 
 GST_END_TEST;
@@ -538,6 +661,7 @@
       "            value=\"2\"> "
       "        </AudioChannelConfiguration> "
       "    </Representation></AdaptationSet></Period></MPD>";
+
   GstDashDemuxTestInputData inputTestData[] = {
     {"http://unit.test/test.mpd", (guint8 *) mpd, 0},
     {"http://unit.test/init-audio.mp4", NULL, 10000},
@@ -548,16 +672,20 @@
     {NULL, NULL, 0},
   };
   GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+  GstTestHTTPSrcTestData http_src_test_data = { 0 };
   GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
     /* 1 from the init segment */
     {"audio_00", (segments ? 1 + segments : 0) * 10000, NULL},
   };
-  GstAdaptiveDemuxTestCase *testData;
-
-  testData = gst_adaptive_demux_test_case_new ();
+  GstDashDemuxTestCase *testData;
 
   http_src_callbacks.src_start = gst_dashdemux_http_src_start;
   http_src_callbacks.src_create = gst_dashdemux_http_src_create;
+  http_src_test_data.input = inputTestData;
+  gst_test_http_src_install_callbacks (&http_src_callbacks,
+      &http_src_test_data);
+
+  testData = gst_dash_demux_test_case_new ();
   COPY_OUTPUT_TEST_DATA (outputTestData, testData);
 
   /* media segment starts at 4687
@@ -566,9 +694,10 @@
    * first chunk of at least one byte has already arrived in AppSink
    */
   if (seek_threshold_bytes)
-    testData->threshold_for_seek = seek_threshold_bytes;
+    GST_ADAPTIVE_DEMUX_TEST_CASE (testData)->threshold_for_seek =
+        seek_threshold_bytes;
   else
-    testData->threshold_for_seek = 4687 + 1;
+    GST_ADAPTIVE_DEMUX_TEST_CASE (testData)->threshold_for_seek = 4687 + 1;
 
   /* FIXME hack to avoid having a 0 seqnum */
   gst_util_seqnum_next ();
@@ -577,14 +706,16 @@
    * Because there is only one fragment, we expect the whole file to be
    * downloaded again
    */
-  testData->seek_event =
+  GST_ADAPTIVE_DEMUX_TEST_CASE (testData)->seek_event =
       gst_event_new_seek (rate, GST_FORMAT_TIME, flags, start_type,
       seek_start, stop_type, seek_stop);
 
-  gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
   gst_adaptive_demux_test_seek (DEMUX_ELEMENT_NAME,
-      "http://unit.test/test.mpd", testData);
-  gst_object_unref (testData);
+      "http://unit.test/test.mpd", GST_ADAPTIVE_DEMUX_TEST_CASE (testData));
+
+  g_object_unref (testData);
+  if (http_src_test_data.data)
+    gst_structure_free (http_src_test_data.data);
 }
 
 GST_START_TEST (testSeekKeyUnitPosition)
@@ -696,7 +827,6 @@
   GST_DEBUG ("Error from element %s : %s\n",
       GST_OBJECT_NAME (msg->src), err->message);
   fail_unless_equals_string (GST_OBJECT_NAME (msg->src), DEMUX_ELEMENT_NAME);
-  /*GST_DEBUG ("dbg_info=%s\n", dbg_info); */
   g_error_free (err);
   g_free (dbg_info);
   g_main_loop_quit (engine->loop);
@@ -738,27 +868,315 @@
     {"http://unit.test/test.mpd", (guint8 *) mpd, 0},
     {NULL, NULL, 0},
   };
-  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
   GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
     {"audio_00", 0, NULL},
   };
+  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+  GstTestHTTPSrcTestData http_src_test_data = { 0 };
   GstAdaptiveDemuxTestCallbacks test_callbacks = { 0 };
-  GstAdaptiveDemuxTestCase *testData;
+  GstDashDemuxTestCase *testData;
 
-  testData = gst_adaptive_demux_test_case_new ();
   http_src_callbacks.src_start = gst_dashdemux_http_src_start;
   http_src_callbacks.src_create = gst_dashdemux_http_src_create;
-  COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+  http_src_test_data.input = inputTestData;
+  gst_test_http_src_install_callbacks (&http_src_callbacks,
+      &http_src_test_data);
+
   test_callbacks.appsink_received_data =
       gst_adaptive_demux_test_check_received_data;
   test_callbacks.bus_error_message = testDownloadErrorMessageCallback;
+  test_callbacks.appsink_eos = gst_adaptive_demux_test_unexpected_eos;
+
+  testData = gst_dash_demux_test_case_new ();
+  COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+
+  gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME, "http://unit.test/test.mpd",
+      &test_callbacks, testData);
+
+  g_object_unref (testData);
+  if (http_src_test_data.data)
+    gst_structure_free (http_src_test_data.data);
+}
+
+GST_END_TEST;
+
+static GstFlowReturn
+test_fragment_download_error_src_create (GstTestHTTPSrc * src,
+    guint64 offset,
+    guint length, GstBuffer ** retbuf, gpointer context, gpointer user_data)
+{
+  const GstDashDemuxTestInputData *input =
+      (const GstDashDemuxTestInputData *) context;
+  const GstTestHTTPSrcTestData *http_src_test_data =
+      (const GstTestHTTPSrcTestData *) user_data;
+  guint64 threshold_for_trigger;
+
+  fail_unless (input != NULL);
+  gst_structure_get_uint64 (http_src_test_data->data, "threshold_for_trigger",
+      &threshold_for_trigger);
+
+  if (!g_str_has_suffix (input->uri, ".mpd") && offset >= threshold_for_trigger) {
+    GST_DEBUG ("network_error %s %" G_GUINT64_FORMAT " @ %" G_GUINT64_FORMAT,
+        input->uri, offset, threshold_for_trigger);
+    GST_ELEMENT_ERROR (src, RESOURCE, READ,
+        (("A network error occurred, or the server closed the connection unexpectedly.")), ("A network error occurred, or the server closed the connection unexpectedly."));
+    return GST_FLOW_ERROR;
+  }
+  return gst_dashdemux_http_src_create (src, offset, length, retbuf, context,
+      user_data);
+}
+
+/*
+ * Test header download error
+ * Let the adaptive demux download a few bytes, then instruct the
+ * GstTestHTTPSrc element to generate an error while the fragment header
+ * is still being downloaded.
+ */
+GST_START_TEST (testHeaderDownloadError)
+{
+  const gchar *mpd =
+      "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+      "<MPD xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
+      "     xmlns=\"urn:mpeg:DASH:schema:MPD:2011\""
+      "     xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\""
+      "     profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\""
+      "     type=\"static\""
+      "     minBufferTime=\"PT1.500S\""
+      "     mediaPresentationDuration=\"PT0.5S\">"
+      "  <Period>"
+      "    <AdaptationSet mimeType=\"audio/webm\""
+      "                   subsegmentAlignment=\"true\">"
+      "      <Representation id=\"171\""
+      "                      codecs=\"vorbis\""
+      "                      audioSamplingRate=\"44100\""
+      "                      startWithSAP=\"1\""
+      "                      bandwidth=\"129553\">"
+      "        <AudioChannelConfiguration"
+      "           schemeIdUri=\"urn:mpeg:dash:23003:3:audio_channel_configuration:2011\""
+      "           value=\"2\" />"
+      "        <BaseURL>audio.webm</BaseURL>"
+      "        <SegmentBase indexRange=\"4452-4686\""
+      "                     indexRangeExact=\"true\">"
+      "          <Initialization range=\"0-4451\" />"
+      "        </SegmentBase>"
+      "      </Representation></AdaptationSet></Period></MPD>";
+
+  /* generate error while the headers are still being downloaded
+   * threshold_for_trigger must be less than the size of headers
+   * (initialization + index) which is 4687.
+   */
+  guint64 threshold_for_trigger = 2000;
+
+  GstDashDemuxTestInputData inputTestData[] = {
+    {"http://unit.test/test.mpd", (guint8 *) mpd, 0},
+    {"http://unit.test/audio.webm", NULL, 5000},
+    {NULL, NULL, 0},
+  };
+  GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
+    /* adaptive demux tries for 4 times (MAX_DOWNLOAD_ERROR_COUNT + 1) before giving up */
+    {"audio_00", threshold_for_trigger * 4, NULL},
+  };
+  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+  GstTestHTTPSrcTestData http_src_test_data = { 0 };
+  GstAdaptiveDemuxTestCallbacks test_callbacks = { 0 };
+  GstDashDemuxTestCase *testData;
+
+  http_src_callbacks.src_start = gst_dashdemux_http_src_start;
+  http_src_callbacks.src_create = test_fragment_download_error_src_create;
+  http_src_test_data.data = gst_structure_new_empty (__FUNCTION__);
+  gst_structure_set (http_src_test_data.data, "threshold_for_trigger",
+      G_TYPE_UINT64, threshold_for_trigger, NULL);
+  http_src_test_data.input = inputTestData;
+  gst_test_http_src_install_callbacks (&http_src_callbacks,
+      &http_src_test_data);
+
+  test_callbacks.appsink_received_data =
+      gst_adaptive_demux_test_check_received_data;
+  test_callbacks.appsink_eos = gst_adaptive_demux_test_unexpected_eos;
+  test_callbacks.bus_error_message = testDownloadErrorMessageCallback;
+
+  testData = gst_dash_demux_test_case_new ();
+  COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+
+  /* download in chunks of threshold_for_trigger size.
+   * This means the first chunk will succeed, the second will generate
+   * error because we already exceeded threshold_for_trigger bytes.
+   */
+  gst_test_http_src_set_default_blocksize (threshold_for_trigger);
+
+  gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME,
+      "http://unit.test/test.mpd", &test_callbacks, testData);
+
+  g_object_unref (testData);
+  if (http_src_test_data.data)
+    gst_structure_free (http_src_test_data.data);
+}
+
+GST_END_TEST;
+
+/*
+ * Test media download error on the last media fragment.
+ * Let the adaptive demux download a few bytes, then instruct the
+ * GstTestHTTPSrc element to generate an error while the last media fragment
+ * is being downloaded.
+ * Adaptive demux will not retry downloading the last media fragment. It will
+ * be considered eos.
+ */
+GST_START_TEST (testMediaDownloadErrorLastFragment)
+{
+  const gchar *mpd =
+      "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+      "<MPD xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
+      "     xmlns=\"urn:mpeg:DASH:schema:MPD:2011\""
+      "     xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\""
+      "     profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\""
+      "     type=\"static\""
+      "     minBufferTime=\"PT1.500S\""
+      "     mediaPresentationDuration=\"PT0.5S\">"
+      "  <Period>"
+      "    <AdaptationSet mimeType=\"audio/webm\""
+      "                   subsegmentAlignment=\"true\">"
+      "      <Representation id=\"171\""
+      "                      codecs=\"vorbis\""
+      "                      audioSamplingRate=\"44100\""
+      "                      startWithSAP=\"1\""
+      "                      bandwidth=\"129553\">"
+      "        <AudioChannelConfiguration"
+      "           schemeIdUri=\"urn:mpeg:dash:23003:3:audio_channel_configuration:2011\""
+      "           value=\"2\" />"
+      "        <BaseURL>audio.webm</BaseURL>"
+      "        <SegmentBase indexRange=\"4452-4686\""
+      "                     indexRangeExact=\"true\">"
+      "          <Initialization range=\"0-4451\" />"
+      "        </SegmentBase>"
+      "      </Representation></AdaptationSet></Period></MPD>";
+
+  /* generate error on the first media fragment */
+  guint64 threshold_for_trigger = 4687;
+
+  GstDashDemuxTestInputData inputTestData[] = {
+    {"http://unit.test/test.mpd", (guint8 *) mpd, 0},
+    {"http://unit.test/audio.webm", NULL, 5000},
+    {NULL, NULL, 0},
+  };
+  GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
+    /* adaptive demux will not retry because this is the last fragment */
+    {"audio_00", threshold_for_trigger, NULL},
+  };
+  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+  GstTestHTTPSrcTestData http_src_test_data = { 0 };
+  GstAdaptiveDemuxTestCallbacks test_callbacks = { 0 };
+  GstDashDemuxTestCase *testData;
+
+  http_src_callbacks.src_start = gst_dashdemux_http_src_start;
+  http_src_callbacks.src_create = test_fragment_download_error_src_create;
+  http_src_test_data.data = gst_structure_new_empty (__FUNCTION__);
+  gst_structure_set (http_src_test_data.data, "threshold_for_trigger",
+      G_TYPE_UINT64, threshold_for_trigger, NULL);
+  http_src_test_data.input = inputTestData;
+  gst_test_http_src_install_callbacks (&http_src_callbacks,
+      &http_src_test_data);
+
+  test_callbacks.appsink_received_data =
+      gst_adaptive_demux_test_check_received_data;
   test_callbacks.appsink_eos =
       gst_adaptive_demux_test_check_size_of_received_data;
 
-  gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
-  gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME, "http://unit.test/test.mpd",
-      &test_callbacks, testData);
-  gst_object_unref (testData);
+  testData = gst_dash_demux_test_case_new ();
+  COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+
+  gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME,
+      "http://unit.test/test.mpd", &test_callbacks, testData);
+
+  g_object_unref (testData);
+  if (http_src_test_data.data)
+    gst_structure_free (http_src_test_data.data);
+}
+
+GST_END_TEST;
+
+/*
+ * Test media download error on a media fragment which is not the last one.
+ * Let the adaptive demux download a few bytes, then instruct the
+ * GstTestHTTPSrc element to generate an error while a media fragment
+ * is being downloaded.
+ */
+GST_START_TEST (testMediaDownloadErrorMiddleFragment)
+{
+  const gchar *mpd =
+      "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+      "<MPD xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
+      "     xmlns=\"urn:mpeg:DASH:schema:MPD:2011\""
+      "     xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\""
+      "     profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\""
+      "     type=\"static\""
+      "     minBufferTime=\"PT1.500S\""
+      "     mediaPresentationDuration=\"PT10S\">"
+      "  <Period>"
+      "    <AdaptationSet mimeType=\"audio/webm\""
+      "                   subsegmentAlignment=\"true\">"
+      "      <Representation id=\"171\""
+      "                      codecs=\"vorbis\""
+      "                      audioSamplingRate=\"44100\""
+      "                      startWithSAP=\"1\""
+      "                      bandwidth=\"129553\">"
+      "        <AudioChannelConfiguration"
+      "           schemeIdUri=\"urn:mpeg:dash:23003:3:audio_channel_configuration:2011\""
+      "           value=\"2\" />"
+      "        <BaseURL>audio.webm</BaseURL>"
+      "        <SegmentList duration=\"1\">"
+      "          <SegmentURL indexRange=\"1-10\""
+      "                      mediaRange=\"11-30\">"
+      "          </SegmentURL>"
+      "          <SegmentURL indexRange=\"31-60\""
+      "                      mediaRange=\"61-100\">"
+      "          </SegmentURL>"
+      "          <SegmentURL indexRange=\"101-150\""
+      "                      mediaRange=\"151-210\">"
+      "          </SegmentURL>"
+      "        </SegmentList>"
+      "      </Representation></AdaptationSet></Period></MPD>";
+
+  /* generate error on the second media fragment */
+  guint64 threshold_for_trigger = 31;
+
+  GstDashDemuxTestInputData inputTestData[] = {
+    {"http://unit.test/test.mpd", (guint8 *) mpd, 0},
+    {"http://unit.test/audio.webm", NULL, 5000},
+    {NULL, NULL, 0},
+  };
+  GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
+    /* adaptive demux will download only the first media fragment */
+    {"audio_00", 20, NULL},
+  };
+  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+  GstTestHTTPSrcTestData http_src_test_data = { 0 };
+  GstAdaptiveDemuxTestCallbacks test_callbacks = { 0 };
+  GstDashDemuxTestCase *testData;
+
+  http_src_callbacks.src_start = gst_dashdemux_http_src_start;
+  http_src_callbacks.src_create = test_fragment_download_error_src_create;
+  http_src_test_data.data = gst_structure_new_empty (__FUNCTION__);
+  gst_structure_set (http_src_test_data.data, "threshold_for_trigger",
+      G_TYPE_UINT64, threshold_for_trigger, NULL);
+  http_src_test_data.input = inputTestData;
+  gst_test_http_src_install_callbacks (&http_src_callbacks,
+      &http_src_test_data);
+
+  test_callbacks.appsink_received_data =
+      gst_adaptive_demux_test_check_received_data;
+  test_callbacks.appsink_eos = gst_adaptive_demux_test_unexpected_eos;
+  test_callbacks.bus_error_message = testDownloadErrorMessageCallback;
+
+  testData = gst_dash_demux_test_case_new ();
+  COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+
+  gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME,
+      "http://unit.test/test.mpd", &test_callbacks, testData);
+
+  g_object_unref (testData);
+  if (http_src_test_data.data)
+    gst_structure_free (http_src_test_data.data);
 }
 
 GST_END_TEST;
@@ -777,6 +1195,9 @@
   gboolean seekable;
   gint64 segment_start;
   gint64 segment_end;
+  gboolean live;
+  GstClockTime min_latency;
+  GstClockTime max_latency;
   gchar *uri;
   gchar *redirect_uri;
   gboolean redirect_permanent;
@@ -788,13 +1209,16 @@
   fail_unless (g_list_length (pads) == 1);
   pad = GST_PAD (pads->data);
 
+  /* duration query */
   query = gst_query_new_duration (GST_FORMAT_TIME);
   ret = gst_pad_peer_query (pad, query);
   fail_unless (ret == TRUE);
   gst_query_parse_duration (query, NULL, &duration);
+  /* mediaPresentationDuration=\"PT135.743S\" */
   fail_unless (duration == 135743 * GST_MSECOND);
   gst_query_unref (query);
 
+  /* seek query */
   query = gst_query_new_seeking (GST_FORMAT_TIME);
   ret = gst_pad_peer_query (pad, query);
   fail_unless (ret == TRUE);
@@ -805,13 +1229,24 @@
   fail_unless (segment_end == duration);
   gst_query_unref (query);
 
+  /* latency query */
+  query = gst_query_new_latency ();
+  ret = gst_pad_peer_query (pad, query);
+  fail_unless (ret == TRUE);
+  gst_query_parse_latency (query, &live, &min_latency, &max_latency);
+  fail_unless (live == FALSE);
+  fail_unless (min_latency == 0);
+  fail_unless (max_latency == -1);
+  gst_query_unref (query);
+
+  /* uri query */
   query = gst_query_new_uri ();
   ret = gst_pad_peer_query (pad, query);
   fail_unless (ret == TRUE);
   gst_query_parse_uri (query, &uri);
   gst_query_parse_uri_redirection (query, &redirect_uri);
   gst_query_parse_uri_redirection_permanent (query, &redirect_permanent);
-  fail_unless (strcmp (uri, "http://unit.test/test.mpd") == 0);
+  fail_unless (g_strcmp0 (uri, "http://unit.test/test.mpd") == 0);
   /* adaptive demux does not reply with redirect information */
   fail_unless (redirect_uri == NULL);
   fail_unless (redirect_permanent == FALSE);
@@ -855,86 +1290,123 @@
       "          <Initialization range=\"0-4451\" />"
       "        </SegmentBase>"
       "      </Representation></AdaptationSet></Period></MPD>";
+
   GstDashDemuxTestInputData inputTestData[] = {
     {"http://unit.test/test.mpd", (guint8 *) mpd, 0},
     {"http://unit.test/audio.webm", NULL, 5000},
     {NULL, NULL, 0},
   };
-  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
   GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
     {"audio_00", 5000, NULL},
   };
+  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+  GstTestHTTPSrcTestData http_src_test_data = { 0 };
   GstAdaptiveDemuxTestCallbacks test_callbacks = { 0 };
-  GstAdaptiveDemuxTestCase *testData;
+  GstDashDemuxTestCase *testData;
 
-  testData = gst_adaptive_demux_test_case_new ();
   http_src_callbacks.src_start = gst_dashdemux_http_src_start;
   http_src_callbacks.src_create = gst_dashdemux_http_src_create;
-  COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+  http_src_test_data.input = inputTestData;
+  gst_test_http_src_install_callbacks (&http_src_callbacks,
+      &http_src_test_data);
+
   test_callbacks.appsink_received_data = testQueryCheckDataReceived;
   test_callbacks.appsink_eos =
       gst_adaptive_demux_test_check_size_of_received_data;
 
-  gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
+  testData = gst_dash_demux_test_case_new ();
+  COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+
   gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME,
       "http://unit.test/test.mpd", &test_callbacks, testData);
-  gst_object_unref (testData);
+
+  g_object_unref (testData);
+  if (http_src_test_data.data)
+    gst_structure_free (http_src_test_data.data);
 }
 
 GST_END_TEST;
 
-static GstFlowReturn
-test_fragment_download_error_src_create (GstTestHTTPSrc * src,
-    guint64 offset,
-    guint length, GstBuffer ** retbuf, gpointer context, gpointer user_data)
+static gboolean
+testContentProtectionDashdemuxSendsEvent (GstAdaptiveDemuxTestEngine * engine,
+    GstAdaptiveDemuxTestOutputStream * stream,
+    GstEvent * event, gpointer user_data)
 {
-  const GstDashDemuxTestInputData *input =
-      (const GstDashDemuxTestInputData *) context;
-  fail_unless (input != NULL);
-  if (!g_str_has_suffix (input->uri, ".mpd") && offset > 2000) {
-    GST_DEBUG ("network_error %s %" G_GUINT64_FORMAT " @ %d",
-        input->uri, offset, 2000);
-    GST_ELEMENT_ERROR (src, RESOURCE, READ,
-        (("A network error occurred, or the server closed the connection unexpectedly.")), ("A network error occurred, or the server closed the connection unexpectedly."));
-    return GST_FLOW_ERROR;
+  GstDashDemuxTestCase *test_case = GST_DASH_DEMUX_TEST_CASE (user_data);
+  const gchar *system_id;
+  GstBuffer *data;
+  const gchar *origin;
+  GstMapInfo info;
+  gchar *value;
+  gchar *name;
+  guint event_count = 0;
+
+  GST_DEBUG ("received event %s", GST_EVENT_TYPE_NAME (event));
+
+  if (GST_EVENT_TYPE (event) != GST_EVENT_PROTECTION) {
+    return TRUE;
   }
-  return gst_dashdemux_http_src_create (src, offset, length, retbuf, context,
-      user_data);
-}
 
-/* function to check total size of data received by AppSink
- * will be called when AppSink receives eos.
- */
-static void
-testFragmentDownloadErrorCheckSizeOfDataReceived (GstAdaptiveDemuxTestEngine *
-    engine, GstAdaptiveDemuxTestOutputStream * stream, gpointer user_data)
-{
-  GstAdaptiveDemuxTestCase *testData = GST_ADAPTIVE_DEMUX_TEST_CASE (user_data);
-  GstAdaptiveDemuxTestExpectedOutput *testOutputStreamData;
+  /* we expect content protection events only on video pad */
+  name = gst_pad_get_name (stream->pad);
+  fail_unless (g_strcmp0 (name, "video_00") == 0);
+  gst_event_parse_protection (event, &system_id, &data, &origin);
 
-  testOutputStreamData =
-      gst_adaptive_demux_test_find_test_data_by_stream (testData, stream, NULL);
-  fail_unless (testOutputStreamData != NULL);
+  gst_buffer_map (data, &info, GST_MAP_READ);
 
-  /* expect to receive more than 0 */
-  fail_unless (stream->total_received_size > 0,
-      "size validation failed for %s, expected > 0, received %d",
-      testOutputStreamData->name, stream->total_received_size);
+  value = g_malloc (info.size + 1);
+  strncpy (value, (gchar *) info.data, info.size);
+  value[info.size] = 0;
+  gst_buffer_unmap (data, &info);
 
-  /* expect to receive less than file size */
-  fail_unless (stream->total_received_size <
-      testOutputStreamData->expected_size,
-      "size validation failed for %s, expected < %d received %d",
-      testOutputStreamData->name, testOutputStreamData->expected_size,
-      stream->total_received_size);
+  if (g_strcmp0 (system_id, "11111111-AAAA-BBBB-CCCC-123456789ABC") == 0) {
+    fail_unless (g_strcmp0 (origin, "dash/mpd") == 0);
+    fail_unless (g_strcmp0 (value, "test value") == 0);
+  } else if (g_strcmp0 (system_id, "5e629af5-38da-4063-8977-97ffbd9902d4") == 0) {
+    const gchar *str;
+
+    fail_unless (g_strcmp0 (origin, "dash/mpd") == 0);
+
+    /* We can't do a simple compare of value (which should be an XML dump
+       of the ContentProtection element), because the whitespace
+       formatting from xmlDump might differ between versions of libxml */
+    str = strstr (value, "<ContentProtection");
+    fail_if (str == NULL);
+    str = strstr (value, "<mas:MarlinContentIds>");
+    fail_if (str == NULL);
+    str = strstr (value, "<mas:MarlinContentId>");
+    fail_if (str == NULL);
+    str = strstr (value, "urn:marlin:kid:02020202020202020202020202020202");
+    fail_if (str == NULL);
+    str = strstr (value, "</ContentProtection>");
+    fail_if (str == NULL);
+  } else {
+    fail ("unexpected content protection event '%s'", system_id);
+  }
+
+  g_free (value);
+
+  fail_if (test_case->countContentProtectionEvents == NULL);
+  gst_structure_get_uint (test_case->countContentProtectionEvents, name,
+      &event_count);
+  event_count++;
+  gst_structure_set (test_case->countContentProtectionEvents, name, G_TYPE_UINT,
+      event_count, NULL);
+
+  g_free (name);
+  return TRUE;
 }
 
 /*
- * Test fragment download error
- * Let the adaptive demux download a few bytes, then instruct the
- * GstTestHTTPSrc element to generate an error.
+ * Test content protection
+ * Configure 3 content protection sources:
+ * - a uuid scheme/value pair
+ * - a non uuid scheme/value pair (dash recognises only uuid schemes)
+ * - a complex uuid scheme, with trailing spaces and capital letters in scheme uri
+ * Only the uuid scheme will be recognised. We expect to receive 2 content
+ * protection events
  */
-GST_START_TEST (testFragmentDownloadError)
+GST_START_TEST (testContentProtection)
 {
   const gchar *mpd =
       "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
@@ -944,7 +1416,7 @@
       "     profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\""
       "     type=\"static\""
       "     minBufferTime=\"PT1.500S\""
-      "     mediaPresentationDuration=\"PT0.5S\">"
+      "     mediaPresentationDuration=\"PT135.743S\">"
       "  <Period>"
       "    <AdaptationSet mimeType=\"audio/webm\""
       "                   subsegmentAlignment=\"true\">"
@@ -961,35 +1433,75 @@
       "                     indexRangeExact=\"true\">"
       "          <Initialization range=\"0-4451\" />"
       "        </SegmentBase>"
+      "      </Representation>"
+      "    </AdaptationSet>"
+      "    <AdaptationSet mimeType=\"video/webm\""
+      "                   subsegmentAlignment=\"true\">"
+      "      <ContentProtection schemeIdUri=\"urn:uuid:11111111-AAAA-BBBB-CCCC-123456789ABC\" value=\"test value\"/>"
+      "      <ContentProtection schemeIdUri=\"urn:mpeg:dash:mp4protection:2011\" value=\"cenc\"/>"
+      "      <ContentProtection schemeIdUri=\" URN:UUID:5e629af5-38da-4063-8977-97ffbd9902d4\" xmlns:mas=\"urn:marlin:mas:1-0:services:schemas:mpd\">"
+      "        <mas:MarlinContentIds>"
+      "          <mas:MarlinContentId>urn:marlin:kid:02020202020202020202020202020202</mas:MarlinContentId>"
+      "        </mas:MarlinContentIds>"
+      "      </ContentProtection>"
+      "      <Representation id=\"242\""
+      "                      codecs=\"vp9\""
+      "                      width=\"426\""
+      "                      height=\"240\""
+      "                      startWithSAP=\"1\""
+      "                      bandwidth=\"490208\">"
+      "        <BaseURL>video.webm</BaseURL>"
+      "        <SegmentBase indexRange=\"234-682\""
+      "                     indexRangeExact=\"true\">"
+      "          <Initialization range=\"0-233\" />"
+      "        </SegmentBase>"
       "      </Representation></AdaptationSet></Period></MPD>";
 
   GstDashDemuxTestInputData inputTestData[] = {
     {"http://unit.test/test.mpd", (guint8 *) mpd, 0},
     {"http://unit.test/audio.webm", NULL, 5000},
+    {"http://unit.test/video.webm", NULL, 9000},
     {NULL, NULL, 0},
   };
-  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
   GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
     {"audio_00", 5000, NULL},
+    {"video_00", 9000, NULL},
   };
+  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+  GstTestHTTPSrcTestData http_src_test_data = { 0 };
   GstAdaptiveDemuxTestCallbacks test_callbacks = { 0 };
-  GstAdaptiveDemuxTestCase *testData;
+  GstDashDemuxTestCase *testData;
+  guint event_count = 0;
 
-  testData = gst_adaptive_demux_test_case_new ();
   http_src_callbacks.src_start = gst_dashdemux_http_src_start;
-  http_src_callbacks.src_create = test_fragment_download_error_src_create;
-  COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+  http_src_callbacks.src_create = gst_dashdemux_http_src_create;
+  http_src_test_data.input = inputTestData;
+  gst_test_http_src_install_callbacks (&http_src_callbacks,
+      &http_src_test_data);
+
   test_callbacks.appsink_received_data =
       gst_adaptive_demux_test_check_received_data;
-  test_callbacks.appsink_eos = testFragmentDownloadErrorCheckSizeOfDataReceived;
-  /*  test_callbacks.demux_sent_eos = gst_adaptive_demux_test_check_size_of_received_data; */
+  test_callbacks.appsink_eos =
+      gst_adaptive_demux_test_check_size_of_received_data;
+  test_callbacks.demux_sent_event = testContentProtectionDashdemuxSendsEvent;
 
-  test_callbacks.bus_error_message = testDownloadErrorMessageCallback;
+  testData = gst_dash_demux_test_case_new ();
+  COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+  testData->countContentProtectionEvents =
+      gst_structure_new_empty ("countContentProtectionEvents");
+  gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME, "http://unit.test/test.mpd",
+      &test_callbacks, testData);
 
-  gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
-  gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME,
-      "http://unit.test/test.mpd", &test_callbacks, testData);
-  gst_object_unref (testData);
+  fail_unless (gst_structure_has_field_typed
+      (testData->countContentProtectionEvents, "video_00", G_TYPE_UINT));
+
+  gst_structure_get_uint (testData->countContentProtectionEvents, "video_00",
+      &event_count);
+  fail_unless (event_count == 2);
+
+  g_object_unref (testData);
+  if (http_src_test_data.data)
+    gst_structure_free (http_src_test_data.data);
 }
 
 GST_END_TEST;
@@ -1014,8 +1526,11 @@
   tcase_add_test (tc_basicTest, testReverseSeekSnapBeforePosition);
   tcase_add_test (tc_basicTest, testReverseSeekSnapAfterPosition);
   tcase_add_test (tc_basicTest, testDownloadError);
-  tcase_add_test (tc_basicTest, testFragmentDownloadError);
+  tcase_add_test (tc_basicTest, testHeaderDownloadError);
+  tcase_add_test (tc_basicTest, testMediaDownloadErrorLastFragment);
+  tcase_add_test (tc_basicTest, testMediaDownloadErrorMiddleFragment);
   tcase_add_test (tc_basicTest, testQuery);
+  tcase_add_test (tc_basicTest, testContentProtection);
 
   tcase_add_unchecked_fixture (tc_basicTest, gst_adaptive_demux_test_setup,
       gst_adaptive_demux_test_teardown);
diff --git a/tests/check/elements/dash_isoff.c b/tests/check/elements/dash_isoff.c
new file mode 100644
index 0000000..500747b
--- /dev/null
+++ b/tests/check/elements/dash_isoff.c
@@ -0,0 +1,206 @@
+#include "../../ext/dash/gstisoff.c"
+#undef GST_CAT_DEFAULT
+
+#include <gst/check/gstcheck.h>
+#include <gst/base/base.h>
+
+#include "dash_isoff.h"
+
+GST_START_TEST (dash_isoff_box_header_minimal)
+{
+  /* INDENT-OFF */
+  static const guint8 data[] = {
+    16, 32, 64, 128,
+    't', 'e', 's', 't'
+  };
+  /* INDENT-ON */
+  GstByteReader reader = GST_BYTE_READER_INIT (data, sizeof (data));
+  guint32 type;
+  guint8 extended_type[16];
+  guint header_size;
+  guint64 size;
+
+  fail_unless (gst_isoff_parse_box_header (&reader, &type, extended_type,
+          &header_size, &size));
+  fail_unless (type == GST_MAKE_FOURCC ('t', 'e', 's', 't'));
+  fail_unless_equals_int (header_size, 8);
+  fail_unless_equals_uint64 (size, 0x10204080);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (dash_isoff_box_header_long_size)
+{
+  /* INDENT-OFF */
+  static const guint8 data[] = {
+    0, 0, 0, 1,
+    't', 'e', 's', 't',
+    1, 2, 4, 8, 16, 32, 64, 128
+  };
+  /* INDENT-ON */
+  GstByteReader reader = GST_BYTE_READER_INIT (data, sizeof (data));
+  guint32 type;
+  guint8 extended_type[16];
+  guint header_size;
+  guint64 size;
+
+  fail_unless (gst_isoff_parse_box_header (&reader, &type, extended_type,
+          &header_size, &size));
+  fail_unless (type == GST_MAKE_FOURCC ('t', 'e', 's', 't'));
+  fail_unless_equals_int (header_size, 16);
+  fail_unless_equals_uint64 (size, G_GUINT64_CONSTANT (0x0102040810204080));
+}
+
+GST_END_TEST;
+
+GST_START_TEST (dash_isoff_box_header_uuid_type)
+{
+  /* INDENT-OFF */
+  static const guint8 data[] = {
+    16, 32, 64, 128,
+    'u', 'u', 'i', 'd',
+    'a', 'b', 'c', 'd',
+    'e', 'f', 'g', 'h',
+    'i', 'j', 'k', 'l',
+    'm', 'n', 'o', 'p'
+  };
+  /* INDENT-ON */
+  GstByteReader reader = GST_BYTE_READER_INIT (data, sizeof (data));
+  guint32 type;
+  guint8 extended_type[16];
+  guint header_size;
+  guint64 size;
+
+  fail_unless (gst_isoff_parse_box_header (&reader, &type, extended_type,
+          &header_size, &size));
+  fail_unless (type == GST_MAKE_FOURCC ('u', 'u', 'i', 'd'));
+  fail_unless_equals_int (header_size, 24);
+  fail_unless_equals_uint64 (size, 0x10204080);
+  fail_unless (memcmp (data + 8, extended_type, 16) == 0);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (dash_isoff_box_header_uuid_type_long_size)
+{
+  /* INDENT-OFF */
+  static const guint8 data[] = {
+    0, 0, 0, 1,
+    'u', 'u', 'i', 'd',
+    1, 2, 4, 8, 16, 32, 64, 128,
+    'a', 'b', 'c', 'd',
+    'e', 'f', 'g', 'h',
+    'i', 'j', 'k', 'l',
+    'm', 'n', 'o', 'p'
+  };
+  /* INDENT-ON */
+  GstByteReader reader = GST_BYTE_READER_INIT (data, sizeof (data));
+  guint32 type;
+  guint8 extended_type[16];
+  guint header_size;
+  guint64 size;
+
+  fail_unless (gst_isoff_parse_box_header (&reader, &type, extended_type,
+          &header_size, &size));
+  fail_unless (type == GST_MAKE_FOURCC ('u', 'u', 'i', 'd'));
+  fail_unless_equals_int (header_size, 32);
+  fail_unless_equals_uint64 (size, G_GUINT64_CONSTANT (0x0102040810204080));
+  fail_unless (memcmp (data + 16, extended_type, 16) == 0);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (dash_isoff_moof_parse)
+{
+  /* INDENT-ON */
+  GstByteReader reader = GST_BYTE_READER_INIT (moof1, sizeof (moof1));
+  guint32 type;
+  guint8 extended_type[16];
+  guint header_size;
+  guint64 size;
+  GstMoofBox *moof;
+  GstTrafBox *traf;
+  GstTrunBox *trun;
+  guint i;
+
+  fail_unless (gst_isoff_parse_box_header (&reader, &type, extended_type,
+          &header_size, &size));
+  fail_unless (type == GST_MAKE_FOURCC ('m', 'o', 'o', 'f'));
+  fail_unless_equals_int (header_size, 8);
+  fail_unless_equals_uint64 (size, sizeof (moof1));
+
+  moof = gst_isoff_moof_box_parse (&reader);
+  fail_unless (moof != NULL);
+
+  fail_unless_equals_int (moof->mfhd.sequence_number, 1);
+  fail_unless_equals_int (moof->traf->len, 1);
+
+  traf = &g_array_index (moof->traf, GstTrafBox, 0);
+  fail_unless_equals_int (traf->tfhd.version, 0);
+  fail_unless_equals_int (traf->tfhd.flags,
+      GST_TFHD_FLAGS_DEFAULT_SAMPLE_DURATION_PRESENT);
+  fail_unless_equals_int (traf->tfhd.track_id, 1);
+  fail_unless_equals_uint64 (traf->tfhd.base_data_offset, 0);
+  fail_unless_equals_int (traf->tfhd.sample_description_index, 0);
+  fail_unless_equals_int (traf->tfhd.default_sample_duration, 8);
+  fail_unless_equals_int (traf->tfhd.default_sample_size, 0);
+  fail_unless_equals_int (traf->tfhd.default_sample_flags, 0);
+
+  fail_unless_equals_int (traf->trun->len, 1);
+  trun = &g_array_index (traf->trun, GstTrunBox, 0);
+
+  fail_unless_equals_int (trun->version, 1);
+  fail_unless_equals_int (trun->flags,
+      GST_TRUN_FLAGS_SAMPLE_COMPOSITION_TIME_OFFSETS_PRESENT |
+      GST_TRUN_FLAGS_SAMPLE_FLAGS_PRESENT | GST_TRUN_FLAGS_SAMPLE_SIZE_PRESENT |
+      GST_TRUN_FLAGS_DATA_OFFSET_PRESENT);
+  fail_unless_equals_int (trun->sample_count, 96);
+  fail_unless_equals_int (trun->data_offset, size + header_size);
+  fail_unless_equals_int (trun->first_sample_flags, 0);
+
+  fail_unless_equals_int (trun->samples->len, 96);
+
+  for (i = 0; i < 96; i++) {
+    GstTrunSample *sample = &g_array_index (trun->samples, GstTrunSample, i);
+
+    fail_unless_equals_int (sample->sample_duration, 0);
+    if (i == 0) {
+      /* sample_depends_on = 2 => I-frame */
+      /* sample_is_non_sync_sample = 0 */
+      fail_unless_equals_int (sample->sample_flags, 0x02000000);
+    } else {
+      /* sample_depends_on = 1 => non-I-frame */
+      /* sample_is_non_sync_sample = 1 */
+      fail_unless_equals_int (sample->sample_flags, 0x01010000);
+    }
+
+    /* sample size and CTO is changing for each sample */
+  }
+
+  gst_isoff_moof_box_free (moof);
+}
+
+GST_END_TEST;
+
+static Suite *
+dash_isoff_suite (void)
+{
+  Suite *s = suite_create ("dash-isoff");
+  TCase *tc_isoff_box = tcase_create ("isoff-box-parsing");
+  TCase *tc_moof = tcase_create ("moof");
+
+  tcase_add_test (tc_isoff_box, dash_isoff_box_header_minimal);
+  tcase_add_test (tc_isoff_box, dash_isoff_box_header_long_size);
+  tcase_add_test (tc_isoff_box, dash_isoff_box_header_uuid_type);
+  tcase_add_test (tc_isoff_box, dash_isoff_box_header_uuid_type_long_size);
+
+  suite_add_tcase (s, tc_isoff_box);
+
+
+  tcase_add_test (tc_moof, dash_isoff_moof_parse);
+  suite_add_tcase (s, tc_moof);
+
+  return s;
+}
+
+GST_CHECK_MAIN (dash_isoff);
diff --git a/tests/check/elements/dash_isoff.h b/tests/check/elements/dash_isoff.h
new file mode 100644
index 0000000..ab4c30c
--- /dev/null
+++ b/tests/check/elements/dash_isoff.h
@@ -0,0 +1,113 @@
+#ifndef __DASH_ISOFF_H__
+#define __DASH_ISOFF_H__
+
+#include <glib.h>
+
+static const guint8 moof1[] = {
+  0x00, 0x00, 0x04, 0xdc, 0x6d, 0x6f, 0x6f, 0x66, 0x00, 0x00, 0x00, 0x10,
+  0x6d, 0x66, 0x68, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x04, 0xc4, 0x74, 0x72, 0x61, 0x66, 0x00, 0x00, 0x00, 0x14,
+  0x74, 0x66, 0x68, 0x64, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01,
+  0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x74, 0x66, 0x64, 0x74,
+  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x04, 0x94, 0x74, 0x72, 0x75, 0x6e, 0x01, 0x00, 0x0e, 0x01,
+  0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x04, 0xe4, 0x00, 0x00, 0x00, 0xd1,
+  0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x05, 0xa5,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x09, 0x47,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0xdd,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x0a, 0x70,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x06, 0xb4,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x08, 0x92,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x9b,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x8f,
+  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+#endif
diff --git a/tests/check/elements/dash_mpd.c b/tests/check/elements/dash_mpd.c
index 348b65c..783ecae 100644
--- a/tests/check/elements/dash_mpd.c
+++ b/tests/check/elements/dash_mpd.c
@@ -44,6 +44,14 @@
   return ms;
 }
 
+static GstClockTime
+duration_to_clocktime (guint year, guint month, guint day, guint hour,
+    guint minute, guint second, guint millisecond)
+{
+  return (GST_MSECOND * duration_to_ms (year, month, day, hour, minute, second,
+          millisecond));
+}
+
 /*
  * Test to ensure a simple mpd file successfully parses.
  *
@@ -3154,19 +3162,23 @@
   assert_equals_int (represendationIndex, 1);
 
   represendationIndex =
-      gst_mpdparser_get_rep_idx_with_max_bandwidth (representations, 0);
+      gst_mpdparser_get_rep_idx_with_max_bandwidth (representations, 0, 0, 0, 0,
+      1);
   assert_equals_int (represendationIndex, 1);
 
   represendationIndex =
-      gst_mpdparser_get_rep_idx_with_max_bandwidth (representations, 100000);
+      gst_mpdparser_get_rep_idx_with_max_bandwidth (representations, 100000, 0,
+      0, 0, 1);
   assert_equals_int (represendationIndex, -1);
 
   represendationIndex =
-      gst_mpdparser_get_rep_idx_with_max_bandwidth (representations, 300000);
+      gst_mpdparser_get_rep_idx_with_max_bandwidth (representations, 300000, 0,
+      0, 0, 1);
   assert_equals_int (represendationIndex, 1);
 
   represendationIndex =
-      gst_mpdparser_get_rep_idx_with_max_bandwidth (representations, 500000);
+      gst_mpdparser_get_rep_idx_with_max_bandwidth (representations, 500000, 0,
+      0, 0, 1);
   assert_equals_int (represendationIndex, 0);
 
   gst_mpd_client_free (mpdclient);
@@ -4821,6 +4833,103 @@
 GST_END_TEST;
 
 /*
+ * Test SegmentList with multiple segmentURL
+ *
+ */
+GST_START_TEST (dash_mpdparser_multipleSegmentURL)
+{
+  GList *adaptationSets;
+  GstAdaptationSetNode *adapt_set;
+  GstActiveStream *activeStream;
+  GstMediaFragmentInfo fragment;
+  GstClockTime expectedDuration;
+  GstClockTime expectedTimestamp;
+  GstFlowReturn flow;
+
+  /*
+   * Period duration is 30 seconds
+   * Period start is 10 seconds. Thus, period duration is 20 seconds.
+   *
+   * Segment duration is 25 seconds. There are 2 segments in the list.
+   * We expect first segment to have a duration of 20 seconds (limited by the period)
+   * and the second segment to not exist.
+   */
+  const gchar *xml =
+      "<?xml version=\"1.0\"?>"
+      "<MPD xmlns=\"urn:mpeg:dash:schema:mpd:2011\""
+      " profiles=\"urn:mpeg:dash:profile:isoff-main:2011\""
+      " availabilityStartTime=\"2015-03-24T0:0:0\""
+      " mediaPresentationDuration=\"P0Y0M0DT0H0M30S\">"
+      "<Period start=\"P0Y0M0DT0H0M10S\">"
+      "  <AdaptationSet mimeType=\"video/mp4\">"
+      "    <Representation>"
+      "      <SegmentList duration=\"25\">"
+      "        <SegmentURL"
+      "           media=\"TestMedia0\" mediaRange=\"10-20\""
+      "           index=\"TestIndex0\" indexRange=\"100-200\""
+      "        ></SegmentURL>"
+      "        <SegmentURL"
+      "           media=\"TestMedia1\" mediaRange=\"20-30\""
+      "           index=\"TestIndex1\" indexRange=\"200-300\""
+      "        ></SegmentURL>"
+      "      </SegmentList>"
+      "    </Representation></AdaptationSet></Period></MPD>";
+
+  gboolean ret;
+  GstMpdClient *mpdclient = gst_mpd_client_new ();
+
+  ret = gst_mpd_parse (mpdclient, xml, (gint) strlen (xml));
+  assert_equals_int (ret, TRUE);
+
+  /* process the xml data */
+  ret =
+      gst_mpd_client_setup_media_presentation (mpdclient, GST_CLOCK_TIME_NONE,
+      -1, NULL);
+  assert_equals_int (ret, TRUE);
+
+  /* get the list of adaptation sets of the first period */
+  adaptationSets = gst_mpd_client_get_adaptation_sets (mpdclient);
+  fail_if (adaptationSets == NULL);
+
+  /* setup streaming from the first adaptation set */
+  adapt_set = (GstAdaptationSetNode *) g_list_nth_data (adaptationSets, 0);
+  fail_if (adapt_set == NULL);
+  ret = gst_mpd_client_setup_streaming (mpdclient, adapt_set);
+  assert_equals_int (ret, TRUE);
+
+  activeStream = gst_mpdparser_get_active_stream_by_index (mpdclient, 0);
+  fail_if (activeStream == NULL);
+
+  expectedDuration = duration_to_ms (0, 0, 0, 0, 0, 20, 0);
+  expectedTimestamp = duration_to_ms (0, 0, 0, 0, 0, 0, 0);
+
+  /* the representation contains 2 segments. The first is partially
+   * clipped, and the second entirely (and thus discarded).
+   */
+
+  /* check first segment */
+  ret = gst_mpd_client_get_next_fragment (mpdclient, 0, &fragment);
+  assert_equals_int (ret, TRUE);
+  assert_equals_string (fragment.uri, "/TestMedia0");
+  assert_equals_int64 (fragment.range_start, 10);
+  assert_equals_int64 (fragment.range_end, 20);
+  assert_equals_string (fragment.index_uri, "/TestIndex0");
+  assert_equals_int64 (fragment.index_range_start, 100);
+  assert_equals_int64 (fragment.index_range_end, 200);
+  assert_equals_uint64 (fragment.duration, expectedDuration * GST_MSECOND);
+  assert_equals_uint64 (fragment.timestamp, expectedTimestamp * GST_MSECOND);
+  gst_media_fragment_info_clear (&fragment);
+
+  /* advance to next segment */
+  flow = gst_mpd_client_advance_segment (mpdclient, activeStream, TRUE);
+  assert_equals_int (flow, GST_FLOW_EOS);
+
+  gst_mpd_client_free (mpdclient);
+}
+
+GST_END_TEST;
+
+/*
  * Test parsing empty xml string
  *
  */
@@ -5348,6 +5457,74 @@
 GST_END_TEST;
 
 /*
+ * Test that the maximum_segment_duration correctly implements the
+ * rules in the DASH specification
+ */
+GST_START_TEST (dash_mpdparser_maximum_segment_duration)
+{
+  const gchar *xml_template =
+      "<?xml version=\"1.0\"?>"
+      "<MPD xmlns=\"urn:mpeg:dash:schema:mpd:2011\""
+      "     profiles=\"urn:mpeg:dash:profile:isoff-main:2011\""
+      "     availabilityStartTime=\"2015-03-24T0:0:0\""
+      "     %s "
+      "     mediaPresentationDuration=\"P100Y\">"
+      "  <Period id=\"Period0\" start=\"PT0S\">"
+      "    <AdaptationSet mimeType=\"video/mp4\" >"
+      "      <SegmentTemplate timescale=\"90000\" initialization=\"$RepresentationID$/Header.m4s\" media=\"$RepresentationID$/$Number$.m4s\" duration=\"360000\" />"
+      "      <Representation id=\"video1\" width=\"576\" height=\"324\" frameRate=\"25\" sar=\"1:1\" bandwidth=\"900000\" codecs=\"avc1.4D401E\"/>"
+      "    </AdaptationSet>"
+      "      <AdaptationSet mimeType=\"audio/mp4\" >"
+      "        <SegmentTemplate timescale=\"90000\" initialization=\"$RepresentationID$/Header.m4s\" media=\"$RepresentationID$/$Number$.m4s\" duration=\"340000\" />"
+      "        <Representation id=\"audio1\" audioSamplingRate=\"22050\" bandwidth=\"29600\" codecs=\"mp4a.40.2\">"
+      "        <AudioChannelConfiguration schemeIdUri=\"urn:mpeg:dash:23003:3:audio_channel_configuration:2011\" value=\"2\"/>"
+      "      </Representation>" "    </AdaptationSet>" "  </Period></MPD>";
+  gboolean ret;
+  GstMpdClient *mpdclient;
+  gchar *xml;
+  GstClockTime dur;
+  GList *adapt_sets, *iter;
+
+  xml = g_strdup_printf (xml_template, "maxSegmentDuration=\"PT4.5S\"");
+  mpdclient = gst_mpd_client_new ();
+  ret = gst_mpd_parse (mpdclient, xml, (gint) strlen (xml));
+  g_free (xml);
+  assert_equals_int (ret, TRUE);
+
+  assert_equals_uint64 (mpdclient->mpd_node->maxSegmentDuration,
+      duration_to_ms (0, 0, 0, 0, 0, 4, 500));
+  dur = gst_mpd_client_get_maximum_segment_duration (mpdclient);
+  assert_equals_uint64 (dur, duration_to_clocktime (0, 0, 0, 0, 0, 4, 500));
+  gst_mpd_client_free (mpdclient);
+
+  /* now parse without the maxSegmentDuration attribute, to check that
+     gst_mpd_client_get_maximum_segment_duration uses the maximum
+     duration of any segment
+   */
+  xml = g_strdup_printf (xml_template, "");
+  mpdclient = gst_mpd_client_new ();
+  ret = gst_mpd_parse (mpdclient, xml, (gint) strlen (xml));
+  g_free (xml);
+  assert_equals_int (ret, TRUE);
+  ret =
+      gst_mpd_client_setup_media_presentation (mpdclient, GST_CLOCK_TIME_NONE,
+      -1, NULL);
+  assert_equals_int (ret, TRUE);
+  adapt_sets = gst_mpd_client_get_adaptation_sets (mpdclient);
+  for (iter = adapt_sets; iter; iter = g_list_next (iter)) {
+    GstAdaptationSetNode *adapt_set_node = iter->data;
+
+    ret = gst_mpd_client_setup_streaming (mpdclient, adapt_set_node);
+    assert_equals_int (ret, TRUE);
+  }
+  dur = gst_mpd_client_get_maximum_segment_duration (mpdclient);
+  assert_equals_uint64 (dur, duration_to_clocktime (0, 0, 0, 0, 0, 4, 0));
+  gst_mpd_client_free (mpdclient);
+}
+
+GST_END_TEST;
+
+/*
  * create a test suite containing all dash testcases
  */
 static Suite *
@@ -5482,6 +5659,7 @@
   tcase_add_test (tc_complexMPD, dash_mpdparser_get_period_at_time);
   tcase_add_test (tc_complexMPD, dash_mpdparser_adaptationSet_handling);
   tcase_add_test (tc_complexMPD, dash_mpdparser_representation_selection);
+  tcase_add_test (tc_complexMPD, dash_mpdparser_multipleSegmentURL);
   tcase_add_test (tc_complexMPD, dash_mpdparser_activeStream_selection);
   tcase_add_test (tc_complexMPD, dash_mpdparser_activeStream_parameters);
   tcase_add_test (tc_complexMPD, dash_mpdparser_get_audio_languages);
@@ -5527,6 +5705,7 @@
   tcase_add_test (tc_stringTests, dash_mpdparser_rfc1738_strings);
 
   tcase_add_test (tc_duration, dash_mpdparser_duration);
+  tcase_add_test (tc_duration, dash_mpdparser_maximum_segment_duration);
 
   suite_add_tcase (s, tc_simpleMPD);
   suite_add_tcase (s, tc_complexMPD);
diff --git a/tests/check/elements/glimagesink.c b/tests/check/elements/glimagesink.c
index 07f6899..b0f9e30 100644
--- a/tests/check/elements/glimagesink.c
+++ b/tests/check/elements/glimagesink.c
@@ -116,8 +116,6 @@
   loop = g_main_loop_new (NULL, FALSE);
 #endif
 
-  setup_glimagesink ();
-
   /* GstBaseSink handles the drain query as well. */
   g_object_set (sinkelement, "enable-last-sample", TRUE, NULL);
 
@@ -188,6 +186,7 @@
    * releases the buffers it currently owns, upon drain query. */
   query = gst_query_new_drain ();
   DO_CALL (do_peer_query_func, query);
+  gst_query_unref (query);
 
   /* Transfer buffers back to the downstream pool to be release
    * properly. This also make sure that all buffers are returned.
@@ -210,8 +209,6 @@
   fail_unless (gst_buffer_pool_set_active (pool, FALSE));
   gst_object_unref (pool);
 
-  cleanup_glimagesink ();
-
   if (loop)
     g_main_loop_unref (loop);
 }
@@ -226,7 +223,7 @@
 
   tcase_set_timeout (tc, 5);
 
-  tcase_add_checked_fixture (tc, setup_glimagesink, NULL);
+  tcase_add_checked_fixture (tc, setup_glimagesink, cleanup_glimagesink);
   tcase_add_test (tc, test_query_drain);
   suite_add_tcase (s, tc);
 
diff --git a/tests/check/elements/hls_demux.c b/tests/check/elements/hls_demux.c
index 8d07ea0..fca76b3 100644
--- a/tests/check/elements/hls_demux.c
+++ b/tests/check/elements/hls_demux.c
@@ -687,13 +687,20 @@
     {"http://unit.test/002.ts", NULL, segment_size},
     {NULL, NULL, 0}
   };
+  const guint64 failure_position = 2048;
   GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
-    {"src_0", 2 * segment_size, NULL},
+    /* adaptive demux tries for 4 times (MAX_DOWNLOAD_ERROR_COUNT + 1) before giving up */
+    {"src_0", failure_position * 4, NULL},
     {NULL, 0, NULL}
   };
-  const guint64 failure_position = 2048;
   TESTCASE_INIT_BOILERPLATE (segment_size);
 
+  /* download in chunks of failure_position size.
+   * This means the first chunk will succeed, the second will generate
+   * error because we already exceeded failure_position bytes.
+   */
+  gst_test_http_src_set_default_blocksize (failure_position);
+
   http_src_callbacks.src_start = gst_hlsdemux_test_src_start;
   http_src_callbacks.src_create = gst_hlsdemux_test_network_error_src_create;
   gst_structure_set (hlsTestCase.state,
diff --git a/tests/check/elements/hlsdemux_m3u8.c b/tests/check/elements/hlsdemux_m3u8.c
index f49e901..02f50f1 100644
--- a/tests/check/elements/hlsdemux_m3u8.c
+++ b/tests/check/elements/hlsdemux_m3u8.c
@@ -322,44 +322,41 @@
 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=65000,CODECS=\"mp4a.40.5\"\r\n\
 http://example.com/audio-only.m3u8";
 
-static GstM3U8Client *
+static GstHLSMasterPlaylist *
 load_playlist (const gchar * data)
 {
-  gboolean ret;
-  GstM3U8Client *client;
+  GstHLSMasterPlaylist *master;
 
-  client = gst_m3u8_client_new ("http://localhost/test.m3u8", NULL);
-  ret = gst_m3u8_client_update (client, g_strdup (data));
-  assert_equals_int (ret, TRUE);
+  master = gst_hls_master_playlist_new_from_data (g_strdup (data),
+      "http://localhost/test.m3u8");
+  fail_unless (master != NULL);
 
-  return client;
+  return master;
 }
 
 GST_START_TEST (test_load_main_playlist_invalid)
 {
-  gboolean ret;
-  GstM3U8Client *client =
-      gst_m3u8_client_new ("http://localhost/test.m3u8", NULL);
+  GstHLSMasterPlaylist *master;
 
-  ret = gst_m3u8_client_update (client, g_strdup (INVALID_PLAYLIST));
-  assert_equals_int (ret, FALSE);
-
-  gst_m3u8_client_free (client);
+  master =
+      gst_hls_master_playlist_new_from_data (g_strdup (INVALID_PLAYLIST), NULL);
+  fail_unless (master == NULL);
 }
 
 GST_END_TEST;
 
 GST_START_TEST (test_load_main_playlist_rendition)
 {
-  GstM3U8Client *client;
+  GstHLSMasterPlaylist *master;
+  GstHLSVariantStream *variant;
 
-  client = load_playlist (ON_DEMAND_PLAYLIST);
+  master = load_playlist (ON_DEMAND_PLAYLIST);
+  variant = master->default_variant;
 
-  assert_equals_int (g_list_length (client->main->files), 4);
-  assert_equals_int (g_list_length (client->current->files), 4);
-  assert_equals_int (client->sequence, 0);
+  assert_equals_int (g_list_length (variant->m3u8->files), 4);
+  assert_equals_int (master->version, 0);
 
-  gst_m3u8_client_free (client);
+  gst_hls_master_playlist_unref (master);
 }
 
 GST_END_TEST;
@@ -367,17 +364,18 @@
 static void
 do_test_load_main_playlist_variant (const gchar * playlist)
 {
-  GstM3U8Client *client;
-  GstM3U8 *stream;
+  GstHLSMasterPlaylist *master;
+  GstHLSVariantStream *stream;
   GList *tmp;
 
-  client = load_playlist (playlist);
+  master = gst_hls_master_playlist_new_from_data (g_strdup (playlist), NULL);
+  fail_unless (master != NULL);
 
-  assert_equals_int (g_list_length (client->main->lists), 4);
+  assert_equals_int (g_list_length (master->variants), 4);
 
   /* Audio-Only */
-  tmp = g_list_first (client->main->lists);
-  stream = GST_M3U8 (tmp->data);
+  tmp = g_list_first (master->variants);
+  stream = tmp->data;
   assert_equals_int (stream->bandwidth, 65000);
   assert_equals_int (stream->program_id, 1);
   assert_equals_string (stream->uri, "http://example.com/audio-only.m3u8");
@@ -385,30 +383,30 @@
 
   /* Low */
   tmp = g_list_next (tmp);
-  stream = GST_M3U8 (tmp->data);
+  stream = tmp->data;
   assert_equals_int (stream->bandwidth, 128000);
   assert_equals_int (stream->program_id, 1);
   assert_equals_string (stream->uri, "http://example.com/low.m3u8");
 
   /* Mid */
   tmp = g_list_next (tmp);
-  stream = GST_M3U8 (tmp->data);
+  stream = tmp->data;
   assert_equals_int (stream->bandwidth, 256000);
   assert_equals_int (stream->program_id, 1);
   assert_equals_string (stream->uri, "http://example.com/mid.m3u8");
 
   /* High */
   tmp = g_list_next (tmp);
-  stream = GST_M3U8 (tmp->data);
+  stream = tmp->data;
   assert_equals_int (stream->bandwidth, 768000);
   assert_equals_int (stream->program_id, 1);
   assert_equals_string (stream->uri, "http://example.com/hi.m3u8");
 
   /* Check the first playlist is selected */
-  assert_equals_int (client->current != NULL, TRUE);
-  assert_equals_int (client->current->bandwidth, 128000);
+  assert_equals_int (master->default_variant != NULL, TRUE);
+  assert_equals_int (master->default_variant->bandwidth, 128000);
 
-  gst_m3u8_client_free (client);
+  gst_hls_master_playlist_unref (master);
 }
 
 GST_START_TEST (test_load_main_playlist_variant)
@@ -420,11 +418,11 @@
 
 GST_START_TEST (test_load_main_playlist_variant_with_missing_uri)
 {
-  GstM3U8Client *client;
+  GstHLSMasterPlaylist *master;
 
-  client = load_playlist (VARIANT_PLAYLIST_WITH_URI_MISSING);
-  assert_equals_int (g_list_length (client->main->lists), 3);
-  gst_m3u8_client_free (client);
+  master = load_playlist (VARIANT_PLAYLIST_WITH_URI_MISSING);
+  assert_equals_int (g_list_length (master->variants), 3);
+  gst_hls_master_playlist_unref (master);
 }
 
 GST_END_TEST;
@@ -453,17 +451,17 @@
 static void
 check_on_demand_playlist (const gchar * data)
 {
-  GstM3U8Client *client;
+  GstHLSMasterPlaylist *master;
   GstM3U8 *pl;
   GstM3U8MediaFile *file;
 
-  client = load_playlist (data);
-  pl = client->current;
+  master = load_playlist (data);
+  pl = master->default_variant->m3u8;
 
   /* Sequence should be 0 as it's an ondemand playlist */
-  assert_equals_int (client->sequence, 0);
+  assert_equals_int (pl->sequence, 0);
   /* Check that we are not live */
-  assert_equals_int (gst_m3u8_client_is_live (client), FALSE);
+  assert_equals_int (gst_m3u8_is_live (pl), FALSE);
   /* Check number of entries */
   assert_equals_int (g_list_length (pl->files), 4);
   /* Check first media segments */
@@ -475,7 +473,7 @@
   assert_equals_string (file->uri, "http://media.example.com/004.ts");
   assert_equals_int (file->sequence, 3);
 
-  gst_m3u8_client_free (client);
+  gst_hls_master_playlist_unref (master);
 }
 
 GST_START_TEST (test_on_demand_playlist)
@@ -508,18 +506,18 @@
 
 GST_START_TEST (test_live_playlist)
 {
-  GstM3U8Client *client;
+  GstHLSMasterPlaylist *master;
   GstM3U8 *pl;
   GstM3U8MediaFile *file;
   gint64 start = -1;
   gint64 stop = -1;
 
-  client = load_playlist (LIVE_PLAYLIST);
+  master = load_playlist (LIVE_PLAYLIST);
 
-  pl = client->current;
+  pl = master->default_variant->m3u8;
   /* Check that we are live */
-  assert_equals_int (gst_m3u8_client_is_live (client), TRUE);
-  assert_equals_int (client->sequence, 2681);
+  assert_equals_int (gst_m3u8_is_live (pl), TRUE);
+  assert_equals_int (pl->sequence, 2681);
   /* Check number of entries */
   assert_equals_int (g_list_length (pl->files), 4);
   /* Check first media segments */
@@ -532,11 +530,11 @@
   assert_equals_string (file->uri,
       "https://priv.example.com/fileSequence2683.ts");
   assert_equals_int (file->sequence, 2683);
-  fail_unless (gst_m3u8_client_get_seek_range (client, &start, &stop));
+  fail_unless (gst_m3u8_get_seek_range (pl, &start, &stop));
   assert_equals_int64 (start, 0);
   assert_equals_float (stop / (double) GST_SECOND, 16.0);
 
-  gst_m3u8_client_free (client);
+  gst_hls_master_playlist_unref (master);
 }
 
 GST_END_TEST;
@@ -546,44 +544,45 @@
  * there is a jump in the media sequence that must be handled correctly. */
 GST_START_TEST (test_live_playlist_rotated)
 {
-  GstM3U8Client *client;
+  GstHLSMasterPlaylist *master;
   GstM3U8 *pl;
   GstM3U8MediaFile *file;
   gboolean ret;
 
-  client = load_playlist (LIVE_PLAYLIST);
-  pl = client->current;
-  assert_equals_int (client->sequence, 2681);
+  master = load_playlist (LIVE_PLAYLIST);
+  pl = master->default_variant->m3u8;
+
+  assert_equals_int (pl->sequence, 2681);
   /* Check first media segments */
   file = GST_M3U8_MEDIA_FILE (g_list_first (pl->files)->data);
   assert_equals_int (file->sequence, 2680);
 
-  ret = gst_m3u8_client_update (client, g_strdup (LIVE_ROTATED_PLAYLIST));
+  ret = gst_m3u8_update (pl, g_strdup (LIVE_ROTATED_PLAYLIST));
   assert_equals_int (ret, TRUE);
-  gst_m3u8_client_get_next_fragment (client, NULL, NULL, NULL, NULL, NULL, NULL,
-      NULL, NULL, TRUE);
+  gst_m3u8_get_next_fragment (pl, TRUE, NULL, NULL);
+
   /* FIXME: Sequence should last - 3. Should it? */
-  assert_equals_int (client->sequence, 3001);
+  assert_equals_int (pl->sequence, 3001);
   /* Check first media segments */
   file = GST_M3U8_MEDIA_FILE (g_list_first (pl->files)->data);
   assert_equals_int (file->sequence, 3001);
 
-  gst_m3u8_client_free (client);
+  gst_hls_master_playlist_unref (master);
 }
 
 GST_END_TEST;
 
 GST_START_TEST (test_playlist_with_doubles_duration)
 {
-  GstM3U8Client *client;
+  GstHLSMasterPlaylist *master;
   GstM3U8 *pl;
   GstM3U8MediaFile *file;
   gint64 start = -1;
   gint64 stop = -1;
 
-  client = load_playlist (DOUBLES_PLAYLIST);
+  master = load_playlist (DOUBLES_PLAYLIST);
+  pl = master->default_variant->m3u8;
 
-  pl = client->current;
   /* Check first media segments */
   file = GST_M3U8_MEDIA_FILE (g_list_nth_data (pl->files, 0));
   assert_equals_float (file->duration / (double) GST_SECOND, 10.321);
@@ -593,18 +592,19 @@
   assert_equals_float (file->duration / (double) GST_SECOND, 10.2344);
   file = GST_M3U8_MEDIA_FILE (g_list_nth_data (pl->files, 3));
   assert_equals_float (file->duration / (double) GST_SECOND, 9.92);
-  fail_unless (gst_m3u8_client_get_seek_range (client, &start, &stop));
+  fail_unless (gst_m3u8_get_seek_range (pl, &start, &stop));
   assert_equals_int64 (start, 0);
   assert_equals_float (stop / (double) GST_SECOND,
       10.321 + 9.6789 + 10.2344 + 9.92);
-  gst_m3u8_client_free (client);
+
+  gst_hls_master_playlist_unref (master);
 }
 
 GST_END_TEST;
 
 GST_START_TEST (test_playlist_with_encryption)
 {
-  GstM3U8Client *client;
+  GstHLSMasterPlaylist *master;
   GstM3U8 *pl;
   GstM3U8MediaFile *file;
   guint8 iv1[16] = { 0, };
@@ -613,9 +613,9 @@
   iv1[15] = 1;
   iv2[15] = 2;
 
-  client = load_playlist (AES_128_ENCRYPTED_PLAYLIST);
+  master = load_playlist (AES_128_ENCRYPTED_PLAYLIST);
+  pl = master->default_variant->m3u8;
 
-  pl = client->current;
   assert_equals_int (g_list_length (pl->files), 5);
 
   /* Check all media segments */
@@ -640,72 +640,73 @@
   assert_equals_string (file->key, "https://priv.example.com/key2.bin");
   fail_unless (memcmp (&file->iv, iv1, 16) == 0);
 
-  gst_m3u8_client_free (client);
+  gst_hls_master_playlist_unref (master);
 }
 
 GST_END_TEST;
 
+
 GST_START_TEST (test_update_invalid_playlist)
 {
-  GstM3U8Client *client;
+  GstHLSMasterPlaylist *master;
   GstM3U8 *pl;
   gboolean ret;
 
   /* Test updates in on-demand playlists */
-  client = load_playlist (ON_DEMAND_PLAYLIST);
-  pl = client->current;
+  master = load_playlist (ON_DEMAND_PLAYLIST);
+  pl = master->default_variant->m3u8;
   assert_equals_int (g_list_length (pl->files), 4);
-  ret = gst_m3u8_client_update (client, g_strdup ("#INVALID"));
+  ret = gst_m3u8_update (pl, g_strdup ("#INVALID"));
   assert_equals_int (ret, FALSE);
 
-  gst_m3u8_client_free (client);
+  gst_hls_master_playlist_unref (master);
 }
 
 GST_END_TEST;
 
 GST_START_TEST (test_update_playlist)
 {
-  GstM3U8Client *client;
+  GstHLSMasterPlaylist *master;
   GstM3U8 *pl;
   gchar *live_pl;
   gboolean ret;
 
   /* Test updates in on-demand playlists */
-  client = load_playlist (ON_DEMAND_PLAYLIST);
-  pl = client->current;
+  master = load_playlist (ON_DEMAND_PLAYLIST);
+  pl = master->default_variant->m3u8;
   assert_equals_int (g_list_length (pl->files), 4);
-  ret = gst_m3u8_client_update (client, g_strdup (ON_DEMAND_PLAYLIST));
+  ret = gst_m3u8_update (pl, g_strdup (ON_DEMAND_PLAYLIST));
   assert_equals_int (ret, TRUE);
   assert_equals_int (g_list_length (pl->files), 4);
-  gst_m3u8_client_free (client);
+  gst_hls_master_playlist_unref (master);
 
   /* Test updates in live playlists */
-  client = load_playlist (LIVE_PLAYLIST);
-  pl = client->current;
+  master = load_playlist (LIVE_PLAYLIST);
+  pl = master->default_variant->m3u8;
   assert_equals_int (g_list_length (pl->files), 4);
   /* Add a new entry to the playlist and check the update */
   live_pl = g_strdup_printf ("%s\n%s\n%s", LIVE_PLAYLIST, "#EXTINF:8",
       "https://priv.example.com/fileSequence2683.ts");
-  ret = gst_m3u8_client_update (client, live_pl);
+  ret = gst_m3u8_update (pl, live_pl);
   assert_equals_int (ret, TRUE);
   assert_equals_int (g_list_length (pl->files), 5);
   /* Test sliding window */
-  ret = gst_m3u8_client_update (client, g_strdup (LIVE_PLAYLIST));
+  ret = gst_m3u8_update (pl, g_strdup (LIVE_PLAYLIST));
   assert_equals_int (ret, TRUE);
   assert_equals_int (g_list_length (pl->files), 4);
-  gst_m3u8_client_free (client);
+  gst_hls_master_playlist_unref (master);
 }
 
 GST_END_TEST;
 
 GST_START_TEST (test_playlist_media_files)
 {
-  GstM3U8Client *client;
+  GstHLSMasterPlaylist *master;
   GstM3U8 *pl;
   GstM3U8MediaFile *file;
 
-  client = load_playlist (ON_DEMAND_PLAYLIST);
-  pl = client->current;
+  master = load_playlist (ON_DEMAND_PLAYLIST);
+  pl = master->default_variant->m3u8;
 
   /* Check number of entries */
   assert_equals_int (g_list_length (pl->files), 4);
@@ -718,19 +719,19 @@
   assert_equals_int (file->size, -1);
   assert_equals_string (file->title, "Test");
 
-  gst_m3u8_client_free (client);
+  gst_hls_master_playlist_unref (master);
 }
 
 GST_END_TEST;
 
 GST_START_TEST (test_playlist_byte_range_media_files)
 {
-  GstM3U8Client *client;
+  GstHLSMasterPlaylist *master;
   GstM3U8 *pl;
   GstM3U8MediaFile *file;
 
-  client = load_playlist (BYTE_RANGES_PLAYLIST);
-  pl = client->current;
+  master = load_playlist (BYTE_RANGES_PLAYLIST);
+  pl = master->default_variant->m3u8;
 
   /* Check number of entries */
   assert_equals_int (g_list_length (pl->files), 4);
@@ -749,11 +750,11 @@
   assert_equals_int (file->offset, 3000);
   assert_equals_int (file->size, 1000);
 
-  gst_m3u8_client_free (client);
+  gst_hls_master_playlist_unref (master);
 
 
-  client = load_playlist (BYTE_RANGES_ACC_OFFSET_PLAYLIST);
-  pl = client->current;
+  master = load_playlist (BYTE_RANGES_ACC_OFFSET_PLAYLIST);
+  pl = master->default_variant->m3u8;
 
   /* Check number of entries */
   assert_equals_int (g_list_length (pl->files), 4);
@@ -772,90 +773,93 @@
   assert_equals_int (file->offset, 3000);
   assert_equals_int (file->size, 1000);
 
-  gst_m3u8_client_free (client);
+  gst_hls_master_playlist_unref (master);
 }
 
 GST_END_TEST;
 
 GST_START_TEST (test_get_next_fragment)
 {
-  GstM3U8Client *client;
+  GstHLSMasterPlaylist *master;
+  GstM3U8 *pl;
+  GstM3U8MediaFile *mf;
   gboolean discontinous;
-  gchar *uri;
-  GstClockTime duration, timestamp;
-  gint64 range_start, range_end;
+  GstClockTime timestamp;
 
-  client = load_playlist (BYTE_RANGES_PLAYLIST);
+  master = load_playlist (BYTE_RANGES_PLAYLIST);
+  pl = master->default_variant->m3u8;
 
   /* Check the next fragment */
-  gst_m3u8_client_get_next_fragment (client, &discontinous, &uri, &duration,
-      &timestamp, &range_start, &range_end, NULL, NULL, TRUE);
+  mf = gst_m3u8_get_next_fragment (pl, TRUE, &timestamp, &discontinous);
+  fail_unless (mf != NULL);
   assert_equals_int (discontinous, FALSE);
-  assert_equals_string (uri, "http://media.example.com/all.ts");
+  assert_equals_string (mf->uri, "http://media.example.com/all.ts");
   assert_equals_uint64 (timestamp, 0);
-  assert_equals_uint64 (duration, 10 * GST_SECOND);
-  assert_equals_uint64 (range_start, 100);
-  assert_equals_uint64 (range_end, 1099);
-  g_free (uri);
+  assert_equals_uint64 (mf->duration, 10 * GST_SECOND);
+  assert_equals_uint64 (mf->offset, 100);
+  assert_equals_uint64 (mf->offset + mf->size, 1100);
 
-  gst_m3u8_client_advance_fragment (client, TRUE);
+  gst_m3u8_advance_fragment (pl, TRUE);
 
   /* Check next media segments */
-  gst_m3u8_client_get_next_fragment (client, &discontinous, &uri, &duration,
-      &timestamp, &range_start, &range_end, NULL, NULL, TRUE);
+  mf = gst_m3u8_get_next_fragment (pl, TRUE, &timestamp, &discontinous);
+  fail_unless (mf != NULL);
   assert_equals_int (discontinous, FALSE);
-  assert_equals_string (uri, "http://media.example.com/all.ts");
+  assert_equals_string (mf->uri, "http://media.example.com/all.ts");
   assert_equals_uint64 (timestamp, 10 * GST_SECOND);
-  assert_equals_uint64 (duration, 10 * GST_SECOND);
-  assert_equals_uint64 (range_start, 1000);
-  assert_equals_uint64 (range_end, 1999);
-  g_free (uri);
+  assert_equals_uint64 (mf->duration, 10 * GST_SECOND);
+  assert_equals_uint64 (mf->offset, 1000);
+  assert_equals_uint64 (mf->offset + mf->size, 2000);
 
-  gst_m3u8_client_advance_fragment (client, TRUE);
+  gst_m3u8_advance_fragment (pl, TRUE);
 
   /* Check next media segments */
-  gst_m3u8_client_get_next_fragment (client, &discontinous, &uri, &duration,
-      &timestamp, &range_start, &range_end, NULL, NULL, TRUE);
+  mf = gst_m3u8_get_next_fragment (pl, TRUE, &timestamp, &discontinous);
   assert_equals_int (discontinous, FALSE);
-  assert_equals_string (uri, "http://media.example.com/all.ts");
+  assert_equals_string (mf->uri, "http://media.example.com/all.ts");
   assert_equals_uint64 (timestamp, 20 * GST_SECOND);
-  assert_equals_uint64 (duration, 10 * GST_SECOND);
-  assert_equals_uint64 (range_start, 2000);
-  assert_equals_uint64 (range_end, 2999);
-  g_free (uri);
+  assert_equals_uint64 (mf->duration, 10 * GST_SECOND);
+  assert_equals_uint64 (mf->offset, 2000);
+  assert_equals_uint64 (mf->offset + mf->size, 3000);
 
-  gst_m3u8_client_free (client);
+  gst_hls_master_playlist_unref (master);
 }
 
 GST_END_TEST;
 
 GST_START_TEST (test_get_duration)
 {
-  GstM3U8Client *client;
+  GstHLSMasterPlaylist *master;
+  GstM3U8 *pl;
 
   /* Test duration for on-demand playlists */
-  client = load_playlist (ON_DEMAND_PLAYLIST);
-  assert_equals_uint64 (gst_m3u8_client_get_duration (client), 40 * GST_SECOND);
-  gst_m3u8_client_free (client);
+  master = load_playlist (ON_DEMAND_PLAYLIST);
+  pl = master->default_variant->m3u8;
+
+  assert_equals_uint64 (gst_m3u8_get_duration (pl), 40 * GST_SECOND);
+  gst_hls_master_playlist_unref (master);
 
   /* Test duration for live playlists */
-  client = load_playlist (LIVE_PLAYLIST);
-  assert_equals_uint64 (gst_m3u8_client_get_duration (client),
-      GST_CLOCK_TIME_NONE);
-  gst_m3u8_client_free (client);
+  master = load_playlist (LIVE_PLAYLIST);
+  pl = master->default_variant->m3u8;
+  assert_equals_uint64 (gst_m3u8_get_duration (pl), GST_CLOCK_TIME_NONE);
+
+  gst_hls_master_playlist_unref (master);
 }
 
 GST_END_TEST;
 
 GST_START_TEST (test_get_target_duration)
 {
-  GstM3U8Client *client;
+  GstHLSMasterPlaylist *master;
+  GstM3U8 *pl;
 
-  client = load_playlist (ON_DEMAND_PLAYLIST);
-  assert_equals_uint64 (gst_m3u8_client_get_target_duration (client),
-      10 * GST_SECOND);
+  master = load_playlist (ON_DEMAND_PLAYLIST);
+  pl = master->default_variant->m3u8;
 
-  gst_m3u8_client_free (client);
+  assert_equals_uint64 (gst_m3u8_get_target_duration (pl), 10 * GST_SECOND);
+
+  gst_hls_master_playlist_unref (master);
 }
 
 GST_END_TEST;
@@ -863,23 +867,29 @@
 
 GST_START_TEST (test_get_stream_for_bitrate)
 {
-  GstM3U8Client *client;
-  GstM3U8 *stream;
+  GstHLSMasterPlaylist *master;
+  GstHLSVariantStream *stream;
 
-  client = load_playlist (VARIANT_PLAYLIST);
-  stream = gst_m3u8_client_get_playlist_for_bitrate (client, 0)->data;
+  master = load_playlist (VARIANT_PLAYLIST);
+  stream = gst_hls_master_playlist_get_variant_for_bitrate (master, NULL, 0);
+
   assert_equals_int (stream->bandwidth, 65000);
-  stream = gst_m3u8_client_get_playlist_for_bitrate (client, G_MAXINT32)->data;
+
+  stream =
+      gst_hls_master_playlist_get_variant_for_bitrate (master, NULL,
+      G_MAXINT32);
   assert_equals_int (stream->bandwidth, 768000);
-  stream = gst_m3u8_client_get_playlist_for_bitrate (client, 300000)->data;
+  stream =
+      gst_hls_master_playlist_get_variant_for_bitrate (master, NULL, 300000);
   assert_equals_int (stream->bandwidth, 256000);
-  stream = gst_m3u8_client_get_playlist_for_bitrate (client, 500000)->data;
+  stream =
+      gst_hls_master_playlist_get_variant_for_bitrate (master, NULL, 500000);
   assert_equals_int (stream->bandwidth, 256000);
-  stream = gst_m3u8_client_get_playlist_for_bitrate (client, 255000)->data;
+  stream =
+      gst_hls_master_playlist_get_variant_for_bitrate (master, NULL, 255000);
   assert_equals_int (stream->bandwidth, 128000);
 
-
-  gst_m3u8_client_free (client);
+  gst_hls_master_playlist_unref (master);
 }
 
 GST_END_TEST;
@@ -905,7 +915,7 @@
 {
   GstM3U8Client *client;
 
-  client = load_playlist (ON_DEMAND_PLAYLIST);
+  master = load_playlist (ON_DEMAND_PLAYLIST);
 
   /* Test seek in the middle of a fragment */
   do_test_seek (client, 1, 0);
@@ -922,10 +932,10 @@
   /* Test invalid seeks (end if list should be 30 + 10) */
   do_test_seek (client, 39, 30);
   do_test_seek (client, 40, -1);
-  gst_m3u8_client_free (client);
+  gst_hls_master_playlist_unref (master);
 
   /* Test seeks on a live playlist */
-  client = load_playlist (LIVE_PLAYLIST);
+  master = load_playlist (LIVE_PLAYLIST);
   do_test_seek (client, 0, 0);
 
   do_test_seek (client, 8, 8);
@@ -933,7 +943,7 @@
   do_test_seek (client, 30, 24);
 
   do_test_seek (client, 3000, -1);
-  gst_m3u8_client_free (client);
+  gst_hls_master_playlist_unref (master);
 }
 
 GST_END_TEST;
@@ -944,7 +954,7 @@
   GstM3U8Media *media;
   GList *alternates;
 
-  client = load_playlist (ALTERNATE_AUDIO_PLAYLIST);
+  master = load_playlist (ALTERNATE_AUDIO_PLAYLIST);
 
   assert_equals_int (g_list_length (client->main->streams), 4);
   assert_equals_int (g_hash_table_size (client->main->video_rendition_groups),
@@ -980,7 +990,7 @@
   assert_equals_string (g_list_nth_data (alternates, 1), "Commentary");
   assert_equals_string (g_list_nth_data (alternates, 2), "Deutsche");
 
-  gst_m3u8_client_free (client);
+  gst_hls_master_playlist_unref (master);
 }
 
 GST_END_TEST;
@@ -991,7 +1001,7 @@
   GstM3U8Media *media;
   GList *alternates;
 
-  client = load_playlist (SUBTITLES_PLAYLIST);
+  master = load_playlist (SUBTITLES_PLAYLIST);
 
   assert_equals_int (g_list_length (client->main->streams), 3);
   assert_equals_int (g_hash_table_size (client->main->video_rendition_groups),
@@ -1028,7 +1038,7 @@
   assert_equals_string (g_list_nth_data (alternates, 1), "Spanish");
   assert_equals_string (g_list_nth_data (alternates, 2), "English");
 
-  gst_m3u8_client_free (client);
+  gst_hls_master_playlist_unref (master);
 }
 
 GST_END_TEST;
@@ -1041,7 +1051,7 @@
   /* Check with a playlist with alternative audio renditions where the video
    * stream is video-only and therefor we always have 2 playlists, one for
    * video and another one for audio */
-  client = load_playlist (SUBTITLES_PLAYLIST);
+  master = load_playlist (SUBTITLES_PLAYLIST);
   gst_m3u8_client_get_current_uri (client, &v_uri, &a_uri, &s_uri);
   assert_equals_int (a_uri == NULL, TRUE);
   assert_equals_int (s_uri != NULL, TRUE);
@@ -1081,7 +1091,7 @@
   assert_equals_string (v_uri, "http://localhost/low/video-audio.m3u8");
   assert_equals_int (s_uri == NULL, TRUE);
 
-  gst_m3u8_client_free (client);
+  gst_hls_master_playlist_unref (master);
 }
 
 GST_END_TEST;
@@ -1094,7 +1104,7 @@
   /* Check with a playlist with alternative audio renditions where the video
    * stream is video-only and therefor we always have 2 playlists, one for
    * video and another one for audio */
-  client = load_playlist (ALTERNATE_AUDIO_PLAYLIST);
+  master = load_playlist (ALTERNATE_AUDIO_PLAYLIST);
   gst_m3u8_client_get_current_uri (client, &v_uri, &a_uri, &s_uri);
   assert_equals_int (a_uri != NULL, TRUE);
   assert_equals_string (a_uri, "http://localhost/main/english-audio.m3u8");
@@ -1123,13 +1133,13 @@
   assert_equals_int (v_uri == NULL, TRUE);
   assert_equals_int (s_uri == NULL, TRUE);
 
-  gst_m3u8_client_free (client);
+  gst_hls_master_playlist_unref (master);
 
   /* Now check with a playlist with alternative audio renditions where the
    * video * stream has the default audio rendition muxed and therefore we
    * only have 2 playlists when the audio alternative rendition is not the
    * default one */
-  client = load_playlist (ALT_AUDIO_PLAYLIST_WITH_VIDEO_AUDIO);
+  master = load_playlist (ALT_AUDIO_PLAYLIST_WITH_VIDEO_AUDIO);
   gst_m3u8_client_get_current_uri (client, &v_uri, &a_uri, &s_uri);
   assert_equals_int (a_uri == NULL, TRUE);
   assert_equals_int (v_uri != NULL, TRUE);
@@ -1161,7 +1171,7 @@
   assert_equals_string (v_uri, "http://localhost/low/video-audio.m3u8");
   assert_equals_int (s_uri == NULL, TRUE);
 
-  gst_m3u8_client_free (client);
+  gst_hls_master_playlist_unref (master);
 }
 
 GST_END_TEST;
@@ -1173,7 +1183,7 @@
   GstFragment *a_frag, *v_frag, *s_frag;
   gboolean ret;
 
-  client = load_playlist (ALTERNATE_AUDIO_PLAYLIST);
+  master = load_playlist (ALTERNATE_AUDIO_PLAYLIST);
   /* The default selection should be audio-only, which only has audio and not
    * video */
   gst_m3u8_client_get_current_uri (client, &v_uri, &a_uri, &s_uri);
@@ -1184,7 +1194,7 @@
   assert_equals_int (s_uri == NULL, TRUE);
 
   /* Update the playlists */
-  ret = gst_m3u8_client_update (client,
+  ret = gst_m3u8_update (client,
       g_strdup (ON_DEMAND_LOW_VIDEO_ONLY_PLAYLIST),
       g_strdup (ON_DEMAND_ENGLISH_PLAYLIST), NULL);
   assert_equals_int (ret, TRUE);
@@ -1229,7 +1239,7 @@
   assert_equals_int (s_uri == NULL, TRUE);
   /* Update the new uri's */
   ret =
-      gst_m3u8_client_update (client,
+      gst_m3u8_update (client,
       g_strdup (ON_DEMAND_LOW_VIDEO_ONLY_PLAYLIST),
       g_strdup (ON_DEMAND_GERMAN_PLAYLIST), NULL);
   assert_equals_int (ret, TRUE);
@@ -1254,7 +1264,7 @@
   assert_equals_string (v_uri, "http://localhost/mid/video-only.m3u8");
   assert_equals_int (s_uri == NULL, TRUE);
   ret =
-      gst_m3u8_client_update (client,
+      gst_m3u8_update (client,
       g_strdup (ON_DEMAND_MID_VIDEO_ONLY_PLAYLIST),
       g_strdup (ON_DEMAND_GERMAN_PLAYLIST), NULL);
   assert_equals_int (ret, TRUE);
@@ -1327,7 +1337,7 @@
   ret = gst_m3u8_client_get_next_fragment (client, &v_frag, &a_frag, &s_frag);
   assert_equals_int (ret, FALSE);
 
-  gst_m3u8_client_free (client);
+  gst_hls_master_playlist_unref (master);
 }
 
 GST_END_TEST;
@@ -1339,16 +1349,19 @@
       "#EXT-X-VERSION:4\n"
       "#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=1251135, CODECS=\"avc1.42001f, mp4a.40.2\", RESOLUTION=640x352\n"
       "1251/media.m3u8?acl=/*1054559_h264_1500k.mp4\n";
-  GstM3U8Client *client;
+  GstHLSMasterPlaylist *master;
+  GstHLSVariantStream *stream;
   GstM3U8 *media;
 
-  client = load_playlist (MASTER_PLAYLIST);
+  master = load_playlist (MASTER_PLAYLIST);
 
-  assert_equals_int (g_list_length (client->main->lists), 1);
-  media = g_list_nth_data (client->main->lists, 0);
+  assert_equals_int (g_list_length (master->variants), 1);
+  stream = g_list_nth_data (master->variants, 0);
+  media = stream->m3u8;
+
   assert_equals_string (media->uri,
       "http://localhost/1251/media.m3u8?acl=/*1054559_h264_1500k.mp4");
-  gst_m3u8_client_free (client);
+  gst_hls_master_playlist_unref (master);
 }
 
 GST_END_TEST;
@@ -1359,19 +1372,20 @@
       "#EXT-X-VERSION:4\n"
       "#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=1251135, CODECS=\"avc1.42001f, mp4a.40.2\", RESOLUTION=640x352\n"
       "media.m3u8\n";
-  GstM3U8Client *client;
-  GstM3U8 *media;
+  GstHLSMasterPlaylist *master;
+  GstHLSVariantStream *stream;
 
-  client = load_playlist (MASTER_PLAYLIST);
+  master = load_playlist (MASTER_PLAYLIST);
 
-  assert_equals_int (g_list_length (client->main->lists), 1);
-  media = g_list_nth_data (client->main->lists, 0);
-  assert_equals_int64 (media->program_id, 1);
-  assert_equals_int64 (media->width, 640);
-  assert_equals_int64 (media->height, 352);
-  assert_equals_int64 (media->bandwidth, 1251135);
-  assert_equals_string (media->codecs, "avc1.42001f, mp4a.40.2");
-  gst_m3u8_client_free (client);
+  assert_equals_int (g_list_length (master->variants), 1);
+  stream = g_list_nth_data (master->variants, 0);
+
+  assert_equals_int64 (stream->program_id, 1);
+  assert_equals_int64 (stream->width, 640);
+  assert_equals_int64 (stream->height, 352);
+  assert_equals_int64 (stream->bandwidth, 1251135);
+  assert_equals_string (stream->codecs, "avc1.42001f, mp4a.40.2");
+  gst_hls_master_playlist_unref (master);
 }
 
 GST_END_TEST;
@@ -1398,6 +1412,8 @@
   tcase_add_test (tc_m3u8, test_empty_lines_playlist);
   tcase_add_test (tc_m3u8, test_live_playlist);
   tcase_add_test (tc_m3u8, test_live_playlist_rotated);
+  tcase_add_test (tc_m3u8, test_playlist_with_doubles_duration);
+  tcase_add_test (tc_m3u8, test_playlist_with_encryption);
   tcase_add_test (tc_m3u8, test_update_invalid_playlist);
   tcase_add_test (tc_m3u8, test_update_playlist);
   tcase_add_test (tc_m3u8, test_playlist_media_files);
@@ -1414,8 +1430,6 @@
   tcase_add_test (tc_m3u8, test_select_subs_alternate);
   tcase_add_test (tc_m3u8, test_simulation);
 #endif
-  tcase_add_test (tc_m3u8, test_playlist_with_doubles_duration);
-  tcase_add_test (tc_m3u8, test_playlist_with_encryption);
   tcase_add_test (tc_m3u8, test_url_with_slash_query_param);
   tcase_add_test (tc_m3u8, test_stream_inf_tag);
   return s;
diff --git a/tests/check/elements/mssdemux.c b/tests/check/elements/mssdemux.c
index 78a1863..d5cc96c 100644
--- a/tests/check/elements/mssdemux.c
+++ b/tests/check/elements/mssdemux.c
@@ -206,7 +206,7 @@
   gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
   gst_adaptive_demux_test_seek (DEMUX_ELEMENT_NAME,
       "http://unit.test/Manifest", testData);
-  gst_object_unref (testData);
+  g_object_unref (testData);
 }
 
 GST_END_TEST;
@@ -273,7 +273,7 @@
   gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
   gst_adaptive_demux_test_seek (DEMUX_ELEMENT_NAME,
       "http://unit.test/Manifest", testData);
-  gst_object_unref (testData);
+  g_object_unref (testData);
 }
 
 GST_START_TEST (testSeekKeyUnitPosition)
@@ -404,7 +404,7 @@
   gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
   gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME, "http://unit.test/Manifest",
       &test_callbacks, testData);
-  gst_object_unref (testData);
+  g_object_unref (testData);
 }
 
 GST_END_TEST;
@@ -505,7 +505,7 @@
   gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
   gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME,
       "http://unit.test/Manifest", &test_callbacks, testData);
-  gst_object_unref (testData);
+  g_object_unref (testData);
 }
 
 GST_END_TEST;
@@ -597,7 +597,7 @@
   gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
   gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME,
       "http://unit.test/Manifest", &test_callbacks, testData);
-  gst_object_unref (testData);
+  g_object_unref (testData);
 }
 
 GST_END_TEST;
diff --git a/tests/check/elements/pnm.c b/tests/check/elements/pnm.c
new file mode 100644
index 0000000..b3be8cb
--- /dev/null
+++ b/tests/check/elements/pnm.c
@@ -0,0 +1,119 @@
+/* GStreamer
+ *
+ * unit test for PNM encoder / decoder
+ *
+ * Copyright (C) <2016> Jan Schmidt <jan@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+#include <gst/check/gstcheck.h>
+#include <gst/app/gstappsink.h>
+
+/* Create a pnmenc ! pnmdec and push in 
+ * frames, checking that what comes out is what
+ * went in */
+GST_START_TEST (test_pnm_enc_dec)
+{
+  GstElement *pipeline;
+  GstElement *incf, *outcf, *enc;
+  GstElement *sink;
+  GstSample *sample;
+  GstBuffer *buffer;
+  gint i, n;
+
+  struct
+  {
+    const gchar *in_fmt;
+    const gchar *out_fmt;
+  } test_formats[] = {
+    {
+    "RGB", "RGB"}, {
+    "GRAY8", "GRAY8"}, {
+    "GRAY16_BE", "GRAY16_BE"}, {
+    "GRAY16_BE", "GRAY16_LE"}, {
+    "GRAY16_LE", "GRAY16_BE"}, {
+    "GRAY16_LE", "GRAY16_LE"}
+  };
+
+  pipeline =
+      gst_parse_launch
+      ("videotestsrc num-buffers=1 ! capsfilter name=incf ! pnmenc name=enc ! pnmdec ! capsfilter name=outcf ! appsink name=sink",
+      NULL);
+  g_assert (pipeline != NULL);
+
+  incf = gst_bin_get_by_name (GST_BIN (pipeline), "incf");
+  enc = gst_bin_get_by_name (GST_BIN (pipeline), "enc");
+  outcf = gst_bin_get_by_name (GST_BIN (pipeline), "outcf");
+  sink = gst_bin_get_by_name (GST_BIN (pipeline), "sink");
+
+  for (n = 0; n < 2; n++) {
+    for (i = 0; i < G_N_ELEMENTS (test_formats); i++) {
+      GstCaps *incaps = gst_caps_new_simple ("video/x-raw", "width", G_TYPE_INT,
+          320, "height", G_TYPE_INT, 240, "framerate",
+          GST_TYPE_FRACTION, 1, 1, "format", G_TYPE_STRING,
+          test_formats[i].in_fmt, NULL);
+      GstCaps *outcaps =
+          gst_caps_new_simple ("video/x-raw", "width", G_TYPE_INT,
+          320, "height", G_TYPE_INT, 240, "framerate",
+          GST_TYPE_FRACTION, 1, 1, "format", G_TYPE_STRING,
+          test_formats[i].out_fmt, NULL);
+
+      GST_DEBUG ("Setting in caps %" GST_PTR_FORMAT, incaps);
+      g_object_set (G_OBJECT (incf), "caps", incaps, NULL);
+      GST_DEBUG ("Setting out caps %" GST_PTR_FORMAT, outcaps);
+      g_object_set (G_OBJECT (outcf), "caps", outcaps, NULL);
+
+      gst_caps_unref (incaps);
+      gst_caps_unref (outcaps);
+
+      gst_element_set_state (pipeline, GST_STATE_PLAYING);
+
+      sample = gst_app_sink_pull_sample (GST_APP_SINK (sink));
+
+      fail_unless (sample != NULL);
+      buffer = gst_sample_get_buffer (sample);
+      fail_unless (buffer != NULL);
+      gst_sample_unref (sample);
+
+      gst_element_set_state (pipeline, GST_STATE_NULL);
+    }
+
+    g_object_set (enc, "ascii", TRUE, NULL);
+  }
+
+  gst_object_unref (pipeline);
+  gst_object_unref (sink);
+  gst_object_unref (outcf);
+  gst_object_unref (enc);
+  gst_object_unref (incf);
+
+}
+
+GST_END_TEST;
+
+static Suite *
+pnm_suite (void)
+{
+  Suite *s = suite_create ("pnm");
+  TCase *tc_chain = tcase_create ("general");
+
+  suite_add_tcase (s, tc_chain);
+  tcase_add_test (tc_chain, test_pnm_enc_dec);
+
+  return s;
+}
+
+GST_CHECK_MAIN (pnm);
diff --git a/tests/check/elements/rawaudioparse.c b/tests/check/elements/rawaudioparse.c
new file mode 100644
index 0000000..029aab5
--- /dev/null
+++ b/tests/check/elements/rawaudioparse.c
@@ -0,0 +1,395 @@
+/* GStreamer
+ *
+ * unit test for rawaudioparse
+ *
+ * Copyright (C) <2016> Carlos Rafael Giani <dv at pseudoterminal dot org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/* FIXME: GValueArray is deprecated, but there is currently no viabla alternative
+ * See https://bugzilla.gnome.org/show_bug.cgi?id=667228 */
+#define GLIB_DISABLE_DEPRECATION_WARNINGS
+
+#include <gst/check/gstcheck.h>
+#include <gst/audio/audio.h>
+
+/* Checks are hardcoded to expect stereo 16-bit data. The sample rate
+ * however varies from the default of 40 kHz in some tests to see the
+ * differences in calculated buffer durations. */
+#define NUM_TEST_SAMPLES 512
+#define NUM_TEST_CHANNELS 2
+#define TEST_SAMPLE_RATE 40000
+#define TEST_SAMPLE_FORMAT GST_AUDIO_FORMAT_S16
+
+/* For ease of programming we use globals to keep refs for our floating
+ * src and sink pads we create; otherwise we always have to do get_pad,
+ * get_peer, and then remove references in every test function */
+static GstPad *mysrcpad, *mysinkpad;
+
+typedef struct
+{
+  GstElement *rawaudioparse;
+  GstAdapter *test_data_adapter;
+}
+RawAudParseTestCtx;
+
+/* Sets up a rawaudioparse element and a GstAdapter that contains 512 test
+ * audio samples. The samples a monotonically increasing set from the values
+ * 0 to 511 for the left and 512 to 1023 for the right channel. The result
+ * is a GstAdapter that contains the interleaved 16-bit integer values:
+ * 0,512,1,513,2,514, ... 511,1023 . This set is used in the checks to see
+ * if rawaudioparse's output buffers contain valid data. */
+static void
+setup_rawaudioparse (RawAudParseTestCtx * testctx, gboolean use_sink_caps,
+    gboolean set_properties, GstCaps * incaps, GstFormat format)
+{
+  GstElement *rawaudioparse;
+  GstAdapter *test_data_adapter;
+  GstBuffer *buffer;
+  guint i;
+  guint16 samples[NUM_TEST_SAMPLES * NUM_TEST_CHANNELS];
+
+
+  /* Setup the rawaudioparse element and the pads */
+
+  static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
+      GST_PAD_SINK,
+      GST_PAD_ALWAYS,
+      GST_STATIC_CAPS (GST_AUDIO_CAPS_MAKE (GST_AUDIO_FORMATS_ALL))
+      );
+  static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
+      GST_PAD_SRC,
+      GST_PAD_ALWAYS,
+      GST_STATIC_CAPS_ANY);
+
+  rawaudioparse = gst_check_setup_element ("rawaudioparse");
+
+  g_object_set (G_OBJECT (rawaudioparse), "use-sink-caps", use_sink_caps, NULL);
+  if (set_properties)
+    g_object_set (G_OBJECT (rawaudioparse), "sample-rate", TEST_SAMPLE_RATE,
+        "num-channels", NUM_TEST_CHANNELS, "pcm-format", TEST_SAMPLE_FORMAT,
+        NULL);
+
+  fail_unless (gst_element_set_state (rawaudioparse,
+          GST_STATE_PAUSED) == GST_STATE_CHANGE_SUCCESS,
+      "could not set to paused");
+
+  mysrcpad = gst_check_setup_src_pad (rawaudioparse, &srctemplate);
+  mysinkpad = gst_check_setup_sink_pad (rawaudioparse, &sinktemplate);
+
+  gst_pad_set_active (mysrcpad, TRUE);
+  gst_pad_set_active (mysinkpad, TRUE);
+
+  gst_check_setup_events (mysrcpad, rawaudioparse, incaps, format);
+  if (incaps)
+    gst_caps_unref (incaps);
+
+
+  /* Fill the adapter with the interleaved 0..511 and
+   * 512..1023 samples */
+  for (i = 0; i < NUM_TEST_SAMPLES; ++i) {
+    guint c;
+    for (c = 0; c < NUM_TEST_CHANNELS; ++c)
+      samples[i * NUM_TEST_CHANNELS + c] = c * NUM_TEST_SAMPLES + i;
+  }
+
+  test_data_adapter = gst_adapter_new ();
+  buffer = gst_buffer_new_allocate (NULL, sizeof (samples), NULL);
+  gst_buffer_fill (buffer, 0, samples, sizeof (samples));
+  gst_adapter_push (test_data_adapter, buffer);
+
+
+  testctx->rawaudioparse = rawaudioparse;
+  testctx->test_data_adapter = test_data_adapter;
+}
+
+static void
+cleanup_rawaudioparse (RawAudParseTestCtx * testctx)
+{
+  int num_buffers, i;
+
+  gst_pad_set_active (mysrcpad, FALSE);
+  gst_pad_set_active (mysinkpad, FALSE);
+  gst_check_teardown_src_pad (testctx->rawaudioparse);
+  gst_check_teardown_sink_pad (testctx->rawaudioparse);
+  gst_check_teardown_element (testctx->rawaudioparse);
+
+  g_object_unref (G_OBJECT (testctx->test_data_adapter));
+
+  if (buffers != NULL) {
+    num_buffers = g_list_length (buffers);
+    for (i = 0; i < num_buffers; ++i) {
+      GstBuffer *buf = GST_BUFFER (buffers->data);
+      buffers = g_list_remove (buffers, buf);
+      gst_buffer_unref (buf);
+    }
+
+    g_list_free (buffers);
+    buffers = NULL;
+  }
+}
+
+
+static void
+push_data_and_check_output (RawAudParseTestCtx * testctx, gsize num_in_bytes,
+    gsize expected_num_out_bytes, gint64 expected_pts, gint64 expected_dur,
+    guint expected_num_buffers_in_list, guint bpf, guint16 channel0_start,
+    guint16 channel1_start)
+{
+  GstBuffer *inbuf, *outbuf;
+  guint num_buffers;
+
+  /* Simulate upstream input by taking num_in_bytes bytes from the adapter */
+  inbuf = gst_adapter_take_buffer (testctx->test_data_adapter, num_in_bytes);
+  fail_unless (inbuf != NULL);
+
+  /* Push the input data and check that the output buffers list grew as
+   * expected */
+  fail_unless (gst_pad_push (mysrcpad, inbuf) == GST_FLOW_OK);
+  num_buffers = g_list_length (buffers);
+  fail_unless_equals_int (num_buffers, expected_num_buffers_in_list);
+
+  /* Take the latest output buffer */
+  outbuf = g_list_nth_data (buffers, num_buffers - 1);
+  fail_unless (outbuf != NULL);
+
+  /* Verify size, PTS, duration of the output buffer */
+  fail_unless_equals_uint64 (expected_num_out_bytes,
+      gst_buffer_get_size (outbuf));
+  fail_unless_equals_uint64 (expected_pts, GST_BUFFER_PTS (outbuf));
+  fail_unless_equals_uint64 (expected_dur, GST_BUFFER_DURATION (outbuf));
+
+  /* Go through all of the samples in the output buffer and check that they are
+   * valid. The samples are interleaved. The offsets specified by channel0_start
+   * and channel1_start are the expected values of the first sample for each
+   * channel in the buffer. So, if channel0_start is 512, then sample #0 in the
+   * buffer must have value 512, and if channel1_start is 700, then sample #1
+   * in the buffer must have value 700 etc. */
+  {
+    guint i, num_frames;
+    guint16 *s;
+    GstMapInfo map_info;
+    guint channel_starts[2] = { channel0_start, channel1_start };
+
+    gst_buffer_map (outbuf, &map_info, GST_MAP_READ);
+    num_frames = map_info.size / bpf;
+    s = (guint16 *) (map_info.data);
+
+    for (i = 0; i < num_frames; ++i) {
+      guint c;
+
+      for (c = 0; i < NUM_TEST_CHANNELS; ++i) {
+        guint16 expected = channel_starts[c] + i;
+        guint16 actual = s[i * NUM_TEST_CHANNELS + c];
+
+        fail_unless_equals_int (expected, actual);
+      }
+    }
+
+    gst_buffer_unmap (outbuf, &map_info);
+  }
+}
+
+
+GST_START_TEST (test_push_unaligned_data_properties_config)
+{
+  RawAudParseTestCtx testctx;
+
+  setup_rawaudioparse (&testctx, FALSE, TRUE, NULL, GST_FORMAT_BYTES);
+
+  /* Send in data buffers that are not aligned to multiples of the
+   * frame size (= sample size * num_channels). This tests if rawaudioparse
+   * aligns output data properly.
+   *
+   * The second line sends in 99 bytes, and expects 100 bytes in the
+   * output buffer. This is because the first buffer contains 45 bytes,
+   * and rawaudioparse is expected to output 44 bytes (which is an integer
+   * multiple of the frame size). The leftover 1 byte then gets prepended
+   * to the input buffer with 99 bytes, resulting in 100 bytes, which is
+   * an integer multiple of the frame size.
+   */
+
+  push_data_and_check_output (&testctx, 45, 44, GST_USECOND * 0,
+      GST_USECOND * 275, 1, 4, 0, 512);
+  push_data_and_check_output (&testctx, 99, 100, GST_USECOND * 275,
+      GST_USECOND * 625, 2, 4, 11, 523);
+  push_data_and_check_output (&testctx, 18, 16, GST_USECOND * 900,
+      GST_USECOND * 100, 3, 4, 36, 548);
+
+  cleanup_rawaudioparse (&testctx);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_push_unaligned_data_sink_caps_config)
+{
+  RawAudParseTestCtx testctx;
+  GstAudioInfo ainfo;
+  GstCaps *caps;
+
+  /* This test is essentially the same as test_push_unaligned_data_properties_config,
+   * except that rawaudioparse uses the sink caps config instead of the property config. */
+
+  gst_audio_info_set_format (&ainfo, TEST_SAMPLE_FORMAT, TEST_SAMPLE_RATE,
+      NUM_TEST_CHANNELS, NULL);
+  caps = gst_audio_info_to_caps (&ainfo);
+
+  setup_rawaudioparse (&testctx, TRUE, FALSE, caps, GST_FORMAT_BYTES);
+
+  push_data_and_check_output (&testctx, 45, 44, GST_USECOND * 0,
+      GST_USECOND * 275, 1, 4, 0, 512);
+  push_data_and_check_output (&testctx, 99, 100, GST_USECOND * 275,
+      GST_USECOND * 625, 2, 4, 11, 523);
+  push_data_and_check_output (&testctx, 18, 16, GST_USECOND * 900,
+      GST_USECOND * 100, 3, 4, 36, 548);
+
+  cleanup_rawaudioparse (&testctx);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_push_swapped_channels)
+{
+  RawAudParseTestCtx testctx;
+  GValueArray *valarray;
+  GValue val = G_VALUE_INIT;
+
+  /* Send in 40 bytes and use a nonstandard channel order (left and right channels
+   * swapped). Expected behavior is for rawaudioparse to reorder the samples inside
+   * output buffers to conform to the GStreamer channel order. For this reason,
+   * channel0 offset is 512 and channel1 offset is 0 in the check below. */
+
+  setup_rawaudioparse (&testctx, FALSE, TRUE, NULL, GST_FORMAT_BYTES);
+
+  valarray = g_value_array_new (2);
+  g_value_init (&val, GST_TYPE_AUDIO_CHANNEL_POSITION);
+  g_value_set_enum (&val, GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT);
+  g_value_array_insert (valarray, 0, &val);
+  g_value_set_enum (&val, GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT);
+  g_value_array_insert (valarray, 1, &val);
+  g_object_set (G_OBJECT (testctx.rawaudioparse), "channel-positions",
+      valarray, NULL);
+  g_value_array_free (valarray);
+  g_value_unset (&val);
+
+  push_data_and_check_output (&testctx, 40, 40, GST_USECOND * 0,
+      GST_USECOND * 250, 1, 4, 512, 0);
+
+  cleanup_rawaudioparse (&testctx);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_config_switch)
+{
+  RawAudParseTestCtx testctx;
+  GstAudioInfo ainfo;
+  GstCaps *caps;
+
+  /* Start processing with the properties config active, then mid-stream switch to
+   * the sink caps config. The properties config is altered to have a different
+   * sample rate than the sink caps to be able to detect the switch. The net effect
+   * is that output buffer durations are altered. For example, 40 bytes equal
+   * 10 samples, and this equals 500 us with 20 kHz or 250 us with 40 kHz. */
+
+  gst_audio_info_set_format (&ainfo, TEST_SAMPLE_FORMAT, TEST_SAMPLE_RATE,
+      NUM_TEST_CHANNELS, NULL);
+  caps = gst_audio_info_to_caps (&ainfo);
+
+  setup_rawaudioparse (&testctx, FALSE, TRUE, caps, GST_FORMAT_BYTES);
+
+  g_object_set (G_OBJECT (testctx.rawaudioparse), "sample-rate", 20000, NULL);
+
+  /* Push in data with properties config active, expecting duration calculations
+   * to be based on the 20 kHz sample rate */
+  push_data_and_check_output (&testctx, 40, 40, GST_USECOND * 0,
+      GST_USECOND * 500, 1, 4, 0, 512);
+  push_data_and_check_output (&testctx, 20, 20, GST_USECOND * 500,
+      GST_USECOND * 250, 2, 4, 10, 522);
+
+  /* Perform the switch */
+  g_object_set (G_OBJECT (testctx.rawaudioparse), "use-sink-caps", TRUE, NULL);
+
+  /* Push in data with sink caps config active, expecting duration calculations
+   * to be based on the 40 kHz sample rate */
+  push_data_and_check_output (&testctx, 40, 40, GST_USECOND * 750,
+      GST_USECOND * 250, 3, 4, 15, 527);
+
+  cleanup_rawaudioparse (&testctx);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_change_caps)
+{
+  RawAudParseTestCtx testctx;
+  GstAudioInfo ainfo;
+  GstCaps *caps;
+
+  /* Start processing with the sink caps config active, using the
+   * default channel count and sample format and 20 kHz sample rate
+   * for the caps. Push some data, then change caps (20 kHz -> 40 kHz).
+   * Check that the changed caps are handled properly. */
+
+  gst_audio_info_set_format (&ainfo, TEST_SAMPLE_FORMAT, 20000,
+      NUM_TEST_CHANNELS, NULL);
+  caps = gst_audio_info_to_caps (&ainfo);
+
+  setup_rawaudioparse (&testctx, TRUE, FALSE, caps, GST_FORMAT_BYTES);
+
+  /* Push in data with caps sink config active, expecting duration calculations
+   * to be based on the 20 kHz sample rate */
+  push_data_and_check_output (&testctx, 40, 40, GST_USECOND * 0,
+      GST_USECOND * 500, 1, 4, 0, 512);
+  push_data_and_check_output (&testctx, 20, 20, GST_USECOND * 500,
+      GST_USECOND * 250, 2, 4, 10, 522);
+
+  /* Change caps */
+  gst_audio_info_set_format (&ainfo, TEST_SAMPLE_FORMAT, 40000,
+      NUM_TEST_CHANNELS, NULL);
+  caps = gst_audio_info_to_caps (&ainfo);
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_caps (caps)));
+  gst_caps_unref (caps);
+
+  /* Push in data with the new caps, expecting duration calculations
+   * to be based on the 40 kHz sample rate */
+  push_data_and_check_output (&testctx, 40, 40, GST_USECOND * 750,
+      GST_USECOND * 250, 3, 4, 15, 527);
+
+  cleanup_rawaudioparse (&testctx);
+}
+
+GST_END_TEST;
+
+
+static Suite *
+rawaudioparse_suite (void)
+{
+  Suite *s = suite_create ("rawaudioparse");
+  TCase *tc_chain = tcase_create ("general");
+
+  suite_add_tcase (s, tc_chain);
+  tcase_add_test (tc_chain, test_push_unaligned_data_properties_config);
+  tcase_add_test (tc_chain, test_push_unaligned_data_sink_caps_config);
+  tcase_add_test (tc_chain, test_push_swapped_channels);
+  tcase_add_test (tc_chain, test_config_switch);
+  tcase_add_test (tc_chain, test_change_caps);
+
+  return s;
+}
+
+GST_CHECK_MAIN (rawaudioparse);
diff --git a/tests/check/elements/rawvideoparse.c b/tests/check/elements/rawvideoparse.c
new file mode 100644
index 0000000..477e767
--- /dev/null
+++ b/tests/check/elements/rawvideoparse.c
@@ -0,0 +1,628 @@
+/* GStreamer
+ *
+ * unit test for rawvideoparse
+ *
+ * Copyright (C) <2016> Carlos Rafael Giani <dv at pseudoterminal dot org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/* FIXME: GValueArray is deprecated, but there is currently no viabla alternative
+ * See https://bugzilla.gnome.org/show_bug.cgi?id=667228 */
+#define GLIB_DISABLE_DEPRECATION_WARNINGS
+
+#include <gst/check/gstcheck.h>
+#include <gst/video/video.h>
+
+/* The checks use as test data an 8x8 Y444 image, with 25 Hz framerate. In the
+ * sink caps configuration, the stride is 8 bytes, and the frames are tightly
+ * packed together. In the properties configuration, the stride is 10 bytes, the
+ * planes aren't tightly packed (there are 20 bytes between the planes), and the
+ * frames overall have padding between them (the overall frame size is
+ * stride (10) * height (8) * num-planes (3) + bytes-between-planes (20) * 2
+ * = 280 bytes, and the frame stride is 500 bytes, so there are 220 bytes of
+ * extra padding between frames).
+ *
+ * In the test 8x8 frame, the pixels are all set to #000000, except for two
+ * pixels: (xofs+1 yofs+0) is set to #8899AA, (xofs+0 yofs+1) is set to #112233.
+ * The first frame uses the offsets xofs=0 yofs=0. The second frame uses
+ * xofs=1 yofs=0 etc. For each configuration, there is a separate set of frames,
+ * each stored in the GstAdapter in the Context struct.
+ *
+ * During the tests, as part of the checks, the pixels are verified to have the
+ * right values. The pattern of the pixels was chosen to easily detect stride
+ * errors, incorrect plane offsets etc.
+ */
+
+#define TEST_WIDTH 8
+#define TEST_HEIGHT 8
+#define TEST_FRAMERATE_N 25
+#define TEST_FRAMERATE_D 1
+#define TEST_FRAME_FORMAT GST_VIDEO_FORMAT_Y444
+#define NUM_TEST_PLANES 3
+
+#define PROP_CTX_PLANE_STRIDE 10
+#define PROP_CTX_FRAME_STRIDE 500
+#define PROP_CTX_PLANE_PADDING 20
+#define PROP_CTX_PLANE_SIZE (PROP_CTX_PLANE_STRIDE * TEST_HEIGHT + PROP_CTX_PLANE_PADDING)
+
+GstElement *rawvideoparse;
+
+/* For ease of programming we use globals to keep refs for our floating
+ * src and sink pads we create; otherwise we always have to do get_pad,
+ * get_peer, and then remove references in every test function */
+static GstPad *mysrcpad, *mysinkpad;
+
+typedef struct
+{
+  GstAdapter *data;
+  guint plane_stride;
+  guint plane_size;
+}
+Context;
+
+static Context properties_ctx, sinkcaps_ctx;
+
+static void
+set_pixel (Context const *ctx, guint8 * pixels, guint x, guint y, guint32 color)
+{
+  guint i;
+  guint ofs = y * ctx->plane_stride + x;
+  for (i = 0; i < NUM_TEST_PLANES; ++i)
+    pixels[ctx->plane_size * i + ofs] =
+        (color >> ((NUM_TEST_PLANES - 1 - i) * 8)) & 0xFF;
+}
+
+static guint32
+get_pixel (Context const *ctx, const guint8 * pixels, guint x, guint y)
+{
+  guint i;
+  guint ofs = y * ctx->plane_stride + x;
+  guint32 color = 0;
+  for (i = 0; i < NUM_TEST_PLANES; ++i)
+    color |=
+        ((guint32) (pixels[ctx->plane_size * i + ofs])) << ((NUM_TEST_PLANES -
+            1 - i) * 8);
+  return color;
+}
+
+static void
+fill_test_pattern (Context const *ctx, GstBuffer * buffer, guint xofs,
+    guint yofs)
+{
+  guint8 *pixels;
+  GstMapInfo map_info;
+
+  gst_buffer_map (buffer, &map_info, GST_MAP_WRITE);
+  pixels = map_info.data;
+
+  memset (pixels, 0, ctx->plane_size * NUM_TEST_PLANES);
+  set_pixel (ctx, pixels, 1 + xofs, 0 + yofs, 0x8899AA);
+  set_pixel (ctx, pixels, 0 + xofs, 1 + yofs, 0x112233);
+
+  gst_buffer_unmap (buffer, &map_info);
+}
+
+static void
+check_test_pattern (Context const *ctx, GstBuffer * buffer, guint xofs,
+    guint yofs)
+{
+  guint x, y;
+  guint8 *pixels;
+  GstMapInfo map_info;
+
+  gst_buffer_map (buffer, &map_info, GST_MAP_READ);
+  pixels = map_info.data;
+
+  fail_unless_equals_uint64_hex (get_pixel (ctx, pixels, 1 + xofs, 0 + yofs),
+      0x8899AA);
+  fail_unless_equals_uint64_hex (get_pixel (ctx, pixels, 0 + xofs, 1 + yofs),
+      0x112233);
+
+  for (y = 0; y < TEST_HEIGHT; ++y) {
+    for (x = 0; x < TEST_WIDTH; ++x) {
+      if ((x == (1 + xofs) && y == (0 + yofs)) || (x == (0 + xofs)
+              && y == (1 + yofs)))
+        continue;
+
+      fail_unless_equals_uint64_hex (get_pixel (ctx, pixels, x, y), 0x000000);
+    }
+  }
+
+  gst_buffer_unmap (buffer, &map_info);
+}
+
+
+static void
+setup_rawvideoparse (gboolean use_sink_caps,
+    gboolean set_properties, GstCaps * incaps, GstFormat format)
+{
+  guint i;
+
+
+  /* Setup the rawvideoparse element and the pads */
+
+  static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
+      GST_PAD_SINK,
+      GST_PAD_ALWAYS,
+      GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE (GST_VIDEO_FORMATS_ALL))
+      );
+  static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
+      GST_PAD_SRC,
+      GST_PAD_ALWAYS,
+      GST_STATIC_CAPS_ANY);
+
+  rawvideoparse = gst_check_setup_element ("rawvideoparse");
+
+  properties_ctx.plane_stride = PROP_CTX_PLANE_STRIDE;
+  properties_ctx.plane_size = PROP_CTX_PLANE_SIZE;
+  properties_ctx.data = gst_adapter_new ();
+
+  sinkcaps_ctx.plane_stride = TEST_WIDTH;
+  sinkcaps_ctx.plane_size = TEST_WIDTH * TEST_HEIGHT;
+  sinkcaps_ctx.data = gst_adapter_new ();
+
+  g_object_set (G_OBJECT (rawvideoparse), "use-sink-caps", use_sink_caps, NULL);
+  if (set_properties) {
+    GValueArray *plane_offsets, *plane_strides;
+    GValue val = G_VALUE_INIT;
+
+    g_value_init (&val, G_TYPE_UINT);
+
+    plane_offsets = g_value_array_new (NUM_TEST_PLANES);
+    for (i = 0; i < NUM_TEST_PLANES; ++i) {
+      g_value_set_uint (&val, properties_ctx.plane_size * i);
+      g_value_array_insert (plane_offsets, i, &val);
+    }
+
+    plane_strides = g_value_array_new (NUM_TEST_PLANES);
+    for (i = 0; i < NUM_TEST_PLANES; ++i) {
+      g_value_set_uint (&val, properties_ctx.plane_stride);
+      g_value_array_insert (plane_strides, i, &val);
+    }
+
+    g_value_unset (&val);
+
+    g_object_set (G_OBJECT (rawvideoparse), "width", TEST_WIDTH, "height",
+        TEST_HEIGHT, "frame-stride", PROP_CTX_FRAME_STRIDE, "framerate",
+        TEST_FRAMERATE_N, TEST_FRAMERATE_D, "plane-offsets", plane_offsets,
+        "plane-strides", plane_strides, "format", TEST_FRAME_FORMAT, NULL);
+
+    g_value_array_free (plane_offsets);
+    g_value_array_free (plane_strides);
+  }
+
+  /* Check that the plane stride/offset values are correct */
+  {
+    GValueArray *plane_offsets_array;
+    GValueArray *plane_strides_array;
+    /* By default, 320x240 i420 is used as format */
+    guint plane_offsets[3] = { 0, 76800, 96000 };
+    guint plane_strides[3] = { 320, 160, 160 };
+
+    if (set_properties) {
+      /* When properties are explicitely set, we use Y444 as video format,
+       * so in that case, plane stride values are all the same */
+      plane_offsets[0] = properties_ctx.plane_size * 0;
+      plane_offsets[1] = properties_ctx.plane_size * 1;
+      plane_offsets[2] = properties_ctx.plane_size * 2;
+      plane_strides[0] = plane_strides[1] = plane_strides[2] =
+          properties_ctx.plane_stride;
+    }
+
+    g_object_get (G_OBJECT (rawvideoparse), "plane-offsets",
+        &plane_offsets_array, "plane-strides", &plane_strides_array, NULL);
+    fail_unless (plane_offsets_array != NULL);
+    fail_unless (plane_strides_array != NULL);
+    fail_unless (plane_offsets_array->n_values ==
+        plane_strides_array->n_values);
+
+    for (i = 0; i < plane_offsets_array->n_values; ++i) {
+      GValue *gvalue;
+
+      gvalue = g_value_array_get_nth (plane_offsets_array, i);
+      fail_unless (gvalue != NULL);
+      fail_unless_equals_uint64 (plane_offsets[i], g_value_get_uint (gvalue));
+
+      gvalue = g_value_array_get_nth (plane_strides_array, i);
+      fail_unless (gvalue != NULL);
+      fail_unless_equals_uint64 (plane_strides[i], g_value_get_uint (gvalue));
+    }
+
+    g_value_array_free (plane_offsets_array);
+    g_value_array_free (plane_strides_array);
+  }
+
+  fail_unless (gst_element_set_state (rawvideoparse,
+          GST_STATE_PAUSED) == GST_STATE_CHANGE_SUCCESS,
+      "could not set to paused");
+
+  mysrcpad = gst_check_setup_src_pad (rawvideoparse, &srctemplate);
+  mysinkpad = gst_check_setup_sink_pad (rawvideoparse, &sinktemplate);
+
+  gst_pad_set_active (mysrcpad, TRUE);
+  gst_pad_set_active (mysinkpad, TRUE);
+
+  gst_check_setup_events (mysrcpad, rawvideoparse, incaps, format);
+  if (incaps)
+    gst_caps_unref (incaps);
+
+
+  /* Fill the adapters with test frames */
+
+  for (i = 0; i < 10; ++i) {
+    GstBuffer *buffer =
+        gst_buffer_new_allocate (NULL, PROP_CTX_FRAME_STRIDE, NULL);
+    gst_buffer_memset (buffer, 0, 0xCC, gst_buffer_get_size (buffer));
+    fill_test_pattern (&properties_ctx, buffer, i, 0);
+    gst_adapter_push (properties_ctx.data, buffer);
+  }
+
+  for (i = 0; i < 10; ++i) {
+    GstBuffer *buffer =
+        gst_buffer_new_allocate (NULL, sinkcaps_ctx.plane_size * 3, NULL);
+    gst_buffer_memset (buffer, 0, 0xCC, gst_buffer_get_size (buffer));
+    fill_test_pattern (&sinkcaps_ctx, buffer, i, 0);
+    gst_adapter_push (sinkcaps_ctx.data, buffer);
+  }
+}
+
+static void
+cleanup_rawvideoparse (void)
+{
+  int num_buffers, i;
+
+  gst_pad_set_active (mysrcpad, FALSE);
+  gst_pad_set_active (mysinkpad, FALSE);
+  gst_check_teardown_src_pad (rawvideoparse);
+  gst_check_teardown_sink_pad (rawvideoparse);
+  gst_check_teardown_element (rawvideoparse);
+
+  g_object_unref (G_OBJECT (properties_ctx.data));
+  g_object_unref (G_OBJECT (sinkcaps_ctx.data));
+
+  if (buffers != NULL) {
+    num_buffers = g_list_length (buffers);
+    for (i = 0; i < num_buffers; ++i) {
+      GstBuffer *buf = GST_BUFFER (buffers->data);
+      buffers = g_list_remove (buffers, buf);
+      gst_buffer_unref (buf);
+    }
+
+    g_list_free (buffers);
+    buffers = NULL;
+  }
+}
+
+static void
+push_data_and_check_output (Context * ctx, gsize num_in_bytes,
+    gsize expected_num_out_bytes, gint64 expected_pts, gint64 expected_dur,
+    guint expected_num_buffers_in_list, guint buf_idx, guint xofs, guint yofs)
+{
+  GstBuffer *inbuf, *outbuf;
+  guint num_buffers;
+
+  /* Simulate upstream input by taking num_in_bytes bytes from the adapter */
+  inbuf = gst_adapter_take_buffer (ctx->data, num_in_bytes);
+  fail_unless (inbuf != NULL);
+
+  /* Push the input data and check that the output buffers list grew as
+   * expected */
+  fail_unless (gst_pad_push (mysrcpad, inbuf) == GST_FLOW_OK);
+  num_buffers = g_list_length (buffers);
+  fail_unless_equals_int (num_buffers, expected_num_buffers_in_list);
+
+  /* Take the output buffer */
+  outbuf = g_list_nth_data (buffers, buf_idx);
+  fail_unless (outbuf != NULL);
+
+  /* Verify size, PTS, duration of the output buffer */
+  fail_unless_equals_uint64 (expected_num_out_bytes,
+      gst_buffer_get_size (outbuf));
+  fail_unless_equals_uint64 (expected_pts, GST_BUFFER_PTS (outbuf));
+  fail_unless_equals_uint64 (expected_dur, GST_BUFFER_DURATION (outbuf));
+
+  /* Check that the pixels have the correct values */
+  check_test_pattern (ctx, outbuf, xofs, yofs);
+}
+
+
+GST_START_TEST (test_push_unaligned_data_properties_config)
+{
+  setup_rawvideoparse (FALSE, TRUE, NULL, GST_FORMAT_BYTES);
+
+  /* Send in data buffers that are not aligned to multiples of the
+   * frame size (= sample size * num_channels). This tests if rawvideoparse
+   * aligns output data properly.
+   *
+   * The second line sends a buffer with multiple frames inside.
+   * rawvideoparse will then parse this buffer repeatedly (and prepend
+   * leftover data from the earlier parse iteration), explaining why
+   * all of a sudden there are 4 output buffers, compared to just one
+   * earlier. The output data is expected to be 280 bytes large, since this
+   * is the size of the actual frame, without extra padding at the end.
+   */
+  push_data_and_check_output (&properties_ctx, 511, 280, GST_MSECOND * 0,
+      GST_MSECOND * 40, 1, 0, 0, 0);
+  push_data_and_check_output (&properties_ctx, 1940, 280, GST_MSECOND * 40,
+      GST_MSECOND * 40, 4, 1, 1, 0);
+  push_data_and_check_output (&properties_ctx, 10, 280, GST_MSECOND * 80,
+      GST_MSECOND * 40, 4, 2, 2, 0);
+
+  cleanup_rawvideoparse ();
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_push_unaligned_data_sink_caps_config)
+{
+  GstVideoInfo vinfo;
+  GstCaps *caps;
+
+  /* This test is essentially the same as test_push_unaligned_data_properties_config,
+   * except that rawvideoparse uses the sink caps config instead of the property config.
+   * Also, the input sizes are different, since the sink caps config does not use extra
+   * padding between planes and does use a stride that directly corresponds to the width,
+   * resulting in smaller frame size (192 bytes vs 280 bytes). */
+
+  gst_video_info_set_format (&vinfo, TEST_FRAME_FORMAT, TEST_WIDTH,
+      TEST_HEIGHT);
+  GST_VIDEO_INFO_FPS_N (&vinfo) = 25;
+  GST_VIDEO_INFO_FPS_D (&vinfo) = 1;
+  caps = gst_video_info_to_caps (&vinfo);
+
+  setup_rawvideoparse (TRUE, FALSE, caps, GST_FORMAT_BYTES);
+
+  push_data_and_check_output (&sinkcaps_ctx, 250, 192, GST_MSECOND * 0,
+      GST_MSECOND * 40, 1, 0, 0, 0);
+  push_data_and_check_output (&sinkcaps_ctx, 811, 192, GST_MSECOND * 40,
+      GST_MSECOND * 40, 5, 1, 1, 0);
+  push_data_and_check_output (&sinkcaps_ctx, 10, 192, GST_MSECOND * 80,
+      GST_MSECOND * 40, 5, 2, 2, 0);
+
+  cleanup_rawvideoparse ();
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_config_switch)
+{
+  GstVideoInfo vinfo;
+  GstCaps *caps;
+
+  /* Start processing with the properties config active, then mid-stream switch to
+   * the sink caps config. Since the sink caps config does not use padding, its
+   * frame size is smaller. The buffer duration stays the same (since it only depends
+   * on the framerate), but the expected output buffer size is different). */
+
+  gst_video_info_set_format (&vinfo, TEST_FRAME_FORMAT, TEST_WIDTH,
+      TEST_HEIGHT);
+  GST_VIDEO_INFO_FPS_N (&vinfo) = 25;
+  GST_VIDEO_INFO_FPS_D (&vinfo) = 1;
+  caps = gst_video_info_to_caps (&vinfo);
+
+  setup_rawvideoparse (FALSE, TRUE, caps, GST_FORMAT_BYTES);
+
+  /* Push in data with properties config active */
+  push_data_and_check_output (&properties_ctx, 500, 280, GST_MSECOND * 0,
+      GST_MSECOND * 40, 1, 0, 0, 0);
+  push_data_and_check_output (&properties_ctx, 500, 280, GST_MSECOND * 40,
+      GST_MSECOND * 40, 2, 1, 1, 0);
+
+  /* Perform the switch */
+  g_object_set (G_OBJECT (rawvideoparse), "use-sink-caps", TRUE, NULL);
+
+  /* Push in data with sink caps config active, expecting a different frame size */
+  push_data_and_check_output (&sinkcaps_ctx, 192, 192, GST_MSECOND * 80,
+      GST_MSECOND * 40, 3, 2, 0, 0);
+
+  cleanup_rawvideoparse ();
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_push_with_no_framerate)
+{
+  /* Test the special case when no framerate is set. The parser is expected to
+   * still work then, but without setting duration or PTS/DTS (it cannot do that,
+   * because these require a nonzero framerate). The output buffers have PTS 0,
+   * all subsequent ones have no set PTS. */
+
+  setup_rawvideoparse (FALSE, TRUE, NULL, GST_FORMAT_BYTES);
+  g_object_set (G_OBJECT (rawvideoparse), "framerate", 0, 1, NULL);
+
+  push_data_and_check_output (&properties_ctx, 500, 280, 0, GST_CLOCK_TIME_NONE,
+      1, 0, 0, 0);
+  push_data_and_check_output (&properties_ctx, 500, 280, GST_CLOCK_TIME_NONE,
+      GST_CLOCK_TIME_NONE, 2, 1, 1, 0);
+
+  cleanup_rawvideoparse ();
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_computed_plane_strides)
+{
+  /* Test how plane strides & offsets are (re)computed if custom offsets/strides
+   * are disabled, and how they are preserved if they are enabled. */
+
+  GValueArray *plane_offsets_array;
+  GValueArray *plane_strides_array;
+  guint i;
+  guint const expected_comp_psize = TEST_WIDTH * TEST_HEIGHT;
+
+  setup_rawvideoparse (FALSE, TRUE, NULL, GST_FORMAT_BYTES);
+
+
+  /* The setup set a custom set of plane offsets and strides together with
+   * width=TEST_WIDTH and height=TEST_HEIGHT. Check that the offsets & strides
+   * are preserved even after setting new, different width & height values. */
+
+  g_object_set (G_OBJECT (rawvideoparse), "width", TEST_WIDTH * 2,
+      "height", TEST_HEIGHT * 2, NULL);
+
+  g_object_get (G_OBJECT (rawvideoparse), "plane-offsets",
+      &plane_offsets_array, "plane-strides", &plane_strides_array, NULL);
+
+  for (i = 0; i < plane_offsets_array->n_values; ++i) {
+    GValue *gvalue;
+
+    /* See setup_rawvideoparse() for how the offsets & strides are defined
+     * there. Offsets are set to plane_size*plane_index, and strides are
+     * set to the properties_ctx.plane_stride value. */
+
+    gvalue = g_value_array_get_nth (plane_offsets_array, i);
+    fail_unless (gvalue != NULL);
+    fail_unless_equals_uint64 (properties_ctx.plane_size * i,
+        g_value_get_uint (gvalue));
+
+    gvalue = g_value_array_get_nth (plane_strides_array, i);
+    fail_unless (gvalue != NULL);
+    fail_unless_equals_uint64 (properties_ctx.plane_stride,
+        g_value_get_uint (gvalue));
+  }
+
+  g_value_array_free (plane_offsets_array);
+  g_value_array_free (plane_strides_array);
+
+
+  /* Discard the custom planes&offsets, re-enabling computed values. */
+  g_object_set (G_OBJECT (rawvideoparse), "plane-offsets", (GValueArray *) NULL,
+      "plane-strides", (GValueArray *) NULL, NULL);
+
+
+  /* The strides & offsets should have been recomputed by now. Since the Y444
+   * format is used, all strides are the same, and should equal the frame width
+   * (which was set to TEST_WIDTH*2 earlier). Plane offsets should be
+   * plane_size*plane_index, with plane_size set to (TEST_WIDTH*2 * TEST_HEIGHT*2),
+   * or TEST_WIDTH*TEST_HEIGHT*4 (-> expected_comp_psize*4). */
+
+  g_object_get (G_OBJECT (rawvideoparse), "plane-offsets",
+      &plane_offsets_array, "plane-strides", &plane_strides_array, NULL);
+
+  for (i = 0; i < plane_offsets_array->n_values; ++i) {
+    GValue *gvalue;
+
+    gvalue = g_value_array_get_nth (plane_offsets_array, i);
+    fail_unless (gvalue != NULL);
+    fail_unless_equals_uint64 (expected_comp_psize * 4 * i,
+        g_value_get_uint (gvalue));
+
+    gvalue = g_value_array_get_nth (plane_strides_array, i);
+    fail_unless (gvalue != NULL);
+    fail_unless_equals_uint64 (TEST_WIDTH * 2, g_value_get_uint (gvalue));
+  }
+
+  g_value_array_free (plane_offsets_array);
+  g_value_array_free (plane_strides_array);
+
+
+  /* Again change the width & height values. width=TEST_WIDTH, height=TEST_HEIGHT.
+   * However, this time, offsets&strides are computed; the current values should
+   * not be preserved. Expected plane stride and offset values are similar to
+   * above, expect that no multiplications by 2 are present (since the TEST_WIDTH
+   * and TEST_HEIGHT values were passed without multiplying them). */
+
+  g_object_set (G_OBJECT (rawvideoparse), "width", TEST_WIDTH,
+      "height", TEST_HEIGHT, NULL);
+
+
+  g_object_get (G_OBJECT (rawvideoparse), "plane-offsets",
+      &plane_offsets_array, "plane-strides", &plane_strides_array, NULL);
+
+  for (i = 0; i < plane_offsets_array->n_values; ++i) {
+    GValue *gvalue;
+
+    gvalue = g_value_array_get_nth (plane_offsets_array, i);
+    fail_unless (gvalue != NULL);
+    fail_unless_equals_uint64 (expected_comp_psize * i,
+        g_value_get_uint (gvalue));
+
+    gvalue = g_value_array_get_nth (plane_strides_array, i);
+    fail_unless (gvalue != NULL);
+    fail_unless_equals_uint64 (TEST_WIDTH, g_value_get_uint (gvalue));
+  }
+
+  g_value_array_free (plane_offsets_array);
+  g_value_array_free (plane_strides_array);
+
+
+  cleanup_rawvideoparse ();
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_change_caps)
+{
+  GstVideoInfo vinfo;
+  GstCaps *caps;
+
+  /* Start processing with the sink caps config active, using the
+   * default width/height/format and 25 Hz frame rate for the caps.
+   * Push some data, then change caps (25 Hz -> 50 Hz).
+   * Check that the changed caps are handled properly. */
+
+  gst_video_info_set_format (&vinfo, TEST_FRAME_FORMAT, TEST_WIDTH,
+      TEST_HEIGHT);
+  GST_VIDEO_INFO_FPS_N (&vinfo) = 25;
+  GST_VIDEO_INFO_FPS_D (&vinfo) = 1;
+  caps = gst_video_info_to_caps (&vinfo);
+
+  setup_rawvideoparse (TRUE, FALSE, caps, GST_FORMAT_BYTES);
+
+  /* Push in data with sink config active, expecting duration calculations
+   * to be based on the 25 Hz frame rate */
+  push_data_and_check_output (&sinkcaps_ctx, 192, 192, GST_MSECOND * 0,
+      GST_MSECOND * 40, 1, 0, 0, 0);
+  push_data_and_check_output (&sinkcaps_ctx, 192, 192, GST_MSECOND * 40,
+      GST_MSECOND * 40, 2, 1, 1, 0);
+
+  /* Change caps */
+  GST_VIDEO_INFO_FPS_N (&vinfo) = 50;
+  GST_VIDEO_INFO_FPS_D (&vinfo) = 1;
+  caps = gst_video_info_to_caps (&vinfo);
+  fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_caps (caps)));
+  gst_caps_unref (caps);
+
+  /* Push in data with sink config active, expecting duration calculations
+   * to be based on the 50 Hz frame rate */
+  push_data_and_check_output (&sinkcaps_ctx, 192, 192, GST_MSECOND * 80,
+      GST_MSECOND * 20, 3, 2, 2, 0);
+
+  cleanup_rawvideoparse ();
+}
+
+GST_END_TEST;
+
+
+static Suite *
+rawvideoparse_suite (void)
+{
+  Suite *s = suite_create ("rawvideoparse");
+  TCase *tc_chain = tcase_create ("general");
+
+  suite_add_tcase (s, tc_chain);
+  tcase_add_test (tc_chain, test_push_unaligned_data_properties_config);
+  tcase_add_test (tc_chain, test_push_unaligned_data_sink_caps_config);
+  tcase_add_test (tc_chain, test_config_switch);
+  tcase_add_test (tc_chain, test_push_with_no_framerate);
+  tcase_add_test (tc_chain, test_computed_plane_strides);
+  tcase_add_test (tc_chain, test_change_caps);
+
+  return s;
+}
+
+GST_CHECK_MAIN (rawvideoparse);
diff --git a/tests/check/elements/rtponviftimestamp.c b/tests/check/elements/rtponviftimestamp.c
index 09413a8..f5c6c7c 100644
--- a/tests/check/elements/rtponviftimestamp.c
+++ b/tests/check/elements/rtponviftimestamp.c
@@ -250,7 +250,8 @@
 /* Create a copy of @buffer_in having the RTP extension */
 static GstBuffer *
 create_extension_buffer (GstBuffer * buffer_in, gboolean clean_point,
-    gboolean end_contiguous, gboolean discont, guint64 ntp_offset, guint8 cseq)
+    gboolean end_contiguous, gboolean discont, guint64 ntp_offset, guint8 cseq,
+    gboolean first_buffer)
 {
   GstBuffer *buffer_out;
   GstRTPBuffer rtpbuffer_out = GST_RTP_BUFFER_INIT;
@@ -273,6 +274,8 @@
           ntp_offset));
 
   /* C E D mbz */
+  if (first_buffer)
+    flags |= (1 << 5);
   if (clean_point)
     flags |= (1 << 7);
   if (end_contiguous)
@@ -304,7 +307,7 @@
 
   buffer_in = create_rtp_buffer (TIMESTAMP, clean_point);
   buffer_out = create_extension_buffer (buffer_in, clean_point, FALSE, FALSE,
-      NTP_OFFSET, CSEQ);
+      NTP_OFFSET, CSEQ, TRUE);
 
   /* push initial events */
   gst_check_setup_events (mysrcpad, element, NULL, GST_FORMAT_TIME);
@@ -331,7 +334,7 @@
 
   buffer_in = create_rtp_buffer (TIMESTAMP, FALSE);
   buffer_out = create_extension_buffer (buffer_in, FALSE, end_contiguous,
-      FALSE, NTP_OFFSET, CSEQ);
+      FALSE, NTP_OFFSET, CSEQ, TRUE);
 
   /* push initial events */
   gst_check_setup_events (mysrcpad, element, NULL, GST_FORMAT_TIME);
@@ -367,7 +370,7 @@
 
   /* Last buffer always has the 'E' flag */
   buffer_out = create_extension_buffer (buffer_in, FALSE, TRUE, end_contiguous,
-      NTP_OFFSET, CSEQ);
+      NTP_OFFSET, CSEQ, FALSE);
   node = g_list_last (buffers);
   check_buffer_equal ((GstBuffer *) node->data, buffer_out);
   gst_buffer_unref (buffer_out);
@@ -546,12 +549,12 @@
 
   /* push an ntp-offset event */
   fail_unless (gst_pad_push_event (mysrcpad,
-          create_ntp_offset_event (NTP_OFFSET, FALSE)));
+          create_ntp_offset_event (NTP_OFFSET, TRUE)));
 
   /* create and push the first buffer */
   buffer_in = create_rtp_buffer (TIMESTAMP, TRUE);
   buffer1_out = create_extension_buffer (buffer_in, TRUE, TRUE, FALSE,
-      NTP_OFFSET, 0);
+      NTP_OFFSET, 0, TRUE);
   fail_unless_equals_int (gst_pad_push (mysrcpad, buffer_in), GST_FLOW_OK);
 
   /* push a new ntp offset */
@@ -561,7 +564,7 @@
   /* create and push a second buffer (last) */
   buffer_in = create_rtp_buffer (TIMESTAMP + 1, TRUE);
   buffer2_out = create_extension_buffer (buffer_in, TRUE, TRUE, TRUE,
-      2 * NTP_OFFSET, 0);
+      2 * NTP_OFFSET, 0, FALSE);
   fail_unless_equals_int (gst_pad_push (mysrcpad, buffer_in), GST_FLOW_OK);
 
   /* the first buffer should have been pushed now */
diff --git a/tests/check/elements/templatematch.c b/tests/check/elements/templatematch.c
index 99fc794..3a78d54 100644
--- a/tests/check/elements/templatematch.c
+++ b/tests/check/elements/templatematch.c
@@ -144,6 +144,7 @@
   gst_bus_set_flushing (bus, TRUE);
   gst_object_unref (bus);
   gst_caps_unref (caps);
+  gst_check_drop_buffers ();
   gst_pad_set_active (srcpad, FALSE);
   gst_pad_set_active (sinkpad, FALSE);
   gst_object_unref (srcpad);
diff --git a/tests/check/elements/test_http_src.c b/tests/check/elements/test_http_src.c
index 915bb51..14f2043 100644
--- a/tests/check/elements/test_http_src.c
+++ b/tests/check/elements/test_http_src.c
@@ -192,8 +192,8 @@
       "Test HTTP source element for unit tests",
       "Source/Network",
       "Use in unit tests", "Alex Ashley <alex.ashley@youview.com>");
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_dashdemux_test_source_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_dashdemux_test_source_template);
 
   gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_test_http_src_start);
   gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_test_http_src_stop);
@@ -314,7 +314,8 @@
   http_headers = gst_structure_new_empty ("http-headers");
   gst_structure_set (http_headers, "uri", G_TYPE_STRING, src->uri, NULL);
   if (!src->input.request_headers) {
-    src->input.request_headers = gst_structure_new_empty ("request-headers");
+    src->input.request_headers =
+        gst_structure_new_empty (TEST_HTTP_SRC_REQUEST_HEADERS_NAME);
   }
   if (!gst_structure_has_field_typed (src->input.request_headers,
           "User-Agent", G_TYPE_STRING)) {
@@ -334,10 +335,11 @@
     gst_structure_set (src->input.request_headers, "Accept-Encoding",
         G_TYPE_STRING, "compress, gzip", NULL);
   }
-  gst_structure_set (http_headers, "request-headers", GST_TYPE_STRUCTURE,
-      src->input.request_headers, NULL);
+  gst_structure_set (http_headers, TEST_HTTP_SRC_REQUEST_HEADERS_NAME,
+      GST_TYPE_STRUCTURE, src->input.request_headers, NULL);
   if (!src->input.response_headers) {
-    src->input.response_headers = gst_structure_new_empty ("response-headers");
+    src->input.response_headers =
+        gst_structure_new_empty (TEST_HTTP_SRC_RESPONSE_HEADERS_NAME);
   }
   if (!gst_structure_has_field_typed (src->input.response_headers,
           "Connection", G_TYPE_STRING)) {
@@ -359,8 +361,8 @@
     g_free (date_str);
     g_date_time_unref (now);
   }
-  gst_structure_set (http_headers, "response-headers", GST_TYPE_STRUCTURE,
-      src->input.response_headers, NULL);
+  gst_structure_set (http_headers, TEST_HTTP_SRC_RESPONSE_HEADERS_NAME,
+      GST_TYPE_STRUCTURE, src->input.response_headers, NULL);
   if (src->http_headers_event) {
     gst_event_unref (src->http_headers_event);
   }
diff --git a/tests/check/elements/test_http_src.h b/tests/check/elements/test_http_src.h
index 61161af..3a83e25 100644
--- a/tests/check/elements/test_http_src.h
+++ b/tests/check/elements/test_http_src.h
@@ -27,6 +27,20 @@
 
 #define GST_TYPE_TEST_HTTP_SRC            (gst_test_http_src_get_type ())
 
+/**
+ * TEST_HTTP_SRC_REQUEST_HEADERS_NAME:
+ * The name of the #GstStructure that will contain all the HTTP request
+ * headers
+ */
+#define TEST_HTTP_SRC_REQUEST_HEADERS_NAME "request-headers"
+
+/**
+ * TEST_HTTP_SRC_RESPONSE_HEADERS_NAME:
+ * The name of the #GstStructure that will contain all the HTTP response
+ * headers
+ */
+#define TEST_HTTP_SRC_RESPONSE_HEADERS_NAME "response-headers"
+
 /* structure used by src_start function to configure the
  * GstTestHTTPSrc plugin.
  * It specifies information about a given URI.
diff --git a/tests/check/elements/uvch264demux.c b/tests/check/elements/uvch264demux.c
index fb8b17f..cf5c26a 100644
--- a/tests/check/elements/uvch264demux.c
+++ b/tests/check/elements/uvch264demux.c
@@ -373,6 +373,7 @@
   fail_unless (buffer_h264 == NULL && buffer_jpg != NULL);
   fail_unless (buffer_nv12 == NULL && buffer_yuy2 == NULL);
   fail_unless (gerror == NULL && error_debug == NULL);
+  gst_buffer_unref (buffer_jpg);
 
   _teardown_test ();
 }
@@ -644,6 +645,7 @@
   fail_unless (gerror == NULL);
   fail_unless (gst_buffer_get_size (buffer_h264) == sizeof (h264_data));
   fail_if (gst_buffer_memcmp (buffer_h264, 0, h264_data, sizeof (h264_data)));
+  gst_buffer_unref (buffer_h264);
 
   _teardown_test ();
 }
diff --git a/tests/check/libs/aggregator.c b/tests/check/libs/aggregator.c
index 16355b9..5f6ae2e 100644
--- a/tests/check/libs/aggregator.c
+++ b/tests/check/libs/aggregator.c
@@ -152,11 +152,9 @@
       GST_STATIC_PAD_TEMPLATE ("sink_%u", GST_PAD_SINK, GST_PAD_REQUEST,
       GST_STATIC_CAPS_ANY);
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&_src_template));
+  gst_element_class_add_static_pad_template (gstelement_class, &_src_template);
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&_sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class, &_sink_template);
 
   gst_element_class_set_static_metadata (gstelement_class, "Aggregator",
       "Testing", "Combine N buffers", "Stefan Sauer <ensonic@users.sf.net>");
@@ -344,6 +342,8 @@
       g_atomic_int_inc (&test->flush_stop_events);
   }
 
+  gst_mini_object_unref (info->data);
+
   return GST_PAD_PROBE_HANDLED;
 }
 
diff --git a/tests/check/libs/gstglcolorconvert.c b/tests/check/libs/gstglcolorconvert.c
index f2be514..d891c8b 100644
--- a/tests/check/libs/gstglcolorconvert.c
+++ b/tests/check/libs/gstglcolorconvert.c
@@ -141,13 +141,15 @@
     /* create GL buffer */
     inbuf = gst_buffer_new ();
     for (j = 0; j < GST_VIDEO_INFO_N_PLANES (&in_info); j++) {
+      GstVideoGLTextureType tex_type = gst_gl_texture_type_from_format (context,
+          GST_VIDEO_INFO_FORMAT (&in_info), j);
       GstGLVideoAllocationParams *params;
       GstGLBaseMemory *mem;
 
       ref_count++;
       params = gst_gl_video_allocation_params_new_wrapped_data (context, NULL,
-          &in_info, j, NULL, GST_GL_TEXTURE_TARGET_2D, frames[i].data[j],
-          &ref_count, _frame_unref);
+          &in_info, j, NULL, GST_GL_TEXTURE_TARGET_2D, tex_type,
+          frames[i].data[j], &ref_count, _frame_unref);
 
       mem = gst_gl_base_memory_alloc (base_mem_alloc,
           (GstGLAllocationParams *) params);
diff --git a/tests/check/libs/gstglcontext.c b/tests/check/libs/gstglcontext.c
index f2f27f8..25f3e00 100644
--- a/tests/check/libs/gstglcontext.c
+++ b/tests/check/libs/gstglcontext.c
@@ -42,7 +42,8 @@
   gst_object_unref (display);
 }
 
-static GLuint vbo, vbo_indices, vao, fbo_id, rbo, tex;
+static GstGLMemory *gl_tex;
+static GLuint vbo, vbo_indices, vao;
 static GstGLFramebuffer *fbo;
 static GstGLShader *shader;
 static GLint shader_attr_position_loc;
@@ -63,15 +64,27 @@
 {
   GstGLContext *context = data;
   GError *error = NULL;
+  GstVideoInfo v_info;
+  GstGLMemoryAllocator *allocator;
+  GstGLVideoAllocationParams *params;
+
+  gst_video_info_set_format (&v_info, GST_VIDEO_FORMAT_RGBA, 320, 240);
+  allocator = gst_gl_memory_allocator_get_default (context);
+  params =
+      gst_gl_video_allocation_params_new (context, NULL, &v_info, 0, NULL,
+      GST_GL_TEXTURE_TARGET_2D, GST_VIDEO_GL_TEXTURE_TYPE_RGBA);
 
   /* has to be called in the thread that is going to use the framebuffer */
-  fbo = gst_gl_framebuffer_new (context);
+  fbo = gst_gl_framebuffer_new_with_default_depth (context, 320, 240);
 
-  gst_gl_framebuffer_generate (fbo, 320, 240, &fbo_id, &rbo);
-  fail_if (fbo == NULL || fbo_id == 0, "failed to create framebuffer object");
+  fail_if (fbo == NULL, "failed to create framebuffer object");
 
-  gst_gl_context_gen_texture (context, &tex, GST_VIDEO_FORMAT_RGBA, 320, 240);
-  fail_if (tex == 0, "failed to create texture");
+  gl_tex =
+      (GstGLMemory *) gst_gl_base_memory_alloc ((GstGLBaseMemoryAllocator *)
+      allocator, (GstGLAllocationParams *) params);
+  gst_object_unref (allocator);
+  gst_gl_allocation_params_free ((GstGLAllocationParams *) params);
+  fail_if (gl_tex == NULL, "failed to create texture");
 
   shader = gst_gl_shader_new_default (context, &error);
   fail_if (shader == NULL, "failed to create shader object: %s",
@@ -88,14 +101,14 @@
 {
   GstGLContext *context = data;
   GstGLFuncs *gl = context->gl_vtable;
-  gl->DeleteTextures (1, &tex);
   if (vao)
     gl->DeleteVertexArrays (1, &vao);
   gst_object_unref (fbo);
   gst_object_unref (shader);
+  gst_memory_unref (GST_MEMORY_CAST (gl_tex));
 }
 
-static void
+static gboolean
 clear_tex (gpointer data)
 {
   GstGLContext *context = data;
@@ -108,13 +121,15 @@
   r = r > 1.0 ? 0.0 : r + 0.03;
   g = g > 1.0 ? 0.0 : g + 0.01;
   b = b > 1.0 ? 0.0 : b + 0.015;
+
+  return TRUE;
 }
 
 static void
 draw_tex (gpointer data)
 {
-  gst_gl_framebuffer_use_v2 (fbo, 320, 240, fbo_id, rbo, tex,
-      (GLCB_V2) clear_tex, data);
+  gst_gl_framebuffer_draw_to_texture (fbo, gl_tex,
+      (GstGLFramebufferFunc) clear_tex, data);
 }
 
 static void
@@ -210,7 +225,7 @@
   gst_gl_shader_use (shader);
 
   gl->ActiveTexture (GL_TEXTURE0);
-  gl->BindTexture (GL_TEXTURE_2D, tex);
+  gl->BindTexture (GL_TEXTURE_2D, gst_gl_memory_get_texture_id (gl_tex));
   gst_gl_shader_set_uniform_1i (shader, "s_texture", 0);
 
   if (gl->GenVertexArrays)
@@ -261,7 +276,8 @@
   gst_gl_window_set_preferred_size (window, 320, 240);
   gst_gl_window_draw (window);
 
-  gst_gl_window_send_message (other_window, GST_GL_WINDOW_CB (init), context);
+  gst_gl_window_send_message (other_window, GST_GL_WINDOW_CB (init),
+      other_context);
   gst_gl_window_send_message (window, GST_GL_WINDOW_CB (init_blit), context);
 
   while (i < 10) {
@@ -272,7 +288,8 @@
     i++;
   }
 
-  gst_gl_window_send_message (other_window, GST_GL_WINDOW_CB (deinit), context);
+  gst_gl_window_send_message (other_window, GST_GL_WINDOW_CB (deinit),
+      other_context);
   gst_gl_window_send_message (window, GST_GL_WINDOW_CB (deinit_blit), context);
 
   gst_object_unref (window);
@@ -366,7 +383,8 @@
   gst_gl_window_set_preferred_size (window, 320, 240);
   gst_gl_window_draw (window);
 
-  gst_gl_window_send_message (other_window, GST_GL_WINDOW_CB (init), context);
+  gst_gl_window_send_message (other_window, GST_GL_WINDOW_CB (init),
+      other_context);
   gst_gl_window_send_message (window, GST_GL_WINDOW_CB (init_blit), context);
 
   while (i < 10) {
@@ -380,7 +398,8 @@
   gst_gl_window_send_message (window, GST_GL_WINDOW_CB (check_wrapped),
       wrapped_context);
 
-  gst_gl_window_send_message (other_window, GST_GL_WINDOW_CB (deinit), context);
+  gst_gl_window_send_message (other_window, GST_GL_WINDOW_CB (deinit),
+      other_context);
   gst_gl_window_send_message (window, GST_GL_WINDOW_CB (deinit_blit), context);
 
   gst_object_unref (other_context);
diff --git a/tests/check/libs/gstglmemory.c b/tests/check/libs/gstglmemory.c
index 4130e3b..0cdd1dd 100644
--- a/tests/check/libs/gstglmemory.c
+++ b/tests/check/libs/gstglmemory.c
@@ -75,10 +75,12 @@
     gst_video_info_set_format (&v_info, formats[i], width, height);
 
     for (j = 0; j < GST_VIDEO_INFO_N_PLANES (&v_info); j++) {
+      GstVideoGLTextureType tex_type = gst_gl_texture_type_from_format (context,
+          GST_VIDEO_INFO_FORMAT (&v_info), j);
       GstGLVideoAllocationParams *params;
 
       params = gst_gl_video_allocation_params_new (context, NULL, &v_info, j,
-          NULL, GST_GL_TEXTURE_TARGET_2D);
+          NULL, GST_GL_TEXTURE_TARGET_2D, tex_type);
 
       mem = (GstMemory *) gst_gl_base_memory_alloc (base_mem_alloc,
           (GstGLAllocationParams *) params);
@@ -100,10 +102,6 @@
               &gl_mem->info) == FALSE);
       fail_if (gl_mem->mem.context != gl_mem2->mem.context);
 
-      if (gst_gl_context_get_error ())
-        printf ("%s\n", gst_gl_context_get_error ());
-      fail_if (gst_gl_context_get_error () != NULL);
-
       gst_gl_allocation_params_free ((GstGLAllocationParams *) params);
       gst_memory_unref (mem);
       gst_memory_unref (mem2);
@@ -137,7 +135,7 @@
   gst_video_info_set_format (&v_info, GST_VIDEO_FORMAT_RGBA, 1, 1);
 
   params = gst_gl_video_allocation_params_new (context, NULL, &v_info, 0,
-      NULL, GST_GL_TEXTURE_TARGET_2D);
+      NULL, GST_GL_TEXTURE_TARGET_2D, GST_VIDEO_GL_TEXTURE_TYPE_RGBA);
 
   /* texture creation */
   mem = (GstMemory *) gst_gl_base_memory_alloc (base_mem_alloc,
@@ -150,7 +148,8 @@
 
   /* test wrapping raw data */
   params = gst_gl_video_allocation_params_new_wrapped_data (context, NULL,
-      &v_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D, rgba_pixel, NULL, NULL);
+      &v_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D,
+      GST_VIDEO_GL_TEXTURE_TYPE_RGBA, rgba_pixel, NULL, NULL);
   mem2 =
       (GstMemory *) gst_gl_base_memory_alloc (base_mem_alloc,
       (GstGLAllocationParams *) params);
@@ -164,8 +163,9 @@
 
   /* wrapped texture creation */
   params = gst_gl_video_allocation_params_new_wrapped_texture (context, NULL,
-      &v_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D, ((GstGLMemory *) mem)->tex_id,
-      NULL, NULL);
+      &v_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D,
+      GST_VIDEO_GL_TEXTURE_TYPE_RGBA, ((GstGLMemory *) mem)->tex_id, NULL,
+      NULL);
   mem3 =
       (GstMemory *) gst_gl_base_memory_alloc (base_mem_alloc,
       (GstGLAllocationParams *) params);
@@ -268,10 +268,6 @@
   fail_unless (GST_MEMORY_FLAG_IS_SET (mem3,
           GST_GL_BASE_MEMORY_TRANSFER_NEED_DOWNLOAD));
 
-  if (gst_gl_context_get_error ())
-    printf ("%s\n", gst_gl_context_get_error ());
-  fail_if (gst_gl_context_get_error () != NULL);
-
   gst_memory_unref (mem);
   gst_memory_unref (mem2);
   gst_memory_unref (mem3);
@@ -303,7 +299,8 @@
   gst_video_info_set_format (&v_info, GST_VIDEO_FORMAT_RGBA, 1, 1);
 
   params = gst_gl_video_allocation_params_new_wrapped_data (context, NULL,
-      &v_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D, rgba_pixel, NULL, NULL);
+      &v_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D,
+      GST_VIDEO_GL_TEXTURE_TYPE_RGBA, rgba_pixel, NULL, NULL);
   mem =
       (GstMemory *) gst_gl_base_memory_alloc (base_mem_alloc,
       (GstGLAllocationParams *) params);
@@ -329,10 +326,6 @@
 
   /* FIXME: add download transfer */
 
-  if (gst_gl_context_get_error ())
-    printf ("%s\n", gst_gl_context_get_error ());
-  fail_if (gst_gl_context_get_error () != NULL);
-
   gst_memory_unref (mem);
   gst_object_unref (gl_allocator);
 }
diff --git a/tests/check/libs/gstglupload.c b/tests/check/libs/gstglupload.c
index 64d7a33..7c52a85 100644
--- a/tests/check/libs/gstglupload.c
+++ b/tests/check/libs/gstglupload.c
@@ -37,6 +37,16 @@
 static GstGLShader *shader;
 static GLint shader_attr_position_loc;
 static GLint shader_attr_texture_loc;
+static guint vbo, vbo_indices, vao;
+
+static const GLfloat vertices[] = {
+  1.0f, 1.0f, 0.0f, 1.0f, 0.0f,
+  -1.0f, 1.0f, 0.0f, 0.0f, 0.0f,
+  -1.0f, -1.0f, 0.0f, 0.0f, 1.0f,
+  1.0f, -1.0f, 0.0f, 1.0f, 1.0f
+};
+
+static GLushort indices[] = { 0, 1, 2, 0, 2, 3 };
 
 #define FORMAT GST_VIDEO_GL_TEXTURE_TYPE_RGBA
 #define WIDTH 10
@@ -86,11 +96,46 @@
   gst_object_unref (window);
   gst_object_unref (context);
   gst_object_unref (display);
+  if (shader)
+    gst_object_unref (shader);
+}
+
+static void
+_bind_buffer (GstGLContext * context)
+{
+  const GstGLFuncs *gl = context->gl_vtable;
+
+  gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, vbo_indices);
+  gl->BindBuffer (GL_ARRAY_BUFFER, vbo);
+
+  /* Load the vertex position */
+  gl->VertexAttribPointer (shader_attr_position_loc, 3, GL_FLOAT, GL_FALSE,
+      5 * sizeof (GLfloat), (void *) 0);
+
+  /* Load the texture coordinate */
+  gl->VertexAttribPointer (shader_attr_texture_loc, 2, GL_FLOAT, GL_FALSE,
+      5 * sizeof (GLfloat), (void *) (3 * sizeof (GLfloat)));
+
+  gl->EnableVertexAttribArray (shader_attr_position_loc);
+  gl->EnableVertexAttribArray (shader_attr_texture_loc);
+}
+
+static void
+_unbind_buffer (GstGLContext * context)
+{
+  const GstGLFuncs *gl = context->gl_vtable;
+
+  gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, 0);
+  gl->BindBuffer (GL_ARRAY_BUFFER, 0);
+
+  gl->DisableVertexAttribArray (shader_attr_position_loc);
+  gl->DisableVertexAttribArray (shader_attr_texture_loc);
 }
 
 static void
 init (gpointer data)
 {
+  const GstGLFuncs *gl = context->gl_vtable;
   GError *error = NULL;
 
   shader = gst_gl_shader_new_default (context, &error);
@@ -99,7 +144,49 @@
   shader_attr_position_loc =
       gst_gl_shader_get_attribute_location (shader, "a_position");
   shader_attr_texture_loc =
-      gst_gl_shader_get_attribute_location (shader, "a_texCoord");
+      gst_gl_shader_get_attribute_location (shader, "a_texcoord");
+
+  if (!vbo) {
+    if (gl->GenVertexArrays) {
+      gl->GenVertexArrays (1, &vao);
+      gl->BindVertexArray (vao);
+    }
+
+    gl->GenBuffers (1, &vbo);
+    gl->BindBuffer (GL_ARRAY_BUFFER, vbo);
+    gl->BufferData (GL_ARRAY_BUFFER, 4 * 5 * sizeof (GLfloat), vertices,
+        GL_STATIC_DRAW);
+
+    gl->GenBuffers (1, &vbo_indices);
+    gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, vbo_indices);
+    gl->BufferData (GL_ELEMENT_ARRAY_BUFFER, sizeof (indices), indices,
+        GL_STATIC_DRAW);
+
+    if (gl->GenVertexArrays) {
+      _bind_buffer (context);
+      gl->BindVertexArray (0);
+    }
+
+    gl->BindBuffer (GL_ARRAY_BUFFER, 0);
+    gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, 0);
+  }
+}
+
+static void
+deinit (gpointer data)
+{
+  GstGLContext *context = data;
+  const GstGLFuncs *gl = context->gl_vtable;
+
+  if (vbo)
+    gl->DeleteBuffers (1, &vbo);
+  vbo = 0;
+  if (vbo_indices)
+    gl->DeleteBuffers (1, &vbo_indices);
+  vbo_indices = 0;
+  if (vao)
+    gl->DeleteVertexArrays (1, &vao);
+  vao = 0;
 }
 
 static void
@@ -108,32 +195,15 @@
   GstGLContext *context = data;
   GstGLContextClass *context_class = GST_GL_CONTEXT_GET_CLASS (context);
   const GstGLFuncs *gl = context->gl_vtable;
-  const GLfloat vVertices[] = { 1.0f, 1.0f, 0.0f,
-    1.0f, 0.0f,
-    -1.0f, 1.0f, 0.0f,
-    0.0f, 0.0f,
-    -1.0f, -1.0f, 0.0f,
-    0.0f, 1.0f,
-    1.0f, -1.0f, 0.0f,
-    1.0f, 1.0f
-  };
-
-  GLushort indices[] = { 0, 1, 2, 0, 2, 3 };
 
   gl->Clear (GL_COLOR_BUFFER_BIT);
 
   gst_gl_shader_use (shader);
 
-  /* Load the vertex position */
-  gl->VertexAttribPointer (shader_attr_position_loc, 3,
-      GL_FLOAT, GL_FALSE, 5 * sizeof (GLfloat), vVertices);
-
-  /* Load the texture coordinate */
-  gl->VertexAttribPointer (shader_attr_texture_loc, 2,
-      GL_FLOAT, GL_FALSE, 5 * sizeof (GLfloat), &vVertices[3]);
-
-  gl->EnableVertexAttribArray (shader_attr_position_loc);
-  gl->EnableVertexAttribArray (shader_attr_texture_loc);
+  if (gl->GenVertexArrays)
+    gl->BindVertexArray (vao);
+  else
+    _bind_buffer (context);
 
   gl->ActiveTexture (GL_TEXTURE0);
   gl->BindTexture (GL_TEXTURE_2D, tex_id);
@@ -141,6 +211,11 @@
 
   gl->DrawElements (GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, indices);
 
+  if (gl->GenVertexArrays)
+    gl->BindVertexArray (0);
+  else
+    _unbind_buffer (context);
+
   context_class->swap_buffers (context);
 }
 
@@ -163,8 +238,7 @@
       0, WIDTH * HEIGHT * 4, NULL, NULL);
 
   res = gst_gl_upload_perform_with_buffer (upload, inbuf, &outbuf);
-  fail_if (res == FALSE, "Failed to upload buffer: %s\n",
-      gst_gl_context_get_error ());
+  fail_if (res == FALSE, "Failed to upload buffer");
   fail_unless (GST_IS_BUFFER (outbuf));
 
   res = gst_buffer_map (outbuf, &map_info, GST_MAP_READ | GST_MAP_GL);
@@ -184,6 +258,7 @@
         context);
     i++;
   }
+  gst_gl_window_send_message (window, GST_GL_WINDOW_CB (deinit), context);
 
   gst_caps_unref (in_caps);
   gst_caps_unref (out_caps);
@@ -193,13 +268,14 @@
 
 GST_END_TEST;
 
-GST_START_TEST (test_upload_buffer)
+GST_START_TEST (test_upload_gl_memory)
 {
   GstGLBaseMemoryAllocator *base_mem_alloc;
   GstGLVideoAllocationParams *params;
   GstBuffer *buffer, *outbuf;
   GstGLMemory *gl_mem;
   GstCaps *in_caps, *out_caps;
+  GstStructure *out_s;
   GstVideoInfo in_info;
   GstMapInfo map_info;
   gint i = 0;
@@ -215,7 +291,8 @@
   /* create GL buffer */
   buffer = gst_buffer_new ();
   params = gst_gl_video_allocation_params_new_wrapped_data (context, NULL,
-      &in_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D, rgba_data, NULL, NULL);
+      &in_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D,
+      GST_VIDEO_GL_TEXTURE_TYPE_RGBA, rgba_data, NULL, NULL);
   gl_mem = (GstGLMemory *) gst_gl_base_memory_alloc (base_mem_alloc,
       (GstGLAllocationParams *) params);
   gst_gl_allocation_params_free ((GstGLAllocationParams *) params);
@@ -229,14 +306,53 @@
 
   gst_buffer_append_memory (buffer, (GstMemory *) gl_mem);
 
+  /* at this point glupload hasn't received any buffers so can output anything */
+  out_caps = gst_gl_upload_transform_caps (upload, context,
+      GST_PAD_SINK, in_caps, NULL);
+  out_s = gst_caps_get_structure (out_caps, 0);
+  fail_unless (gst_structure_has_field_typed (out_s, "texture-target",
+          GST_TYPE_LIST));
+  gst_caps_unref (out_caps);
+
+  /* set some output caps without setting texture-target: this should trigger RECONFIGURE */
   out_caps = gst_caps_from_string ("video/x-raw(memory:GLMemory),"
       "format=RGBA,width=10,height=10");
 
+  /* set caps with texture-target not fixed. This should trigger RECONFIGURE. */
   gst_gl_upload_set_caps (upload, in_caps, out_caps);
+  gst_caps_unref (out_caps);
+
+  /* push a texture-target=2D buffer */
+  res = gst_gl_upload_perform_with_buffer (upload, buffer, &outbuf);
+  fail_unless (res == GST_GL_UPLOAD_RECONFIGURE);
+  fail_if (outbuf);
+
+  /* now glupload has seen a 2D buffer and so wants to transform to that */
+  out_caps = gst_gl_upload_transform_caps (upload, context,
+      GST_PAD_SINK, in_caps, NULL);
+  out_s = gst_caps_get_structure (out_caps, 0);
+  fail_unless_equals_string (gst_structure_get_string (out_s, "texture-target"),
+      "2D");
+  gst_caps_unref (out_caps);
+
+  /* try setting the wrong type first tho */
+  out_caps = gst_caps_from_string ("video/x-raw(memory:GLMemory),"
+      "format=RGBA,width=10,height=10,texture-target=RECTANGLE");
+  gst_gl_upload_set_caps (upload, in_caps, out_caps);
+  gst_caps_unref (out_caps);
 
   res = gst_gl_upload_perform_with_buffer (upload, buffer, &outbuf);
-  fail_if (res == FALSE, "Failed to upload buffer: %s\n",
-      gst_gl_context_get_error ());
+  fail_unless (res == GST_GL_UPLOAD_RECONFIGURE);
+  fail_if (outbuf);
+
+  /* finally do set the correct texture-target */
+  out_caps = gst_caps_from_string ("video/x-raw(memory:GLMemory),"
+      "format=RGBA,width=10,height=10,texture-target=2D");
+  gst_gl_upload_set_caps (upload, in_caps, out_caps);
+  gst_caps_unref (out_caps);
+
+  res = gst_gl_upload_perform_with_buffer (upload, buffer, &outbuf);
+  fail_unless (res == GST_GL_UPLOAD_DONE, "Failed to upload buffer");
   fail_unless (GST_IS_BUFFER (outbuf));
 
   gst_gl_window_set_preferred_size (window, WIDTH, HEIGHT);
@@ -248,9 +364,9 @@
         context);
     i++;
   }
+  gst_gl_window_send_message (window, GST_GL_WINDOW_CB (deinit), context);
 
   gst_caps_unref (in_caps);
-  gst_caps_unref (out_caps);
   gst_buffer_unref (buffer);
   gst_buffer_unref (outbuf);
   gst_object_unref (base_mem_alloc);
@@ -268,7 +384,7 @@
   suite_add_tcase (s, tc_chain);
   tcase_add_checked_fixture (tc_chain, setup, teardown);
   tcase_add_test (tc_chain, test_upload_data);
-  tcase_add_test (tc_chain, test_upload_buffer);
+  tcase_add_test (tc_chain, test_upload_gl_memory);
 
   return s;
 }
diff --git a/tests/check/libs/player.c b/tests/check/libs/player.c
index 3f2b25f..8c203b9 100644
--- a/tests/check/libs/player.c
+++ b/tests/check/libs/player.c
@@ -100,20 +100,17 @@
 {
   GstPlayer *player;
   guint interval = 0;
+  GstStructure *config;
 
   player = gst_player_new (NULL, NULL);
 
   fail_unless (player != NULL);
 
-  gst_player_set_position_update_interval (player, 500);
-  interval = gst_player_get_position_update_interval (player);
-
+  config = gst_player_get_config (player);
+  gst_player_config_set_position_update_interval (config, 500);
+  interval = gst_player_config_get_position_update_interval (config);
   fail_unless (interval == 500);
-
-  g_object_set (player, "position-update-interval", 1000, NULL);
-  g_object_get (player, "position-update-interval", &interval, NULL);
-
-  fail_unless_equals_int (interval, 1000);
+  gst_player_set_config (player, config);
 
   g_object_unref (player);
 }
@@ -132,6 +129,7 @@
   STATE_CHANGE_VIDEO_DIMENSIONS_CHANGED,
   STATE_CHANGE_MEDIA_INFO_UPDATED,
   STATE_CHANGE_SEEK_DONE,
+  STATE_CHANGE_URI_LOADED,
 } TestPlayerStateChange;
 
 static const gchar *
@@ -158,6 +156,8 @@
       return "media-info-updated";
     case STATE_CHANGE_SEEK_DONE:
       return "seek-done";
+    case STATE_CHANGE_URI_LOADED:
+      return "uri-loaded";
     default:
       g_assert_not_reached ();
       break;
@@ -175,6 +175,8 @@
   GstPlayerState state;
   gint width, height;
   GstPlayerMediaInfo *media_info;
+  gchar *uri_loaded;
+  gboolean stopping;
 
   void (*test_callback) (GstPlayer * player, TestPlayerStateChange change,
       TestPlayerState * old_state, TestPlayerState * new_state);
@@ -196,7 +198,8 @@
       "\tseek_done %d -> %d\n"
       "\tstate %s -> %s\n"
       "\twidth/height %d/%d -> %d/%d\n"
-      "\tmedia_info %p -> %p",
+      "\tmedia_info %p -> %p\n"
+      "\turi_loaded %s -> %s",
       test_player_state_change_get_name (change),
       old_state->buffering_percent, new_state->buffering_percent,
       GST_TIME_ARGS (old_state->position), GST_TIME_ARGS (new_state->position),
@@ -208,7 +211,8 @@
       gst_player_state_get_name (old_state->state),
       gst_player_state_get_name (new_state->state), old_state->width,
       old_state->height, new_state->width, new_state->height,
-      old_state->media_info, new_state->media_info);
+      old_state->media_info, new_state->media_info,
+      old_state->uri_loaded, new_state->uri_loaded);
 }
 
 static void
@@ -220,6 +224,8 @@
   state->state = GST_PLAYER_STATE_STOPPED;
   state->width = state->height = 0;
   state->media_info = NULL;
+  state->stopping = FALSE;
+  g_clear_pointer (&state->uri_loaded, g_free);
 }
 
 static void
@@ -227,6 +233,8 @@
 {
   TestPlayerState old_state = *state;
 
+  g_assert (!state->stopping);
+
   state->buffering_percent = percent;
   test_player_state_change_debug (player, STATE_CHANGE_BUFFERING, &old_state,
       state);
@@ -239,6 +247,8 @@
 {
   TestPlayerState old_state = *state;
 
+  g_assert (!state->stopping);
+
   state->duration = duration;
   test_player_state_change_debug (player, STATE_CHANGE_DURATION_CHANGED,
       &old_state, state);
@@ -251,6 +261,8 @@
 {
   TestPlayerState old_state = *state;
 
+  g_assert (!state->stopping);
+
   state->end_of_stream = TRUE;
   test_player_state_change_debug (player, STATE_CHANGE_END_OF_STREAM,
       &old_state, state);
@@ -262,6 +274,8 @@
 {
   TestPlayerState old_state = *state;
 
+  g_assert (!state->stopping);
+
   state->error = TRUE;
   test_player_state_change_debug (player, STATE_CHANGE_ERROR, &old_state,
       state);
@@ -273,6 +287,8 @@
 {
   TestPlayerState old_state = *state;
 
+  g_assert (!state->stopping);
+
   state->warning = TRUE;
   test_player_state_change_debug (player, STATE_CHANGE_WARNING, &old_state,
       state);
@@ -285,6 +301,8 @@
 {
   TestPlayerState old_state = *state;
 
+  g_assert (!state->stopping);
+
   state->position = position;
   test_player_state_change_debug (player, STATE_CHANGE_POSITION_UPDATED,
       &old_state, state);
@@ -298,6 +316,8 @@
 {
   TestPlayerState old_state = *state;
 
+  g_assert (!state->stopping);
+
   state->media_info = media_info;
 
   test_player_state_change_debug (player, STATE_CHANGE_MEDIA_INFO_UPDATED,
@@ -312,6 +332,8 @@
 {
   TestPlayerState old_state = *state;
 
+  g_assert (!state->stopping || player_state == GST_PLAYER_STATE_STOPPED);
+
   state->state = player_state;
 
   if (player_state == GST_PLAYER_STATE_STOPPED)
@@ -328,6 +350,8 @@
 {
   TestPlayerState old_state = *state;
 
+  g_assert (!state->stopping);
+
   state->width = width;
   state->height = height;
   test_player_state_change_debug (player, STATE_CHANGE_VIDEO_DIMENSIONS_CHANGED,
@@ -341,6 +365,8 @@
 {
   TestPlayerState old_state = *state;
 
+  g_assert (!state->stopping);
+
   state->seek_done = TRUE;
   state->seek_done_position = position;
   test_player_state_change_debug (player, STATE_CHANGE_SEEK_DONE,
@@ -348,6 +374,15 @@
   state->test_callback (player, STATE_CHANGE_SEEK_DONE, &old_state, state);
 }
 
+static void
+uri_loaded_cb (GstPlayer * player, const gchar * uri, TestPlayerState * state)
+{
+  TestPlayerState old_state = *state;
+
+  state->uri_loaded = g_strdup (uri);
+  state->test_callback (player, STATE_CHANGE_URI_LOADED, &old_state, state);
+}
+
 static GstPlayer *
 test_player_new (TestPlayerState * state)
 {
@@ -386,11 +421,34 @@
   g_signal_connect (player, "video-dimensions-changed",
       G_CALLBACK (video_dimensions_changed_cb), state);
   g_signal_connect (player, "seek-done", G_CALLBACK (seek_done_cb), state);
+  g_signal_connect (player, "uri-loaded", G_CALLBACK (uri_loaded_cb), state);
 
   return player;
 }
 
 static void
+test_player_stopped_cb (GstPlayer * player, TestPlayerStateChange change,
+    TestPlayerState * old_state, TestPlayerState * new_state)
+{
+  if (new_state->state == GST_PLAYER_STATE_STOPPED) {
+    g_main_loop_quit (new_state->loop);
+  }
+}
+
+static void
+stop_player (GstPlayer * player, TestPlayerState * state)
+{
+  if (state->state != GST_PLAYER_STATE_STOPPED) {
+    /* Make sure all pending operations are finished so the player won't be
+     * appear as 'leaked' to leak detection tools. */
+    state->test_callback = test_player_stopped_cb;
+    gst_player_stop (player);
+    state->stopping = TRUE;
+    g_main_loop_run (state->loop);
+  }
+}
+
+static void
 test_play_audio_video_eos_cb (GstPlayer * player, TestPlayerStateChange change,
     TestPlayerState * old_state, TestPlayerState * new_state)
 {
@@ -402,18 +460,29 @@
 
   switch (step) {
     case 0:
+      fail_unless_equals_int (change, STATE_CHANGE_URI_LOADED);
+      if (video)
+        fail_unless (g_str_has_suffix (new_state->uri_loaded,
+                "audio-video-short.ogg"));
+      else
+        fail_unless (g_str_has_suffix (new_state->uri_loaded,
+                "audio-short.ogg"));
+      new_state->test_data =
+          GINT_TO_POINTER ((video ? 0x10 : 0x00) | (step + 1));
+      break;
+    case 1:
       fail_unless_equals_int (change, STATE_CHANGE_STATE_CHANGED);
       fail_unless_equals_int (old_state->state, GST_PLAYER_STATE_STOPPED);
       fail_unless_equals_int (new_state->state, GST_PLAYER_STATE_BUFFERING);
       new_state->test_data =
           GINT_TO_POINTER ((video ? 0x10 : 0x00) | (step + 1));
       break;
-    case 1:
+    case 2:
       fail_unless_equals_int (change, STATE_CHANGE_MEDIA_INFO_UPDATED);
       new_state->test_data =
           GINT_TO_POINTER ((video ? 0x10 : 0x00) | (step + 1));
       break;
-    case 2:
+    case 3:
       fail_unless_equals_int (change, STATE_CHANGE_VIDEO_DIMENSIONS_CHANGED);
       if (video) {
         fail_unless_equals_int (new_state->width, 320);
@@ -425,27 +494,27 @@
       new_state->test_data =
           GINT_TO_POINTER ((video ? 0x10 : 0x00) | (step + 1));
       break;
-    case 3:
+    case 4:
       fail_unless_equals_int (change, STATE_CHANGE_DURATION_CHANGED);
       fail_unless_equals_uint64 (new_state->duration,
           G_GUINT64_CONSTANT (464399092));
       new_state->test_data =
           GINT_TO_POINTER ((video ? 0x10 : 0x00) | (step + 1));
       break;
-    case 4:
+    case 5:
       fail_unless_equals_int (change, STATE_CHANGE_POSITION_UPDATED);
       fail_unless_equals_uint64 (new_state->position, G_GUINT64_CONSTANT (0));
       new_state->test_data =
           GINT_TO_POINTER ((video ? 0x10 : 0x00) | (step + 1));
       break;
-    case 5:
+    case 6:
       fail_unless_equals_int (change, STATE_CHANGE_STATE_CHANGED);
       fail_unless_equals_int (old_state->state, GST_PLAYER_STATE_BUFFERING);
       fail_unless_equals_int (new_state->state, GST_PLAYER_STATE_PLAYING);
       new_state->test_data =
           GINT_TO_POINTER ((video ? 0x10 : 0x00) | (step + 1));
       break;
-    case 6:
+    case 7:
       if (change == STATE_CHANGE_POSITION_UPDATED) {
         fail_unless (old_state->position <= new_state->position);
       } else {
@@ -455,7 +524,7 @@
             GINT_TO_POINTER ((video ? 0x10 : 0x00) | (step + 1));
       }
       break;
-    case 7:
+    case 8:
       fail_unless_equals_int (change, STATE_CHANGE_STATE_CHANGED);
       fail_unless_equals_int (old_state->state, GST_PLAYER_STATE_PLAYING);
       fail_unless_equals_int (new_state->state, GST_PLAYER_STATE_STOPPED);
@@ -492,8 +561,9 @@
   gst_player_play (player);
   g_main_loop_run (state.loop);
 
-  fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 8);
+  fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 9);
 
+  stop_player (player, &state);
   g_object_unref (player);
   g_main_loop_unref (state.loop);
 }
@@ -672,6 +742,7 @@
   g_main_loop_run (state.loop);
 
   fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 1);
+  stop_player (player, &state);
   g_object_unref (player);
   g_main_loop_unref (state.loop);
 }
@@ -693,7 +764,7 @@
 
     new_state->test_data = GINT_TO_POINTER (steps + 1);
     /* load invalid suburi */
-    fail_unless (gst_player_set_subtitle_uri (player, suburi) != FALSE);
+    gst_player_set_subtitle_uri (player, suburi);
     g_free (suburi);
 
   } else if (steps && change == STATE_CHANGE_WARNING) {
@@ -764,6 +835,7 @@
 
   fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 0x33);
 
+  stop_player (player, &state);
   g_object_unref (player);
   g_main_loop_unref (state.loop);
 }
@@ -828,6 +900,7 @@
 
   fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 2);
 
+  stop_player (player, &state);
   g_object_unref (player);
   g_main_loop_unref (state.loop);
 }
@@ -892,6 +965,7 @@
 
   fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 2);
 
+  stop_player (player, &state);
   g_object_unref (player);
   g_main_loop_unref (state.loop);
 }
@@ -923,6 +997,7 @@
 
   fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 2);
 
+  stop_player (player, &state);
   g_object_unref (player);
   g_main_loop_unref (state.loop);
 }
@@ -951,7 +1026,7 @@
     suburi = gst_filename_to_uri (TEST_PATH "/test_sub.srt", NULL);
     fail_unless (suburi != NULL);
 
-    fail_unless (gst_player_set_subtitle_uri (player, suburi) != FALSE);
+    gst_player_set_subtitle_uri (player, suburi);
     g_free (suburi);
     new_state->test_data = GINT_TO_POINTER (steps + 1);
 
@@ -1001,6 +1076,7 @@
 
   fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 2);
 
+  stop_player (player, &state);
   g_object_unref (player);
   g_main_loop_unref (state.loop);
 }
@@ -1072,6 +1148,7 @@
 
   fail_unless_equals_int (GPOINTER_TO_INT (state.test_data) & 0xf, 10);
 
+  stop_player (player, &state);
   g_object_unref (player);
   g_main_loop_unref (state.loop);
 }
@@ -1103,6 +1180,7 @@
 
   fail_unless_equals_int (GPOINTER_TO_INT (state.test_data) & 0xf, 10);
 
+  stop_player (player, &state);
   g_object_unref (player);
   g_main_loop_unref (state.loop);
 }
@@ -1132,8 +1210,9 @@
   gst_player_play (player);
   g_main_loop_run (state.loop);
 
-  fail_unless_equals_int (GPOINTER_TO_INT (state.test_data) & (~0x10), 8);
+  fail_unless_equals_int (GPOINTER_TO_INT (state.test_data) & (~0x10), 9);
 
+  stop_player (player, &state);
   g_object_unref (player);
   g_main_loop_unref (state.loop);
 }
@@ -1149,16 +1228,21 @@
 
   switch (step) {
     case 0:
+      fail_unless_equals_int (change, STATE_CHANGE_URI_LOADED);
+      fail_unless_equals_string (new_state->uri_loaded, "foo://bar");
+      new_state->test_data = GINT_TO_POINTER (step + 1);
+      break;
+    case 1:
       fail_unless_equals_int (change, STATE_CHANGE_STATE_CHANGED);
       fail_unless_equals_int (old_state->state, GST_PLAYER_STATE_STOPPED);
       fail_unless_equals_int (new_state->state, GST_PLAYER_STATE_BUFFERING);
       new_state->test_data = GINT_TO_POINTER (step + 1);
       break;
-    case 1:
+    case 2:
       fail_unless_equals_int (change, STATE_CHANGE_ERROR);
       new_state->test_data = GINT_TO_POINTER (step + 1);
       break;
-    case 2:
+    case 3:
       fail_unless_equals_int (change, STATE_CHANGE_STATE_CHANGED);
       fail_unless_equals_int (old_state->state, GST_PLAYER_STATE_BUFFERING);
       fail_unless_equals_int (new_state->state, GST_PLAYER_STATE_STOPPED);
@@ -1190,8 +1274,9 @@
   gst_player_play (player);
   g_main_loop_run (state.loop);
 
-  fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 3);
+  fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 4);
 
+  stop_player (player, &state);
   g_object_unref (player);
   g_main_loop_unref (state.loop);
 }
@@ -1208,16 +1293,21 @@
 
   switch (step) {
     case 0:
+      fail_unless_equals_int (change, STATE_CHANGE_URI_LOADED);
+      fail_unless_equals_string (new_state->uri_loaded, "foo://bar");
+      new_state->test_data = GINT_TO_POINTER (step + 1);
+      break;
+    case 1:
       fail_unless_equals_int (change, STATE_CHANGE_STATE_CHANGED);
       fail_unless_equals_int (old_state->state, GST_PLAYER_STATE_STOPPED);
       fail_unless_equals_int (new_state->state, GST_PLAYER_STATE_BUFFERING);
       new_state->test_data = GINT_TO_POINTER (step + 1);
       break;
-    case 1:
+    case 2:
       fail_unless_equals_int (change, STATE_CHANGE_ERROR);
       new_state->test_data = GINT_TO_POINTER (step + 1);
       break;
-    case 2:
+    case 3:
       fail_unless_equals_int (change, STATE_CHANGE_STATE_CHANGED);
       fail_unless_equals_int (old_state->state, GST_PLAYER_STATE_BUFFERING);
       fail_unless_equals_int (new_state->state, GST_PLAYER_STATE_STOPPED);
@@ -1230,34 +1320,39 @@
 
       gst_player_play (player);
       break;
-    case 3:
+    case 4:
+      fail_unless_equals_int (change, STATE_CHANGE_URI_LOADED);
+      fail_unless (g_str_has_suffix (new_state->uri_loaded, "audio-short.ogg"));
+      new_state->test_data = GINT_TO_POINTER (step + 1);
+      break;
+    case 5:
       fail_unless_equals_int (change, STATE_CHANGE_STATE_CHANGED);
       fail_unless_equals_int (old_state->state, GST_PLAYER_STATE_STOPPED);
       fail_unless_equals_int (new_state->state, GST_PLAYER_STATE_BUFFERING);
       new_state->test_data = GINT_TO_POINTER (step + 1);
       break;
-    case 4:
+    case 6:
       fail_unless_equals_int (change, STATE_CHANGE_MEDIA_INFO_UPDATED);
       new_state->test_data = GINT_TO_POINTER (step + 1);
       break;
-    case 5:
+    case 7:
       fail_unless_equals_int (change, STATE_CHANGE_VIDEO_DIMENSIONS_CHANGED);
       fail_unless_equals_int (new_state->width, 0);
       fail_unless_equals_int (new_state->height, 0);
       new_state->test_data = GINT_TO_POINTER (step + 1);
       break;
-    case 6:
+    case 8:
       fail_unless_equals_int (change, STATE_CHANGE_DURATION_CHANGED);
       fail_unless_equals_uint64 (new_state->duration,
           G_GUINT64_CONSTANT (464399092));
       new_state->test_data = GINT_TO_POINTER (step + 1);
       break;
-    case 7:
+    case 9:
       fail_unless_equals_int (change, STATE_CHANGE_POSITION_UPDATED);
       fail_unless_equals_uint64 (new_state->position, G_GUINT64_CONSTANT (0));
       new_state->test_data = GINT_TO_POINTER (step + 1);
       break;
-    case 8:
+    case 10:
       fail_unless_equals_int (change, STATE_CHANGE_STATE_CHANGED);
       fail_unless_equals_int (old_state->state, GST_PLAYER_STATE_BUFFERING);
       fail_unless_equals_int (new_state->state, GST_PLAYER_STATE_PLAYING);
@@ -1289,8 +1384,9 @@
   gst_player_play (player);
   g_main_loop_run (state.loop);
 
-  fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 9);
+  fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 11);
 
+  stop_player (player, &state);
   g_object_unref (player);
   g_main_loop_unref (state.loop);
 }
@@ -1341,6 +1437,7 @@
 
   fail_unless_equals_int (GPOINTER_TO_INT (state.test_data) & (~0x10), 2);
 
+  stop_player (player, &state);
   g_object_unref (player);
   g_main_loop_unref (state.loop);
 }
@@ -1376,7 +1473,6 @@
 
     if (do_quit && position >= 2000 * GST_MSECOND) {
       do_quit = FALSE;
-      gst_player_set_position_update_interval (player, 0);
       g_main_loop_quit (new_state->loop);
     }
   } else if (change == STATE_CHANGE_END_OF_STREAM ||
@@ -1399,6 +1495,7 @@
   GstPlayer *player;
   TestPlayerState state;
   gchar *uri;
+  GstStructure *config;
 
   memset (&state, 0, sizeof (state));
   state.loop = g_main_loop_new (NULL, FALSE);
@@ -1406,7 +1503,10 @@
   state.test_data = GINT_TO_POINTER (0);
 
   player = test_player_new (&state);
-  gst_player_set_position_update_interval (player, 600);
+
+  config = gst_player_get_config (player);
+  gst_player_config_set_position_update_interval (config, 600);
+  gst_player_set_config (player, config);
 
   fail_unless (player != NULL);
 
@@ -1420,17 +1520,157 @@
 
   fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 5);
 
+  /* Disable position updates */
+  gst_player_stop (player);
+
+  config = gst_player_get_config (player);
+  gst_player_config_set_position_update_interval (config, 0);
+  gst_player_set_config (player, config);
+
   g_timeout_add (2000, quit_loop_cb, state.loop);
   g_main_loop_run (state.loop);
 
   fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 5);
 
+  stop_player (player, &state);
   g_object_unref (player);
   g_main_loop_unref (state.loop);
 }
 
 END_TEST;
 
+static void
+test_restart_cb (GstPlayer * player,
+    TestPlayerStateChange change, TestPlayerState * old_state,
+    TestPlayerState * new_state)
+{
+  gint steps = GPOINTER_TO_INT (new_state->test_data);
+
+  if (!steps && change == STATE_CHANGE_URI_LOADED) {
+    fail_unless (g_str_has_suffix (new_state->uri_loaded, "sintel.mkv"));
+    new_state->test_data = GINT_TO_POINTER (steps + 1);
+  } else if (change == STATE_CHANGE_STATE_CHANGED
+      && new_state->state == GST_PLAYER_STATE_BUFFERING) {
+    new_state->test_data = GINT_TO_POINTER (steps + 1);
+    g_main_loop_quit (new_state->loop);
+  }
+}
+
+static void
+test_restart_cb2 (GstPlayer * player,
+    TestPlayerStateChange change, TestPlayerState * old_state,
+    TestPlayerState * new_state)
+{
+  gint steps = GPOINTER_TO_INT (new_state->test_data);
+
+  if (!steps && change == STATE_CHANGE_URI_LOADED) {
+    fail_unless (g_str_has_suffix (new_state->uri_loaded, "audio-short.ogg"));
+    new_state->test_data = GINT_TO_POINTER (steps + 1);
+  } else if (change == STATE_CHANGE_STATE_CHANGED
+      && new_state->state == GST_PLAYER_STATE_BUFFERING) {
+    new_state->test_data = GINT_TO_POINTER (steps + 1);
+    g_main_loop_quit (new_state->loop);
+  }
+}
+
+
+START_TEST (test_restart)
+{
+  GstPlayer *player;
+  TestPlayerState state;
+  gchar *uri;
+
+  memset (&state, 0, sizeof (state));
+  state.loop = g_main_loop_new (NULL, FALSE);
+  state.test_callback = test_restart_cb;
+  state.test_data = GINT_TO_POINTER (0);
+
+  player = test_player_new (&state);
+
+  fail_unless (player != NULL);
+
+  uri = gst_filename_to_uri (TEST_PATH "/sintel.mkv", NULL);
+  fail_unless (uri != NULL);
+  gst_player_set_uri (player, uri);
+  g_free (uri);
+
+  gst_player_play (player);
+  g_main_loop_run (state.loop);
+  fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 2);
+  stop_player (player, &state);
+
+  /* Try again with another URI */
+  state.test_data = GINT_TO_POINTER (0);
+  state.test_callback = test_restart_cb2;
+
+  uri = gst_filename_to_uri (TEST_PATH "/audio-short.ogg", NULL);
+  fail_unless (uri != NULL);
+  gst_player_set_uri (player, uri);
+  g_free (uri);
+
+  gst_player_play (player);
+  g_main_loop_run (state.loop);
+  fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 2);
+  stop_player (player, &state);
+
+  g_object_unref (player);
+  g_main_loop_unref (state.loop);
+}
+
+END_TEST;
+
+#define TEST_USER_AGENT "test user agent"
+
+static void
+source_setup_cb (GstElement * playbin, GstElement * source, GMainLoop * loop)
+{
+  gchar *user_agent;
+
+  g_object_get (source, "user-agent", &user_agent, NULL);
+  fail_unless_equals_string (user_agent, TEST_USER_AGENT);
+  g_free (user_agent);
+
+  g_main_loop_quit (loop);
+}
+
+START_TEST (test_user_agent)
+{
+  GstPlayer *player;
+  GMainLoop *loop;
+  GstElement *pipeline;
+  GstStructure *config;
+  gchar *user_agent;
+
+  loop = g_main_loop_new (NULL, FALSE);
+  player = gst_player_new (NULL, NULL);
+  fail_unless (player != NULL);
+
+  gst_player_set_uri (player, "http://badger.com/test.mkv");
+
+  config = gst_player_get_config (player);
+  gst_player_config_set_user_agent (config, TEST_USER_AGENT);
+
+  user_agent = gst_player_config_get_user_agent (config);
+  fail_unless_equals_string (user_agent, TEST_USER_AGENT);
+  g_free (user_agent);
+
+  gst_player_set_config (player, config);
+
+  pipeline = gst_player_get_pipeline (player);
+  g_signal_connect (pipeline, "source-setup", G_CALLBACK (source_setup_cb),
+      loop);
+
+  gst_player_pause (player);
+  g_main_loop_run (loop);
+
+  gst_object_unref (pipeline);
+
+  g_object_unref (player);
+  g_main_loop_unref (loop);
+}
+
+END_TEST;
+
 static Suite *
 player_suite (void)
 {
@@ -1472,6 +1712,8 @@
   tcase_add_test (tc_general, test_play_forward_rate);
   tcase_add_test (tc_general, test_play_backward_rate);
   tcase_add_test (tc_general, test_play_audio_video_seek_done);
+  tcase_add_test (tc_general, test_restart);
+  tcase_add_test (tc_general, test_user_agent);
 
   suite_add_tcase (s, tc_general);
 
diff --git a/tests/check/pipelines/simple-launch-lines.c b/tests/check/pipelines/simple-launch-lines.c
new file mode 100644
index 0000000..f03fc94
--- /dev/null
+++ b/tests/check/pipelines/simple-launch-lines.c
@@ -0,0 +1,361 @@
+/* GStreamer
+ * Copyright (C) 2005 Andy Wingo <wingo@pobox.com>
+ *
+ * simple_launch_lines.c: Unit test for simple pipelines
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <gst/check/gstcheck.h>
+#include <gst/gl/gstglconfig.h>
+
+#ifndef GST_DISABLE_PARSE
+
+static GstElement *
+setup_pipeline (const gchar * pipe_descr)
+{
+  GstElement *pipeline;
+
+  pipeline = gst_parse_launch (pipe_descr, NULL);
+  g_return_val_if_fail (GST_IS_PIPELINE (pipeline), NULL);
+  return pipeline;
+}
+
+/* 
+ * run_pipeline:
+ * @pipe: the pipeline to run
+ * @desc: the description for use in messages
+ * @events: is a mask of expected events
+ * @tevent: is the expected terminal event.
+ *
+ * the poll call will time out after half a second.
+ */
+static void
+run_pipeline (GstElement * pipe, const gchar * descr,
+    GstMessageType events, GstMessageType tevent, GstState target_state)
+{
+  GstBus *bus;
+  GstMessage *message;
+  GstMessageType revent;
+  GstStateChangeReturn ret;
+
+  g_assert (pipe);
+  bus = gst_element_get_bus (pipe);
+  g_assert (bus);
+
+  fail_if (gst_element_set_state (pipe, target_state) ==
+      GST_STATE_CHANGE_FAILURE, "Could not set pipeline %s to playing", descr);
+  ret = gst_element_get_state (pipe, NULL, NULL, 10 * GST_SECOND);
+  if (ret == GST_STATE_CHANGE_ASYNC) {
+    g_critical ("Pipeline '%s' failed to go to PAUSED fast enough", descr);
+    goto done;
+  } else if ((ret != GST_STATE_CHANGE_SUCCESS)
+      && (ret != GST_STATE_CHANGE_NO_PREROLL)) {
+    g_critical ("Pipeline '%s' failed to go into PAUSED state (%s)", descr,
+        gst_element_state_change_return_get_name (ret));
+    goto done;
+  }
+
+  while (1) {
+    message = gst_bus_poll (bus, GST_MESSAGE_ANY, GST_SECOND / 2);
+
+    /* always have to pop the message before getting back into poll */
+    if (message) {
+      revent = GST_MESSAGE_TYPE (message);
+      gst_message_unref (message);
+    } else {
+      revent = GST_MESSAGE_UNKNOWN;
+    }
+
+    if (revent == tevent) {
+      break;
+    } else if (revent == GST_MESSAGE_UNKNOWN) {
+      g_critical ("Unexpected timeout in gst_bus_poll, looking for %d: %s",
+          tevent, descr);
+      break;
+    } else if (revent & events) {
+      continue;
+    }
+    g_critical
+        ("Unexpected message received of type %d, '%s', looking for %d: %s",
+        revent, gst_message_type_get_name (revent), tevent, descr);
+  }
+
+done:
+  fail_if (gst_element_set_state (pipe, GST_STATE_NULL) ==
+      GST_STATE_CHANGE_FAILURE, "Could not set pipeline %s to NULL", descr);
+  gst_element_get_state (pipe, NULL, NULL, GST_CLOCK_TIME_NONE);
+  gst_object_unref (pipe);
+
+  gst_bus_set_flushing (bus, TRUE);
+  gst_object_unref (bus);
+}
+
+GST_START_TEST (test_glimagesink)
+{
+  const gchar *s;
+  GstState target_state = GST_STATE_PLAYING;
+
+  s = "videotestsrc num-buffers=10 ! glimagesink";
+  run_pipeline (setup_pipeline (s), s,
+      GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+      GST_MESSAGE_UNKNOWN, target_state);
+}
+
+GST_END_TEST
+GST_START_TEST (test_glfiltercube)
+{
+  const gchar *s;
+  GstState target_state = GST_STATE_PLAYING;
+
+  s = "videotestsrc num-buffers=10 ! glupload ! glfiltercube ! fakesink";
+  run_pipeline (setup_pipeline (s), s,
+      GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+      GST_MESSAGE_UNKNOWN, target_state);
+}
+
+GST_END_TEST
+#define N_EFFECTS 18
+GST_START_TEST (test_gleffects)
+{
+  gchar *s;
+  GstState target_state = GST_STATE_PLAYING;
+  guint i;
+
+  for (i = 0; i < N_EFFECTS; i++) {
+    s = g_strdup_printf ("videotestsrc num-buffers=10 ! glupload ! "
+        "gleffects effect=%i ! fakesink", i);
+    run_pipeline (setup_pipeline (s), s,
+        GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+        GST_MESSAGE_UNKNOWN, target_state);
+    g_free (s);
+  }
+}
+
+GST_END_TEST
+#undef N_EFFECTS
+GST_START_TEST (test_glshader)
+{
+  const gchar *s;
+  GstState target_state = GST_STATE_PLAYING;
+
+  s = "videotestsrc num-buffers=10 ! glupload ! glshader ! fakesink";
+  run_pipeline (setup_pipeline (s), s,
+      GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+      GST_MESSAGE_UNKNOWN, target_state);
+
+#if GST_GL_HAVE_OPENGL
+  s = "gltestsrc num-buffers=10 ! glshader ! fakesink";
+  run_pipeline (setup_pipeline (s), s,
+      GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+      GST_MESSAGE_UNKNOWN, target_state);
+#endif
+}
+
+GST_END_TEST
+GST_START_TEST (test_glfilterapp)
+{
+  const gchar *s;
+  GstState target_state = GST_STATE_PLAYING;
+
+  s = "videotestsrc num-buffers=10 ! glupload ! glfilterapp ! fakesink";
+  run_pipeline (setup_pipeline (s), s,
+      GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+      GST_MESSAGE_UNKNOWN, target_state);
+
+#if GST_GL_HAVE_OPENGL
+  s = "gltestsrc num-buffers=10 ! glfilterapp ! fakesink";
+  run_pipeline (setup_pipeline (s), s,
+      GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+      GST_MESSAGE_UNKNOWN, target_state);
+#endif
+}
+
+GST_END_TEST
+#ifdef HAVE_PNG
+#if HAVE_JPEG
+GST_START_TEST (test_gloverlay)
+{
+  const gchar *s;
+  GstState target_state = GST_STATE_PLAYING;
+
+  s = "videotestsrc num-buffers=10 ! glupload ! gloverlay ! fakesink";
+  run_pipeline (setup_pipeline (s), s,
+      GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+      GST_MESSAGE_UNKNOWN, target_state);
+
+#if GST_GL_HAVE_OPENGL
+  s = "gltestsrc num-buffers=10 ! gloverlay ! fakesink";
+  run_pipeline (setup_pipeline (s), s,
+      GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+      GST_MESSAGE_UNKNOWN, target_state);
+#endif
+}
+
+GST_END_TEST
+#endif
+#endif
+#if GST_GL_HAVE_OPENGL
+#define N_SRCS 13
+GST_START_TEST (test_gltestsrc)
+{
+  gchar *s;
+  GstState target_state = GST_STATE_PLAYING;
+  guint i;
+
+  for (i = 0; i < N_SRCS; i++) {
+    s = g_strdup_printf ("gltestsrc pattern=%i num-buffers=10 ! fakesink", i);
+    run_pipeline (setup_pipeline (s), s,
+        GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+        GST_MESSAGE_UNKNOWN, target_state);
+    g_free (s);
+  }
+}
+
+GST_END_TEST
+#undef N_SRCS
+GST_START_TEST (test_glfilterglass)
+{
+  const gchar *s;
+  GstState target_state = GST_STATE_PLAYING;
+
+  s = "videotestsrc num-buffers=10 ! glupload ! glfilterglass ! fakesink";
+  run_pipeline (setup_pipeline (s), s,
+      GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+      GST_MESSAGE_UNKNOWN, target_state);
+
+  s = "gltestsrc num-buffers=10 ! glfilterglass ! fakesink";
+  run_pipeline (setup_pipeline (s), s,
+      GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+      GST_MESSAGE_UNKNOWN, target_state);
+}
+
+GST_END_TEST
+#if 0
+GST_START_TEST (test_glfilterreflectedscreen)
+{
+  const gchar *s;
+  GstState target_state = GST_STATE_PLAYING;
+
+  s = "videotestsrc num-buffers=10 ! glupload ! glfilterreflectedscreen ! "
+      "fakesink";
+  run_pipeline (setup_pipeline (s), s,
+      GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+      GST_MESSAGE_UNKNOWN, target_state);
+
+  s = "gltestsrc num-buffers=10 ! glfilterreflectedscreen ! fakesink";
+  run_pipeline (setup_pipeline (s), s,
+      GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+      GST_MESSAGE_UNKNOWN, target_state);
+}
+
+GST_END_TEST
+#endif
+GST_START_TEST (test_gldeinterlace)
+{
+  const gchar *s;
+  GstState target_state = GST_STATE_PLAYING;
+
+  s = "videotestsrc num-buffers=10 ! glupload ! gldeinterlace ! fakesink";
+  run_pipeline (setup_pipeline (s), s,
+      GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+      GST_MESSAGE_UNKNOWN, target_state);
+
+  s = "gltestsrc num-buffers=10 ! gldeinterlace ! fakesink";
+  run_pipeline (setup_pipeline (s), s,
+      GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+      GST_MESSAGE_UNKNOWN, target_state);
+}
+
+GST_END_TEST
+GST_START_TEST (test_glmosaic)
+{
+  const gchar *s;
+  GstState target_state = GST_STATE_PLAYING;
+
+  s = "videotestsrc num-buffers=10 ! glupload ! glmosaic ! fakesink";
+  run_pipeline (setup_pipeline (s), s,
+      GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+      GST_MESSAGE_UNKNOWN, target_state);
+
+  s = "gltestsrc num-buffers=10 ! glmosaic ! fakesink";
+  run_pipeline (setup_pipeline (s), s,
+      GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+      GST_MESSAGE_UNKNOWN, target_state);
+}
+
+GST_END_TEST
+GST_START_TEST (test_gldifferencematte)
+{
+  const gchar *s;
+  GstState target_state = GST_STATE_PLAYING;
+
+  s = "videotestsrc num-buffers=10 ! glupload ! gldifferencematte ! fakesink";
+  run_pipeline (setup_pipeline (s), s,
+      GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+      GST_MESSAGE_UNKNOWN, target_state);
+
+  s = "gltestsrc num-buffers=10 ! gldifferencematte ! fakesink";
+  run_pipeline (setup_pipeline (s), s,
+      GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+      GST_MESSAGE_UNKNOWN, target_state);
+}
+
+GST_END_TEST
+#endif /* GST_GL_HAVE_OPENGL */
+#endif /* !GST_DISABLE_PARSE */
+static Suite *
+simple_launch_lines_suite (void)
+{
+  Suite *s = suite_create ("Pipelines");
+  TCase *tc_chain = tcase_create ("linear");
+
+  /* time out after 60s, not the default 3 */
+  tcase_set_timeout (tc_chain, 60);
+
+  suite_add_tcase (s, tc_chain);
+#ifndef GST_DISABLE_PARSE
+  tcase_add_test (tc_chain, test_glimagesink);
+  tcase_add_test (tc_chain, test_glfiltercube);
+  tcase_add_test (tc_chain, test_gleffects);
+  tcase_add_test (tc_chain, test_glshader);
+  tcase_add_test (tc_chain, test_glfilterapp);
+#ifdef HAVE_PNG
+#if HAVE_JPEG
+  tcase_add_test (tc_chain, test_gloverlay);
+#endif
+#endif
+#if GST_GL_HAVE_OPENGL
+  tcase_add_test (tc_chain, test_gltestsrc);
+  tcase_add_test (tc_chain, test_glfilterglass);
+/*  tcase_add_test (tc_chain, test_glfilterreflectedscreen);*/
+  tcase_add_test (tc_chain, test_glmosaic);
+  tcase_add_test (tc_chain, test_gldeinterlace);
+#ifdef HAVE_PNG
+  tcase_add_test (tc_chain, test_gldifferencematte);
+/*  tcase_add_test (tc_chain, test_glbumper);*/
+#if HAVE_JPEG
+#endif /* HAVE_JPEG */
+#endif /* HAVE_PNG */
+#endif /* GST_GL_HAVE_OPENGL */
+#endif /* !GST_DISABLE_PARSE */
+  return s;
+}
+
+GST_CHECK_MAIN (simple_launch_lines);
diff --git a/tests/examples/Makefile.in b/tests/examples/Makefile.in
index 3872c0f..135e2b9 100644
--- a/tests/examples/Makefile.in
+++ b/tests/examples/Makefile.in
@@ -318,6 +318,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -339,6 +341,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -388,6 +392,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -533,6 +539,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -659,8 +667,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -703,8 +709,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/avsamplesink/Makefile.in b/tests/examples/avsamplesink/Makefile.in
index a9fbae1..8440a9b 100644
--- a/tests/examples/avsamplesink/Makefile.in
+++ b/tests/examples/avsamplesink/Makefile.in
@@ -272,6 +272,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -293,6 +295,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -342,6 +346,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -487,6 +493,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -613,8 +621,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -657,8 +663,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/camerabin2/Makefile.in b/tests/examples/camerabin2/Makefile.in
index e788b01..164721e 100644
--- a/tests/examples/camerabin2/Makefile.in
+++ b/tests/examples/camerabin2/Makefile.in
@@ -290,6 +290,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -311,6 +313,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -360,6 +364,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -505,6 +511,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -631,8 +639,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -675,8 +681,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/codecparsers/Makefile.in b/tests/examples/codecparsers/Makefile.in
index a809599..4eb2cc7 100644
--- a/tests/examples/codecparsers/Makefile.in
+++ b/tests/examples/codecparsers/Makefile.in
@@ -275,6 +275,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -296,6 +298,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -345,6 +349,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -490,6 +496,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -616,8 +624,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -660,8 +666,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/directfb/Makefile.in b/tests/examples/directfb/Makefile.in
index 621282f..863c88f 100644
--- a/tests/examples/directfb/Makefile.in
+++ b/tests/examples/directfb/Makefile.in
@@ -269,6 +269,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -290,6 +292,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -339,6 +343,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -484,6 +490,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -610,8 +618,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -654,8 +660,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/Makefile.in b/tests/examples/gl/Makefile.in
index 41a15c5..a4f8f34 100644
--- a/tests/examples/gl/Makefile.in
+++ b/tests/examples/gl/Makefile.in
@@ -280,6 +280,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -301,6 +303,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -350,6 +354,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -495,6 +501,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -621,8 +629,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -665,8 +671,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/clutter/Makefile.am b/tests/examples/gl/clutter/Makefile.am
index cb8796c..a8e3115 100644
--- a/tests/examples/gl/clutter/Makefile.am
+++ b/tests/examples/gl/clutter/Makefile.am
@@ -30,7 +30,7 @@
 	$(GL_CFLAGS) $(CLUTTER_CFLAGS) \
 	$(CLUTTER_GLX_CFLAGS) $(CLUTTER_X11_CFLAGS) $(XCOMPOSITE_CFLAGS)
 clutteractor_LDADD=$(CLUTTER_LIBS) $(CLUTTER_GLX_LIBS) $(CLUTTER_X11_LIBS) \
-	$(GST_PLUGINS_GL_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
+	$(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
 	$(GL_LIBS) $(XCOMPOSITE_LIBS) -lgstvideo-$(GST_API_VERSION)
 
 clutteractortee_SOURCES = clutteractortee.c
@@ -40,7 +40,7 @@
 	$(GL_CFLAGS) $(CLUTTER_CFLAGS) \
 	$(CLUTTER_GLX_CFLAGS) $(CLUTTER_X11_CFLAGS) $(XCOMPOSITE_CFLAGS)
 clutteractortee_LDADD=$(CLUTTER_LIBS) $(CLUTTER_GLX_LIBS) $(CLUTTER_X11_LIBS) \
-	$(GST_PLUGINS_GL_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
+	$(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
 	$(GL_LIBS) $(XCOMPOSITE_LIBS) -lgstvideo-$(GST_API_VERSION)
 
 endif
diff --git a/tests/examples/gl/clutter/Makefile.in b/tests/examples/gl/clutter/Makefile.in
index aeda840..b570e19 100644
--- a/tests/examples/gl/clutter/Makefile.in
+++ b/tests/examples/gl/clutter/Makefile.in
@@ -312,6 +312,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -333,6 +335,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -382,6 +386,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -527,6 +533,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -653,8 +661,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -697,8 +703,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -803,7 +814,7 @@
 @HAVE_CLUTTER_GLX_TRUE@@HAVE_CLUTTER_X11_TRUE@@HAVE_XCOMPOSITE_TRUE@	$(CLUTTER_GLX_CFLAGS) $(CLUTTER_X11_CFLAGS) $(XCOMPOSITE_CFLAGS)
 
 @HAVE_CLUTTER_GLX_TRUE@@HAVE_CLUTTER_X11_TRUE@@HAVE_XCOMPOSITE_TRUE@clutteractor_LDADD = $(CLUTTER_LIBS) $(CLUTTER_GLX_LIBS) $(CLUTTER_X11_LIBS) \
-@HAVE_CLUTTER_GLX_TRUE@@HAVE_CLUTTER_X11_TRUE@@HAVE_XCOMPOSITE_TRUE@	$(GST_PLUGINS_GL_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
+@HAVE_CLUTTER_GLX_TRUE@@HAVE_CLUTTER_X11_TRUE@@HAVE_XCOMPOSITE_TRUE@	$(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
 @HAVE_CLUTTER_GLX_TRUE@@HAVE_CLUTTER_X11_TRUE@@HAVE_XCOMPOSITE_TRUE@	$(GL_LIBS) $(XCOMPOSITE_LIBS) -lgstvideo-$(GST_API_VERSION)
 
 @HAVE_CLUTTER_GLX_TRUE@@HAVE_CLUTTER_X11_TRUE@@HAVE_XCOMPOSITE_TRUE@clutteractortee_SOURCES = clutteractortee.c
@@ -813,7 +824,7 @@
 @HAVE_CLUTTER_GLX_TRUE@@HAVE_CLUTTER_X11_TRUE@@HAVE_XCOMPOSITE_TRUE@	$(CLUTTER_GLX_CFLAGS) $(CLUTTER_X11_CFLAGS) $(XCOMPOSITE_CFLAGS)
 
 @HAVE_CLUTTER_GLX_TRUE@@HAVE_CLUTTER_X11_TRUE@@HAVE_XCOMPOSITE_TRUE@clutteractortee_LDADD = $(CLUTTER_LIBS) $(CLUTTER_GLX_LIBS) $(CLUTTER_X11_LIBS) \
-@HAVE_CLUTTER_GLX_TRUE@@HAVE_CLUTTER_X11_TRUE@@HAVE_XCOMPOSITE_TRUE@	$(GST_PLUGINS_GL_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
+@HAVE_CLUTTER_GLX_TRUE@@HAVE_CLUTTER_X11_TRUE@@HAVE_XCOMPOSITE_TRUE@	$(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
 @HAVE_CLUTTER_GLX_TRUE@@HAVE_CLUTTER_X11_TRUE@@HAVE_XCOMPOSITE_TRUE@	$(GL_LIBS) $(XCOMPOSITE_LIBS) -lgstvideo-$(GST_API_VERSION)
 
 all: all-am
diff --git a/tests/examples/gl/cocoa/Makefile.in b/tests/examples/gl/cocoa/Makefile.in
index 1ee387b..099ff94 100644
--- a/tests/examples/gl/cocoa/Makefile.in
+++ b/tests/examples/gl/cocoa/Makefile.in
@@ -275,6 +275,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -296,6 +298,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -345,6 +349,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -490,6 +496,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -616,8 +624,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -660,8 +666,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/generic/Makefile.in b/tests/examples/gl/generic/Makefile.in
index 8455ec5..2853eb0 100644
--- a/tests/examples/gl/generic/Makefile.in
+++ b/tests/examples/gl/generic/Makefile.in
@@ -276,6 +276,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -297,6 +299,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -346,6 +350,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -491,6 +497,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -617,8 +625,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -661,8 +667,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/generic/cube/Makefile.in b/tests/examples/gl/generic/cube/Makefile.in
index 9c8a066..15e8308 100644
--- a/tests/examples/gl/generic/cube/Makefile.in
+++ b/tests/examples/gl/generic/cube/Makefile.in
@@ -271,6 +271,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -292,6 +294,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -341,6 +345,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -486,6 +492,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -612,8 +620,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -656,8 +662,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/generic/cubeyuv/Makefile.in b/tests/examples/gl/generic/cubeyuv/Makefile.in
index 967f181..4015864 100644
--- a/tests/examples/gl/generic/cubeyuv/Makefile.in
+++ b/tests/examples/gl/generic/cubeyuv/Makefile.in
@@ -271,6 +271,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -292,6 +294,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -341,6 +345,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -486,6 +492,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -612,8 +620,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -656,8 +662,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/generic/doublecube/Makefile.in b/tests/examples/gl/generic/doublecube/Makefile.in
index 80da624..3b7f8a5 100644
--- a/tests/examples/gl/generic/doublecube/Makefile.in
+++ b/tests/examples/gl/generic/doublecube/Makefile.in
@@ -271,6 +271,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -292,6 +294,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -341,6 +345,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -486,6 +492,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -612,8 +620,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -656,8 +662,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/generic/recordgraphic/Makefile.in b/tests/examples/gl/generic/recordgraphic/Makefile.in
index ccbb38e..e1d9308 100644
--- a/tests/examples/gl/generic/recordgraphic/Makefile.in
+++ b/tests/examples/gl/generic/recordgraphic/Makefile.in
@@ -272,6 +272,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -293,6 +295,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -342,6 +346,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -487,6 +493,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -613,8 +621,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -657,8 +663,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/gtk/3dvideo/Makefile.in b/tests/examples/gl/gtk/3dvideo/Makefile.in
index eea6a64..850bb28 100644
--- a/tests/examples/gl/gtk/3dvideo/Makefile.in
+++ b/tests/examples/gl/gtk/3dvideo/Makefile.in
@@ -295,6 +295,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -316,6 +318,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -365,6 +369,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -510,6 +516,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -636,8 +644,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -680,8 +686,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/gtk/3dvideo/main.cpp b/tests/examples/gl/gtk/3dvideo/main.cpp
index 1d8e5b7..16692f2 100644
--- a/tests/examples/gl/gtk/3dvideo/main.cpp
+++ b/tests/examples/gl/gtk/3dvideo/main.cpp
@@ -47,6 +47,9 @@
 static GstBusSyncReply
 create_window (GstBus * bus, GstMessage * message, GtkWidget * widget)
 {
+  if (gst_gtk_handle_need_context (bus, message, NULL))
+    return GST_BUS_DROP;
+
   /* ignore anything but 'prepare-window-handle' element messages */
   if (GST_MESSAGE_TYPE (message) != GST_MESSAGE_ELEMENT)
     return GST_BUS_PASS;
@@ -107,6 +110,17 @@
   return FALSE;
 }
 
+static gboolean
+resize_cb (GtkWidget * widget, GdkEvent * event, gpointer sink)
+{
+  GtkAllocation allocation;
+
+  gtk_widget_get_allocation (widget, &allocation);
+  gst_video_overlay_set_render_rectangle (GST_VIDEO_OVERLAY (sink), allocation.x, allocation.y, allocation.width, allocation.height);
+
+  return G_SOURCE_CONTINUE;
+}
+
 static void
 destroy_cb (GtkWidget * widget, GdkEvent * event, GstElement * pipeline)
 {
@@ -406,6 +420,7 @@
 
   /* Redraw needed when paused or stopped (PAUSED or READY) */
   g_signal_connect (area, "draw", G_CALLBACK (draw_cb), videosink);
+  g_signal_connect(area, "configure-event", G_CALLBACK(resize_cb), videosink);
 
   gtk_widget_show_all (window);
 
diff --git a/tests/examples/gl/gtk/Makefile.am b/tests/examples/gl/gtk/Makefile.am
index 3c18679..5728905 100644
--- a/tests/examples/gl/gtk/Makefile.am
+++ b/tests/examples/gl/gtk/Makefile.am
@@ -1,5 +1,5 @@
 
-SUBDIRS = . gtkvideooverlay filternovideooverlay filtervideooverlay fxtest switchvideooverlay 3dvideo
+SUBDIRS = . filternovideooverlay filtervideooverlay fxtest switchvideooverlay 3dvideo
 
 noinst_LTLIBRARIES = libgstgtkhelper.la
 
diff --git a/tests/examples/gl/gtk/Makefile.in b/tests/examples/gl/gtk/Makefile.in
index 34d00c8..4b1db57 100644
--- a/tests/examples/gl/gtk/Makefile.in
+++ b/tests/examples/gl/gtk/Makefile.in
@@ -312,6 +312,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -333,6 +335,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -382,6 +386,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -527,6 +533,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -653,8 +661,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -697,8 +703,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -787,7 +798,7 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 wayland_scanner = @wayland_scanner@
-SUBDIRS = . gtkvideooverlay filternovideooverlay filtervideooverlay fxtest switchvideooverlay 3dvideo
+SUBDIRS = . filternovideooverlay filtervideooverlay fxtest switchvideooverlay 3dvideo
 noinst_LTLIBRARIES = libgstgtkhelper.la
 libgstgtkhelper_la_SOURCES = gstgtk.c gstgtk.h
 libgstgtkhelper_la_CFLAGS = -I$(top_srcdir)/gst-libs \
diff --git a/tests/examples/gl/gtk/filternovideooverlay/Makefile.in b/tests/examples/gl/gtk/filternovideooverlay/Makefile.in
index 82ae551..9bad27c 100644
--- a/tests/examples/gl/gtk/filternovideooverlay/Makefile.in
+++ b/tests/examples/gl/gtk/filternovideooverlay/Makefile.in
@@ -273,6 +273,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -294,6 +296,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -343,6 +347,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -488,6 +494,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -614,8 +622,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -658,8 +664,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/gtk/filtervideooverlay/Makefile.in b/tests/examples/gl/gtk/filtervideooverlay/Makefile.in
index b9cc5a0..a22742a 100644
--- a/tests/examples/gl/gtk/filtervideooverlay/Makefile.in
+++ b/tests/examples/gl/gtk/filtervideooverlay/Makefile.in
@@ -274,6 +274,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -295,6 +297,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -344,6 +348,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -489,6 +495,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -615,8 +623,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -659,8 +665,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/gtk/fxtest/Makefile.in b/tests/examples/gl/gtk/fxtest/Makefile.in
index d5a8867..ac50a68 100644
--- a/tests/examples/gl/gtk/fxtest/Makefile.in
+++ b/tests/examples/gl/gtk/fxtest/Makefile.in
@@ -280,6 +280,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -301,6 +303,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -350,6 +354,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -495,6 +501,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -621,8 +629,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -665,8 +671,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/gtk/fxtest/fxtest.c b/tests/examples/gl/gtk/fxtest/fxtest.c
index 4b60b54..8b56b96 100644
--- a/tests/examples/gl/gtk/fxtest/fxtest.c
+++ b/tests/examples/gl/gtk/fxtest/fxtest.c
@@ -40,6 +40,9 @@
 static GstBusSyncReply
 create_window (GstBus * bus, GstMessage * message, GtkWidget * widget)
 {
+  if (gst_gtk_handle_need_context (bus, message, NULL))
+    return GST_BUS_DROP;
+
   /* ignore anything but 'prepare-window-handle' element messages */
   if (GST_MESSAGE_TYPE (message) != GST_MESSAGE_ELEMENT)
     return GST_BUS_PASS;
@@ -98,6 +101,22 @@
 }
 
 static gboolean
+resize_cb (GtkWidget * widget, GdkEvent * event, gpointer data)
+{
+  GtkAllocation allocation;
+  GstVideoOverlay *overlay =
+      GST_VIDEO_OVERLAY (gst_bin_get_by_interface (GST_BIN (data),
+          GST_TYPE_VIDEO_OVERLAY));
+
+  gtk_widget_get_allocation (widget, &allocation);
+  gst_video_overlay_set_render_rectangle (overlay, allocation.x, allocation.y,
+      allocation.width, allocation.height);
+  gst_object_unref (overlay);
+
+  return G_SOURCE_CONTINUE;
+}
+
+static gboolean
 expose_cb (GtkWidget * widget, gpointer unused, gpointer data)
 {
   GstVideoOverlay *overlay =
@@ -330,7 +349,7 @@
   gtk_container_add (GTK_CONTAINER (window), vbox);
 
   g_signal_connect (screen, "draw", G_CALLBACK (expose_cb), pipeline);
-  g_signal_connect (screen, "configure-event", G_CALLBACK (expose_cb),
+  g_signal_connect (screen, "configure-event", G_CALLBACK (resize_cb),
       pipeline);
   gtk_widget_realize (screen);
 
diff --git a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.am b/tests/examples/gl/gtk/gtkvideooverlay/Makefile.am
deleted file mode 100644
index d6da10d..0000000
--- a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.am
+++ /dev/null
@@ -1,11 +0,0 @@
-noinst_PROGRAMS = gtkvideooverlay
-
-gtkvideooverlay_SOURCES = main.cpp
-
-gtkvideooverlay_CXXFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
-	$(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
-	$(GL_CFLAGS) $(GTK3_CFLAGS)  $(X11_CFLAGS)
-gtkvideooverlay_LDADD=../libgstgtkhelper.la \
-	$(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
-	$(GL_LIBS) -lgstvideo-$(GST_API_VERSION) $(X11_LIBS)
-
diff --git a/tests/examples/gl/gtk/gtkvideooverlay/main.cpp b/tests/examples/gl/gtk/gtkvideooverlay/main.cpp
deleted file mode 100644
index 5ca8108..0000000
--- a/tests/examples/gl/gtk/gtkvideooverlay/main.cpp
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2008-2009 Julien Isorce <julien.isorce@gmail.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gst/gst.h>
-#include <gtk/gtk.h>
-#include <gdk/gdk.h>
-
-#include "../gstgtk.h"
-
-#ifdef HAVE_X11
-#include <X11/Xlib.h>
-#endif
-
-
-static GstBusSyncReply create_window (GstBus* bus, GstMessage* message, GtkWidget* widget)
-{
-  /* ignore anything but 'prepare-window-handle' element messages */
-  if (GST_MESSAGE_TYPE (message) != GST_MESSAGE_ELEMENT)
-      return GST_BUS_PASS;
-
-  if (!gst_is_video_overlay_prepare_window_handle_message (message))
-      return GST_BUS_PASS;
-
-  g_print ("setting window handle\n");
-
-  /* do not call gdk_window_ensure_native for the first time here because
-   * we are in a different thread than the main thread */
-  gst_video_overlay_set_gtk_window (GST_VIDEO_OVERLAY (GST_MESSAGE_SRC (message)), widget);
-
-  gst_message_unref (message);
-
-  return GST_BUS_DROP;
-}
-
-
-static void end_stream_cb(GstBus* bus, GstMessage* message, GstElement* pipeline)
-{
-  switch (GST_MESSAGE_TYPE (message))
-  {
-    case GST_MESSAGE_EOS:
-      g_print ("End of stream\n");
-
-      gst_element_set_state (pipeline, GST_STATE_NULL);
-      gst_object_unref(pipeline);
-      gtk_main_quit ();
-      break;
-    case GST_MESSAGE_ERROR:
-    {
-      gchar *debug = NULL;
-      GError *err = NULL;
-
-      gst_message_parse_error (message, &err, &debug);
-
-      g_print ("Error: %s\n", err->message);
-      g_error_free (err);
-
-      if (debug)
-      {
-        g_print ("Debug details: %s\n", debug);
-        g_free (debug);
-      }
-
-      gst_element_set_state (pipeline, GST_STATE_NULL);
-      gst_object_unref(pipeline);
-      gtk_main_quit ();
-      break;
-    }
-    default:
-      break;
-  }
-}
-
-static gboolean draw_cb(GtkWidget* widget, cairo_t *cr, GstElement* videosink)
-{
-    g_print ("draw_cb\n");
-    gst_video_overlay_expose (GST_VIDEO_OVERLAY (videosink));
-    return FALSE;
-}
-
-
-static void destroy_cb(GtkWidget* widget, GdkEvent* event, GstElement* pipeline)
-{
-    g_print("Close\n");
-
-    gst_element_set_state (pipeline, GST_STATE_NULL);
-    gst_object_unref(pipeline);
-
-    gtk_main_quit();
-}
-
-
-static void button_state_null_cb(GtkWidget* widget, GstElement* pipeline)
-{
-    gst_element_set_state (pipeline, GST_STATE_NULL);
-    g_print ("GST_STATE_NULL\n");
-}
-
-
-static void button_state_ready_cb(GtkWidget* widget, GstElement* pipeline)
-{
-    gst_element_set_state (pipeline, GST_STATE_READY);
-    g_print ("GST_STATE_READY\n");
-}
-
-
-static void button_state_paused_cb(GtkWidget* widget, GstElement* pipeline)
-{
-    gst_element_set_state (pipeline, GST_STATE_PAUSED);
-    g_print ("GST_STATE_PAUSED\n");
-}
-
-
-static void button_state_playing_cb(GtkWidget* widget, GstElement* pipeline)
-{
-    gst_element_set_state (pipeline, GST_STATE_PLAYING);
-    g_print ("GST_STATE_PLAYING\n");
-}
-
-
-static gchar* slider_fps_cb (GtkScale* scale, gdouble value, GstElement* pipeline)
-{
-    //change the video frame rate dynamically
-    return g_strdup_printf ("video framerate: %0.*g", gtk_scale_get_digits (scale), value);
-}
-
-
-
-gint main (gint argc, gchar *argv[])
-{
-#ifdef HAVE_X11
-    XInitThreads ();
-#endif
-
-    GtkWidget *area;
-    gst_init (&argc, &argv);
-    gtk_init (&argc, &argv);
-
-    GstElement* pipeline = gst_pipeline_new ("pipeline");
-    GstElement* videosrc  = gst_element_factory_make ("videotestsrc", "videotestsrc");
-    GstElement* videosink = gst_element_factory_make ("glimagesink", "glimagesink");
-
-    gst_bin_add_many (GST_BIN (pipeline), videosrc, videosink, NULL);
-
-    gboolean link_ok = gst_element_link_many(videosrc, videosink, NULL) ;
-    if(!link_ok)
-    {
-        g_warning("Failed to link an element!\n") ;
-        return -1;
-    }
-
-    //set window id on this event
-    GstBus* bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
-    gst_bus_add_signal_watch (bus);
-    g_signal_connect(bus, "message::error", G_CALLBACK(end_stream_cb), pipeline);
-    g_signal_connect(bus, "message::warning", G_CALLBACK(end_stream_cb), pipeline);
-    g_signal_connect(bus, "message::eos", G_CALLBACK(end_stream_cb), pipeline);
-
-    gst_element_set_state(pipeline, GST_STATE_READY);
-
-    area = gtk_drawing_area_new();
-    gst_bus_set_sync_handler (bus, (GstBusSyncHandler) create_window, area, NULL);
-    gst_object_unref (bus);
-
-    //window that contains an area where the video is drawn
-    GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-    gtk_widget_set_size_request (window, 640, 480);
-    gtk_window_move (GTK_WINDOW (window), 300, 10);
-    gtk_window_set_title (GTK_WINDOW (window), "glimagesink implement the gstvideooverlay interface");
-    GdkGeometry geometry;
-    geometry.min_width = 1;
-    geometry.min_height = 1;
-    geometry.max_width = -1;
-    geometry.max_height = -1;
-    gtk_window_set_geometry_hints (GTK_WINDOW (window), window, &geometry, GDK_HINT_MIN_SIZE);
-
-    //window to control the states
-    GtkWidget* window_control = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-    geometry.min_width = 1;
-    geometry.min_height = 1;
-    geometry.max_width = -1;
-    geometry.max_height = -1;
-    gtk_window_set_geometry_hints (GTK_WINDOW (window_control), window_control, &geometry, GDK_HINT_MIN_SIZE);
-    gtk_window_set_resizable (GTK_WINDOW (window_control), FALSE);
-    gtk_window_move (GTK_WINDOW (window_control), 10, 10);
-    GtkWidget* table = gtk_grid_new ();
-    gtk_container_add (GTK_CONTAINER (window_control), table);
-
-    //control state null
-    GtkWidget* button_state_null = gtk_button_new_with_label ("GST_STATE_NULL");
-    g_signal_connect (G_OBJECT (button_state_null), "clicked",
-        G_CALLBACK (button_state_null_cb), pipeline);
-    gtk_grid_attach (GTK_GRID (table), button_state_null, 0, 0, 1, 1);
-    gtk_widget_show (button_state_null);
-
-    //control state ready
-    GtkWidget* button_state_ready = gtk_button_new_with_label ("GST_STATE_READY");
-    g_signal_connect (G_OBJECT (button_state_ready), "clicked",
-        G_CALLBACK (button_state_ready_cb), pipeline);
-    gtk_grid_attach (GTK_GRID (table), button_state_ready, 0, 1, 1, 1);
-    gtk_widget_show (button_state_ready);
-
-    //control state paused
-    GtkWidget* button_state_paused = gtk_button_new_with_label ("GST_STATE_PAUSED");
-    g_signal_connect (G_OBJECT (button_state_paused), "clicked",
-        G_CALLBACK (button_state_paused_cb), pipeline);
-    gtk_grid_attach (GTK_GRID (table), button_state_paused, 0, 2, 1, 1);
-    gtk_widget_show (button_state_paused);
-
-    //control state playing
-    GtkWidget* button_state_playing = gtk_button_new_with_label ("GST_STATE_PLAYING");
-    g_signal_connect (G_OBJECT (button_state_playing), "clicked",
-        G_CALLBACK (button_state_playing_cb), pipeline);
-    gtk_grid_attach (GTK_GRID (table), button_state_playing, 0, 3, 1, 1);
-    gtk_widget_show (button_state_playing);
-
-    //change framerate
-    GtkWidget* slider_fps = gtk_scale_new_with_range (GTK_ORIENTATION_VERTICAL,
-        1, 30, 2);
-    g_signal_connect (G_OBJECT (slider_fps), "format-value",
-        G_CALLBACK (slider_fps_cb), pipeline);
-    gtk_grid_attach (GTK_GRID (table), slider_fps, 1, 0, 1, 4);
-    gtk_widget_show (slider_fps);
-
-    gtk_widget_show (table);
-    gtk_widget_show (window_control);
-
-    //configure the pipeline
-    g_signal_connect(G_OBJECT(window), "delete-event", G_CALLBACK(destroy_cb), pipeline);
-
-    //area where the video is drawn
-    gtk_container_add (GTK_CONTAINER (window), area);
-
-    gtk_widget_realize(area);
-
-    //needed when being in GST_STATE_READY, GST_STATE_PAUSED
-    //or resizing/obscuring the window
-    g_signal_connect(area, "draw", G_CALLBACK(draw_cb), videosink);
-
-    gtk_widget_show_all (window);
-
-    gst_element_set_state(pipeline, GST_STATE_PLAYING);
-
-    gtk_main();
-
-    return 0;
-}
-
diff --git a/tests/examples/gl/gtk/switchvideooverlay/Makefile.am b/tests/examples/gl/gtk/switchvideooverlay/Makefile.am
index dbe007c..e6ebf70 100644
--- a/tests/examples/gl/gtk/switchvideooverlay/Makefile.am
+++ b/tests/examples/gl/gtk/switchvideooverlay/Makefile.am
@@ -4,8 +4,8 @@
 
 switchvideooverlay_CXXFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
 	$(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
-	$(GL_CFLAGS) $(GTK3_CFLAGS)
+	$(GL_CFLAGS) $(GTK3_CFLAGS) $(X_CFLAGS)
 switchvideooverlay_LDADD=../libgstgtkhelper.la \
 	$(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
-	$(GL_LIBS) -lgstvideo-$(GST_API_VERSION)
+	$(GL_LIBS) -lgstvideo-$(GST_API_VERSION) $(X_LIBS)
 
diff --git a/tests/examples/gl/gtk/switchvideooverlay/Makefile.in b/tests/examples/gl/gtk/switchvideooverlay/Makefile.in
index 07dbf2b..e5ec574 100644
--- a/tests/examples/gl/gtk/switchvideooverlay/Makefile.in
+++ b/tests/examples/gl/gtk/switchvideooverlay/Makefile.in
@@ -138,7 +138,8 @@
 am__DEPENDENCIES_1 =
 switchvideooverlay_DEPENDENCIES = ../libgstgtkhelper.la \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
@@ -273,6 +274,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -294,6 +297,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -343,6 +348,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -488,6 +495,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -614,8 +623,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -658,8 +665,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -751,11 +763,11 @@
 switchvideooverlay_SOURCES = main.cpp
 switchvideooverlay_CXXFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
 	$(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
-	$(GL_CFLAGS) $(GTK3_CFLAGS)
+	$(GL_CFLAGS) $(GTK3_CFLAGS) $(X_CFLAGS)
 
 switchvideooverlay_LDADD = ../libgstgtkhelper.la \
 	$(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
-	$(GL_LIBS) -lgstvideo-$(GST_API_VERSION)
+	$(GL_LIBS) -lgstvideo-$(GST_API_VERSION) $(X_LIBS)
 
 all: all-am
 
diff --git a/tests/examples/gl/gtk/switchvideooverlay/main.cpp b/tests/examples/gl/gtk/switchvideooverlay/main.cpp
index ea53ea1..476478d 100644
--- a/tests/examples/gl/gtk/switchvideooverlay/main.cpp
+++ b/tests/examples/gl/gtk/switchvideooverlay/main.cpp
@@ -18,12 +18,19 @@
  * Boston, MA 02110-1301, USA.
  */
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <gst/gst.h>
 #include <gtk/gtk.h>
 #include <gdk/gdk.h>
 
 #include "../gstgtk.h"
 
+#ifdef HAVE_X11
+#include <X11/Xlib.h>
+#endif
 
 static GstBusSyncReply create_window (GstBus* bus, GstMessage* message, GtkWidget* widget)
 {
@@ -59,7 +66,7 @@
     gtk_widget_get_allocation (widget, &allocation);
     gst_video_overlay_set_render_rectangle (GST_VIDEO_OVERLAY (sink), allocation.x, allocation.y, allocation.width, allocation.height);
 
-    return G_SOURCE_CONTINUE;
+    return FALSE;
 }
 
 static void end_stream_cb(GstBus* bus, GstMessage* message, GstElement* pipeline)
@@ -104,6 +111,7 @@
 static gboolean on_click_drawing_area(GtkWidget* widget, GdkEventButton* event, GstElement* videosink)
 {
     GtkAllocation allocation;
+    GtkWidget *parent = gtk_widget_get_parent (widget);
 
     g_print ("switch the drawing area %p\n", widget);
     gst_video_overlay_set_gtk_window (GST_VIDEO_OVERLAY (videosink), widget);
@@ -111,6 +119,11 @@
     gtk_widget_get_allocation (widget, &allocation);
     gst_video_overlay_set_render_rectangle (GST_VIDEO_OVERLAY (videosink), allocation.x, allocation.y, allocation.width, allocation.height);
 
+    /* XXX: required on wayland as changing the window handle (subsurface)
+     * requires a wl_surface::commit from the parent */
+    if (parent)
+      gtk_widget_queue_draw (parent);
+
     return FALSE;
 }
 
@@ -153,16 +166,12 @@
     g_print ("GST_STATE_PLAYING\n");
 }
 
-static void area_realize_cb(GtkWidget* widget, gpointer data)
-{
-    g_print ("realize %p\n", widget);
-    if (!gdk_window_ensure_native (gtk_widget_get_window (widget)))
-        g_error ("Failed to create native window!");
-}
-
-
 gint main (gint argc, gchar *argv[])
 {
+#ifdef HAVE_X11
+    XInitThreads();
+#endif
+
     gtk_init (&argc, &argv);
     gst_init (&argc, &argv);
 
@@ -250,10 +259,6 @@
     gtk_widget_set_size_request (area_top_right, 320, 240);
     gtk_grid_attach (GTK_GRID (table_areas), area_top_right, 1, 0, 1, 1);
 
-    //set window id on this event
-    g_signal_connect(area_top_left, "realize", G_CALLBACK(area_realize_cb), NULL);
-    g_signal_connect(area_top_right, "realize", G_CALLBACK(area_realize_cb), NULL);
-
     gtk_widget_set_redraw_on_allocate (area_top_left, TRUE);
     gtk_widget_set_redraw_on_allocate (area_top_right, TRUE);
     gtk_widget_realize(area_top_left);
diff --git a/tests/examples/gl/qt/Makefile.in b/tests/examples/gl/qt/Makefile.in
index 290c83a..9562426 100644
--- a/tests/examples/gl/qt/Makefile.in
+++ b/tests/examples/gl/qt/Makefile.in
@@ -216,6 +216,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -237,6 +239,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -286,6 +290,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -431,6 +437,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -557,8 +565,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -601,8 +607,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/sdl/Makefile.in b/tests/examples/gl/sdl/Makefile.in
index 349fcc1..a82243a 100644
--- a/tests/examples/gl/sdl/Makefile.in
+++ b/tests/examples/gl/sdl/Makefile.in
@@ -287,6 +287,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -308,6 +310,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -357,6 +361,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -502,6 +508,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -628,8 +636,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -672,8 +678,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gtk/Makefile.in b/tests/examples/gtk/Makefile.in
index e07c396..c5dcb57 100644
--- a/tests/examples/gtk/Makefile.in
+++ b/tests/examples/gtk/Makefile.in
@@ -299,6 +299,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -320,6 +322,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -369,6 +373,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -514,6 +520,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -640,8 +648,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -684,8 +690,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/mpegts/Makefile.in b/tests/examples/mpegts/Makefile.in
index 75ac0dd..1ab72cf 100644
--- a/tests/examples/mpegts/Makefile.in
+++ b/tests/examples/mpegts/Makefile.in
@@ -269,6 +269,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -290,6 +292,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -339,6 +343,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -484,6 +490,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -610,8 +618,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -654,8 +660,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/mxf/Makefile.in b/tests/examples/mxf/Makefile.in
index 76275c9..f2032eb 100644
--- a/tests/examples/mxf/Makefile.in
+++ b/tests/examples/mxf/Makefile.in
@@ -274,6 +274,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -295,6 +297,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -344,6 +348,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -489,6 +495,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -615,8 +623,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -659,8 +665,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/opencv/Makefile.in b/tests/examples/opencv/Makefile.in
index 8a23179..3410221 100644
--- a/tests/examples/opencv/Makefile.in
+++ b/tests/examples/opencv/Makefile.in
@@ -291,6 +291,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -312,6 +314,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -361,6 +365,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -506,6 +512,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -632,8 +640,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -676,8 +682,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/opencv/gstfacedetect_test.c b/tests/examples/opencv/gstfacedetect_test.c
index 9ecf3d0..d8334cb 100644
--- a/tests/examples/opencv/gstfacedetect_test.c
+++ b/tests/examples/opencv/gstfacedetect_test.c
@@ -1,7 +1,7 @@
 /* GStreamer
  * Copyright (C) 2015 Vanessa Chipirrás <vchipirras6@gmail.com>
  *
- *  gstfacedetect_test: gsteramer facedetect plugin demo application,
+ *  gstfacedetect_test: gstreamer facedetect plugin demo application,
  *  part work of Outreachy 2015 project
  *
  * This library is free software; you can redistribute it and/or
diff --git a/tests/examples/opencv/gsthanddetect_test.c b/tests/examples/opencv/gsthanddetect_test.c
index 1cc9616..02a90de 100644
--- a/tests/examples/opencv/gsthanddetect_test.c
+++ b/tests/examples/opencv/gsthanddetect_test.c
@@ -1,7 +1,7 @@
 /* GStreamer
  * Copyright (C) 2012 Andol Li <andol@andol.info>
  *
- *  gsthanddetect_test: gsteramer handdetect plugin demo application,
+ *  gsthanddetect_test: gstreamer handdetect plugin demo application,
  *  part work of GSoc 2012 project
  *
  * This library is free software; you can redistribute it and/or
diff --git a/tests/examples/uvch264/Makefile.in b/tests/examples/uvch264/Makefile.in
index e92f3fb..58b010b 100644
--- a/tests/examples/uvch264/Makefile.in
+++ b/tests/examples/uvch264/Makefile.in
@@ -277,6 +277,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -298,6 +300,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -347,6 +351,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -492,6 +498,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -618,8 +626,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -662,8 +668,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/waylandsink/Makefile.in b/tests/examples/waylandsink/Makefile.in
index 3326bc9..2281cdf 100644
--- a/tests/examples/waylandsink/Makefile.in
+++ b/tests/examples/waylandsink/Makefile.in
@@ -273,6 +273,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -294,6 +296,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -343,6 +347,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -488,6 +494,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -614,8 +622,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -658,8 +664,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/files/Makefile.in b/tests/files/Makefile.in
index c8e1634..91d84fc 100644
--- a/tests/files/Makefile.in
+++ b/tests/files/Makefile.in
@@ -216,6 +216,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -237,6 +239,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -286,6 +290,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -431,6 +437,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -557,8 +565,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -601,8 +607,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/icles/Makefile.in b/tests/icles/Makefile.in
index 1b604df..46afe54 100644
--- a/tests/icles/Makefile.in
+++ b/tests/icles/Makefile.in
@@ -274,6 +274,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -295,6 +297,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -344,6 +348,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -489,6 +495,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -615,8 +623,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -659,8 +665,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tools/Makefile.in b/tools/Makefile.in
index 7380ae3..a159425 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -216,6 +216,8 @@
 DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
 DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
 DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
 DSYMUTIL = @DSYMUTIL@
 DTLS_CFLAGS = @DTLS_CFLAGS@
 DTLS_LIBS = @DTLS_LIBS@
@@ -237,6 +239,8 @@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
 FAAD_LIBS = @FAAD_LIBS@
+FDK_AAC_CFLAGS = @FDK_AAC_CFLAGS@
+FDK_AAC_LIBS = @FDK_AAC_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
 FLITE_CFLAGS = @FLITE_CFLAGS@
@@ -286,6 +290,8 @@
 GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
 GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
 GST_API_VERSION = @GST_API_VERSION@
+GST_AUDIO_CFLAGS = @GST_AUDIO_CFLAGS@
+GST_AUDIO_LIBS = @GST_AUDIO_LIBS@
 GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
 GST_BASE_LIBS = @GST_BASE_LIBS@
 GST_CFLAGS = @GST_CFLAGS@
@@ -431,6 +437,8 @@
 LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
 LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
 LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LOCALEDIR = @LOCALEDIR@
@@ -557,8 +565,6 @@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
 SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
 SNDFILE_LIBS = @SNDFILE_LIBS@
 SNDIO_LIBS = @SNDIO_LIBS@
@@ -601,8 +607,13 @@
 WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
 WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
 WAYLAND_LIBS = @WAYLAND_LIBS@
+WAYLAND_PROTOCOLS_CFLAGS = @WAYLAND_PROTOCOLS_CFLAGS@
+WAYLAND_PROTOCOLS_DATADIR = @WAYLAND_PROTOCOLS_DATADIR@
+WAYLAND_PROTOCOLS_LIBS = @WAYLAND_PROTOCOLS_LIBS@
 WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
 WGET = @WGET@
 WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
 WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tools/element-templates/sinkpad b/tools/element-templates/sinkpad
index 6d3bad1..ec8a980 100644
--- a/tools/element-templates/sinkpad
+++ b/tools/element-templates/sinkpad
@@ -30,8 +30,8 @@
     );
 
 % base-init
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_replace_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_replace_sink_template);
 % instance-init
 
   replace->sinkpad = gst_pad_new_from_static_template (&gst_replace_sink_template
diff --git a/tools/element-templates/sinkpad-audio b/tools/element-templates/sinkpad-audio
index 3af5072..13d52d7 100644
--- a/tools/element-templates/sinkpad-audio
+++ b/tools/element-templates/sinkpad-audio
@@ -13,8 +13,8 @@
     );
 
 % base-init
-  gst_element_class_add_pad_template (GST_ELEMENT_CLASS(klass),
-      gst_static_pad_template_get (&gst_replace_sink_template));
+  gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS(klass),
+      &gst_replace_sink_template);
 % instance-init
 % methods
 % end
diff --git a/tools/element-templates/sinkpad-simple b/tools/element-templates/sinkpad-simple
index 2500e3f..9d7619b 100644
--- a/tools/element-templates/sinkpad-simple
+++ b/tools/element-templates/sinkpad-simple
@@ -11,8 +11,8 @@
     );
 
 % base-init
-  gst_element_class_add_pad_template (GST_ELEMENT_CLASS(klass),
-      gst_static_pad_template_get (&gst_replace_sink_template));
+  gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS(klass),
+      &gst_replace_sink_template);
 % instance-init
 % methods
 % end
diff --git a/tools/element-templates/sinkpad-template b/tools/element-templates/sinkpad-template
index 785365d..b06b346 100644
--- a/tools/element-templates/sinkpad-template
+++ b/tools/element-templates/sinkpad-template
@@ -11,8 +11,8 @@
     );
 
 % base-init
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_replace_sink_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_replace_sink_template);
 % instance-init
 % methods
 % end
diff --git a/tools/element-templates/srcpad b/tools/element-templates/srcpad
index 1afd7e7..82e0eea 100644
--- a/tools/element-templates/srcpad
+++ b/tools/element-templates/srcpad
@@ -28,8 +28,8 @@
     );
 
 % base-init
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_replace_src_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_replace_src_template);
 % instance-init
 
   replace->srcpad = gst_pad_new_from_static_template (&gst_replace_src_template
diff --git a/tools/element-templates/srcpad-audio b/tools/element-templates/srcpad-audio
index 047c7c7..18698dd 100644
--- a/tools/element-templates/srcpad-audio
+++ b/tools/element-templates/srcpad-audio
@@ -13,8 +13,8 @@
     );
 
 % base-init
-  gst_element_class_add_pad_template (GST_ELEMENT_CLASS(klass),
-      gst_static_pad_template_get (&gst_replace_src_template));
+  gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS(klass),
+      &gst_replace_src_template);
 % instance-init
 % methods
 % end
diff --git a/tools/element-templates/srcpad-simple b/tools/element-templates/srcpad-simple
index 5971809..e705f80 100644
--- a/tools/element-templates/srcpad-simple
+++ b/tools/element-templates/srcpad-simple
@@ -11,8 +11,8 @@
     );
 
 % base-init
-  gst_element_class_add_pad_template (GST_ELEMENT_CLASS(klass),
-      gst_static_pad_template_get (&gst_replace_src_template));
+  gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS(klass),
+      &gst_replace_src_template);
 % instance-init
 % methods
 % end
diff --git a/tools/element-templates/srcpad-template b/tools/element-templates/srcpad-template
index 020f6a2..dd0842b 100644
--- a/tools/element-templates/srcpad-template
+++ b/tools/element-templates/srcpad-template
@@ -11,8 +11,8 @@
     );
 
 % base-init
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_replace_src_template);
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_replace_src_template);
 % instance-init
 % methods
 % end
diff --git a/win32/common/config.h b/win32/common/config.h
index a87558c..20cbc17 100644
--- a/win32/common/config.h
+++ b/win32/common/config.h
@@ -86,7 +86,7 @@
 #define GST_PACKAGE_ORIGIN "Unknown package origin"
 
 /* GStreamer package release date/time for plugins as YYYY-MM-DD */
-#define GST_PACKAGE_RELEASE_DATETIME "2016-08-19"
+#define GST_PACKAGE_RELEASE_DATETIME "2016-09-30"
 
 /* Define if static plugins should be built */
 #undef GST_PLUGIN_BUILD_STATIC
@@ -226,6 +226,9 @@
 /* Define to enable DVB Source (used by dvb). */
 #undef HAVE_DVB
 
+/* Define to 1 if the system has the type `EGLAttrib'. */
+#undef HAVE_EGLATTRIB
+
 /* Define to enable building of experimental plug-ins. */
 #undef HAVE_EXPERIMENTAL
 
@@ -244,6 +247,9 @@
 /* Define to 1 if you have the <fcntl.h> header file. */
 #undef HAVE_FCNTL_H
 
+/* Define to enable fdkaac plugin (used by fdkaac). */
+#undef HAVE_FDK_AAC
+
 /* FIONREAD ioctl found in sys/filio.h */
 #undef HAVE_FIONREAD_IN_SYS_FILIO
 
@@ -325,6 +331,9 @@
 /* Define to enable Kate (used by kate). */
 #undef HAVE_KATE
 
+/* Define to enable drm/kms libraries (used by kms). */
+#undef HAVE_KMS
+
 /* Define to enable ladspa (used by ladspa). */
 #undef HAVE_LADSPA
 
@@ -352,6 +361,9 @@
 /* Define to enable libvisual visualization library (used by libvisual). */
 #undef HAVE_LIBVISUAL
 
+/* Define if we have liblilv >= 0.22 */
+#undef HAVE_LILV_0_22
+
 /* Define to enable Linear Systems SDI plugin (used by linsys). */
 #undef HAVE_LINSYS
 
@@ -418,15 +430,9 @@
 /* Define to enable opencv plugins (used by opencv). */
 #undef HAVE_OPENCV
 
-/* Define to 1 if you have the <opencv2/contrib/contrib.hpp> header file. */
-#undef HAVE_OPENCV2_CONTRIB_CONTRIB_HPP
-
 /* Define to 1 if you have the <opencv2/core/core_c.h> header file. */
 #undef HAVE_OPENCV2_CORE_CORE_C_H
 
-/* Define to 1 if you have the <opencv2/core/types_c.h> header file. */
-#undef HAVE_OPENCV2_CORE_TYPES_C_H
-
 /* Define to 1 if you have the <opencv2/core/version.hpp> header file. */
 #undef HAVE_OPENCV2_CORE_VERSION_HPP
 
@@ -439,12 +445,6 @@
 /* Define to 1 if you have the <opencv2/imgproc/imgproc.hpp> header file. */
 #undef HAVE_OPENCV2_IMGPROC_IMGPROC_HPP
 
-/* Define to 1 if you have the <opencv2/legacy/compat.hpp> header file. */
-#undef HAVE_OPENCV2_LEGACY_COMPAT_HPP
-
-/* Define to 1 if you have the <opencv2/legacy/legacy.hpp> header file. */
-#undef HAVE_OPENCV2_LEGACY_LEGACY_HPP
-
 /* Define to 1 if you have the <opencv2/objdetect/objdetect.hpp> header file.
    */
 #undef HAVE_OPENCV2_OBJDETECT_OBJDETECT_HPP
@@ -504,6 +504,9 @@
 /* Define to enable Qt elements (used by qt). */
 #undef HAVE_QT
 
+/* Define if building with QTKit */
+#undef HAVE_QTKIT
+
 /* Define if Qt eglfs integration is installed */
 #undef HAVE_QT_EGLFS
 
@@ -651,6 +654,9 @@
 /* Define to enable WebP (used by webp ). */
 #undef HAVE_WEBP
 
+/* Define to enable WebRTC Audio Processing (used by webrtcdsp). */
+#undef HAVE_WEBRTCDSP
+
 /* Define to enable wildmidi midi soft synth plugin (used by wildmidi). */
 #undef HAVE_WILDMIDI
 
@@ -731,7 +737,7 @@
 #define PACKAGE_NAME "GStreamer Bad Plug-ins"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "GStreamer Bad Plug-ins 1.8.3"
+#define PACKAGE_STRING "GStreamer Bad Plug-ins 1.9.90"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "gst-plugins-bad"
@@ -740,7 +746,7 @@
 #undef PACKAGE_URL
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "1.8.3"
+#define PACKAGE_VERSION "1.9.90"
 
 /* directory where plugins are located */
 #ifdef _DEBUG
@@ -784,7 +790,7 @@
 #undef USE_EGL_RPI
 
 /* Version number of package */
-#define VERSION "1.8.3"
+#define VERSION "1.9.90"
 
 /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
    significant byte first (like Motorola and SPARC, unlike Intel). */
