New upstream version 1.9.90
diff --git a/ChangeLog b/ChangeLog
index 24b8103..081a7ed 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,832 @@
-=== release 1.9.2 ===
+=== release 1.9.90 ===
 
-2016-09-01  Sebastian Dröge <slomo@coaxion.net>
+2016-09-30  Sebastian Dröge <slomo@coaxion.net>
 
 	* configure.ac:
-	  releasing 1.9.2
+	  releasing 1.9.90
+
+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>
 
diff --git a/Makefile.in b/Makefile.in
index dc9538f..d5f9bb8 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -705,6 +705,9 @@
 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@
diff --git a/NEWS b/NEWS
index 027c018..072b2df 100644
--- a/NEWS
+++ b/NEWS
@@ -1 +1 @@
-This is GStreamer 1.9.2
+This is GStreamer 1.9.90
diff --git a/RELEASE b/RELEASE
index d502188..e70dea5 100644
--- a/RELEASE
+++ b/RELEASE
@@ -1,13 +1,10 @@
 
-Release notes for GStreamer Bad Plugins 1.9.2
+Release notes for GStreamer Bad Plugins 1.9.90
 
-The GStreamer team is pleased to announce the second release of the unstable
-1.9 release series, which marks the feature freeze for 1.10. The 1.9 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. The unstable 1.9 release series will lead to the stable
-1.10 release series in the next weeks. Any newly added API can still change
-until that point.
+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.
 
 
 Binaries for Android, iOS, Mac OS X and Windows will be provided in the next days.
@@ -61,45 +58,29 @@
 
 Bugs fixed in this release
      
-      * 737173 : h264parse wrongly insert DISCONT flags when converting into AVC
-      * 741104 : dashdemux: add support for I frame based trick play
-      * 753751 : Dashdemux: returned seekable range for live streams is not usable
-      * 765314 : player: Add way to override HTTP (+RTSP, etc) user agent
-      * 767011 : rawparse: new rawaudioparse and rawvideoparse element which deprecate audioparse, unalignedaudioparse, and videoparse
-      * 767169 : adaptivedemux: avoid possible deadlock while destroying old  sources
-      * 767879 : Deadlock in WebKit when deleting the media player while HLS media was loaded
-      * 768160 : qtplugins: How to implement qmlglsrc.
-      * 768553 : Configure check for OpenGL is wrong on OS X.
-      * 768595 : lv2: Does not build with lilv 0.20
-      * 768602 : EGL_DMA_Buf: Wrong attribute list type for EGL 1.5
-      * 768696 : Mac OS X build warnings: -Werror gstjpeg2000parse.c
-      * 768771 : openh264: Fail to build with openh264 1.6.0
-      * 768838 : camerabinpreview: fix bus leak
-      * 768843 : bad: fix leaks in tests
-      * 769144 : player: move 'position-update-interval' setting to the config struct
-      * 769197 : fix simple-launch-lines test with no jpeg lib
-      * 769210 : GLMemory created by avfvideosrc and vtdec on iOS (EAGL/gles3) can't be mapped
-      * 769295 : Broken compilation on RPi  with latest rawaudioparse changes
-      * 769371 : glimagesink: Horizontal/vertical flip matrizes are swapped
-      * 769389 : aiffparse: Add bitrate and container format tags
-      * 769462 : glcolorconvert: _get_n_textures: code should not be reached
-      * 769553 : dashdemux: Fix sidx snap/keyframe seeks
-      * 769587 : hls, timecode: can't build debian package from git master, need to fix linking
-      * 769637 : rawparse: Unit test fixes and additions
-      * 769716 : x265enc enable aspect ratio
-      * 769797 : videoparse: format i420, invalid buffer size (regression)
-      * 769939 : gl: hang on joining thread
-      * 770030 : avfvideosrc: account for retina displays when capturing screens
-      * 770049 : vtdec: missing systemstream=false in mpeg decoder caps
-      * 770075 : adaptivedemux: fix stream exposure condition
-      * 770102 : daala: typo related compilation error
-      * 770282 : decklinkvideosink: " Failed to schedule frame " and Decklink Duo 2
-      * 770326 : gst-plugins-bad tarball lacks opensles.h
-      * 770408 : dashdemux: Add properties to select maximum allowed width/height and framerate
-      * 770523 : Build failure: fatal error: gst/gl/gstglconfig.h: No such file or directory
-      * 770587 : qtkitvideosrc: 'QTKit/QTKit.h' file not found (macOS Sierra)
-      * 769116 : Build failure with -O3 in Ubuntu 16.04
-      * 769580 : Fail to decode media on OSX because it's not supported by vtdec_hw but vtdec can play it
+      * 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 ====
 
@@ -137,36 +118,29 @@
 Contributors to this release
     
       * Alessandro Decina
-      * Alex Ashley
-      * Arnaud Vrac
-      * Bernhard Miller
-      * Carlos Rafael Giani
-      * Edward Hervey
+      * Alistair Buxton
+      * Arun Raghavan
       * Florian Zwoch
-      * Fredrik Fornwall
-      * Guillaume Desmottes
+      * Graham Leggett
+      * Gwang Yoon Hwang
       * Haihua Hu
       * Hyunjun Ko
       * Jan Schmidt
-      * Josep Torra
-      * Luis de Bethencourt
+      * Joakim Johansson
+      * Julien Isorce
+      * Kyungyong Kim
       * Martin Kelly
-      * Matej Knopp
       * Matthew Waters
-      * Michael Olbrich
       * Nicolas Dufresne
-      * Nirbheek Chauhan
-      * Philippe Renon
-      * Reynaldo H. Verdejo Pinochet
+      * Olivier Crête
+      * Philippe Normand
+      * Scott D Phillips
       * Sebastian Dröge
-      * Sergei Saveliev
-      * Song Bing
-      * Sreerenj Balachandran
-      * Stefan Sauer
+      * Sergey Mamonov
+      * Thiago Santos
       * Thibault Saunier
       * Tim-Philipp Müller
       * Vincent Penquerc'h
-      * Vivia Nikolaidou
-      * Xabier Rodriguez Calvar
-      * xlazom00
+      * 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 4b37a35..ac4a598 100644
--- a/common/Makefile.in
+++ b/common/Makefile.in
@@ -667,6 +667,9 @@
 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@
diff --git a/common/m4/Makefile.in b/common/m4/Makefile.in
index 157bdf9..078b8be 100644
--- a/common/m4/Makefile.in
+++ b/common/m4/Makefile.in
@@ -607,6 +607,9 @@
 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@
diff --git a/configure b/configure
index 41f4662..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.9.2.
+# 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.9.2'
-PACKAGE_STRING='GStreamer Bad Plug-ins 1.9.2'
+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=''
 
@@ -932,6 +932,9 @@
 USE_WEBP_TRUE
 WEBP_LIBS
 WEBP_CFLAGS
+WAYLAND_PROTOCOLS_DATADIR
+WAYLAND_PROTOCOLS_LIBS
+WAYLAND_PROTOCOLS_CFLAGS
 wayland_scanner
 USE_DIRECTFB_FALSE
 USE_DIRECTFB_TRUE
@@ -2024,6 +2027,8 @@
 LIBDC1394_LIBS
 DIRECTFB_CFLAGS
 DIRECTFB_LIBS
+WAYLAND_PROTOCOLS_CFLAGS
+WAYLAND_PROTOCOLS_LIBS
 WEBP_CFLAGS
 WEBP_LIBS
 DAALA_CFLAGS
@@ -2684,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.9.2 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]...
 
@@ -2756,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.9.2:";;
+     short | recursive ) echo "Configuration of GStreamer Bad Plug-ins 1.9.90:";;
    esac
   cat <<\_ACEOF
 
@@ -3238,6 +3243,10 @@
               C compiler flags for DIRECTFB, overriding pkg-config
   DIRECTFB_LIBS
               linker flags for DIRECTFB, 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
@@ -3476,7 +3485,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GStreamer Bad Plug-ins configure 1.9.2
+GStreamer Bad Plug-ins configure 1.9.90
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -4449,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.9.2, 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 $@
@@ -5431,7 +5440,7 @@
 
 # Define the identity of the package.
  PACKAGE='gst-plugins-bad'
- VERSION='1.9.2'
+ VERSION='1.9.90'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -5642,9 +5651,9 @@
 
 
 
-  PACKAGE_VERSION_MAJOR=$(echo 1.9.2 | cut -d'.' -f1)
-  PACKAGE_VERSION_MINOR=$(echo 1.9.2 | cut -d'.' -f2)
-  PACKAGE_VERSION_MICRO=$(echo 1.9.2 | 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)
 
 
 
@@ -5655,7 +5664,7 @@
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
 $as_echo_n "checking nano version... " >&6; }
 
-  NANO=$(echo 1.9.2 | 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
@@ -10499,10 +10508,10 @@
 done
 
 
-  GST_CURRENT=902
+  GST_CURRENT=990
   GST_REVISION=0
-  GST_AGE=902
-  GST_LIBVERSION=902:0:902
+  GST_AGE=990
+  GST_LIBVERSION=990:0:990
 
 
 
@@ -15130,8 +15139,8 @@
 
 
 
-GST_REQ=1.9.2
-GSTPB_REQ=1.9.2
+GST_REQ=1.9.90
+GSTPB_REQ=1.9.90
 
 
 
@@ -41776,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
 
 
@@ -44099,12 +44183,12 @@
         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 libkms\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "libdrm libkms") 2>&5
+    { { $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 libkms" 2>/dev/null`
+  pkg_cv_DRM_CFLAGS=`$PKG_CONFIG --cflags "libdrm >= 2.4.55 libkms" 2>/dev/null`
 else
   pkg_failed=yes
 fi
@@ -44117,12 +44201,12 @@
         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 libkms\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "libdrm libkms") 2>&5
+    { { $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 libkms" 2>/dev/null`
+  pkg_cv_DRM_LIBS=`$PKG_CONFIG --libs "libdrm >= 2.4.55 libkms" 2>/dev/null`
 else
   pkg_failed=yes
 fi
@@ -44141,9 +44225,9 @@
         _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 libkms"`
+	        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 libkms"`
+	        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
@@ -50784,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 :
 
@@ -50828,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
@@ -59276,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
 
@@ -60817,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
@@ -61214,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.9.2, 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
@@ -61280,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.9.2
+GStreamer Bad Plug-ins config.status 1.9.90
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 5fcf370..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.9.2],[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, 902, 0, 902)
+AS_LIBTOOL(GST, 990, 0, 990)
 
 dnl *** required versions of GStreamer stuff ***
-GST_REQ=1.9.2
-GSTPB_REQ=1.9.2
+GST_REQ=1.9.90
+GSTPB_REQ=1.9.90
 
 dnl *** autotools stuff ****
 
@@ -2219,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"
   ])
 ])
@@ -2381,7 +2385,7 @@
 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 libkms], HAVE_KMS=yes, HAVE_KMS=no)
+  PKG_CHECK_MODULES([DRM], [libdrm >= 2.4.55 libkms], HAVE_KMS=yes, HAVE_KMS=no)
 ])
 
 dnl *** ladspa ***
@@ -2998,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
     ], [])
   ], [])
@@ -3523,6 +3528,7 @@
 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
 
diff --git a/docs/Makefile.in b/docs/Makefile.in
index 428a033..7b1293d 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -666,6 +666,9 @@
 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@
diff --git a/docs/libs/Makefile.in b/docs/libs/Makefile.in
index 1f05209..edcd08b 100644
--- a/docs/libs/Makefile.in
+++ b/docs/libs/Makefile.in
@@ -628,6 +628,9 @@
 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@
diff --git a/docs/libs/html/GstGLFilter.html b/docs/libs/html/GstGLFilter.html
index b36f8bd..6c86e93 100644
--- a/docs/libs/html/GstGLFilter.html
+++ b/docs/libs/html/GstGLFilter.html
@@ -287,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">
@@ -343,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 f0c7a42..34aa7e4 100644
--- a/docs/libs/html/GstGLFramebuffer.html
+++ b/docs/libs/html/GstGLFramebuffer.html
@@ -98,6 +98,8 @@
 <a name="GstGLFramebufferClass"></a><h3>struct GstGLFramebufferClass</h3>
 <pre class="programlisting">struct GstGLFramebufferClass {
   GstObjectClass object_class;
+
+  gpointer          _padding[GST_PADDING];
 };
 </pre>
 </div>
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 4eb766b..e120295 100644
--- a/docs/libs/html/gst-plugins-bad-libs-1.0.devhelp2
+++ b/docs/libs/html/gst-plugins-bad-libs-1.0.devhelp2
@@ -2316,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"/>
@@ -2352,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-gstglbasememory.html b/docs/libs/html/gst-plugins-bad-libs-gstglbasememory.html
index 46516e6..e53334a 100644
--- a/docs/libs/html/gst-plugins-bad-libs-gstglbasememory.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gstglbasememory.html
@@ -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>
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstplayer.html b/docs/libs/html/gst-plugins-bad-libs-gstplayer.html
index ed479f4..46959b8 100644
--- a/docs/libs/html/gst-plugins-bad-libs-gstplayer.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gstplayer.html
@@ -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>
@@ -1632,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">
diff --git a/docs/libs/html/index.html b/docs/libs/html/index.html
index f505aba..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.9.2)
+      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.in b/docs/plugins/Makefile.in
index 89de720..e6306ae 100644
--- a/docs/plugins/Makefile.in
+++ b/docs/plugins/Makefile.in
@@ -686,6 +686,9 @@
 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@
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 8893f5b..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.9.2</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 99fd1a1..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.9.2</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 d63bbba..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.9.2</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 65b97e9..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.9.2</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 cfa180e..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.9.2</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 dcb85f9..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.9.2</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 7d3957f..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.9.2</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 21cbe3a..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.9.2</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 a0e6c92..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.9.2</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 ac4a4c0..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.9.2</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 0eb023f..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.9.2</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 717e69c..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.9.2</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 42769a1..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.9.2</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 e45e23b..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.9.2</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 37d31fc..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.9.2</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 1e73f92..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.9.2</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 8ca768e..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.9.2</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 7bc4c6b..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.9.2</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 7524b8e..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.9.2</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 7e78ca4..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.9.2</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 fbcf1d7..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.9.2</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 e7a7587..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.9.2</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 2b1b553..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.9.2</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 aaeddcc..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.9.2</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 aa8fc81..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.9.2</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 4cafbf3..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.9.2</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 43b5c29..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.9.2</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 bc34fec..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.9.2</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 b640a63..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.9.2</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 80666fc..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.9.2</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-ofa.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-ofa.html
index b269010..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.9.2</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 b3a1280..0873040 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-openal.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-openal.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.2</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 2e01dca..0c4871e 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-opencv.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-opencv.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.2</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-opengl.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-opengl.html
index a62b994..dcb49bd 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-opengl.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-opengl.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.2</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-pcapparse.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-pcapparse.html
index 44cab25..c3bb0d8 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-pcapparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-pcapparse.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.2</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-rawparse.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rawparse.html
index e2d5331..8047c5d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rawparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rawparse.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.2</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-rfbsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rfbsrc.html
index b57ed28..2944369 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rfbsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rfbsrc.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.2</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-rtmp.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtmp.html
index 3423ad4..cefdd06 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtmp.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtmp.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.2</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-sdp.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdp.html
index 50b15e5..cd13383 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdp.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdp.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.2</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-shm.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-shm.html
index bfac86d..a164b64 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-shm.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-shm.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.2</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-soundtouch.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-soundtouch.html
index ceb7cc4..77d8ff7 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-soundtouch.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-soundtouch.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.2</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-speed.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-speed.html
index 74111a8..186f130 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-speed.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-speed.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.2</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-voaacenc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-voaacenc.html
index 4a6c124..a5325a0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-voaacenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-voaacenc.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.2</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-voamrwbenc.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html
index fc5f1d2..6a7cae4 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.2</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-webrtcdsp.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-webrtcdsp.html
index 0b51ad0..fcdcb55 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-webrtcdsp.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-webrtcdsp.html
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.2</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-zbar.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html
index 6995b7c..aa8399c 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html
@@ -41,7 +41,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.9.2</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/index.html b/docs/plugins/html/index.html
index 73d5145..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.9.2)
+      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>
diff --git a/docs/plugins/inspect/plugin-accurip.xml b/docs/plugins/inspect/plugin-accurip.xml
index 7ddb8f7..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.9.2</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 5b90808..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.9.2</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 f4cb654..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.9.2</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 c48b3cc..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.9.2</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-asfmux.xml b/docs/plugins/inspect/plugin-asfmux.xml
index e827d14..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.9.2</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 a8528b8..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.9.2</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-audiofxbad.xml b/docs/plugins/inspect/plugin-audiofxbad.xml
index 341befe..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.9.2</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 397e8c5..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.9.2</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 e03e133..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.9.2</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 655521b..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.9.2</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 106ace6..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.9.2</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 c58cfc7..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.9.2</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 9dc835e..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.9.2</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 243905a..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.9.2</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 a8c43e4..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.9.2</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 29323fe..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.9.2</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 1cdf82b..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.9.2</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 d887684..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.9.2</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 e51fc42..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.9.2</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 a5e1a28..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.9.2</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 6af3682..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.9.2</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
index 42b8f0e..ce07d4c 100644
--- a/docs/plugins/inspect/plugin-dc1394.xml
+++ b/docs/plugins/inspect/plugin-dc1394.xml
@@ -3,7 +3,7 @@
   <description>1394 IIDC video source</description>
   <filename>../../ext/dc1394/.libs/libgstdc1394.so</filename>
   <basename>libgstdc1394.so</basename>
-  <version>1.9.2</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-debugutilsbad.xml b/docs/plugins/inspect/plugin-debugutilsbad.xml
index 491f729..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.9.2</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 db3a890..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.9.2</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-dfbvideosink.xml b/docs/plugins/inspect/plugin-dfbvideosink.xml
index 6afaee5..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.9.2</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 98e2ce3..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.9.2</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 de9c4b3..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.9.2</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 9661f22..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.9.2</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 53229eb..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.9.2</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-dvdspu.xml b/docs/plugins/inspect/plugin-dvdspu.xml
index ef71302..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.9.2</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 5fe33e3..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.9.2</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 f7c5718..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.9.2</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 ffb16d8..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.9.2</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
index 6756a71..4365715 100644
--- a/docs/plugins/inspect/plugin-fdkaac.xml
+++ b/docs/plugins/inspect/plugin-fdkaac.xml
@@ -3,7 +3,7 @@
   <description>Fraunhofer FDK AAC Codec plugin</description>
   <filename>../../ext/fdkaac/.libs/libgstfdkaac.so</filename>
   <basename>libgstfdkaac.so</basename>
-  <version>1.9.2</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
@@ -47,7 +47,7 @@
           <name>src</name>
           <direction>source</direction>
           <presence>always</presence>
-          <details>audio/mpeg, mpegversion=(int){ 2, 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</details>
+          <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>
diff --git a/docs/plugins/inspect/plugin-festival.xml b/docs/plugins/inspect/plugin-festival.xml
index d7cf81a..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.9.2</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 08090f2..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.9.2</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 9cdf30f..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.9.2</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 737985c..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.9.2</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 9551905..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.9.2</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 93f9868..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.9.2</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 358f3c8..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.9.2</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 32f7040..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.9.2</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 dd26ca6..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.9.2</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 35fd42a..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.9.2</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 1f6c396..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.9.2</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 2769058..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.9.2</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 19ed718..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.9.2</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 90ef02d..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.9.2</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 ed24360..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.9.2</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 32228e0..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.9.2</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-interlace.xml b/docs/plugins/inspect/plugin-interlace.xml
index c7991e7..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.9.2</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-ivfparse.xml b/docs/plugins/inspect/plugin-ivfparse.xml
index c6d17da..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.9.2</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 0f9e367..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.9.2</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 cf0b267..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.9.2</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 784cdd6..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.9.2</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 d2606b3..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.9.2</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-ladspa.xml b/docs/plugins/inspect/plugin-ladspa.xml
index 012e0b9..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.9.2</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 eb1db39..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.9.2</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 2e55753..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.9.2</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 fa6dce2..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.9.2</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 280f07a..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.9.2</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 51df842..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.9.2</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 226e516..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.9.2</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 c184885..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.9.2</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-mpegpsmux.xml b/docs/plugins/inspect/plugin-mpegpsmux.xml
index ef87eb3..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.9.2</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 cc43d8f..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.9.2</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-mpegtsmux.xml b/docs/plugins/inspect/plugin-mpegtsmux.xml
index a258235..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.9.2</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 c8d805d..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.9.2</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
index 9f679cc..a72faed 100644
--- a/docs/plugins/inspect/plugin-musepack.xml
+++ b/docs/plugins/inspect/plugin-musepack.xml
@@ -3,7 +3,7 @@
   <description>Musepack decoder</description>
   <filename>../../ext/musepack/.libs/libgstmusepack.so</filename>
   <basename>libgstmusepack.so</basename>
-  <version>1.9.2</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-mxf.xml b/docs/plugins/inspect/plugin-mxf.xml
index efea8e4..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.9.2</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-netsim.xml b/docs/plugins/inspect/plugin-netsim.xml
index 390fb3f..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.9.2</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 2f134ca..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.9.2</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 36d083f..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.9.2</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 de1d5cc..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.9.2</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-openexr.xml b/docs/plugins/inspect/plugin-openexr.xml
index 1630578..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.9.2</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 080bf77..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.9.2</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-openh264.xml b/docs/plugins/inspect/plugin-openh264.xml
index 1488ea5..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.9.2</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 ab25670..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.9.2</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-opusparse.xml b/docs/plugins/inspect/plugin-opusparse.xml
index ee21e8c..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.9.2</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 14daaf0..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.9.2</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 5fcffba..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.9.2</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-qt.xml b/docs/plugins/inspect/plugin-qt.xml
index 47af4b9..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.9.2</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-rawparse.xml b/docs/plugins/inspect/plugin-rawparse.xml
index 9317262..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.9.2</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-removesilence.xml b/docs/plugins/inspect/plugin-removesilence.xml
index 0150c4d..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.9.2</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 fc86aa9..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.9.2</version>
+  <version>1.9.90</version>
   <license>GPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer</package>
diff --git a/docs/plugins/inspect/plugin-rfbsrc.xml b/docs/plugins/inspect/plugin-rfbsrc.xml
index 2650b41..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.9.2</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 ee21ad1..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.9.2</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 f363a3a..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.9.2</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-rtponvif.xml b/docs/plugins/inspect/plugin-rtponvif.xml
index b141e9d..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.9.2</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 b0465f7..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.9.2</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 b2faa17..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.9.2</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 69ee9ea..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.9.2</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-segmentclip.xml b/docs/plugins/inspect/plugin-segmentclip.xml
index a008873..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.9.2</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 649a97b..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.9.2</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 adcba6d..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.9.2</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 a7d69fe..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.9.2</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 7a03401..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.9.2</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 3433f2d..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.9.2</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 c4332e6..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.9.2</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 0060ff2..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.9.2</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 837d8ce..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.9.2</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 cb1882e..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.9.2</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 525ea9f..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.9.2</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 55ff028..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.9.2</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
index def9d55..3fa3d28 100644
--- a/docs/plugins/inspect/plugin-timecode.xml
+++ b/docs/plugins/inspect/plugin-timecode.xml
@@ -3,7 +3,7 @@
   <description>Timecode-related elements</description>
   <filename>../../gst/timecode/.libs/libgsttimecode.so</filename>
   <basename>libgsttimecode.so</basename>
-  <version>1.9.2</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-uvch264.xml b/docs/plugins/inspect/plugin-uvch264.xml
index c5212f2..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.9.2</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-vcdsrc.xml b/docs/plugins/inspect/plugin-vcdsrc.xml
index 96521f9..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.9.2</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-videofiltersbad.xml b/docs/plugins/inspect/plugin-videofiltersbad.xml
index e94c006..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.9.2</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-videoframe_audiolevel.xml b/docs/plugins/inspect/plugin-videoframe_audiolevel.xml
index fe7b813..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.9.2</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 fd48c28..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.9.2</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-videosignal.xml b/docs/plugins/inspect/plugin-videosignal.xml
index 0468fcf..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.9.2</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 1bc64cf..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.9.2</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 a4cfa91..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.9.2</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 9602b9c..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.9.2</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 05a9e84..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.9.2</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 b52b62f..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.9.2</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
index aba042e..1c6dab8 100644
--- a/docs/plugins/inspect/plugin-webrtcdsp.xml
+++ b/docs/plugins/inspect/plugin-webrtcdsp.xml
@@ -3,7 +3,7 @@
   <description>Voice pre-processing using WebRTC Audio Processing Library</description>
   <filename>../../ext/webrtcdsp/.libs/libgstwebrtcdsp.so</filename>
   <basename>libgstwebrtcdsp.so</basename>
-  <version>1.9.2</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>WebRTCDsp</package>
diff --git a/docs/plugins/inspect/plugin-wildmidi.xml b/docs/plugins/inspect/plugin-wildmidi.xml
index 3b8b814..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.9.2</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 df3ad86..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.9.2</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 3e3f090..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.9.2</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 7f41b1f..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.9.2</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 24c3ffd..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.9.2</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.in b/ext/Makefile.in
index 25b1a99..092571d 100644
--- a/ext/Makefile.in
+++ b/ext/Makefile.in
@@ -672,6 +672,9 @@
 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@
diff --git a/ext/apexsink/Makefile.in b/ext/apexsink/Makefile.in
index f79d22d..5c52e2c 100644
--- a/ext/apexsink/Makefile.in
+++ b/ext/apexsink/Makefile.in
@@ -696,6 +696,9 @@
 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@
diff --git a/ext/assrender/Makefile.in b/ext/assrender/Makefile.in
index bc3a6ac..d646cdb 100644
--- a/ext/assrender/Makefile.in
+++ b/ext/assrender/Makefile.in
@@ -693,6 +693,9 @@
 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@
diff --git a/ext/bs2b/Makefile.in b/ext/bs2b/Makefile.in
index 24430b3..1cd6ea0 100644
--- a/ext/bs2b/Makefile.in
+++ b/ext/bs2b/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/ext/bz2/Makefile.in b/ext/bz2/Makefile.in
index 347870d..dbfc633 100644
--- a/ext/bz2/Makefile.in
+++ b/ext/bz2/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/ext/chromaprint/Makefile.in b/ext/chromaprint/Makefile.in
index 99f0b52..eed293f 100644
--- a/ext/chromaprint/Makefile.in
+++ b/ext/chromaprint/Makefile.in
@@ -695,6 +695,9 @@
 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@
diff --git a/ext/curl/Makefile.in b/ext/curl/Makefile.in
index 4bb3cb7..0f01b0b 100644
--- a/ext/curl/Makefile.in
+++ b/ext/curl/Makefile.in
@@ -707,6 +707,9 @@
 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@
diff --git a/ext/daala/Makefile.in b/ext/daala/Makefile.in
index 2b76f02..e921388 100644
--- a/ext/daala/Makefile.in
+++ b/ext/daala/Makefile.in
@@ -695,6 +695,9 @@
 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@
diff --git a/ext/dash/Makefile.in b/ext/dash/Makefile.in
index 1872abf..f954b03 100644
--- a/ext/dash/Makefile.in
+++ b/ext/dash/Makefile.in
@@ -698,6 +698,9 @@
 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@
diff --git a/ext/dc1394/Makefile.in b/ext/dc1394/Makefile.in
index b73f914..c085c2f 100644
--- a/ext/dc1394/Makefile.in
+++ b/ext/dc1394/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/ext/directfb/Makefile.in b/ext/directfb/Makefile.in
index 26a091f..3146226 100644
--- a/ext/directfb/Makefile.in
+++ b/ext/directfb/Makefile.in
@@ -703,6 +703,9 @@
 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@
diff --git a/ext/dtls/Makefile.in b/ext/dtls/Makefile.in
index d132b54..ea4d400 100644
--- a/ext/dtls/Makefile.in
+++ b/ext/dtls/Makefile.in
@@ -700,6 +700,9 @@
 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@
diff --git a/ext/dts/Makefile.in b/ext/dts/Makefile.in
index 30956c0..1e08d81 100644
--- a/ext/dts/Makefile.in
+++ b/ext/dts/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/ext/faac/Makefile.in b/ext/faac/Makefile.in
index 4842462..1a73219 100644
--- a/ext/faac/Makefile.in
+++ b/ext/faac/Makefile.in
@@ -693,6 +693,9 @@
 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@
diff --git a/ext/faad/Makefile.in b/ext/faad/Makefile.in
index 64fd24f..0d8f095 100644
--- a/ext/faad/Makefile.in
+++ b/ext/faad/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/ext/fdkaac/Makefile.in b/ext/fdkaac/Makefile.in
index d716d8c..1f4bbb4 100644
--- a/ext/fdkaac/Makefile.in
+++ b/ext/fdkaac/Makefile.in
@@ -695,6 +695,9 @@
 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@
diff --git a/ext/fdkaac/gstfdkaacdec.c b/ext/fdkaac/gstfdkaacdec.c
index 181bd22..c271837 100644
--- a/ext/fdkaac/gstfdkaacdec.c
+++ b/ext/fdkaac/gstfdkaacdec.c
@@ -142,11 +142,13 @@
 
     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 =
@@ -158,15 +160,15 @@
 
   if ((err =
           aacDecoder_SetParam (self->dec, AAC_PCM_OUTPUT_INTERLEAVED,
-              0)) != AAC_DEC_OK) {
-    GST_ERROR_OBJECT (self, "Failed to set output channel mapping: %d", err);
+              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 * 2 * 2048;
-    self->decode_buffer = g_malloc (self->decode_buffer_size);
+    self->decode_buffer_size = 8 * 2048;
+    self->decode_buffer = g_new (gint16, self->decode_buffer_size);
   }
 
   return TRUE;
@@ -188,6 +190,7 @@
   gboolean need_reorder;
 
   if (inbuf) {
+    gst_buffer_ref (inbuf);
     gst_buffer_map (inbuf, &imap, GST_MAP_READ);
     valid = size = imap.size;
 
@@ -196,10 +199,8 @@
                 &valid)) != AAC_DEC_OK) {
       GST_AUDIO_DECODER_ERROR (self, 1, STREAM, DECODE, (NULL),
           ("filling error: %d", err), ret);
-      gst_buffer_unmap (inbuf, &imap);
       goto out;
     }
-    gst_buffer_unmap (inbuf, &imap);
 
     if (GST_BUFFER_IS_DISCONT (inbuf))
       flags |= AACDEC_INTR;
@@ -208,8 +209,13 @@
   }
 
   if ((err =
-          aacDecoder_DecodeFrame (self->dec, (gint16 *) self->decode_buffer,
+          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;
@@ -383,10 +389,16 @@
         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;
 }
 
@@ -398,7 +410,7 @@
   if (self->dec) {
     AAC_DECODER_ERROR err;
     if ((err =
-            aacDecoder_DecodeFrame (self->dec, (gint16 *) self->decode_buffer,
+            aacDecoder_DecodeFrame (self->dec, self->decode_buffer,
                 self->decode_buffer_size, AACDEC_FLUSH)) != AAC_DEC_OK) {
       GST_ERROR_OBJECT (self, "flushing error: %d", err);
     }
diff --git a/ext/fdkaac/gstfdkaacdec.h b/ext/fdkaac/gstfdkaacdec.h
index a805a2a..5f766bc 100644
--- a/ext/fdkaac/gstfdkaacdec.h
+++ b/ext/fdkaac/gstfdkaacdec.h
@@ -45,7 +45,7 @@
   GstAudioDecoder element;
 
   HANDLE_AACDECODER dec;
-  guint8 *decode_buffer;
+  gint16 *decode_buffer;
   gint decode_buffer_size;
 };
 
diff --git a/ext/fdkaac/gstfdkaacenc.c b/ext/fdkaac/gstfdkaacenc.c
index 3405ec1..8c6ff8b 100644
--- a/ext/fdkaac/gstfdkaacenc.c
+++ b/ext/fdkaac/gstfdkaacenc.c
@@ -127,11 +127,11 @@
     GST_PAD_SRC,
     GST_PAD_ALWAYS,
     GST_STATIC_CAPS ("audio/mpeg, "
-        "mpegversion = (int) {2, 4}, "
+        "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")
+        "base-profile = (string) lc, " "framed = (boolean) true")
     );
 
 GST_DEBUG_CATEGORY_STATIC (gst_fdkaacenc_debug);
@@ -296,11 +296,7 @@
     return FALSE;
   }
 
-  if (mpegversion == 4) {
-    aot = AOT_AAC_LC;
-  } else {
-    aot = AOT_MP2_AAC_LC;
-  }
+  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);
@@ -410,6 +406,12 @@
     }
   }
 
+  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);
@@ -436,6 +438,7 @@
   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 */
diff --git a/ext/flite/Makefile.in b/ext/flite/Makefile.in
index 21972a2..8bb2029 100644
--- a/ext/flite/Makefile.in
+++ b/ext/flite/Makefile.in
@@ -692,6 +692,9 @@
 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@
diff --git a/ext/fluidsynth/Makefile.in b/ext/fluidsynth/Makefile.in
index 3fc6651..9a2541a 100644
--- a/ext/fluidsynth/Makefile.in
+++ b/ext/fluidsynth/Makefile.in
@@ -701,6 +701,9 @@
 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@
diff --git a/ext/gl/Makefile.in b/ext/gl/Makefile.in
index e0146c2..beffad6 100644
--- a/ext/gl/Makefile.in
+++ b/ext/gl/Makefile.in
@@ -839,6 +839,9 @@
 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@
diff --git a/ext/gl/gstglcolorbalance.c b/ext/gl/gstglcolorbalance.c
index 92d4447..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
diff --git a/ext/gl/gstgluploadelement.c b/ext/gl/gstgluploadelement.c
index f458a43..d3ed276 100644
--- a/ext/gl/gstgluploadelement.c
+++ b/ext/gl/gstgluploadelement.c
@@ -97,8 +97,6 @@
 gst_gl_upload_element_init (GstGLUploadElement * upload)
 {
   gst_base_transform_set_prefer_passthrough (GST_BASE_TRANSFORM (upload), TRUE);
-
-  upload->upload = gst_gl_upload_new (NULL);
 }
 
 static gboolean
@@ -138,6 +136,9 @@
   GstGLUploadElement *upload = GST_GL_UPLOAD_ELEMENT (bt);
   GstGLContext *context = GST_GL_BASE_FILTER (bt)->context;
 
+  if (upload->upload == NULL)
+    upload->upload = gst_gl_upload_new (NULL);
+
   return gst_gl_upload_transform_caps (upload->upload, context, direction, caps,
       filter);
 }
diff --git a/ext/gme/Makefile.in b/ext/gme/Makefile.in
index fde997a..8f712bc 100644
--- a/ext/gme/Makefile.in
+++ b/ext/gme/Makefile.in
@@ -693,6 +693,9 @@
 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@
diff --git a/ext/gsm/Makefile.in b/ext/gsm/Makefile.in
index 7f8be44..2f553f8 100644
--- a/ext/gsm/Makefile.in
+++ b/ext/gsm/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/ext/gtk/Makefile.in b/ext/gtk/Makefile.in
index 1cc91c6..af84c98 100644
--- a/ext/gtk/Makefile.in
+++ b/ext/gtk/Makefile.in
@@ -707,6 +707,9 @@
 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@
diff --git a/ext/hls/Makefile.in b/ext/hls/Makefile.in
index b3346df..21d9463 100644
--- a/ext/hls/Makefile.in
+++ b/ext/hls/Makefile.in
@@ -700,6 +700,9 @@
 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@
diff --git a/ext/kate/Makefile.in b/ext/kate/Makefile.in
index 23c336a..70879e9 100644
--- a/ext/kate/Makefile.in
+++ b/ext/kate/Makefile.in
@@ -699,6 +699,9 @@
 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@
diff --git a/ext/ladspa/Makefile.in b/ext/ladspa/Makefile.in
index 4501dd5..274d3db 100644
--- a/ext/ladspa/Makefile.in
+++ b/ext/ladspa/Makefile.in
@@ -698,6 +698,9 @@
 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@
diff --git a/ext/libde265/Makefile.in b/ext/libde265/Makefile.in
index 0be80e0..484db3b 100644
--- a/ext/libde265/Makefile.in
+++ b/ext/libde265/Makefile.in
@@ -695,6 +695,9 @@
 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@
diff --git a/ext/libmms/Makefile.in b/ext/libmms/Makefile.in
index 46c3c26..02fadaa 100644
--- a/ext/libmms/Makefile.in
+++ b/ext/libmms/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/ext/libvisual/Makefile.in b/ext/libvisual/Makefile.in
index af32101..4fd8b2d 100644
--- a/ext/libvisual/Makefile.in
+++ b/ext/libvisual/Makefile.in
@@ -691,6 +691,9 @@
 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@
diff --git a/ext/lv2/Makefile.in b/ext/lv2/Makefile.in
index 66791d3..24389e9 100644
--- a/ext/lv2/Makefile.in
+++ b/ext/lv2/Makefile.in
@@ -696,6 +696,9 @@
 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@
diff --git a/ext/lv2/gstlv2filter.c b/ext/lv2/gstlv2filter.c
index 0ef6ade..03181e5 100644
--- a/ext/lv2/gstlv2filter.c
+++ b/ext/lv2/gstlv2filter.c
@@ -390,13 +390,18 @@
   /* multi channel inputs */
   lv2_group = &lv2_class->in_group;
   samples = nframes / lv2_group->ports->len;
-  in = g_new0 (gfloat, nframes);
   GST_LOG_OBJECT (self, "in : samples=%u, nframes=%u, ports=%d", samples,
       nframes, lv2_group->ports->len);
 
-  if (lv2_group->ports->len > 1)
+  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);
@@ -407,7 +412,7 @@
   /* multi channel outputs */
   lv2_group = &lv2_class->out_group;
   out_samples = nframes / lv2_group->ports->len;
-  out = g_new0 (gfloat, samples * 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) {
@@ -434,11 +439,12 @@
 
   lilv_instance_run (self->lv2.instance, samples);
 
-  if (lv2_group->ports->len > 1)
+  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 (out);
+    g_free (in);
+  }
   g_free (cv);
 
   return GST_FLOW_OK;
diff --git a/ext/mimic/Makefile.in b/ext/mimic/Makefile.in
index 76ceca7..2289d2c 100644
--- a/ext/mimic/Makefile.in
+++ b/ext/mimic/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/ext/modplug/Makefile.in b/ext/modplug/Makefile.in
index af558c3..b34fa04 100644
--- a/ext/modplug/Makefile.in
+++ b/ext/modplug/Makefile.in
@@ -693,6 +693,9 @@
 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@
diff --git a/ext/mpeg2enc/Makefile.in b/ext/mpeg2enc/Makefile.in
index 15f0c3a..7506150 100644
--- a/ext/mpeg2enc/Makefile.in
+++ b/ext/mpeg2enc/Makefile.in
@@ -697,6 +697,9 @@
 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@
diff --git a/ext/mplex/Makefile.in b/ext/mplex/Makefile.in
index e9314b6..2eee97f 100644
--- a/ext/mplex/Makefile.in
+++ b/ext/mplex/Makefile.in
@@ -697,6 +697,9 @@
 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@
diff --git a/ext/musepack/Makefile.in b/ext/musepack/Makefile.in
index 3ae8534..ade1322 100644
--- a/ext/musepack/Makefile.in
+++ b/ext/musepack/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/ext/nas/Makefile.in b/ext/nas/Makefile.in
index 3e8f341..5ba5243 100644
--- a/ext/nas/Makefile.in
+++ b/ext/nas/Makefile.in
@@ -693,6 +693,9 @@
 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@
diff --git a/ext/neon/Makefile.in b/ext/neon/Makefile.in
index 4f6db41..c63636c 100644
--- a/ext/neon/Makefile.in
+++ b/ext/neon/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/ext/ofa/Makefile.in b/ext/ofa/Makefile.in
index 76fccab..6630934 100644
--- a/ext/ofa/Makefile.in
+++ b/ext/ofa/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/ext/openal/Makefile.in b/ext/openal/Makefile.in
index a32853d..b14865e 100644
--- a/ext/openal/Makefile.in
+++ b/ext/openal/Makefile.in
@@ -698,6 +698,9 @@
 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@
diff --git a/ext/opencv/Makefile.in b/ext/opencv/Makefile.in
index a5a6462..bac0228 100644
--- a/ext/opencv/Makefile.in
+++ b/ext/opencv/Makefile.in
@@ -715,6 +715,9 @@
 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@
diff --git a/ext/openexr/Makefile.in b/ext/openexr/Makefile.in
index 6413382..8ac7422 100644
--- a/ext/openexr/Makefile.in
+++ b/ext/openexr/Makefile.in
@@ -713,6 +713,9 @@
 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@
diff --git a/ext/openh264/Makefile.in b/ext/openh264/Makefile.in
index 33cf4a7..c1d96e5 100644
--- a/ext/openh264/Makefile.in
+++ b/ext/openh264/Makefile.in
@@ -713,6 +713,9 @@
 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@
diff --git a/ext/openjpeg/Makefile.in b/ext/openjpeg/Makefile.in
index 37a5238..9cb847d 100644
--- a/ext/openjpeg/Makefile.in
+++ b/ext/openjpeg/Makefile.in
@@ -696,6 +696,9 @@
 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@
diff --git a/ext/openjpeg/gstopenjpegdec.c b/ext/openjpeg/gstopenjpegdec.c
index 075bd12..60b9543 100644
--- a/ext/openjpeg/gstopenjpegdec.c
+++ b/ext/openjpeg/gstopenjpegdec.c
@@ -208,29 +208,30 @@
 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]++;
@@ -245,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]++;
@@ -288,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]++;
@@ -322,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]++;
@@ -365,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);
@@ -372,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++;
@@ -393,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);
@@ -402,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++;
@@ -423,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);
@@ -431,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++;
       }
@@ -452,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);
@@ -460,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++;
       }
@@ -478,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;
@@ -518,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;
@@ -561,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;
@@ -605,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;
diff --git a/ext/openni2/Makefile.in b/ext/openni2/Makefile.in
index 617c725..0b0e08a 100644
--- a/ext/openni2/Makefile.in
+++ b/ext/openni2/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/ext/opus/Makefile.in b/ext/opus/Makefile.in
index e8ec31c..d3da9e5 100644
--- a/ext/opus/Makefile.in
+++ b/ext/opus/Makefile.in
@@ -696,6 +696,9 @@
 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@
diff --git a/ext/qt/Makefile.in b/ext/qt/Makefile.in
index f72a489..5b648c4 100644
--- a/ext/qt/Makefile.in
+++ b/ext/qt/Makefile.in
@@ -721,6 +721,9 @@
 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@
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/resindvd/Makefile.in b/ext/resindvd/Makefile.in
index e6ace0f..56251dd 100644
--- a/ext/resindvd/Makefile.in
+++ b/ext/resindvd/Makefile.in
@@ -703,6 +703,9 @@
 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@
diff --git a/ext/rsvg/Makefile.in b/ext/rsvg/Makefile.in
index f78c220..87a5781 100644
--- a/ext/rsvg/Makefile.in
+++ b/ext/rsvg/Makefile.in
@@ -695,6 +695,9 @@
 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@
diff --git a/ext/rtmp/Makefile.in b/ext/rtmp/Makefile.in
index cc555d6..b737006 100644
--- a/ext/rtmp/Makefile.in
+++ b/ext/rtmp/Makefile.in
@@ -695,6 +695,9 @@
 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@
diff --git a/ext/sbc/Makefile.in b/ext/sbc/Makefile.in
index 69f7442..87a37fa 100644
--- a/ext/sbc/Makefile.in
+++ b/ext/sbc/Makefile.in
@@ -695,6 +695,9 @@
 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@
diff --git a/ext/schroedinger/Makefile.in b/ext/schroedinger/Makefile.in
index 2d3cad8..f2800c3 100644
--- a/ext/schroedinger/Makefile.in
+++ b/ext/schroedinger/Makefile.in
@@ -696,6 +696,9 @@
 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@
diff --git a/ext/sdl/Makefile.in b/ext/sdl/Makefile.in
index ef29cfb..d5548f8 100644
--- a/ext/sdl/Makefile.in
+++ b/ext/sdl/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/ext/smoothstreaming/Makefile.in b/ext/smoothstreaming/Makefile.in
index 94fb8e8..a7146a7 100644
--- a/ext/smoothstreaming/Makefile.in
+++ b/ext/smoothstreaming/Makefile.in
@@ -699,6 +699,9 @@
 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@
diff --git a/ext/sndfile/Makefile.in b/ext/sndfile/Makefile.in
index 8f5dc13..302d860 100644
--- a/ext/sndfile/Makefile.in
+++ b/ext/sndfile/Makefile.in
@@ -695,6 +695,9 @@
 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@
diff --git a/ext/sndio/Makefile.in b/ext/sndio/Makefile.in
index 2d2ea8f..9f4b22d 100644
--- a/ext/sndio/Makefile.in
+++ b/ext/sndio/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/ext/soundtouch/Makefile.in b/ext/soundtouch/Makefile.in
index 82241e6..c216413 100644
--- a/ext/soundtouch/Makefile.in
+++ b/ext/soundtouch/Makefile.in
@@ -714,6 +714,9 @@
 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@
diff --git a/ext/spandsp/Makefile.in b/ext/spandsp/Makefile.in
index b36a563..f9a21c1 100644
--- a/ext/spandsp/Makefile.in
+++ b/ext/spandsp/Makefile.in
@@ -697,6 +697,9 @@
 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@
diff --git a/ext/spc/Makefile.in b/ext/spc/Makefile.in
index b2bb741..efd1e38 100644
--- a/ext/spc/Makefile.in
+++ b/ext/spc/Makefile.in
@@ -693,6 +693,9 @@
 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@
diff --git a/ext/srtp/Makefile.in b/ext/srtp/Makefile.in
index 29a2e76..1895c1b 100644
--- a/ext/srtp/Makefile.in
+++ b/ext/srtp/Makefile.in
@@ -703,6 +703,9 @@
 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@
diff --git a/ext/srtp/gstsrtpenc.c b/ext/srtp/gstsrtpenc.c
index 7f46a4f..c9ae980 100644
--- a/ext/srtp/gstsrtpenc.c
+++ b/ext/srtp/gstsrtpenc.c
@@ -386,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;
     }
 
@@ -396,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;
     }
   }
diff --git a/ext/teletextdec/Makefile.in b/ext/teletextdec/Makefile.in
index 6f51c8d..f73d19c 100644
--- a/ext/teletextdec/Makefile.in
+++ b/ext/teletextdec/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/ext/timidity/Makefile.in b/ext/timidity/Makefile.in
index 177dd58..0cfebaf 100644
--- a/ext/timidity/Makefile.in
+++ b/ext/timidity/Makefile.in
@@ -712,6 +712,9 @@
 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@
diff --git a/ext/voaacenc/Makefile.in b/ext/voaacenc/Makefile.in
index 0339a41..8cabe02 100644
--- a/ext/voaacenc/Makefile.in
+++ b/ext/voaacenc/Makefile.in
@@ -695,6 +695,9 @@
 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@
diff --git a/ext/voamrwbenc/Makefile.in b/ext/voamrwbenc/Makefile.in
index 19fd71b..7c719d9 100644
--- a/ext/voamrwbenc/Makefile.in
+++ b/ext/voamrwbenc/Makefile.in
@@ -696,6 +696,9 @@
 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@
diff --git a/ext/vulkan/Makefile.in b/ext/vulkan/Makefile.in
index 87bf6c3..c4dd3d5 100644
--- a/ext/vulkan/Makefile.in
+++ b/ext/vulkan/Makefile.in
@@ -747,6 +747,9 @@
 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@
diff --git a/ext/vulkan/vkupload.c b/ext/vulkan/vkupload.c
index c0f0a97..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 ")");
 
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/wayland/Makefile.in b/ext/vulkan/wayland/Makefile.in
index 3a341ca..44513f9 100644
--- a/ext/vulkan/wayland/Makefile.in
+++ b/ext/vulkan/wayland/Makefile.in
@@ -668,6 +668,9 @@
 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@
diff --git a/ext/vulkan/xcb/Makefile.in b/ext/vulkan/xcb/Makefile.in
index 50b4de2..562e2ec 100644
--- a/ext/vulkan/xcb/Makefile.in
+++ b/ext/vulkan/xcb/Makefile.in
@@ -666,6 +666,9 @@
 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@
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 5184585..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 \
@@ -701,6 +704,9 @@
 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@
@@ -794,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)
 
@@ -821,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
@@ -905,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@
@@ -978,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
@@ -1074,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
@@ -1111,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 \
@@ -1182,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 \
@@ -1202,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 5d59525..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,10 +122,12 @@
   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;
@@ -148,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 "
@@ -396,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);
   }
@@ -425,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)
 {
@@ -434,7 +458,6 @@
   enum wl_shm_format format;
   GArray *formats;
   gint i;
-  GstStructure *structure;
 
   sink = GST_WAYLAND_SINK (bsink);
 
@@ -458,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);
 
@@ -481,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;
   }
 }
@@ -508,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)
 {
@@ -538,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);
 }
 
@@ -558,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);
 
@@ -570,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;
@@ -590,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() */
@@ -610,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)) {
@@ -627,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... */
@@ -637,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)
@@ -658,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);
     }
   }
 
@@ -702,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);
@@ -747,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, "
@@ -791,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 f233b26..8f69240 100644
--- a/ext/webp/Makefile.in
+++ b/ext/webp/Makefile.in
@@ -695,6 +695,9 @@
 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@
diff --git a/ext/webrtcdsp/Makefile.in b/ext/webrtcdsp/Makefile.in
index d815d38..7b11d5f 100644
--- a/ext/webrtcdsp/Makefile.in
+++ b/ext/webrtcdsp/Makefile.in
@@ -695,6 +695,9 @@
 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@
diff --git a/ext/x265/Makefile.in b/ext/x265/Makefile.in
index def658f..f55e4fb 100644
--- a/ext/x265/Makefile.in
+++ b/ext/x265/Makefile.in
@@ -693,6 +693,9 @@
 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@
diff --git a/ext/xvid/Makefile.in b/ext/xvid/Makefile.in
index d60dc56..ed514eb 100644
--- a/ext/xvid/Makefile.in
+++ b/ext/xvid/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/ext/zbar/Makefile.in b/ext/zbar/Makefile.in
index 43f9f32..33ee46e 100644
--- a/ext/zbar/Makefile.in
+++ b/ext/zbar/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/gst-libs/Makefile.in b/gst-libs/Makefile.in
index ba4525a..433c67f 100644
--- a/gst-libs/Makefile.in
+++ b/gst-libs/Makefile.in
@@ -667,6 +667,9 @@
 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@
diff --git a/gst-libs/gst/Makefile.in b/gst-libs/gst/Makefile.in
index ea419f6..3fb0167 100644
--- a/gst-libs/gst/Makefile.in
+++ b/gst-libs/gst/Makefile.in
@@ -669,6 +669,9 @@
 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@
diff --git a/gst-libs/gst/adaptivedemux/Makefile.in b/gst-libs/gst/adaptivedemux/Makefile.in
index f81f5f0..0a35ee3 100644
--- a/gst-libs/gst/adaptivedemux/Makefile.in
+++ b/gst-libs/gst/adaptivedemux/Makefile.in
@@ -697,6 +697,9 @@
 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@
diff --git a/gst-libs/gst/adaptivedemux/gstadaptivedemux.c b/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
index c465226..715893c 100644
--- a/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
+++ b/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
@@ -434,6 +434,9 @@
 
   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);
diff --git a/gst-libs/gst/audio/Makefile.in b/gst-libs/gst/audio/Makefile.in
index a2eb92a..9fd5c4b 100644
--- a/gst-libs/gst/audio/Makefile.in
+++ b/gst-libs/gst/audio/Makefile.in
@@ -685,6 +685,9 @@
 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@
diff --git a/gst-libs/gst/base/Makefile.in b/gst-libs/gst/base/Makefile.in
index e06d16a..fa78568 100644
--- a/gst-libs/gst/base/Makefile.in
+++ b/gst-libs/gst/base/Makefile.in
@@ -679,6 +679,9 @@
 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@
diff --git a/gst-libs/gst/base/gstaggregator.c b/gst-libs/gst/base/gstaggregator.c
index d458e97..7e8c5be 100644
--- a/gst-libs/gst/base/gstaggregator.c
+++ b/gst-libs/gst/base/gstaggregator.c
@@ -2310,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);
@@ -2324,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);
@@ -2347,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",
@@ -2360,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
@@ -2397,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 c6846f8..1453b08 100644
--- a/gst-libs/gst/basecamerabinsrc/Makefile.in
+++ b/gst-libs/gst/basecamerabinsrc/Makefile.in
@@ -684,6 +684,9 @@
 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@
diff --git a/gst-libs/gst/codecparsers/Makefile.in b/gst-libs/gst/codecparsers/Makefile.in
index 5971a4a..2eead8b 100644
--- a/gst-libs/gst/codecparsers/Makefile.in
+++ b/gst-libs/gst/codecparsers/Makefile.in
@@ -715,6 +715,9 @@
 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@
diff --git a/gst-libs/gst/gl/Makefile.am b/gst-libs/gst/gl/Makefile.am
index a54ea3f..5572d2d 100644
--- a/gst-libs/gst/gl/Makefile.am
+++ b/gst-libs/gst/gl/Makefile.am
@@ -131,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 dc7d55b..43eb799 100644
--- a/gst-libs/gst/gl/Makefile.in
+++ b/gst-libs/gst/gl/Makefile.in
@@ -792,6 +792,9 @@
 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@
@@ -970,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) \
diff --git a/gst-libs/gst/gl/android/Makefile.in b/gst-libs/gst/gl/android/Makefile.in
index 449d69f..a54865b 100644
--- a/gst-libs/gst/gl/android/Makefile.in
+++ b/gst-libs/gst/gl/android/Makefile.in
@@ -692,6 +692,9 @@
 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@
diff --git a/gst-libs/gst/gl/cocoa/Makefile.in b/gst-libs/gst/gl/cocoa/Makefile.in
index 004afb3..1e4b991 100644
--- a/gst-libs/gst/gl/cocoa/Makefile.in
+++ b/gst-libs/gst/gl/cocoa/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/gst-libs/gst/gl/dispmanx/Makefile.in b/gst-libs/gst/gl/dispmanx/Makefile.in
index 2c39ca6..b49a2e5 100644
--- a/gst-libs/gst/gl/dispmanx/Makefile.in
+++ b/gst-libs/gst/gl/dispmanx/Makefile.in
@@ -664,6 +664,9 @@
 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@
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 070966f..11ee06c 100644
--- a/gst-libs/gst/gl/eagl/Makefile.in
+++ b/gst-libs/gst/gl/eagl/Makefile.in
@@ -664,6 +664,9 @@
 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@
diff --git a/gst-libs/gst/gl/egl/Makefile.in b/gst-libs/gst/gl/egl/Makefile.in
index f6f49a4..bf567c6 100644
--- a/gst-libs/gst/gl/egl/Makefile.in
+++ b/gst-libs/gst/gl/egl/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/gst-libs/gst/gl/glprototypes/Makefile.in b/gst-libs/gst/gl/glprototypes/Makefile.in
index 3e1b479..b1819df 100644
--- a/gst-libs/gst/gl/glprototypes/Makefile.in
+++ b/gst-libs/gst/gl/glprototypes/Makefile.in
@@ -656,6 +656,9 @@
 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@
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.h b/gst-libs/gst/gl/gstglbasememory.h
index bee2844..22129d0 100644
--- a/gst-libs/gst/gl/gstglbasememory.h
+++ b/gst-libs/gst/gl/gstglbasememory.h
@@ -112,6 +112,8 @@
 
   GDestroyNotify        notify;
   gpointer              user_data;
+
+  gpointer              _padding[GST_PADDING];
 };
 
 typedef struct _GstGLAllocationParams GstGLAllocationParams;
@@ -174,6 +176,9 @@
   gpointer                          wrapped_data;
   /* GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE only */
   gpointer                          gl_handle;
+
+  /* <private> */
+  gpointer                          _padding[GST_PADDING];
 };
 
 gboolean                gst_gl_allocation_params_init       (GstGLAllocationParams * params,
@@ -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.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.h b/gst-libs/gst/gl/gstglbufferpool.h
index 2f964a8..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,6 +61,9 @@
 struct _GstGLBufferPoolClass
 {
   GstBufferPoolClass parent_class;
+
+  /* <private> */
+  gpointer _padding[GST_PADDING];
 };
 
 GstBufferPool *gst_gl_buffer_pool_new (GstGLContext * context);
diff --git a/gst-libs/gst/gl/gstglcolorconvert.h b/gst-libs/gst/gl/gstglcolorconvert.h
index fbbbf3b..d978e7e 100644
--- a/gst-libs/gst/gl/gstglcolorconvert.h
+++ b/gst-libs/gst/gl/gstglcolorconvert.h
@@ -76,6 +76,9 @@
 struct _GstGLColorConvertClass
 {
   GstObjectClass object_class;
+
+  /* <private> */
+  gpointer _padding[GST_PADDING];
 };
 
 /**
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 7cb6266..3ffc906 100644
--- a/gst-libs/gst/gl/gstgldisplay.c
+++ b/gst-libs/gst/gl/gstgldisplay.c
@@ -433,6 +433,7 @@
     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;
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.h b/gst-libs/gst/gl/gstglfilter.h
index f56e2d0..cdebe57 100644
--- a/gst-libs/gst/gl/gstglfilter.h
+++ b/gst-libs/gst/gl/gstglfilter.h
@@ -81,6 +81,8 @@
   GLuint             vertex_buffer;
   GLint              draw_attr_position_loc;
   GLint              draw_attr_texture_loc;
+
+  gpointer          _padding[GST_PADDING];
 };
 
 /**
@@ -114,6 +116,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];
 };
 
 gboolean gst_gl_filter_filter_texture (GstGLFilter * filter, GstBuffer * inbuf,
diff --git a/gst-libs/gst/gl/gstglframebuffer.h b/gst-libs/gst/gl/gstglframebuffer.h
index 0e135c8..6298af1 100644
--- a/gst-libs/gst/gl/gstglframebuffer.h
+++ b/gst-libs/gst/gl/gstglframebuffer.h
@@ -49,18 +49,22 @@
 {
   GstObject             object;
 
-  /* <private> */
   GstGLContext *context;
 
+  /* <private> */
   guint fbo_id;
   GArray *attachments;
 
+  gpointer          _padding[GST_PADDING];
+
   GstGLFramebufferPrivate  *priv;
 };
 
 struct _GstGLFramebufferClass
 {
   GstObjectClass object_class;
+
+  gpointer          _padding[GST_PADDING];
 };
 
 GstGLFramebuffer *      gst_gl_framebuffer_new                      (GstGLContext *context);
diff --git a/gst-libs/gst/gl/gstglmemory.h b/gst-libs/gst/gl/gstglmemory.h
index f36f64b..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;
@@ -93,6 +96,9 @@
   GstVideoAlignment     *valign;
   GstGLTextureTarget     target;
   GstVideoGLTextureType  tex_type;
+
+  /* <private> */
+  gpointer               _padding[GST_PADDING];
 };
 
 gboolean        gst_gl_video_allocation_params_init_full        (GstGLVideoAllocationParams * params,
@@ -165,6 +171,9 @@
 struct _GstGLMemoryAllocator
 {
   GstGLBaseMemoryAllocator parent;
+
+  /* <private> */
+  gpointer _padding[GST_PADDING];
 };
 
 /**
@@ -179,6 +188,9 @@
   GstGLBaseMemoryAllocatorMapFunction       map;
   GstGLBaseMemoryAllocatorCopyFunction      copy;
   GstGLBaseMemoryAllocatorUnmapFunction     unmap;
+
+  /* <private> */
+  gpointer                                  _padding[GST_PADDING];
 };
 
 #include <gst/gl/gstglbasememory.h>
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.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.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.h b/gst-libs/gst/gl/gstglrenderbuffer.h
index 1ed323e..5a9a1c0 100644
--- a/gst-libs/gst/gl/gstglrenderbuffer.h
+++ b/gst-libs/gst/gl/gstglrenderbuffer.h
@@ -69,6 +69,9 @@
 
   /* <protected> */
   gboolean                  renderbuffer_wrapped;
+
+  /* <private> */
+  gpointer                  _padding[GST_PADDING];
 };
 
 /**
@@ -79,6 +82,9 @@
 struct _GstGLRenderbufferAllocator
 {
   GstGLBaseMemoryAllocator parent;
+
+  /* <private> */
+  gpointer                  _padding[GST_PADDING];
 };
 
 /**
@@ -89,6 +95,9 @@
 struct _GstGLRenderbufferAllocatorClass
 {
   GstGLBaseMemoryAllocatorClass             parent_class;
+
+  /* <private> */
+  gpointer                  _padding[GST_PADDING];
 };
 
 #include <gst/gl/gstglbasememory.h>
@@ -100,6 +109,9 @@
   GstVideoGLTextureType renderbuffer_type;
   guint width;
   guint height;
+
+  /* <private> */
+  gpointer _padding[GST_PADDING];
 } GstGLRenderbufferAllocationParams;
 
 GstGLRenderbufferAllocationParams *     gst_gl_renderbuffer_allocation_params_new           (GstGLContext * context,
diff --git a/gst-libs/gst/gl/gstglshader.h b/gst-libs/gst/gl/gstglshader.h
index 2200b89..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];
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.h b/gst-libs/gst/gl/gstglupload.h
index d158502..3e00298 100644
--- a/gst-libs/gst/gl/gstglupload.h
+++ b/gst-libs/gst/gl/gstglupload.h
@@ -59,11 +59,11 @@
  */
 struct _GstGLUpload
 {
-  /* <private> */
   GstObject        parent;
 
   GstGLContext    *context;
 
+  /* <private> */
   GstGLUploadPrivate *priv;
 
   gpointer _reserved[GST_PADDING];
@@ -77,6 +77,9 @@
 struct _GstGLUploadClass
 {
   GstObjectClass object_class;
+
+  /* <private> */
+  gpointer _padding[GST_PADDING];
 };
 
 GstCaps *     gst_gl_upload_get_input_template_caps (void);
diff --git a/gst-libs/gst/gl/gstglviewconvert.h b/gst-libs/gst/gl/gstglviewconvert.h
index ee1166c..4783dd1 100644
--- a/gst-libs/gst/gl/gstglviewconvert.h
+++ b/gst-libs/gst/gl/gstglviewconvert.h
@@ -70,12 +70,18 @@
 
   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/wayland/Makefile.in b/gst-libs/gst/gl/wayland/Makefile.in
index 3f5be32..4646c78 100644
--- a/gst-libs/gst/gl/wayland/Makefile.in
+++ b/gst-libs/gst/gl/wayland/Makefile.in
@@ -666,6 +666,9 @@
 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@
diff --git a/gst-libs/gst/gl/win32/Makefile.in b/gst-libs/gst/gl/win32/Makefile.in
index 78f80a5..9fc5848 100644
--- a/gst-libs/gst/gl/win32/Makefile.in
+++ b/gst-libs/gst/gl/win32/Makefile.in
@@ -671,6 +671,9 @@
 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@
diff --git a/gst-libs/gst/gl/x11/Makefile.in b/gst-libs/gst/gl/x11/Makefile.in
index 6652f19..d2d059a 100644
--- a/gst-libs/gst/gl/x11/Makefile.in
+++ b/gst-libs/gst/gl/x11/Makefile.in
@@ -700,6 +700,9 @@
 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@
diff --git a/gst-libs/gst/insertbin/Makefile.in b/gst-libs/gst/insertbin/Makefile.in
index f14c347..d81f7ee 100644
--- a/gst-libs/gst/insertbin/Makefile.in
+++ b/gst-libs/gst/insertbin/Makefile.in
@@ -683,6 +683,9 @@
 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@
diff --git a/gst-libs/gst/interfaces/Makefile.in b/gst-libs/gst/interfaces/Makefile.in
index 90ed7b8..44e57bf 100644
--- a/gst-libs/gst/interfaces/Makefile.in
+++ b/gst-libs/gst/interfaces/Makefile.in
@@ -713,6 +713,9 @@
 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@
diff --git a/gst-libs/gst/mpegts/Makefile.in b/gst-libs/gst/mpegts/Makefile.in
index a23c1b6..b3c79d9 100644
--- a/gst-libs/gst/mpegts/Makefile.in
+++ b/gst-libs/gst/mpegts/Makefile.in
@@ -721,6 +721,9 @@
 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@
diff --git a/gst-libs/gst/player/Makefile.in b/gst-libs/gst/player/Makefile.in
index 12813a5..fe0747b 100644
--- a/gst-libs/gst/player/Makefile.in
+++ b/gst-libs/gst/player/Makefile.in
@@ -706,6 +706,9 @@
 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@
diff --git a/gst-libs/gst/player/gstplayer.c b/gst-libs/gst/player/gstplayer.c
index 7c5c57d..62cd800 100644
--- a/gst-libs/gst/player/gstplayer.c
+++ b/gst-libs/gst/player/gstplayer.c
@@ -1590,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
@@ -1730,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");
 
@@ -2592,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");
@@ -2766,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);
@@ -3013,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,
@@ -3186,14 +3173,12 @@
  *
  * Sets the external subtitle URI.
  */
-gboolean
+void
 gst_player_set_subtitle_uri (GstPlayer * self, const gchar * suburi)
 {
-  g_return_val_if_fail (GST_IS_PLAYER (self), FALSE);
+  g_return_if_fail (GST_IS_PLAYER (self));
 
   g_object_set (self, "suburi", suburi, NULL);
-
-  return TRUE;
 }
 
 /**
diff --git a/gst-libs/gst/player/gstplayer.h b/gst-libs/gst/player/gstplayer.h
index e51d8c5..0ac66be 100644
--- a/gst-libs/gst/player/gstplayer.h
+++ b/gst-libs/gst/player/gstplayer.h
@@ -110,16 +110,12 @@
                                                        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);
-gboolean     gst_player_set_subtitle_uri              (GstPlayer    * player,
+void         gst_player_set_subtitle_uri              (GstPlayer    * player,
                                                        const gchar *uri);
 
 GstClockTime gst_player_get_position                  (GstPlayer    * player);
diff --git a/gst-libs/gst/uridownloader/Makefile.in b/gst-libs/gst/uridownloader/Makefile.in
index cd272fc..7747e94 100644
--- a/gst-libs/gst/uridownloader/Makefile.in
+++ b/gst-libs/gst/uridownloader/Makefile.in
@@ -681,6 +681,9 @@
 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@
diff --git a/gst-libs/gst/video/Makefile.in b/gst-libs/gst/video/Makefile.in
index 8fe794c..24b7fc8 100644
--- a/gst-libs/gst/video/Makefile.in
+++ b/gst-libs/gst/video/Makefile.in
@@ -685,6 +685,9 @@
 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@
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 ce15520..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 =  \
@@ -695,6 +696,9 @@
 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@
@@ -799,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 832fc1d..ec65d38 100644
--- a/gst-plugins-bad.doap
+++ b/gst-plugins-bad.doap
@@ -35,6 +35,16 @@
 
  <release>
   <Version>
+   <revision>1.9.90</revision>
+   <branch>master</branch>
+   <name></name>
+   <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.9.2</revision>
    <branch>master</branch>
    <name></name>
diff --git a/gst-plugins-bad.spec b/gst-plugins-bad.spec
index 214aa7d..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.9.2
+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 4e514fb..fbff90f 100644
--- a/gst/Makefile.in
+++ b/gst/Makefile.in
@@ -672,6 +672,9 @@
 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@
diff --git a/gst/accurip/Makefile.in b/gst/accurip/Makefile.in
index dc25a0e..327137f 100644
--- a/gst/accurip/Makefile.in
+++ b/gst/accurip/Makefile.in
@@ -693,6 +693,9 @@
 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@
diff --git a/gst/adpcmdec/Makefile.in b/gst/adpcmdec/Makefile.in
index dbdb94c..86f2770 100644
--- a/gst/adpcmdec/Makefile.in
+++ b/gst/adpcmdec/Makefile.in
@@ -690,6 +690,9 @@
 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@
diff --git a/gst/adpcmenc/Makefile.in b/gst/adpcmenc/Makefile.in
index 010d8f3..6c7a7fd 100644
--- a/gst/adpcmenc/Makefile.in
+++ b/gst/adpcmenc/Makefile.in
@@ -690,6 +690,9 @@
 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@
diff --git a/gst/aiff/Makefile.in b/gst/aiff/Makefile.in
index d013cd8..235647d 100644
--- a/gst/aiff/Makefile.in
+++ b/gst/aiff/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/gst/asfmux/Makefile.in b/gst/asfmux/Makefile.in
index adae8ba..3cf2159 100644
--- a/gst/asfmux/Makefile.in
+++ b/gst/asfmux/Makefile.in
@@ -698,6 +698,9 @@
 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@
diff --git a/gst/audiofxbad/Makefile.in b/gst/audiofxbad/Makefile.in
index 05d0feb..8a36765 100644
--- a/gst/audiofxbad/Makefile.in
+++ b/gst/audiofxbad/Makefile.in
@@ -692,6 +692,9 @@
 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@
diff --git a/gst/audiomixer/Makefile.in b/gst/audiomixer/Makefile.in
index cbe3065..51745cd 100644
--- a/gst/audiomixer/Makefile.in
+++ b/gst/audiomixer/Makefile.in
@@ -723,6 +723,9 @@
 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@
diff --git a/gst/audiovisualizers/Makefile.in b/gst/audiovisualizers/Makefile.in
index 925a461..057e21e 100644
--- a/gst/audiovisualizers/Makefile.in
+++ b/gst/audiovisualizers/Makefile.in
@@ -701,6 +701,9 @@
 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@
diff --git a/gst/autoconvert/Makefile.in b/gst/autoconvert/Makefile.in
index 5a56ce6..4f0081f 100644
--- a/gst/autoconvert/Makefile.in
+++ b/gst/autoconvert/Makefile.in
@@ -695,6 +695,9 @@
 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@
diff --git a/gst/bayer/Makefile.in b/gst/bayer/Makefile.in
index 3d1213f..898a1b1 100644
--- a/gst/bayer/Makefile.in
+++ b/gst/bayer/Makefile.in
@@ -719,6 +719,9 @@
 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@
diff --git a/gst/camerabin2/Makefile.in b/gst/camerabin2/Makefile.in
index 554a2f5..1341ce1 100644
--- a/gst/camerabin2/Makefile.in
+++ b/gst/camerabin2/Makefile.in
@@ -701,6 +701,9 @@
 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@
diff --git a/gst/cdxaparse/Makefile.in b/gst/cdxaparse/Makefile.in
index ea2cc0c..3035dd9 100644
--- a/gst/cdxaparse/Makefile.in
+++ b/gst/cdxaparse/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/gst/coloreffects/Makefile.in b/gst/coloreffects/Makefile.in
index 5175637..d8d3a8f 100644
--- a/gst/coloreffects/Makefile.in
+++ b/gst/coloreffects/Makefile.in
@@ -695,6 +695,9 @@
 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@
diff --git a/gst/compositor/Makefile.in b/gst/compositor/Makefile.in
index b3e7666..0b87e2c 100644
--- a/gst/compositor/Makefile.in
+++ b/gst/compositor/Makefile.in
@@ -724,6 +724,9 @@
 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@
diff --git a/gst/dataurisrc/Makefile.in b/gst/dataurisrc/Makefile.in
index a6635b6..9e6681b 100644
--- a/gst/dataurisrc/Makefile.in
+++ b/gst/dataurisrc/Makefile.in
@@ -690,6 +690,9 @@
 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@
diff --git a/gst/dccp/Makefile.in b/gst/dccp/Makefile.in
index c3461f1..6248784 100644
--- a/gst/dccp/Makefile.in
+++ b/gst/dccp/Makefile.in
@@ -700,6 +700,9 @@
 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@
diff --git a/gst/debugutils/Makefile.in b/gst/debugutils/Makefile.in
index ca14b4e..bb1c977 100644
--- a/gst/debugutils/Makefile.in
+++ b/gst/debugutils/Makefile.in
@@ -701,6 +701,9 @@
 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@
diff --git a/gst/dvbsuboverlay/Makefile.in b/gst/dvbsuboverlay/Makefile.in
index 71d7354..c3cd836 100644
--- a/gst/dvbsuboverlay/Makefile.in
+++ b/gst/dvbsuboverlay/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/gst/dvbsuboverlay/gstdvbsuboverlay.c b/gst/dvbsuboverlay/gstdvbsuboverlay.c
index 0602003..0b0062b 100644
--- a/gst/dvbsuboverlay/gstdvbsuboverlay.c
+++ b/gst/dvbsuboverlay/gstdvbsuboverlay.c
@@ -1128,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 e34728c..040bf04 100644
--- a/gst/dvdspu/Makefile.in
+++ b/gst/dvdspu/Makefile.in
@@ -697,6 +697,9 @@
 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@
diff --git a/gst/faceoverlay/Makefile.in b/gst/faceoverlay/Makefile.in
index ddf88dd..755a258 100644
--- a/gst/faceoverlay/Makefile.in
+++ b/gst/faceoverlay/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/gst/festival/Makefile.in b/gst/festival/Makefile.in
index 49c95ed..a4fe21f 100644
--- a/gst/festival/Makefile.in
+++ b/gst/festival/Makefile.in
@@ -693,6 +693,9 @@
 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@
diff --git a/gst/fieldanalysis/Makefile.in b/gst/fieldanalysis/Makefile.in
index 8f76739..63b63d4 100644
--- a/gst/fieldanalysis/Makefile.in
+++ b/gst/fieldanalysis/Makefile.in
@@ -722,6 +722,9 @@
 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@
diff --git a/gst/freeverb/Makefile.in b/gst/freeverb/Makefile.in
index 2b54f45..5ac2dbc 100644
--- a/gst/freeverb/Makefile.in
+++ b/gst/freeverb/Makefile.in
@@ -696,6 +696,9 @@
 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@
diff --git a/gst/frei0r/Makefile.in b/gst/frei0r/Makefile.in
index 606a7c7..53b2744 100644
--- a/gst/frei0r/Makefile.in
+++ b/gst/frei0r/Makefile.in
@@ -697,6 +697,9 @@
 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@
diff --git a/gst/gaudieffects/Makefile.in b/gst/gaudieffects/Makefile.in
index f9c07c9..67e58cb 100644
--- a/gst/gaudieffects/Makefile.in
+++ b/gst/gaudieffects/Makefile.in
@@ -728,6 +728,9 @@
 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@
diff --git a/gst/gdp/Makefile.in b/gst/gdp/Makefile.in
index a5d24b2..592ead1 100644
--- a/gst/gdp/Makefile.in
+++ b/gst/gdp/Makefile.in
@@ -695,6 +695,9 @@
 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@
diff --git a/gst/geometrictransform/Makefile.in b/gst/geometrictransform/Makefile.in
index f5186b5..b5a8c51 100644
--- a/gst/geometrictransform/Makefile.in
+++ b/gst/geometrictransform/Makefile.in
@@ -716,6 +716,9 @@
 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@
diff --git a/gst/hdvparse/Makefile.in b/gst/hdvparse/Makefile.in
index 429a566..05f1297 100644
--- a/gst/hdvparse/Makefile.in
+++ b/gst/hdvparse/Makefile.in
@@ -693,6 +693,9 @@
 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@
diff --git a/gst/id3tag/Makefile.in b/gst/id3tag/Makefile.in
index d26a95d..9c9e3c4 100644
--- a/gst/id3tag/Makefile.in
+++ b/gst/id3tag/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/gst/inter/Makefile.in b/gst/inter/Makefile.in
index 65f9478..e00e5e1 100644
--- a/gst/inter/Makefile.in
+++ b/gst/inter/Makefile.in
@@ -710,6 +710,9 @@
 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@
diff --git a/gst/interlace/Makefile.in b/gst/interlace/Makefile.in
index e4b2770..aaffb82 100644
--- a/gst/interlace/Makefile.in
+++ b/gst/interlace/Makefile.in
@@ -690,6 +690,9 @@
 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@
diff --git a/gst/ivfparse/Makefile.in b/gst/ivfparse/Makefile.in
index c063c19..fd7eaa1 100644
--- a/gst/ivfparse/Makefile.in
+++ b/gst/ivfparse/Makefile.in
@@ -693,6 +693,9 @@
 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@
diff --git a/gst/ivtc/Makefile.in b/gst/ivtc/Makefile.in
index 6daaafa..4e559ff 100644
--- a/gst/ivtc/Makefile.in
+++ b/gst/ivtc/Makefile.in
@@ -691,6 +691,9 @@
 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@
diff --git a/gst/jp2kdecimator/Makefile.in b/gst/jp2kdecimator/Makefile.in
index 7c04639..7773514 100644
--- a/gst/jp2kdecimator/Makefile.in
+++ b/gst/jp2kdecimator/Makefile.in
@@ -695,6 +695,9 @@
 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@
diff --git a/gst/jpegformat/Makefile.in b/gst/jpegformat/Makefile.in
index 852b83e..2999ea3 100644
--- a/gst/jpegformat/Makefile.in
+++ b/gst/jpegformat/Makefile.in
@@ -695,6 +695,9 @@
 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@
diff --git a/gst/librfb/Makefile.in b/gst/librfb/Makefile.in
index da90a30..b8f39f1 100644
--- a/gst/librfb/Makefile.in
+++ b/gst/librfb/Makefile.in
@@ -697,6 +697,9 @@
 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@
diff --git a/gst/midi/Makefile.in b/gst/midi/Makefile.in
index c875eb6..070af53 100644
--- a/gst/midi/Makefile.in
+++ b/gst/midi/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/gst/mpegdemux/Makefile.in b/gst/mpegdemux/Makefile.in
index 99a9319..23727f4 100644
--- a/gst/mpegdemux/Makefile.in
+++ b/gst/mpegdemux/Makefile.in
@@ -695,6 +695,9 @@
 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@
diff --git a/gst/mpegpsmux/Makefile.in b/gst/mpegpsmux/Makefile.in
index 329e2d8..1c89d5a 100644
--- a/gst/mpegpsmux/Makefile.in
+++ b/gst/mpegpsmux/Makefile.in
@@ -696,6 +696,9 @@
 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@
diff --git a/gst/mpegtsdemux/Makefile.in b/gst/mpegtsdemux/Makefile.in
index d31ac11..40d9134 100644
--- a/gst/mpegtsdemux/Makefile.in
+++ b/gst/mpegtsdemux/Makefile.in
@@ -701,6 +701,9 @@
 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@
diff --git a/gst/mpegtsdemux/gstmpegdefs.h b/gst/mpegtsdemux/gstmpegdefs.h
index 5947d71..f0a225b 100644
--- a/gst/mpegtsdemux/gstmpegdefs.h
+++ b/gst/mpegtsdemux/gstmpegdefs.h
@@ -48,6 +48,7 @@
 /* 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
diff --git a/gst/mpegtsdemux/mpegtsbase.c b/gst/mpegtsdemux/mpegtsbase.c
index e736f9b..659faad 100644
--- a/gst/mpegtsdemux/mpegtsbase.c
+++ b/gst/mpegtsdemux/mpegtsbase.c
@@ -1023,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;
           }
         }
diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c
index 7a396cd..0ac95bd 100644
--- a/gst/mpegtsdemux/tsdemux.c
+++ b/gst/mpegtsdemux/tsdemux.c
@@ -1506,6 +1506,11 @@
       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");
diff --git a/gst/mpegtsmux/Makefile.in b/gst/mpegtsmux/Makefile.in
index f426a2b..33c887b 100644
--- a/gst/mpegtsmux/Makefile.in
+++ b/gst/mpegtsmux/Makefile.in
@@ -740,6 +740,9 @@
 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@
diff --git a/gst/mpegtsmux/tsmux/Makefile.in b/gst/mpegtsmux/tsmux/Makefile.in
index 4ceb024..05fd2d1 100644
--- a/gst/mpegtsmux/tsmux/Makefile.in
+++ b/gst/mpegtsmux/tsmux/Makefile.in
@@ -665,6 +665,9 @@
 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@
diff --git a/gst/mve/Makefile.in b/gst/mve/Makefile.in
index 9d6fc66..811ee1e 100644
--- a/gst/mve/Makefile.in
+++ b/gst/mve/Makefile.in
@@ -697,6 +697,9 @@
 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@
diff --git a/gst/mxf/Makefile.in b/gst/mxf/Makefile.in
index a971f53..21ddb86 100644
--- a/gst/mxf/Makefile.in
+++ b/gst/mxf/Makefile.in
@@ -702,6 +702,9 @@
 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@
diff --git a/gst/netsim/Makefile.in b/gst/netsim/Makefile.in
index 22b3865..e555656 100644
--- a/gst/netsim/Makefile.in
+++ b/gst/netsim/Makefile.in
@@ -693,6 +693,9 @@
 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@
diff --git a/gst/nuvdemux/Makefile.in b/gst/nuvdemux/Makefile.in
index 3fab7dc..fe3f5b0 100644
--- a/gst/nuvdemux/Makefile.in
+++ b/gst/nuvdemux/Makefile.in
@@ -692,6 +692,9 @@
 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@
diff --git a/gst/onvif/Makefile.in b/gst/onvif/Makefile.in
index 9985535..1a707c8 100644
--- a/gst/onvif/Makefile.in
+++ b/gst/onvif/Makefile.in
@@ -692,6 +692,9 @@
 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@
diff --git a/gst/onvif/gstrtponviftimestamp.c b/gst/onvif/gstrtponviftimestamp.c
index 6777f9f..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:
@@ -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 ce7bf67..cbc0358 100644
--- a/gst/patchdetect/Makefile.in
+++ b/gst/patchdetect/Makefile.in
@@ -695,6 +695,9 @@
 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@
diff --git a/gst/pcapparse/Makefile.in b/gst/pcapparse/Makefile.in
index 00bea88..e4ce753 100644
--- a/gst/pcapparse/Makefile.in
+++ b/gst/pcapparse/Makefile.in
@@ -695,6 +695,9 @@
 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@
diff --git a/gst/pnm/Makefile.in b/gst/pnm/Makefile.in
index 01c71c2..4a74f2a 100644
--- a/gst/pnm/Makefile.in
+++ b/gst/pnm/Makefile.in
@@ -695,6 +695,9 @@
 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@
diff --git a/gst/rawparse/Makefile.in b/gst/rawparse/Makefile.in
index a49d9b4..b024238 100644
--- a/gst/rawparse/Makefile.in
+++ b/gst/rawparse/Makefile.in
@@ -701,6 +701,9 @@
 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@
diff --git a/gst/removesilence/Makefile.in b/gst/removesilence/Makefile.in
index 92298ca..316ae84 100644
--- a/gst/removesilence/Makefile.in
+++ b/gst/removesilence/Makefile.in
@@ -695,6 +695,9 @@
 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@
diff --git a/gst/sdi/Makefile.in b/gst/sdi/Makefile.in
index 66bdbbc..bfbf9d7 100644
--- a/gst/sdi/Makefile.in
+++ b/gst/sdi/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/gst/sdp/Makefile.in b/gst/sdp/Makefile.in
index 97bf80e..e908697 100644
--- a/gst/sdp/Makefile.in
+++ b/gst/sdp/Makefile.in
@@ -695,6 +695,9 @@
 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@
diff --git a/gst/segmentclip/Makefile.in b/gst/segmentclip/Makefile.in
index f17433e..4f6e6ed 100644
--- a/gst/segmentclip/Makefile.in
+++ b/gst/segmentclip/Makefile.in
@@ -697,6 +697,9 @@
 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@
diff --git a/gst/siren/Makefile.in b/gst/siren/Makefile.in
index bc50677..9c35f27 100644
--- a/gst/siren/Makefile.in
+++ b/gst/siren/Makefile.in
@@ -695,6 +695,9 @@
 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@
diff --git a/gst/smooth/Makefile.in b/gst/smooth/Makefile.in
index 58e488f..8468051 100644
--- a/gst/smooth/Makefile.in
+++ b/gst/smooth/Makefile.in
@@ -693,6 +693,9 @@
 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@
diff --git a/gst/speed/Makefile.in b/gst/speed/Makefile.in
index adfb143..48bb4ac 100644
--- a/gst/speed/Makefile.in
+++ b/gst/speed/Makefile.in
@@ -693,6 +693,9 @@
 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@
diff --git a/gst/stereo/Makefile.in b/gst/stereo/Makefile.in
index 1f0f33b..22c9315 100644
--- a/gst/stereo/Makefile.in
+++ b/gst/stereo/Makefile.in
@@ -693,6 +693,9 @@
 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@
diff --git a/gst/subenc/Makefile.in b/gst/subenc/Makefile.in
index 9ecf901..a0b0780 100644
--- a/gst/subenc/Makefile.in
+++ b/gst/subenc/Makefile.in
@@ -693,6 +693,9 @@
 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@
diff --git a/gst/timecode/Makefile.in b/gst/timecode/Makefile.in
index 67ac87d..2f73601 100644
--- a/gst/timecode/Makefile.in
+++ b/gst/timecode/Makefile.in
@@ -696,6 +696,9 @@
 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@
diff --git a/gst/tta/Makefile.in b/gst/tta/Makefile.in
index ff23ce4..f8a5a25 100644
--- a/gst/tta/Makefile.in
+++ b/gst/tta/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/gst/videofilters/Makefile.in b/gst/videofilters/Makefile.in
index aa6b34f..88928cc 100644
--- a/gst/videofilters/Makefile.in
+++ b/gst/videofilters/Makefile.in
@@ -699,6 +699,9 @@
 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@
diff --git a/gst/videoframe_audiolevel/Makefile.in b/gst/videoframe_audiolevel/Makefile.in
index 1e3ac7f..c5a6d3a 100644
--- a/gst/videoframe_audiolevel/Makefile.in
+++ b/gst/videoframe_audiolevel/Makefile.in
@@ -696,6 +696,9 @@
 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@
diff --git a/gst/videomeasure/Makefile.in b/gst/videomeasure/Makefile.in
index 37c0295..c173c8c 100644
--- a/gst/videomeasure/Makefile.in
+++ b/gst/videomeasure/Makefile.in
@@ -697,6 +697,9 @@
 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@
diff --git a/gst/videoparsers/Makefile.in b/gst/videoparsers/Makefile.in
index 26339c0..97892f4 100644
--- a/gst/videoparsers/Makefile.in
+++ b/gst/videoparsers/Makefile.in
@@ -707,6 +707,9 @@
 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@
diff --git a/gst/videoparsers/gsth265parse.c b/gst/videoparsers/gsth265parse.c
index 7954793..68fbe8d 100644
--- a/gst/videoparsers/gsth265parse.c
+++ b/gst/videoparsers/gsth265parse.c
@@ -2047,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
index 13fee2c..6468bf0 100644
--- a/gst/videoparsers/gstjpeg2000parse.c
+++ b/gst/videoparsers/gstjpeg2000parse.c
@@ -188,6 +188,7 @@
   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;
@@ -196,6 +197,7 @@
   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;
@@ -337,12 +339,14 @@
     goto beach;
   }
 
-  colorspace =
-      gst_jpeg2000_colorspace_from_string (gst_structure_get_string
-      (current_caps_struct, "colorspace"));
-  sink_sampling =
-      gst_jpeg2000_sampling_from_string (gst_structure_get_string
-      (current_caps_struct, "sampling"));
+  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) {
 
diff --git a/gst/videosignal/Makefile.in b/gst/videosignal/Makefile.in
index d0aba62..afcb48b 100644
--- a/gst/videosignal/Makefile.in
+++ b/gst/videosignal/Makefile.in
@@ -694,6 +694,9 @@
 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@
diff --git a/gst/vmnc/Makefile.in b/gst/vmnc/Makefile.in
index a760253..523a4a6 100644
--- a/gst/vmnc/Makefile.in
+++ b/gst/vmnc/Makefile.in
@@ -693,6 +693,9 @@
 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@
diff --git a/gst/y4m/Makefile.in b/gst/y4m/Makefile.in
index 7d1ef95..03d499a 100644
--- a/gst/y4m/Makefile.in
+++ b/gst/y4m/Makefile.in
@@ -693,6 +693,9 @@
 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@
diff --git a/gst/yadif/Makefile.in b/gst/yadif/Makefile.in
index 88e95c6..19e5dae 100644
--- a/gst/yadif/Makefile.in
+++ b/gst/yadif/Makefile.in
@@ -691,6 +691,9 @@
 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@
diff --git a/m4/Makefile.in b/m4/Makefile.in
index d6b28b9..41206e5 100644
--- a/m4/Makefile.in
+++ b/m4/Makefile.in
@@ -607,6 +607,9 @@
 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@
diff --git a/pkgconfig/Makefile.in b/pkgconfig/Makefile.in
index b56e542..e3e957f 100644
--- a/pkgconfig/Makefile.in
+++ b/pkgconfig/Makefile.in
@@ -669,6 +669,9 @@
 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@
diff --git a/po/af.gmo b/po/af.gmo
index 434b581..0c11cda 100644
--- a/po/af.gmo
+++ b/po/af.gmo
Binary files differ
diff --git a/po/af.po b/po/af.po
index 91329b9..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-09-01 11:24+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"
diff --git a/po/az.gmo b/po/az.gmo
index 8f5c9af..f1eb31e 100644
--- a/po/az.gmo
+++ b/po/az.gmo
Binary files differ
diff --git a/po/az.po b/po/az.po
index 789ba97..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-09-01 11:24+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"
diff --git a/po/bg.gmo b/po/bg.gmo
index 47546c5..0a21e7f 100644
--- a/po/bg.gmo
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
index 6608f03..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-09-01 11:24+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"
diff --git a/po/ca.gmo b/po/ca.gmo
index 959a293..a3d82a1 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index eb6e274..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-09-01 11:24+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"
diff --git a/po/cs.gmo b/po/cs.gmo
index 27a4312..58531f8 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index 5f0b918..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-09-01 11:24+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"
diff --git a/po/da.gmo b/po/da.gmo
index 2a19704..3fde8f2 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index 216fcdb..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-09-01 11:24+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"
diff --git a/po/de.gmo b/po/de.gmo
index 689fbf0..4f6245c 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index 0f8fc53..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-09-01 11:24+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"
diff --git a/po/el.gmo b/po/el.gmo
index 2a42ab7..7d5900e 100644
--- a/po/el.gmo
+++ b/po/el.gmo
Binary files differ
diff --git a/po/el.po b/po/el.po
index fe2fbb4..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-09-01 11:24+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"
diff --git a/po/en_GB.gmo b/po/en_GB.gmo
index e505037..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 eaf89f8..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-09-01 11:24+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"
diff --git a/po/eo.gmo b/po/eo.gmo
index 86cdc6c..bd10fce 100644
--- a/po/eo.gmo
+++ b/po/eo.gmo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index d02b5eb..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-09-01 11:24+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"
diff --git a/po/es.gmo b/po/es.gmo
index b291ac1..238d0a9 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index 04d3526..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-09-01 11:24+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"
diff --git a/po/eu.gmo b/po/eu.gmo
index a07d0f2..3fedd14 100644
--- a/po/eu.gmo
+++ b/po/eu.gmo
Binary files differ
diff --git a/po/eu.po b/po/eu.po
index 4386c35..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-09-01 11:24+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"
diff --git a/po/fi.gmo b/po/fi.gmo
index 9cc41dc..d61e65e 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index ee4c35f..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-09-01 11:24+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"
diff --git a/po/fr.gmo b/po/fr.gmo
index 3fa1fa4..d7d5691 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index be2fd9e..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-09-01 11:24+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"
diff --git a/po/gl.gmo b/po/gl.gmo
index e73e8af..7173231 100644
--- a/po/gl.gmo
+++ b/po/gl.gmo
Binary files differ
diff --git a/po/gl.po b/po/gl.po
index 5eb7239..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-09-01 11:24+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"
diff --git a/po/gst-plugins-bad-1.0.pot b/po/gst-plugins-bad-1.0.pot
index 6df5bfa..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.9.2\n"
+"Project-Id-Version: gst-plugins-bad 1.9.90\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-09-01 11:24+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"
@@ -56,7 +56,7 @@
 msgstr ""
 
 #: ext/smoothstreaming/gstmssdemux.c:405
-#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:692
+#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:695
 msgid "This file contains no playable streams."
 msgstr ""
 
@@ -102,16 +102,16 @@
 msgid "Subpicture format was not configured before data flow"
 msgstr ""
 
-#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:3053
+#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:3056
 msgid "Failed to get fragment URL."
 msgstr ""
 
-#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:3404
+#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:3407
 msgid "Couldn't download fragments"
 msgstr ""
 
-#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:3493
-#: gst/mpegtsdemux/mpegtsbase.c:1382
+#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:3496
+#: gst/mpegtsdemux/mpegtsbase.c:1392
 msgid "Internal data stream error."
 msgstr ""
 
diff --git a/po/hr.gmo b/po/hr.gmo
index 333eea6..b15b5c8 100644
--- a/po/hr.gmo
+++ b/po/hr.gmo
Binary files differ
diff --git a/po/hr.po b/po/hr.po
index 3d0f443..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-09-01 11:24+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"
diff --git a/po/hu.gmo b/po/hu.gmo
index 63e9c19..c4ee658 100644
--- a/po/hu.gmo
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index 938a8fd..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-09-01 11:24+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"
diff --git a/po/id.gmo b/po/id.gmo
index 9f7eab4..4744a0b 100644
--- a/po/id.gmo
+++ b/po/id.gmo
Binary files differ
diff --git a/po/id.po b/po/id.po
index 8c3ea4e..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-09-01 11:24+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"
diff --git a/po/it.gmo b/po/it.gmo
index d5d5c31..7368349 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 12e711b..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-09-01 11:24+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"
diff --git a/po/ja.gmo b/po/ja.gmo
index 858830d..c7668ab 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index dd4eb9a..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-09-01 11:24+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"
diff --git a/po/ky.gmo b/po/ky.gmo
index 0bdc59b..6afd057 100644
--- a/po/ky.gmo
+++ b/po/ky.gmo
Binary files differ
diff --git a/po/ky.po b/po/ky.po
index d7a1074..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-09-01 11:24+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,6 +14,7 @@
 "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"
 
diff --git a/po/lt.gmo b/po/lt.gmo
index 1b113e1..5a7c491 100644
--- a/po/lt.gmo
+++ b/po/lt.gmo
Binary files differ
diff --git a/po/lt.po b/po/lt.po
index 1f6c885..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-09-01 11:24+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"
diff --git a/po/lv.gmo b/po/lv.gmo
index f1580fa..d66ee0f 100644
--- a/po/lv.gmo
+++ b/po/lv.gmo
Binary files differ
diff --git a/po/lv.po b/po/lv.po
index e933294..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-09-01 11:24+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"
diff --git a/po/mt.gmo b/po/mt.gmo
index 8aefa50..b5e536a 100644
--- a/po/mt.gmo
+++ b/po/mt.gmo
Binary files differ
diff --git a/po/mt.po b/po/mt.po
index f002ee6..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-09-01 11:24+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"
diff --git a/po/nb.gmo b/po/nb.gmo
index ebd5fd2..396abde 100644
--- a/po/nb.gmo
+++ b/po/nb.gmo
Binary files differ
diff --git a/po/nb.po b/po/nb.po
index e508329..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-09-01 11:24+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"
diff --git a/po/nl.gmo b/po/nl.gmo
index be0c758..c0e4769 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index 91e1b2e..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-09-01 11:24+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"
diff --git a/po/or.gmo b/po/or.gmo
index 752eaca..319cc21 100644
--- a/po/or.gmo
+++ b/po/or.gmo
Binary files differ
diff --git a/po/or.po b/po/or.po
index a4eaf9b..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-09-01 11:24+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"
diff --git a/po/pl.gmo b/po/pl.gmo
index dfc47bb..a1ea176 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 2888657..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-09-01 11:24+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"
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index dfa910d..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 6cb4621..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-09-01 11:24+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."
diff --git a/po/ro.gmo b/po/ro.gmo
index 9e988e6..c72ee99 100644
--- a/po/ro.gmo
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
index 970fd2a..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-09-01 11:24+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"
diff --git a/po/ru.gmo b/po/ru.gmo
index 0586158..e326719 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index c4a18a4..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-09-01 11:24+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"
diff --git a/po/sk.gmo b/po/sk.gmo
index c7f64ff..086f682 100644
--- a/po/sk.gmo
+++ b/po/sk.gmo
Binary files differ
diff --git a/po/sk.po b/po/sk.po
index fea6121..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-09-01 11:24+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"
diff --git a/po/sl.gmo b/po/sl.gmo
index 19adc55..2593e16 100644
--- a/po/sl.gmo
+++ b/po/sl.gmo
Binary files differ
diff --git a/po/sl.po b/po/sl.po
index b37d1cc..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-09-01 11:24+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"
diff --git a/po/sq.gmo b/po/sq.gmo
index 78d5a40..89835e8 100644
--- a/po/sq.gmo
+++ b/po/sq.gmo
Binary files differ
diff --git a/po/sq.po b/po/sq.po
index cd3c734..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-09-01 11:24+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"
diff --git a/po/sr.gmo b/po/sr.gmo
index 871b3af..57abefe 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index dc12f85..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-09-01 11:24+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"
diff --git a/po/sv.gmo b/po/sv.gmo
index 6a39cde..fdee880 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index 3569469..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-09-01 11:24+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,6 +16,7 @@
 "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"
diff --git a/po/tr.gmo b/po/tr.gmo
index 351cef8..dcf7340 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index c08c42f..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-09-01 11:24+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"
diff --git a/po/uk.gmo b/po/uk.gmo
index 0e91a5b..d2860f7 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index 93c6b85..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-09-01 11:24+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"
diff --git a/po/vi.gmo b/po/vi.gmo
index 6e77352..cdf9df8 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index 2bbb892..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-09-01 11:24+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"
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
index fe5e55d..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 f861a3a..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-09-01 11:24+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"
diff --git a/sys/Makefile.in b/sys/Makefile.in
index e309628..781fd1d 100644
--- a/sys/Makefile.in
+++ b/sys/Makefile.in
@@ -672,6 +672,9 @@
 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@
diff --git a/sys/acmenc/Makefile.in b/sys/acmenc/Makefile.in
index d3666bb..9f53580 100644
--- a/sys/acmenc/Makefile.in
+++ b/sys/acmenc/Makefile.in
@@ -690,6 +690,9 @@
 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@
diff --git a/sys/acmmp3dec/Makefile.in b/sys/acmmp3dec/Makefile.in
index 7a87cef..4dabd3c 100644
--- a/sys/acmmp3dec/Makefile.in
+++ b/sys/acmmp3dec/Makefile.in
@@ -690,6 +690,9 @@
 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@
diff --git a/sys/androidmedia/Makefile.in b/sys/androidmedia/Makefile.in
index 88fda28..ab2e4ea 100644
--- a/sys/androidmedia/Makefile.in
+++ b/sys/androidmedia/Makefile.in
@@ -709,6 +709,9 @@
 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@
diff --git a/sys/applemedia/Makefile.in b/sys/applemedia/Makefile.in
index 0661e54..5494832 100644
--- a/sys/applemedia/Makefile.in
+++ b/sys/applemedia/Makefile.in
@@ -773,6 +773,9 @@
 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@
diff --git a/sys/avc/Makefile.in b/sys/avc/Makefile.in
index ff4d84f..d4298c4 100644
--- a/sys/avc/Makefile.in
+++ b/sys/avc/Makefile.in
@@ -694,6 +694,9 @@
 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@
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 fe8af68..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) \
@@ -699,6 +700,9 @@
 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@
@@ -797,7 +801,8 @@
 	gsta2dpsink.c \
 	gstavdtpsink.c \
 	gstavdtpsrc.c \
-	gstavdtputil.c
+	gstavdtputil.c \
+	gstavrcputil.c
 
 nodist_libgstbluez_la_SOURCES = \
 	$(BUILT_SOURCES)
@@ -825,7 +830,8 @@
 	gsta2dpsink.h \
 	gstavdtpsink.h \
 	gstavdtpsrc.h \
-	gstavdtputil.h
+	gstavdtputil.h \
+	gstavrcputil.h
 
 BUILT_SOURCES = \
 	bluez.h \
@@ -918,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$$||'`;\
@@ -978,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 a7ffd29..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,18 +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);
-      if (ret == GST_STATE_CHANGE_FAILURE) {
-        g_clear_object (&self->sink);
-      }
       break;
+
     default:
       break;
   }
 
-  if (ret == GST_STATE_CHANGE_FAILURE)
-    return ret;
-
   ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
 
   switch (transition) {
@@ -307,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;
@@ -345,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,
@@ -382,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;
 }
 
@@ -406,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
@@ -425,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));
@@ -465,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;
 
@@ -488,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;
 
@@ -509,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");
@@ -532,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 */
@@ -548,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
@@ -629,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 e91aed3..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
@@ -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 00c807a..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,
@@ -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 24eee93..4ba579a 100644
--- a/sys/d3dvideosink/Makefile.in
+++ b/sys/d3dvideosink/Makefile.in
@@ -695,6 +695,9 @@
 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@
diff --git a/sys/decklink/Makefile.in b/sys/decklink/Makefile.in
index dd3799d..23c0596 100644
--- a/sys/decklink/Makefile.in
+++ b/sys/decklink/Makefile.in
@@ -715,6 +715,9 @@
 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@
diff --git a/sys/decklink/gstdecklink.cpp b/sys/decklink/gstdecklink.cpp
index c8eb7b3..184f124 100644
--- a/sys/decklink/gstdecklink.cpp
+++ b/sys/decklink/gstdecklink.cpp
@@ -764,7 +764,8 @@
       } else {
         res = dtc->GetComponents (&hours, &minutes, &seconds, &frames);
         if (res != S_OK) {
-          GST_ERROR ("Could not get components for timecode %p", dtc);
+          GST_ERROR ("Could not get components for timecode %p: 0x%08x", dtc,
+              res);
           hours = 0;
           minutes = 0;
           seconds = 0;
@@ -914,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");
@@ -928,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 =
@@ -940,14 +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/gstdecklinkaudiosink.cpp b/sys/decklink/gstdecklinkaudiosink.cpp
index 9b480d5..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;
 }
@@ -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 GstCaps *gst_decklink_audio_sink_get_caps (GstBaseSink * bsink,
+    GstCaps * filter);
 static GstAudioRingBuffer
     * gst_decklink_audio_sink_create_ringbuffer (GstAudioBaseSink * absink);
 
@@ -553,7 +557,8 @@
   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);
+  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);
@@ -672,7 +677,9 @@
       GValue arr = G_VALUE_INIT;
       GValue v = G_VALUE_INIT;
 
-      ret = buf->output->attributes->GetInt (BMDDeckLinkMaximumAudioChannels, &max_channels);
+      ret =
+          buf->output->attributes->GetInt (BMDDeckLinkMaximumAudioChannels,
+          &max_channels);
       /* 2 should always be supported */
       if (ret != S_OK) {
         max_channels = 2;
@@ -702,7 +709,8 @@
   }
 
   if (filter) {
-    GstCaps *intersection = gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST);
+    GstCaps *intersection =
+        gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST);
     gst_caps_unref (caps);
     caps = intersection;
   }
diff --git a/sys/decklink/gstdecklinkaudiosrc.cpp b/sys/decklink/gstdecklinkaudiosrc.cpp
index 4a66e96..5024bb5 100644
--- a/sys/decklink/gstdecklinkaudiosrc.cpp
+++ b/sys/decklink/gstdecklinkaudiosrc.cpp
@@ -367,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;
     }
   }
@@ -375,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;
   }
 
diff --git a/sys/decklink/gstdecklinkvideosink.cpp b/sys/decklink/gstdecklinkvideosink.cpp
index 6f6f944..db7fa9d 100644
--- a/sys/decklink/gstdecklinkvideosink.cpp
+++ b/sys/decklink/gstdecklinkvideosink.cpp
@@ -378,7 +378,7 @@
 
   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;
   }
 
@@ -645,13 +645,8 @@
       " with duration %" GST_TIME_FORMAT, frame, GST_TIME_ARGS (running_time),
       GST_TIME_ARGS (running_time_duration));
 
-  /* FIXME: 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
-   */
   ret = self->output->output->ScheduleVideoFrame (frame,
-      running_time / GST_MSECOND, running_time_duration / GST_MSECOND, GST_MSECOND);
+      running_time, running_time_duration, GST_SECOND);
   if (ret != S_OK) {
     GST_ELEMENT_ERROR (self, STREAM, FAILED,
         (NULL), ("Failed to schedule frame: 0x%08x", ret));
@@ -753,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);
 
@@ -760,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)
@@ -774,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);
@@ -795,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;
       }
     }
@@ -809,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;
     }
 
@@ -822,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");
   }
@@ -835,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:
@@ -853,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;
     }
@@ -868,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;
@@ -891,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/gstdecklinkvideosrc.cpp b/sys/decklink/gstdecklinkvideosrc.cpp
index 90492ae..d82c5fc 100644
--- a/sys/decklink/gstdecklinkvideosrc.cpp
+++ b/sys/decklink/gstdecklinkvideosrc.cpp
@@ -346,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;
     }
 
@@ -355,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;
       }
     }
@@ -371,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)
@@ -389,7 +391,7 @@
   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;
   }
 
@@ -817,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;
     }
 
@@ -839,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");
@@ -853,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:
@@ -883,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;
     }
@@ -895,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/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'